|
Blender
V2.93
|
#include "BKE_subdiv_mesh.h"#include "atomic_ops.h"#include "DNA_key_types.h"#include "DNA_mesh_types.h"#include "DNA_meshdata_types.h"#include "BLI_alloca.h"#include "BLI_math_vector.h"#include "BKE_customdata.h"#include "BKE_key.h"#include "BKE_mesh.h"#include "BKE_subdiv.h"#include "BKE_subdiv_eval.h"#include "BKE_subdiv_foreach.h"#include "MEM_guardedalloc.h"Go to the source code of this file.
Classes | |
| struct | SubdivMeshContext |
| struct | LoopsOfPtex |
| struct | VerticesForInterpolation |
| struct | LoopsForInterpolation |
| struct | SubdivMeshTLS |
Functions | |
Evaluation helper functions | |
| static void | eval_final_point_and_vertex_normal (Subdiv *subdiv, const int ptex_face_index, const float u, const float v, float r_P[3], short r_N[3]) |
Accumulation helpers | |
| static void | subdiv_accumulate_vertex_normal_and_displacement (SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, MVert *subdiv_vert) |
Callbacks | |
| static bool | subdiv_mesh_topology_info (const SubdivForeachContext *foreach_context, const int num_vertices, const int num_edges, const int num_loops, const int num_polygons) |
Vertex subdivision process | |
| static void | subdiv_vertex_data_copy (const SubdivMeshContext *ctx, const MVert *coarse_vertex, MVert *subdiv_vertex) |
| static void | subdiv_vertex_data_interpolate (const SubdivMeshContext *ctx, MVert *subdiv_vertex, const VerticesForInterpolation *vertex_interpolation, const float u, const float v) |
| static void | evaluate_vertex_and_apply_displacement_copy (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, const MVert *coarse_vert, MVert *subdiv_vert) |
| static void | evaluate_vertex_and_apply_displacement_interpolate (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, VerticesForInterpolation *vertex_interpolation, MVert *subdiv_vert) |
| static void | subdiv_mesh_vertex_every_corner_or_edge (const SubdivForeachContext *foreach_context, void *UNUSED(tls), const int ptex_face_index, const float u, const float v, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_every_corner (const SubdivForeachContext *foreach_context, void *tls, const int ptex_face_index, const float u, const float v, const int UNUSED(coarse_vertex_index), const int UNUSED(coarse_poly_index), const int UNUSED(coarse_corner), const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_every_edge (const SubdivForeachContext *foreach_context, void *tls, const int ptex_face_index, const float u, const float v, const int UNUSED(coarse_edge_index), const int UNUSED(coarse_poly_index), const int UNUSED(coarse_corner), const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_corner (const SubdivForeachContext *foreach_context, void *UNUSED(tls), const int ptex_face_index, const float u, const float v, const int coarse_vertex_index, const int UNUSED(coarse_poly_index), const int UNUSED(coarse_corner), const int subdiv_vertex_index) |
| static void | subdiv_mesh_ensure_vertex_interpolation (SubdivMeshContext *ctx, SubdivMeshTLS *tls, const MPoly *coarse_poly, const int coarse_corner) |
| static void | subdiv_mesh_vertex_edge (const SubdivForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int UNUSED(coarse_edge_index), const int coarse_poly_index, const int coarse_corner, const int subdiv_vertex_index) |
| static bool | subdiv_mesh_is_center_vertex (const MPoly *coarse_poly, const float u, const float v) |
| static void | subdiv_mesh_tag_center_vertex (const MPoly *coarse_poly, MVert *subdiv_vert, const float u, const float v) |
| static void | subdiv_mesh_vertex_inner (const SubdivForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int coarse_poly_index, const int coarse_corner, const int subdiv_vertex_index) |
Edge subdivision process | |
| static void | subdiv_copy_edge_data (SubdivMeshContext *ctx, MEdge *subdiv_edge, const MEdge *coarse_edge) |
| static void | subdiv_mesh_edge (const SubdivForeachContext *foreach_context, void *UNUSED(tls), const int coarse_edge_index, const int subdiv_edge_index, const int subdiv_v1, const int subdiv_v2) |
Loops creation/interpolation | |
| static void | subdiv_interpolate_loop_data (const SubdivMeshContext *ctx, MLoop *subdiv_loop, const LoopsForInterpolation *loop_interpolation, const float u, const float v) |
| static void | subdiv_eval_uv_layer (SubdivMeshContext *ctx, MLoop *subdiv_loop, const int ptex_face_index, const float u, const float v) |
| static void | subdiv_mesh_ensure_loop_interpolation (SubdivMeshContext *ctx, SubdivMeshTLS *tls, const MPoly *coarse_poly, const int coarse_corner) |
| static void | subdiv_mesh_loop (const SubdivForeachContext *foreach_context, void *tls_v, const int ptex_face_index, const float u, const float v, const int UNUSED(coarse_loop_index), const int coarse_poly_index, const int coarse_corner, const int subdiv_loop_index, const int subdiv_vertex_index, const int subdiv_edge_index) |
Polygons subdivision process | |
| static void | subdiv_copy_poly_data (const SubdivMeshContext *ctx, MPoly *subdiv_poly, const MPoly *coarse_poly) |
| static void | subdiv_mesh_poly (const SubdivForeachContext *foreach_context, void *UNUSED(tls), const int coarse_poly_index, const int subdiv_poly_index, const int start_loop_index, const int num_loops) |
Loose elements subdivision process | |
| static void | subdiv_mesh_vertex_loose (const SubdivForeachContext *foreach_context, void *UNUSED(tls), const int coarse_vertex_index, const int subdiv_vertex_index) |
| static void | find_edge_neighbors (const SubdivMeshContext *ctx, const MEdge *edge, const MEdge *neighbors[2]) |
| static void | points_for_loose_edges_interpolation_get (SubdivMeshContext *ctx, const MEdge *coarse_edge, const MEdge *neighbors[2], float points_r[4][3]) |
| static void | subdiv_mesh_vertex_of_loose_edge_interpolate (SubdivMeshContext *ctx, const MEdge *coarse_edge, const float u, const int subdiv_vertex_index) |
| static void | subdiv_mesh_vertex_of_loose_edge (const struct SubdivForeachContext *foreach_context, void *UNUSED(tls), const int coarse_edge_index, const float u, const int subdiv_vertex_index) |
Initialization | |
| static void | setup_foreach_callbacks (const SubdivMeshContext *subdiv_context, SubdivForeachContext *foreach_context) |
Public entry point | |
| Mesh * | BKE_subdiv_to_mesh (Subdiv *subdiv, const SubdivToMeshSettings *settings, const Mesh *coarse_mesh) |
Subdivision Context | |
| typedef struct SubdivMeshContext | SubdivMeshContext |
| static void | subdiv_mesh_ctx_cache_uv_layers (SubdivMeshContext *ctx) |
| static void | subdiv_mesh_ctx_cache_custom_data_layers (SubdivMeshContext *ctx) |
| static void | subdiv_mesh_prepare_accumulator (SubdivMeshContext *ctx, int num_vertices) |
| static void | subdiv_mesh_context_free (SubdivMeshContext *ctx) |
Loop custom data copy helpers | |
| typedef struct LoopsOfPtex | LoopsOfPtex |
| static void | loops_of_ptex_get (const SubdivMeshContext *ctx, LoopsOfPtex *loops_of_ptex, const MPoly *coarse_poly, const int ptex_of_poly_index) |
Vertex custom data interpolation helpers | |
| typedef struct VerticesForInterpolation | VerticesForInterpolation |
| static void | vertex_interpolation_init (const SubdivMeshContext *ctx, VerticesForInterpolation *vertex_interpolation, const MPoly *coarse_poly) |
| static void | vertex_interpolation_from_corner (const SubdivMeshContext *ctx, VerticesForInterpolation *vertex_interpolation, const MPoly *coarse_poly, const int corner) |
| static void | vertex_interpolation_end (VerticesForInterpolation *vertex_interpolation) |
Loop custom data interpolation helpers | |
| typedef struct LoopsForInterpolation | LoopsForInterpolation |
| static void | loop_interpolation_init (const SubdivMeshContext *ctx, LoopsForInterpolation *loop_interpolation, const MPoly *coarse_poly) |
| static void | loop_interpolation_from_corner (const SubdivMeshContext *ctx, LoopsForInterpolation *loop_interpolation, const MPoly *coarse_poly, const int corner) |
| static void | loop_interpolation_end (LoopsForInterpolation *loop_interpolation) |
TLS | |
| typedef struct SubdivMeshTLS | SubdivMeshTLS |
| static void | subdiv_mesh_tls_free (void *tls_v) |
| typedef struct LoopsForInterpolation LoopsForInterpolation |
| typedef struct LoopsOfPtex LoopsOfPtex |
| typedef struct SubdivMeshContext SubdivMeshContext |
| typedef struct SubdivMeshTLS SubdivMeshTLS |
| typedef struct VerticesForInterpolation VerticesForInterpolation |
| Mesh* BKE_subdiv_to_mesh | ( | Subdiv * | subdiv, |
| const SubdivToMeshSettings * | settings, | ||
| const Mesh * | coarse_mesh | ||
| ) |
Definition at line 1195 of file subdiv_mesh.c.
References BKE_subdiv_eval_begin_from_mesh(), BKE_subdiv_foreach_subdiv_geometry(), BKE_subdiv_stats_begin(), BKE_subdiv_stats_end(), SubdivMeshContext::can_evaluate_normals, CD_MASK_NORMAL, SubdivMeshContext::coarse_mesh, Subdiv::displacement_evaluator, SubdivMeshContext::have_displacement, SubdivSettings::is_adaptive, NULL, result, Subdiv::settings, SubdivMeshContext::settings, setup_foreach_callbacks(), Subdiv::stats, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_mesh_context_free(), SUBDIV_STATS_SUBDIV_TO_MESH, SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY, Mesh::totpoly, SubdivForeachContext::user_data, SubdivForeachContext::user_data_tls, and SubdivForeachContext::user_data_tls_size.
|
static |
Definition at line 457 of file subdiv_mesh.c.
References BKE_subdiv_eval_final_point(), BKE_subdiv_eval_limit_point_and_short_normal(), Subdiv::displacement_evaluator, NULL, and v.
Referenced by subdiv_mesh_vertex_inner().
|
static |
Definition at line 570 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::accumulated_normals, add_v3_v3(), BKE_subdiv_eval_limit_point(), SubdivMeshContext::can_evaluate_normals, MVert::co, copy_v3_v3(), D(), MVert::flag, SubdivMeshContext::have_displacement, ME_VERT_FACEDOT, mul_v3_fl(), Mesh::mvert, N, MVert::no, normal_float_to_short_v3(), normalize_v3(), SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_vertex_data_copy(), and v.
Referenced by subdiv_mesh_vertex_corner().
|
static |
Definition at line 602 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::accumulated_normals, add_v3_v3(), BKE_subdiv_eval_limit_point(), SubdivMeshContext::can_evaluate_normals, MVert::co, copy_v3_v3(), D(), SubdivMeshContext::have_displacement, mul_v3_fl(), Mesh::mvert, N, MVert::no, normal_float_to_short_v3(), normalize_v3(), SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_vertex_data_interpolate(), and v.
Referenced by subdiv_mesh_vertex_edge().
|
static |
Definition at line 1007 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, ELEM, Mesh::medge, NULL, Mesh::totedge, MEdge::v1, and MEdge::v2.
Referenced by subdiv_mesh_vertex_of_loose_edge().
|
static |
Definition at line 415 of file subdiv_mesh.c.
References CustomData_free(), LoopsForInterpolation::loop_data_storage, and LoopsForInterpolation::loop_data_storage_allocated.
Referenced by subdiv_mesh_ensure_loop_interpolation(), and subdiv_mesh_tls_free().
|
static |
Definition at line 375 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), CustomData_free_elem(), CustomData_interp(), LoopsOfPtex::first_loop, Mesh::ldata, LoopsForInterpolation::loop_data_storage, loops_of_ptex_get(), MPoly::loopstart, Mesh::mloop, NULL, and MPoly::totloop.
Referenced by subdiv_mesh_ensure_loop_interpolation().
|
static |
Definition at line 329 of file subdiv_mesh.c.
References BLI_array_alloca, CD_CALLOC, CD_MASK_EVERYTHING, SubdivMeshContext::coarse_mesh, CustomData_copy(), CustomData_interp(), float(), indices, Mesh::ldata, CustomData_MeshMasks::lmask, LoopsForInterpolation::loop_data, LoopsForInterpolation::loop_data_storage, LoopsForInterpolation::loop_data_storage_allocated, LoopsForInterpolation::loop_indices, MPoly::loopstart, NULL, and MPoly::totloop.
Referenced by subdiv_mesh_ensure_loop_interpolation().
|
static |
Definition at line 138 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, LoopsOfPtex::first_loop, if(), LoopsOfPtex::last_loop, MPoly::loopstart, Mesh::mloop, NULL, LoopsOfPtex::second_loop, LoopsOfPtex::third_loop, and MPoly::totloop.
Referenced by loop_interpolation_from_corner(), and vertex_interpolation_from_corner().
|
static |
Definition at line 1041 of file subdiv_mesh.c.
References add_v3_v3(), MVert::co, SubdivMeshContext::coarse_mesh, copy_v3_v3(), Mesh::mvert, NULL, sub_v3_v3v3(), v1, MEdge::v1, v2, and MEdge::v2.
Referenced by subdiv_mesh_vertex_of_loose_edge().
|
static |
Definition at line 1163 of file subdiv_mesh.c.
References SubdivMeshContext::can_evaluate_normals, SubdivForeachContext::edge, SubdivMeshContext::have_displacement, SubdivForeachContext::loop, SubdivForeachContext::poly, subdiv_mesh_edge(), subdiv_mesh_loop(), subdiv_mesh_poly(), subdiv_mesh_tls_free(), subdiv_mesh_topology_info(), subdiv_mesh_vertex_corner(), subdiv_mesh_vertex_edge(), subdiv_mesh_vertex_every_corner(), subdiv_mesh_vertex_every_edge(), subdiv_mesh_vertex_inner(), subdiv_mesh_vertex_loose(), subdiv_mesh_vertex_of_loose_edge(), SubdivForeachContext::topology_info, SubdivForeachContext::user_data_tls_free, SubdivForeachContext::vertex_corner, SubdivForeachContext::vertex_edge, SubdivForeachContext::vertex_every_corner, SubdivForeachContext::vertex_every_edge, SubdivForeachContext::vertex_inner, SubdivForeachContext::vertex_loose, and SubdivForeachContext::vertex_of_loose_edge.
Referenced by BKE_subdiv_to_mesh().
|
static |
Definition at line 478 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::accumulated_normals, add_v3_v3(), BKE_subdiv_eval_displacement(), BKE_subdiv_eval_limit_point_and_derivatives(), SubdivMeshContext::can_evaluate_normals, MVert::co, cross_v3_v3v3(), D(), SubdivMeshContext::have_displacement, Mesh::mvert, N, normalize_v3(), SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, and v.
Referenced by subdiv_mesh_vertex_every_corner_or_edge().
|
static |
Definition at line 806 of file subdiv_mesh.c.
References MEdge::bweight, SubdivMeshContext::coarse_mesh, MEdge::crease, CustomData_copy_data(), SubdivMeshContext::edge_origindex, MEdge::flag, ME_EDGERENDER, Mesh::medge, NULL, ORIGINDEX_NONE, SubdivMeshContext::settings, SubdivMeshContext::subdiv_mesh, and SubdivToMeshSettings::use_optimal_display.
Referenced by subdiv_mesh_edge().
|
static |
Definition at line 953 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::mpoly, and SubdivMeshContext::subdiv_mesh.
Referenced by subdiv_mesh_poly().
|
static |
Definition at line 875 of file subdiv_mesh.c.
References BKE_subdiv_eval_face_varying(), Mesh::mloop, SubdivMeshContext::num_uv_layers, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, MLoopUV::uv, SubdivMeshContext::uv_layers, and v.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 857 of file subdiv_mesh.c.
References CustomData_interp(), Mesh::ldata, LoopsForInterpolation::loop_data, LoopsForInterpolation::loop_indices, Mesh::mloop, NULL, SubdivMeshContext::subdiv_mesh, and v.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 116 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::accumulated_normals, and MEM_SAFE_FREE.
Referenced by BKE_subdiv_to_mesh().
|
static |
Definition at line 91 of file subdiv_mesh.c.
References CD_ORIGINDEX, CustomData_get_layer(), SubdivMeshContext::edge_origindex, Mesh::ldata, SubdivMeshContext::loop_origindex, SubdivMeshContext::poly_origindex, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_uv_layers(), and SubdivMeshContext::vert_origindex.
Referenced by subdiv_mesh_topology_info().
|
static |
Definition at line 81 of file subdiv_mesh.c.
References CD_MLOOPUV, CustomData_get_layer_n(), CustomData_number_of_layers(), Mesh::ldata, SubdivMeshContext::num_uv_layers, SubdivMeshContext::subdiv_mesh, and SubdivMeshContext::uv_layers.
Referenced by subdiv_mesh_ctx_cache_custom_data_layers().
|
static |
Definition at line 829 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, Mesh::medge, NULL, ORIGINDEX_NONE, subdiv_copy_edge_data(), SubdivMeshContext::subdiv_mesh, SubdivForeachContext::user_data, MEdge::v1, and MEdge::v2.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 892 of file subdiv_mesh.c.
References SubdivMeshTLS::loop_interpolation, SubdivMeshTLS::loop_interpolation_coarse_corner, SubdivMeshTLS::loop_interpolation_coarse_poly, loop_interpolation_end(), loop_interpolation_from_corner(), loop_interpolation_init(), and SubdivMeshTLS::loop_interpolation_initialized.
Referenced by subdiv_mesh_loop().
|
static |
Definition at line 699 of file subdiv_mesh.c.
References SubdivMeshTLS::vertex_interpolation, SubdivMeshTLS::vertex_interpolation_coarse_corner, SubdivMeshTLS::vertex_interpolation_coarse_poly, vertex_interpolation_end(), vertex_interpolation_from_corner(), vertex_interpolation_init(), and SubdivMeshTLS::vertex_interpolation_initialized.
Referenced by subdiv_mesh_vertex_edge(), and subdiv_mesh_vertex_inner().
|
static |
Definition at line 750 of file subdiv_mesh.c.
References MPoly::totloop, and v.
Referenced by subdiv_mesh_tag_center_vertex().
|
static |
Definition at line 920 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, MLoop::e, SubdivMeshTLS::loop_interpolation, Mesh::mloop, Mesh::mpoly, subdiv_eval_uv_layer(), subdiv_interpolate_loop_data(), SubdivMeshContext::subdiv_mesh, subdiv_mesh_ensure_loop_interpolation(), SubdivForeachContext::user_data, v, and MLoop::v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 963 of file subdiv_mesh.c.
References BLI_assert, SubdivMeshContext::coarse_mesh, MPoly::loopstart, Mesh::mpoly, ORIGINDEX_NONE, subdiv_copy_poly_data(), SubdivMeshContext::subdiv_mesh, MPoly::totloop, and SubdivForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 103 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::accumulated_normals, SubdivMeshContext::can_evaluate_normals, SubdivMeshContext::have_displacement, and MEM_calloc_arrayN.
Referenced by subdiv_mesh_topology_info().
|
static |
Definition at line 765 of file subdiv_mesh.c.
References MVert::flag, ME_VERT_FACEDOT, subdiv_mesh_is_center_vertex(), and v.
Referenced by subdiv_mesh_vertex_inner().
|
static |
Definition at line 440 of file subdiv_mesh.c.
References SubdivMeshTLS::loop_interpolation, loop_interpolation_end(), SubdivMeshTLS::loop_interpolation_initialized, SubdivMeshTLS::vertex_interpolation, vertex_interpolation_end(), and SubdivMeshTLS::vertex_interpolation_initialized.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 513 of file subdiv_mesh.c.
References BKE_mesh_new_nomain_from_template_ex(), CD_MASK_EVERYTHING, CD_MASK_MULTIRES_GRIDS, SubdivMeshContext::coarse_mesh, mask(), SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_custom_data_layers(), subdiv_mesh_prepare_accumulator(), and SubdivForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 677 of file subdiv_mesh.c.
References BLI_assert, SubdivMeshContext::coarse_mesh, evaluate_vertex_and_apply_displacement_copy(), Mesh::mvert, ORIGINDEX_NONE, SubdivMeshContext::subdiv_mesh, SubdivForeachContext::user_data, and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 727 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, evaluate_vertex_and_apply_displacement_interpolate(), Mesh::mpoly, Mesh::mvert, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ensure_vertex_interpolation(), SubdivForeachContext::user_data, v, and SubdivMeshTLS::vertex_interpolation.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 649 of file subdiv_mesh.c.
References subdiv_mesh_vertex_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 635 of file subdiv_mesh.c.
References Mesh::mvert, subdiv_accumulate_vertex_normal_and_displacement(), SubdivMeshContext::subdiv_mesh, SubdivForeachContext::user_data, and v.
Referenced by subdiv_mesh_vertex_every_corner(), and subdiv_mesh_vertex_every_edge().
|
static |
Definition at line 663 of file subdiv_mesh.c.
References subdiv_mesh_vertex_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 775 of file subdiv_mesh.c.
References MVert::co, SubdivMeshContext::coarse_mesh, eval_final_point_and_vertex_normal(), Mesh::mpoly, Mesh::mvert, MVert::no, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ensure_vertex_interpolation(), subdiv_mesh_tag_center_vertex(), subdiv_vertex_data_interpolate(), SubdivForeachContext::user_data, v, and SubdivMeshTLS::vertex_interpolation.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 989 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, Mesh::mvert, SubdivMeshContext::subdiv_mesh, subdiv_vertex_data_copy(), and SubdivForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 1112 of file subdiv_mesh.c.
References MVert::bweight, MVert::co, SubdivMeshContext::coarse_mesh, find_edge_neighbors(), MVert::flag, interp_v3_v3v3(), interp_v3_v3v3v3v3(), SubdivSettings::is_simple, KEY_BSPLINE, key_curve_position_weights(), Mesh::medge, Mesh::mvert, MVert::no, normal_float_to_short_v3(), normalize_v3_v3(), points_for_loose_edges_interpolation_get(), Subdiv::settings, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_mesh_vertex_of_loose_edge_interpolate(), SubdivForeachContext::user_data, MEdge::v1, and MEdge::v2.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 1079 of file subdiv_mesh.c.
References BLI_assert, SubdivMeshContext::coarse_mesh, CustomData_copy_data(), CustomData_interp(), NULL, ORIGINDEX_NONE, SubdivMeshContext::subdiv_mesh, MEdge::v1, MEdge::v2, and SubdivMeshContext::vert_origindex.
Referenced by subdiv_mesh_vertex_of_loose_edge().
|
static |
Definition at line 538 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::mvert, and SubdivMeshContext::subdiv_mesh.
Referenced by evaluate_vertex_and_apply_displacement_copy(), and subdiv_mesh_vertex_loose().
|
static |
Definition at line 550 of file subdiv_mesh.c.
References CustomData_interp(), Mesh::mvert, NULL, ORIGINDEX_NONE, SubdivMeshContext::subdiv_mesh, v, SubdivMeshContext::vert_origindex, VerticesForInterpolation::vertex_data, and VerticesForInterpolation::vertex_indices.
Referenced by evaluate_vertex_and_apply_displacement_interpolate(), and subdiv_mesh_vertex_inner().
|
static |
Definition at line 295 of file subdiv_mesh.c.
References CustomData_free(), VerticesForInterpolation::vertex_data_storage, and VerticesForInterpolation::vertex_data_storage_allocated.
Referenced by subdiv_mesh_ensure_vertex_interpolation(), and subdiv_mesh_tls_free().
|
static |
Definition at line 241 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), CustomData_interp(), LoopsOfPtex::first_loop, LoopsOfPtex::last_loop, loops_of_ptex_get(), MPoly::loopstart, Mesh::mloop, NULL, MPoly::totloop, MLoop::v, and VerticesForInterpolation::vertex_data_storage.
Referenced by subdiv_mesh_ensure_vertex_interpolation().
|
static |
Definition at line 194 of file subdiv_mesh.c.
References BLI_array_alloca, CD_CALLOC, CD_MASK_EVERYTHING, SubdivMeshContext::coarse_mesh, CustomData_copy(), CustomData_interp(), float(), indices, MPoly::loopstart, Mesh::mloop, NULL, MPoly::totloop, MLoop::v, VerticesForInterpolation::vertex_data, VerticesForInterpolation::vertex_data_storage, VerticesForInterpolation::vertex_data_storage_allocated, VerticesForInterpolation::vertex_indices, and CustomData_MeshMasks::vmask.
Referenced by subdiv_mesh_ensure_vertex_interpolation().