Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
#include "BLI_array.h"
#include "BLI_bitmap.h"
#include "BLI_heap_simple.h"
#include "BLI_math.h"
#include "BLI_math_geom.h"
#include "BLI_stack.h"
#include "BLT_translation.h"
#include "DNA_defaults.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_screen_types.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_lib_id.h"
#include "BKE_mesh.h"
#include "BKE_mesh_mapping.h"
#include "BKE_modifier.h"
#include "BKE_screen.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "WM_types.h"
#include "MOD_modifiertypes.h"
#include "MOD_ui_common.h"
#include "bmesh.h"
Go to the source code of this file.
Classes | |
struct | EMat |
struct | Frame |
struct | SkinNode |
struct | SkinOutput |
struct | EdgeStackElem |
Macros | |
#define | MAX_SKIN_NODE_FRAMES 2 |
#define | NUM_SUBDIVISIONS_MAX 128 |
#define | PRINT_HOLE_INFO 0 |
Typedefs | |
typedef struct Frame | Frame |
typedef enum eSkinErrorFlag | eSkinErrorFlag |
Enumerations | |
enum | SkinNodeFlag { CAP_START = 1 , CAP_END = 2 , SEAM_FRAME = 4 , FLIP_NORMAL = 8 } |
enum | eSkinErrorFlag { SKIN_ERROR_NO_VALID_ROOT = (1 << 0) , SKIN_ERROR_HULL = (1 << 1) } |
Functions | |
static void | add_poly (SkinOutput *so, BMVert *v1, BMVert *v2, BMVert *v3, BMVert *v4) |
static bool | is_quad_symmetric (BMVert *quad[4], const SkinModifierData *smd) |
static bool | quad_crosses_symmetry_plane (BMVert *quad[4], const SkinModifierData *smd) |
static bool | skin_frame_find_contained_faces (const Frame *frame, BMFace *fill_faces[2]) |
static bool | build_hull (SkinOutput *so, Frame **frames, int totframe) |
static float | frame_len (const Frame *frame) |
static void | merge_frame_corners (Frame **frames, int totframe) |
static Frame ** | collect_hull_frames (int v, SkinNode *frames, const MeshElemMap *emap, const MEdge *medge, int *tothullframe) |
static void | node_frames_init (SkinNode *nf, int totframe) |
static void | create_frame (Frame *frame, const float co[3], const float radius[2], const float mat[3][3], float offset) |
static float | half_v2 (const float v[2]) |
static void | end_node_frames (int v, SkinNode *skin_nodes, const MVert *mvert, const MVertSkin *nodes, const MeshElemMap *emap, EMat *emat) |
static int | connection_node_mat (float mat[3][3], int v, const MeshElemMap *emap, EMat *emat) |
static void | connection_node_frames (int v, SkinNode *skin_nodes, const MVert *mvert, const MVertSkin *nodes, const MeshElemMap *emap, EMat *emat) |
static SkinNode * | build_frames (const MVert *mvert, int verts_num, const MVertSkin *nodes, const MeshElemMap *emap, EMat *emat) |
static void | calc_edge_mat (float mat[3][3], const float a[3], const float b[3]) |
static void | build_emats_stack (BLI_Stack *stack, BLI_bitmap *visited_e, EMat *emat, const MeshElemMap *emap, const MEdge *medge, const MVertSkin *vs, const MVert *mvert) |
static EMat * | build_edge_mats (const MVertSkin *vs, const MVert *mvert, const int verts_num, const MEdge *medge, const MeshElemMap *emap, const int edges_num, bool *has_valid_root) |
static int | calc_edge_subdivisions (const MVert *mvert, const MVertSkin *nodes, const MEdge *e, const int *degree) |
static Mesh * | subdivide_base (const Mesh *orig) |
static void | connect_frames (SkinOutput *so, BMVert *frame1[4], BMVert *frame2[4]) |
static void | output_frames (BMesh *bm, SkinNode *sn, const MDeformVert *input_dvert) |
static void | calc_frame_center (float center[3], const Frame *frame) |
static int | isect_ray_poly (const float ray_start[3], const float ray_dir[3], BMFace *f, float *r_lambda) |
static BMFace * | collapse_face_corners (BMesh *bm, BMFace *f, int n, BMVert **orig_verts) |
static BMFace * | skin_hole_target_face (BMesh *bm, Frame *frame) |
static void | skin_choose_quad_bridge_order (BMVert *a[4], BMVert *b[4], int best_order[4]) |
static void | skin_fix_hole_no_good_verts (BMesh *bm, Frame *frame, BMFace *split_face) |
static void | skin_hole_detach_partially_attached_frame (BMesh *bm, Frame *frame) |
static void | quad_from_tris (BMEdge *e, BMFace *adj[2], BMVert *ndx[4]) |
static void | add_quad_from_tris (SkinOutput *so, BMEdge *e, BMFace *adj[2]) |
static void | hull_merge_triangles (SkinOutput *so, const SkinModifierData *smd) |
static void | skin_merge_close_frame_verts (SkinNode *skin_nodes, int verts_num, const MeshElemMap *emap, const MEdge *medge) |
static void | skin_update_merged_vertices (SkinNode *skin_nodes, int verts_num) |
static void | skin_fix_hull_topology (BMesh *bm, SkinNode *skin_nodes, int verts_num) |
static void | skin_output_end_nodes (SkinOutput *so, SkinNode *skin_nodes, int verts_num) |
static void | skin_output_connections (SkinOutput *so, SkinNode *skin_nodes, const MEdge *medge, int edges_num) |
static void | skin_smooth_hulls (BMesh *bm, SkinNode *skin_nodes, int verts_num, const SkinModifierData *smd) |
static bool | skin_output_branch_hulls (SkinOutput *so, SkinNode *skin_nodes, int verts_num, const MeshElemMap *emap, const MEdge *medge) |
static BMesh * | build_skin (SkinNode *skin_nodes, int verts_num, const MeshElemMap *emap, const MEdge *medge, int edges_num, const MDeformVert *input_dvert, SkinModifierData *smd, eSkinErrorFlag *r_error) |
static void | skin_set_orig_indices (Mesh *mesh) |
static Mesh * | base_skin (Mesh *origmesh, SkinModifierData *smd, eSkinErrorFlag *r_error) |
static Mesh * | final_skin (SkinModifierData *smd, Mesh *mesh, eSkinErrorFlag *r_error) |
static void | initData (ModifierData *md) |
static Mesh * | modifyMesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh) |
static void | requiredDataMask (Object *UNUSED(ob), ModifierData *UNUSED(md), CustomData_MeshMasks *r_cddata_masks) |
static void | panel_draw (const bContext *UNUSED(C), Panel *panel) |
static void | panelRegister (ARegionType *region_type) |
Generic BMesh Utilities | |
static void | vert_face_normal_mark_set (BMVert *v) |
static void | vert_face_normal_mark_update (BMVert *v) |
static void | vert_array_face_normal_update (BMVert **verts, int verts_len) |
Variables | |
ModifierTypeInfo | modifierType_Skin |
#define MAX_SKIN_NODE_FRAMES 2 |
Definition at line 156 of file MOD_skin.c.
#define NUM_SUBDIVISIONS_MAX 128 |
#define PRINT_HOLE_INFO 0 |
Definition at line 1113 of file MOD_skin.c.
typedef enum eSkinErrorFlag eSkinErrorFlag |
Definition at line 261 of file frames.hpp.
enum eSkinErrorFlag |
Enumerator | |
---|---|
SKIN_ERROR_NO_VALID_ROOT | |
SKIN_ERROR_HULL |
Definition at line 1807 of file MOD_skin.c.
enum SkinNodeFlag |
Enumerator | |
---|---|
CAP_START | |
CAP_END | |
SEAM_FRAME | |
FLIP_NORMAL |
Definition at line 127 of file MOD_skin.c.
Definition at line 1018 of file MOD_skin.c.
References BLI_assert, SkinOutput::bm, BM_CREATE_NO_DOUBLE, BM_elem_flag_enable, BM_ELEM_SMOOTH, BM_face_create_verts(), BM_face_normal_update(), ELEM, SkinModifierData::flag, BMFace::mat_nr, SkinOutput::mat_nr, MOD_SKIN_SMOOTH_SHADING, NULL, SkinOutput::smd, v1, v2, and verts.
Referenced by add_quad_from_tris(), connect_frames(), and skin_output_end_nodes().
|
static |
Definition at line 1472 of file MOD_skin.c.
References add_poly(), e, quad, and quad_from_tris().
Referenced by hull_merge_triangles().
|
static |
Definition at line 1901 of file MOD_skin.c.
References BKE_mesh_from_bmesh_for_eval_nomain(), BKE_mesh_vert_edge_map_create(), bm, BM_mesh_free(), build_edge_mats(), build_frames(), build_skin(), CD_MVERT_SKIN, CustomData_get_layer(), Mesh::dvert, Mesh::medge, MEM_freeN, Mesh::mvert, NULL, result, SKIN_ERROR_NO_VALID_ROOT, skin_set_orig_indices(), Mesh::totedge, Mesh::totvert, and Mesh::vdata.
Referenced by final_skin().
|
static |
Definition at line 767 of file MOD_skin.c.
References BKE_mesh_edge_other_vert(), BLI_BITMAP_NEW, BLI_stack_free(), BLI_stack_is_empty(), BLI_stack_new, BLI_stack_push(), build_emats_stack(), calc_edge_mat(), MVert::co, MeshElemMap::count, count, e, EdgeStackElem::e, MeshElemMap::indices, EdgeStackElem::mat, MEM_calloc_arrayN, MEM_freeN, MVERT_SKIN_ROOT, EdgeStackElem::parent_v, and v.
Referenced by base_skin().
|
static |
Definition at line 711 of file MOD_skin.c.
References angle(), angle_normalized_v3v3(), BKE_mesh_edge_other_vert(), BLI_BITMAP_ENABLE, BLI_BITMAP_TEST, BLI_stack_pop(), BLI_stack_push(), calc_edge_mat(), copy_m3_m3(), MeshElemMap::count, cross_v3_v3v3(), e, EdgeStackElem::e, MeshElemMap::indices, EMat::mat, EdgeStackElem::mat, MVERT_SKIN_ROOT, normalize_v3(), EMat::origin, EdgeStackElem::parent_v, rotate_normalized_v3_v3v3fl(), sub_v3_v3v3(), and v.
Referenced by build_edge_mats().
|
static |
Definition at line 651 of file MOD_skin.c.
References connection_node_frames(), count, end_node_frames(), MEM_calloc_arrayN, and v.
Referenced by base_skin().
|
static |
Definition at line 258 of file MOD_skin.c.
References bm, SkinOutput::bm, BM_ALL_NOLOOP, BM_EDGE, BM_edge_exists(), BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_SELECT, BM_ELEM_SMOOTH, BM_ELEM_TAG, BM_FACE, BM_face_normal_update(), BM_FACES_OF_EDGE, BM_ITER_ELEM, BM_mesh_delete_hflag_tagged(), BM_mesh_elem_hflag_disable_all(), BM_VERT, BMO_ERROR_CANCEL, BMO_error_occurred_at_level(), BMO_FLAG_DEFAULTS, BMO_FLAG_RESPECT_HIDE, BMO_ITER, BMO_op_exec(), BMO_op_finish(), BMO_op_initf(), Frame::detached, e, SkinModifierData::flag, Frame::inside_hull, BMFace::mat_nr, SkinOutput::mat_nr, MOD_SKIN_SMOOTH_SHADING, skin_frame_find_contained_faces(), BMOperator::slots_out, SkinOutput::smd, UNUSED_VARS, v, Frame::verts, and verts.
Referenced by skin_output_branch_hulls().
|
static |
Definition at line 1812 of file MOD_skin.c.
References SkinOutput::bm, BM_data_layer_add(), bm_mesh_allocsize_default, BM_mesh_create(), BM_mesh_elem_toolflags_ensure(), bmesh_edit_begin(), bmesh_edit_end(), BMO_pop(), BMO_push(), CD_MDEFORMVERT, hull_merge_triangles(), SkinOutput::mat_nr, NULL, output_frames(), SKIN_ERROR_HULL, skin_fix_hull_topology(), skin_merge_close_frame_verts(), skin_output_branch_hulls(), skin_output_connections(), skin_output_end_nodes(), skin_smooth_hulls(), skin_update_merged_vertices(), SkinOutput::smd, v, and BMesh::vdata.
Referenced by base_skin().
Definition at line 676 of file MOD_skin.c.
References Freestyle::a, usdtokens::b(), cross_v3_v3v3(), blender::math::dot(), dot_v3v3(), normalize_v3(), and sub_v3_v3v3().
Referenced by build_edge_mats(), and build_emats_stack().
|
static |
Definition at line 828 of file MOD_skin.c.
References MVert::co, e, half_v2(), len_v3v3(), MVERT_SKIN_LOOSE, and NUM_SUBDIVISIONS_MAX.
Referenced by subdivide_base().
Definition at line 1115 of file MOD_skin.c.
References add_v3_v3(), add_v3_v3v3(), center, BMVert::co, mul_v3_fl(), and Frame::verts.
Referenced by skin_hole_target_face().
Definition at line 1162 of file MOD_skin.c.
References BLI_assert, bm, BM_face_find_shortest_loop(), BM_FACES_OF_VERT, BM_ITER_ELEM, BM_vert_in_face(), BMO_FLAG_DEFAULTS, BMO_FLAG_RESPECT_HIDE, BMO_op_exec(), BMO_op_finish(), BMO_op_initf(), BMO_slot_get(), BMO_slot_map_elem_insert(), BMVert::co, BMLoop::e, BMFace::len, mid_v3_v3v3(), NULL, BMOperator::slots_in, BMEdge::v1, and BMEdge::v2.
Referenced by skin_fix_hole_no_good_verts().
|
static |
Definition at line 448 of file MOD_skin.c.
References BKE_mesh_edge_other_vert(), MeshElemMap::count, e, SkinNode::frames, MeshElemMap::indices, MEM_calloc_arrayN, SkinNode::totframe, and v.
Referenced by skin_merge_close_frame_verts(), and skin_output_branch_hulls().
|
static |
Definition at line 1036 of file MOD_skin.c.
References add_poly(), dot_v3v3(), mid_v3_v3v3v3v3(), normal_quad_v3(), sub_v3_v3v3(), swap(), UNPACK4, and UNPACK4_EX.
Referenced by skin_output_connections(), and skin_output_end_nodes().
|
static |
Definition at line 606 of file MOD_skin.c.
References connection_node_mat(), copy_m3_m3(), create_frame(), SkinNode::flag, half_v2(), MeshElemMap::indices, EMat::mat, negate_v3(), node_frames_init(), EMat::origin, MVertSkin::radius, SkinNode::seam_edges, SEAM_FRAME, and v.
Referenced by build_frames().
|
static |
Definition at line 573 of file MOD_skin.c.
References angle(), angle_normalized_v3v3(), copy_m3_m3(), copy_v3_v3(), cross_v3_v3v3(), MeshElemMap::indices, EMat::mat, normalize_v3(), EMat::origin, rotate_normalized_v3_v3v3fl(), and v.
Referenced by connection_node_frames().
|
static |
Definition at line 489 of file MOD_skin.c.
References add_v3_v3v3(), Frame::co, mul_v3_v3fl(), offset, and sub_v3_v3v3().
Referenced by connection_node_frames(), and end_node_frames().
|
static |
Definition at line 521 of file MOD_skin.c.
References CAP_END, CAP_START, Frame::co, copy_m3_m3(), count, create_frame(), dot_v3v3(), SkinNode::flag, FLIP_NORMAL, SkinNode::frames, half_v2(), indices, negate_v3(), node_frames_init(), normal, normal_quad_v3(), MVertSkin::radius, v, and zero_m3().
Referenced by build_frames().
|
static |
Definition at line 1953 of file MOD_skin.c.
References base_skin(), BKE_id_free(), CD_MVERT_SKIN, CustomData_get_layer(), mesh, NULL, result, subdivide_base(), and Mesh::vdata.
Referenced by modifyMesh().
Definition at line 379 of file MOD_skin.c.
References Frame::co, and len_v3v3().
Referenced by BKE_cachefile_filepath_get(), BKE_gpencil_visible_stroke_advanced_iter(), merge_frame_corners(), and ptcache_frame_from_filename().
Definition at line 516 of file MOD_skin.c.
References v.
Referenced by calc_edge_subdivisions(), connection_node_frames(), end_node_frames(), and subdivide_base().
|
static |
Definition at line 1481 of file MOD_skin.c.
References add_quad_from_tris(), BLI_assert, BLI_heapsimple_free(), BLI_heapsimple_insert(), BLI_heapsimple_is_empty(), BLI_heapsimple_new(), BLI_heapsimple_pop_min(), SkinOutput::bm, BM_EDGE, BM_edge_face_pair(), BM_EDGES_OF_MESH, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_FACE, BM_face_calc_area(), BM_face_is_normal_valid(), BM_face_share_face_check(), BM_ITER_MESH, BM_mesh_delete_hflag_tagged(), BM_mesh_elem_hflag_disable_all(), dot_v3v3(), e, is_quad_convex_v3(), is_quad_symmetric(), len, NULL, quad, quad_crosses_symmetry_plane(), and quad_from_tris().
Referenced by build_skin().
|
static |
Definition at line 1971 of file MOD_skin.c.
References BLI_assert, DNA_struct_default_get, eModifierMode_Editmode, MEMCMP_STRUCT_AFTER_IS_ZERO, MEMCPY_STRUCT_AFTER, and ModifierData::mode.
|
static |
Definition at line 177 of file MOD_skin.c.
References Freestyle::a, copy_v3_v3(), len_squared_v3v3(), quad, SkinModifierData::symmetry_axes, and threshold.
Referenced by hull_merge_triangles().
|
static |
Definition at line 1125 of file MOD_skin.c.
References BM_ITER_ELEM, BM_VERTS_OF_FACE, BMVert::co, isect_ray_tri_v3(), NULL, and v.
Referenced by skin_hole_target_face().
Definition at line 384 of file MOD_skin.c.
References BLI_assert, copy_v3_v3(), Frame::corner, Frame::frame, frame_len(), Frame::is_target, l, len_v3v3(), merge(), Frame::merge, mid_v3_v3v3(), and min_ff().
Referenced by skin_merge_close_frame_verts().
|
static |
Definition at line 1983 of file MOD_skin.c.
References BKE_modifier_set_error(), BLI_assert, error(), final_skin(), mesh, NULL, ModifierEvalContext::object, result, SKIN_ERROR_HULL, and SKIN_ERROR_NO_VALID_ROOT.
Definition at line 476 of file MOD_skin.c.
References SkinNode::flag, SkinNode::frames, SkinNode::seam_edges, and SkinNode::totframe.
Referenced by connection_node_frames(), and end_node_frames().
|
static |
Definition at line 1089 of file MOD_skin.c.
References BKE_defvert_copy(), BLI_assert, bm, BM_CREATE_NOP, BM_vert_create(), CD_MDEFORMVERT, Frame::co, CustomData_bmesh_get(), BMHeader::data, Frame::frame, SkinNode::frames, BMVert::head, Frame::merge, NULL, SkinNode::totframe, MDeformVert::totweight, v, BMesh::vdata, and Frame::verts.
Referenced by build_skin().
Definition at line 2014 of file MOD_skin.c.
References IFACE_, Panel::layout, modifier_panel_end(), modifier_panel_get_property_pointers(), NULL, ptr, RNA_enum_set(), UI_ITEM_R_FORCE_BLANK_DECORATE, UI_ITEM_R_TOGGLE, uiItemFullO(), uiItemO(), uiItemR(), uiLayoutRow(), uiLayoutRowWithHeading(), uiLayoutSetPropSep(), and WM_OP_EXEC_DEFAULT.
Referenced by panelRegister().
|
static |
Definition at line 2066 of file MOD_skin.c.
References eModifierType_Skin, modifier_panel_register(), and panel_draw().
|
static |
Definition at line 211 of file MOD_skin.c.
References left, quad, right, and SkinModifierData::symmetry_axes.
Referenced by hull_merge_triangles().
Definition at line 1435 of file MOD_skin.c.
References BLI_assert, bm, BM_face_as_array_vert_tri(), BM_iter_as_array(), BM_VERTS_OF_FACE, e, ELEM, len, and NULL.
Referenced by add_quad_from_tris(), and hull_merge_triangles().
|
static |
Definition at line 2007 of file MOD_skin.c.
References CD_MASK_MDEFORMVERT, CD_MASK_MVERT_SKIN, and CustomData_MeshMasks::vmask.
|
static |
Definition at line 1282 of file MOD_skin.c.
References Freestyle::a, usdtokens::b(), len, and len_squared_v3v3().
Referenced by skin_fix_hole_no_good_verts(), skin_output_connections(), and skin_output_end_nodes().
Definition at line 1312 of file MOD_skin.c.
References BLI_array_clear, BLI_array_declare, BLI_array_free, BLI_array_grow_items, BLI_array_len, BLI_assert, bm, BM_EDGE, BM_elem_flag_enable, BM_ELEM_TAG, BM_FACE, BM_face_as_array_vert_quad(), BM_face_find_longest_loop(), BM_face_kill(), BM_FACES_OF_VERT, BM_iter_as_array(), BM_mesh_elem_hflag_disable_all(), BM_VERTS_OF_FACE, BMO_FLAG_DEFAULTS, BMO_FLAG_RESPECT_HIDE, BMO_ITER, BMO_op_callf(), BMO_op_exec(), BMO_op_finish(), BMO_op_init(), BMO_op_initf(), BMO_slot_get(), BMO_slot_map_elem_insert(), collapse_face_corners(), BMLoop::e, BMFace::len, NULL, skin_choose_quad_bridge_order(), BMOperator::slots_in, BMOperator::slots_out, SUBD_CORNER_STRAIGHT_CUT, vert_array_face_normal_update(), Frame::verts, and verts.
Referenced by skin_fix_hull_topology().
Definition at line 1599 of file MOD_skin.c.
References bm, Frame::detached, SkinNode::frames, skin_fix_hole_no_good_verts(), skin_hole_detach_partially_attached_frame(), skin_hole_target_face(), SkinNode::totframe, and v.
Referenced by build_skin().
Definition at line 240 of file MOD_skin.c.
References BM_edge_exists(), BM_edge_face_pair(), and Frame::verts.
Referenced by build_hull().
Definition at line 1417 of file MOD_skin.c.
References bm, BM_CREATE_NOP, BM_vert_create(), Frame::inside_hull, and Frame::verts.
Referenced by skin_fix_hull_topology().
Definition at line 1226 of file MOD_skin.c.
References bm, BM_face_calc_center_median(), BM_FACES_OF_MESH, BM_ITER_MESH, calc_frame_center(), BMVert::co, isect_ray_poly(), len_v3v3(), normal_quad_v3(), NULL, and Frame::verts.
Referenced by skin_fix_hull_topology().
|
static |
Definition at line 1558 of file MOD_skin.c.
References collect_hull_frames(), MEM_freeN, merge_frame_corners(), and v.
Referenced by build_skin().
|
static |
Definition at line 1778 of file MOD_skin.c.
References build_hull(), collect_hull_frames(), MEM_freeN, result, SkinNode::totframe, and v.
Referenced by build_skin().
|
static |
Definition at line 1671 of file MOD_skin.c.
References Freestyle::a, usdtokens::b(), connect_frames(), e, order, SEAM_FRAME, skin_choose_quad_bridge_order(), MEdge::v1, Frame::verts, and verts.
Referenced by build_skin().
|
static |
Definition at line 1624 of file MOD_skin.c.
References add_poly(), CAP_END, CAP_START, connect_frames(), SkinNode::flag, FLIP_NORMAL, SkinNode::frames, order, SEAM_FRAME, skin_choose_quad_bridge_order(), SkinNode::totframe, v, and Frame::verts.
Referenced by build_skin().
Definition at line 1886 of file MOD_skin.c.
References CD_CALLOC, CD_ORIGINDEX, copy_vn_i(), CustomData_add_layer(), mesh, NULL, ORIGINDEX_NONE, Mesh::pdata, and Mesh::totpoly.
Referenced by base_skin().
|
static |
Definition at line 1709 of file MOD_skin.c.
References add_v3_v3(), bm, BM_data_layer_add(), BM_data_layer_free_n(), BM_edge_other_vert(), BM_EDGES_OF_VERT, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_TAG, BM_face_normal_update(), BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_mesh_elem_hflag_disable_all(), BM_VERT, BM_VERTS_OF_MESH, SkinModifierData::branch_smoothing, CD_SHAPEKEY, BMVert::co, copy_v3_v3(), CustomData_bmesh_get_n(), CustomData_number_of_layers(), BMHeader::data, e, SkinNode::frames, BMVert::head, interp_v3_v3v3(), mul_v3_fl(), SkinNode::totframe, v, BMesh::vdata, and Frame::verts.
Referenced by build_skin().
Definition at line 1576 of file MOD_skin.c.
References BLI_assert, Frame::corner, Frame::frame, SkinNode::frames, Frame::merge, SkinNode::totframe, v, and Frame::verts.
Referenced by build_skin().
Definition at line 884 of file MOD_skin.c.
References BKE_defvert_add_index_notest(), BKE_mesh_new_nomain_from_template(), BLI_assert, calc_edge_subdivisions(), CD_MVERT_SKIN, MVert::co, CustomData_copy_data(), CustomData_get_layer(), MDeformWeight::def_nr, Mesh::dvert, MDeformVert::dw, e, half_v2(), interp_v3_v3v3(), interpf(), CCL_NAMESPACE_BEGIN::isfinite(), Mesh::medge, MEM_calloc_arrayN, MEM_freeN, Mesh::mvert, NULL, powf, r, MVertSkin::radius, result, t, Mesh::totedge, Mesh::totvert, MDeformVert::totweight, v, MEdge::v1, MEdge::v2, Mesh::vdata, and MDeformWeight::weight.
Referenced by final_skin().
Recalculate the normals of all faces connected to verts
.
Definition at line 107 of file MOD_skin.c.
References vert_face_normal_mark_set(), vert_face_normal_mark_update(), and verts.
Referenced by skin_fix_hole_no_good_verts().
Definition at line 84 of file MOD_skin.c.
References BM_FACES_OF_VERT, BM_ITER_ELEM, BMFace::no, and v.
Referenced by vert_array_face_normal_update().
Definition at line 93 of file MOD_skin.c.
References BM_face_normal_update(), BM_FACES_OF_VERT, BM_ITER_ELEM, BMFace::no, and v.
Referenced by vert_array_face_normal_update().
ModifierTypeInfo modifierType_Skin |
Definition at line 2071 of file MOD_skin.c.