Blender
V3.3
|
#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_bitmap.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 "BKE_subdiv_mesh.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 | subdiv_vertex_orco_evaluate (const SubdivMeshContext *ctx, const int ptex_face_index, const float u, const float v, const int subdiv_vertex_index) |
Accumulation helpers | |
static void | subdiv_accumulate_vertex_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, const int *UNUSED(subdiv_polygon_offset)) |
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_displacement_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_displacement_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_displacement_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, const int subdiv_vertex_index, const float u, const float v, Mesh *subdiv_mesh) |
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 bool UNUSED(is_loose), 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 Mesh *coarse_mesh, const MEdge *edge, const MEdge *neighbors[2]) |
static void | points_for_loose_edges_interpolation_get (const Mesh *coarse_mesh, const MEdge *coarse_edge, const MEdge *neighbors[2], float points_r[4][3]) |
void | BKE_subdiv_mesh_interpolate_position_on_edge (const Mesh *coarse_mesh, const MEdge *coarse_edge, const bool is_simple, const float u, float pos_r[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 |
void BKE_subdiv_mesh_interpolate_position_on_edge | ( | const Mesh * | coarse_mesh, |
const MEdge * | coarse_edge, | ||
const bool | is_simple, | ||
const float | u, | ||
float | pos_r[3] | ||
) |
Definition at line 1043 of file subdiv_mesh.c.
References MVert::co, find_edge_neighbors(), interp_v3_v3v3(), interp_v3_v3v3v3v3(), KEY_BSPLINE, key_curve_position_weights(), Mesh::mvert, points_for_loose_edges_interpolation_get(), MEdge::v1, and MEdge::v2.
Referenced by subdiv_mesh_vertex_of_loose_edge().
Mesh* BKE_subdiv_to_mesh | ( | Subdiv * | subdiv, |
const SubdivToMeshSettings * | settings, | ||
const Mesh * | coarse_mesh | ||
) |
Definition at line 1153 of file subdiv_mesh.c.
References BKE_mesh_poly_normals_are_dirty(), BKE_mesh_vertex_normals_are_dirty(), BKE_subdiv_eval_begin_from_mesh(), BKE_subdiv_foreach_subdiv_geometry(), BKE_subdiv_stats_begin(), BKE_subdiv_stats_end(), BLI_assert, SubdivMeshContext::coarse_mesh, Subdiv::displacement_evaluator, SubdivMeshContext::have_displacement, NULL, result, SubdivMeshContext::settings, setup_foreach_callbacks(), Subdiv::stats, SubdivMeshContext::subdiv, SUBDIV_EVALUATOR_TYPE_CPU, 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 544 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, add_v3_v3(), BKE_subdiv_eval_limit_point(), BLI_BITMAP_DISABLE, MVert::co, copy_v3_v3(), D(), SubdivMeshContext::have_displacement, mul_v3_fl(), Mesh::mvert, Mesh::runtime, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_vertex_data_copy(), subdiv_vertex_orco_evaluate(), Mesh_Runtime::subsurf_face_dot_tags, and v.
Referenced by subdiv_mesh_vertex_corner().
|
static |
Definition at line 571 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, add_v3_v3(), BKE_subdiv_eval_limit_point(), MVert::co, copy_v3_v3(), D(), SubdivMeshContext::have_displacement, mul_v3_fl(), Mesh::mvert, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_vertex_data_interpolate(), subdiv_vertex_orco_evaluate(), and v.
Referenced by subdiv_mesh_vertex_edge().
|
static |
Definition at line 973 of file subdiv_mesh.c.
References ELEM, Mesh::medge, NULL, Mesh::totedge, MEdge::v1, and MEdge::v2.
Referenced by BKE_subdiv_mesh_interpolate_position_on_edge().
|
static |
Definition at line 385 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 345 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 299 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 108 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 1006 of file subdiv_mesh.c.
References add_v3_v3(), MVert::co, copy_v3_v3(), Mesh::mvert, NULL, sub_v3_v3v3(), v1, MEdge::v1, v2, and MEdge::v2.
Referenced by BKE_subdiv_mesh_interpolate_position_on_edge().
|
static |
Definition at line 1125 of file subdiv_mesh.c.
References 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_displacement_every_corner(), subdiv_mesh_vertex_displacement_every_edge(), subdiv_mesh_vertex_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 455 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, add_v3_v3(), BKE_subdiv_eval_displacement(), BKE_subdiv_eval_limit_point_and_derivatives(), MVert::co, D(), Mesh::mvert, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, and v.
Referenced by subdiv_mesh_vertex_displacement_every_corner_or_edge().
|
static |
Definition at line 771 of file subdiv_mesh.c.
References MEdge::bweight, SubdivMeshContext::coarse_mesh, MEdge::crease, CustomData_copy_data(), Mesh::edata, 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 919 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::mpoly, Mesh::pdata, and SubdivMeshContext::subdiv_mesh.
Referenced by subdiv_mesh_poly().
|
static |
Definition at line 841 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 823 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 87 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, and MEM_SAFE_FREE.
Referenced by BKE_subdiv_to_mesh().
|
static |
Definition at line 63 of file subdiv_mesh.c.
References CD_CLOTH_ORCO, CD_ORCO, CD_ORIGINDEX, SubdivMeshContext::cloth_orco, CustomData_get_layer(), Mesh::edata, SubdivMeshContext::edge_origindex, Mesh::ldata, SubdivMeshContext::loop_origindex, SubdivMeshContext::orco, Mesh::pdata, SubdivMeshContext::poly_origindex, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_uv_layers(), Mesh::vdata, and SubdivMeshContext::vert_origindex.
Referenced by subdiv_mesh_topology_info().
|
static |
Definition at line 53 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 794 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 858 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 663 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 714 of file subdiv_mesh.c.
References MPoly::totloop, and v.
Referenced by subdiv_mesh_tag_center_vertex().
|
static |
Definition at line 886 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 929 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 78 of file subdiv_mesh.c.
References SubdivMeshContext::accumulated_counters, SubdivMeshContext::have_displacement, and MEM_calloc_arrayN.
Referenced by subdiv_mesh_topology_info().
|
static |
Definition at line 729 of file subdiv_mesh.c.
References BLI_BITMAP_ENABLE, Mesh::runtime, subdiv_mesh_is_center_vertex(), Mesh_Runtime::subsurf_face_dot_tags, and v.
Referenced by subdiv_mesh_vertex_inner().
Definition at line 410 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 483 of file subdiv_mesh.c.
References BKE_mesh_new_nomain_from_template_ex(), BLI_BITMAP_NEW, CD_MASK_EVERYTHING, CD_MASK_MULTIRES_GRIDS, SubdivMeshContext::coarse_mesh, mask(), MEM_SAFE_FREE, Mesh::runtime, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ctx_cache_custom_data_layers(), subdiv_mesh_prepare_accumulator(), Mesh_Runtime::subsurf_face_dot_tags, and SubdivForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 641 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 612 of file subdiv_mesh.c.
References subdiv_mesh_vertex_displacement_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 597 of file subdiv_mesh.c.
References Mesh::mvert, subdiv_accumulate_vertex_displacement(), SubdivMeshContext::subdiv_mesh, SubdivForeachContext::user_data, and v.
Referenced by subdiv_mesh_vertex_displacement_every_corner(), and subdiv_mesh_vertex_displacement_every_edge().
|
static |
Definition at line 627 of file subdiv_mesh.c.
References subdiv_mesh_vertex_displacement_every_corner_or_edge(), and v.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 691 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 740 of file subdiv_mesh.c.
References BKE_subdiv_eval_final_point(), MVert::co, SubdivMeshContext::coarse_mesh, Mesh::mpoly, Mesh::mvert, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_mesh_ensure_vertex_interpolation(), subdiv_mesh_tag_center_vertex(), subdiv_vertex_data_interpolate(), subdiv_vertex_orco_evaluate(), SubdivForeachContext::user_data, v, and SubdivMeshTLS::vertex_interpolation.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 955 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 1091 of file subdiv_mesh.c.
References BKE_subdiv_mesh_interpolate_position_on_edge(), MVert::bweight, MVert::co, SubdivMeshContext::coarse_mesh, ELEM, MVert::flag, SubdivSettings::is_simple, Mesh::medge, Mesh::mvert, Subdiv::settings, SubdivMeshContext::subdiv, SubdivMeshContext::subdiv_mesh, subdiv_mesh_vertex_of_loose_edge_interpolate(), and SubdivForeachContext::user_data.
Referenced by setup_foreach_callbacks().
|
static |
Definition at line 1067 of file subdiv_mesh.c.
References BLI_assert, SubdivMeshContext::coarse_mesh, CustomData_interp(), NULL, ORIGINDEX_NONE, SubdivMeshContext::subdiv_mesh, MEdge::v1, MEdge::v2, Mesh::vdata, and SubdivMeshContext::vert_origindex.
Referenced by subdiv_mesh_vertex_of_loose_edge().
|
static |
Definition at line 512 of file subdiv_mesh.c.
References SubdivMeshContext::coarse_mesh, CustomData_copy_data(), Mesh::mvert, SubdivMeshContext::subdiv_mesh, and Mesh::vdata.
Referenced by evaluate_vertex_and_apply_displacement_copy(), and subdiv_mesh_vertex_loose().
|
static |
Definition at line 524 of file subdiv_mesh.c.
References CustomData_interp(), Mesh::mvert, NULL, ORIGINDEX_NONE, SubdivMeshContext::subdiv_mesh, v, Mesh::vdata, 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 427 of file subdiv_mesh.c.
References BKE_subdiv_eval_vertex_data(), SubdivMeshContext::cloth_orco, copy_v3_v3(), SubdivMeshContext::orco, SubdivMeshContext::subdiv, and v.
Referenced by evaluate_vertex_and_apply_displacement_copy(), evaluate_vertex_and_apply_displacement_interpolate(), and subdiv_mesh_vertex_inner().
|
static |
Definition at line 265 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 211 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, Mesh::vdata, and VerticesForInterpolation::vertex_data_storage.
Referenced by subdiv_mesh_ensure_vertex_interpolation().
|
static |
Definition at line 164 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, Mesh::vdata, 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().