Blender
V3.3
|
Go to the source code of this file.
Typedefs | |
typedef enum eMultiresSubdivideModeType | eMultiresSubdivideModeType |
Enumerations | |
enum | MultiresFlags { MULTIRES_USE_LOCAL_MMD = 1 , MULTIRES_USE_RENDER_PARAMS = 2 , MULTIRES_ALLOC_PAINT_MASK = 4 , MULTIRES_IGNORE_SIMPLIFY = 8 } |
enum | eMultiresSubdivideModeType { MULTIRES_SUBDIVIDE_CATMULL_CLARK , MULTIRES_SUBDIVIDE_SIMPLE , MULTIRES_SUBDIVIDE_LINEAR } |
typedef enum eMultiresSubdivideModeType eMultiresSubdivideModeType |
Enumerator | |
---|---|
MULTIRES_SUBDIVIDE_CATMULL_CLARK | |
MULTIRES_SUBDIVIDE_SIMPLE | |
MULTIRES_SUBDIVIDE_LINEAR |
Definition at line 195 of file BKE_multires.h.
enum MultiresFlags |
Enumerator | |
---|---|
MULTIRES_USE_LOCAL_MMD | |
MULTIRES_USE_RENDER_PARAMS | |
MULTIRES_ALLOC_PAINT_MASK | |
MULTIRES_IGNORE_SIMPLIFY |
Definition at line 56 of file BKE_multires.h.
BLI_INLINE void BKE_multires_construct_tangent_matrix | ( | float | tangent_matrix[3][3], |
const float | dPdu[3], | ||
const float | dPdv[3], | ||
int | corner | ||
) |
For a given partial derivatives of a PTEX face get tangent matrix for displacement.
Corner needs to be known to properly "rotate" partial derivatives when the matrix is being constructed for quad. For non-quad the corner is to be set to 0.
Definition at line 14 of file multires_inline.h.
References BLI_assert_msg, copy_v3_v3(), cross_v3_v3v3(), mul_v3_fl(), and normalize_v3().
Referenced by average_construct_tangent_matrix(), eval_displacement(), and multires_reshape_tangent_matrix_for_corner().
float(* BKE_multires_create_deformed_base_mesh_vert_coords | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
struct MultiresModifierData * | mmd, | ||
int * | r_num_deformed_verts | ||
) | )[3] |
Get coordinates of a deformed base mesh which is an input to the given multi-res modifier.
Definition at line 249 of file multires.c.
References BKE_mesh_vert_coords_alloc(), BKE_modifier_deform_verts(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), DAG_EVAL_RENDER, Object::data, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), DEG_get_mode(), depsgraph, eModifierMode_Realtime, eModifierMode_Render, eModifierTypeType_OnlyDeform, ModifierEvalContext::flag, float(), MOD_APPLY_RENDER, NULL, Object::sculpt, and ModifierTypeInfo::type.
Referenced by multires_reshape_apply_base_refine_from_deform(), and sculpt_undo_refine_subdiv().
struct Mesh* BKE_multires_create_mesh | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
struct MultiresModifierData * | mmd | ||
) |
Creates mesh with multi-res modifier applied on current object's deform mesh.
Definition at line 226 of file multires.c.
References BKE_mesh_copy_for_eval(), BKE_modifier_get_info(), CD_MASK_BAREMESH, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), ModifierEvalContext::depsgraph, depsgraph, Object::flag, mesh_get_eval_deform(), MOD_APPLY_IGNORE_SIMPLIFY, MOD_APPLY_USECACHE, MultiresModifierData::modifier, ModifierTypeInfo::modifyMesh, result, and ModifierData::type.
Referenced by multiresModifier_reshapeFromDeformModifier().
void BKE_multires_subdiv_mesh_settings_init | ( | struct SubdivToMeshSettings * | mesh_settings, |
const struct Scene * | scene, | ||
const struct Object * | object, | ||
const struct MultiresModifierData * | mmd, | ||
bool | use_render_params, | ||
bool | ignore_simplify, | ||
bool | ignore_control_edges | ||
) |
Referenced by multires_as_mesh().
void BKE_multires_subdiv_settings_init | ( | struct SubdivSettings * | settings, |
const struct MultiresModifierData * | mmd | ||
) |
Referenced by deformMatrices(), modifyMesh(), multires_reshape_create_subdiv(), and subdiv_for_simple_to_catmull_clark().
struct MultiresModifierData* find_multires_modifier_before | ( | struct Scene * | scene, |
struct ModifierData * | lastmd | ||
) |
Definition at line 302 of file multires.c.
References BKE_modifier_is_enabled(), eModifierMode_Realtime, eModifierType_Multires, NULL, ModifierData::prev, scene, and ModifierData::type.
Referenced by ED_object_modifier_apply(), modifier_apply_obdata(), and modifier_apply_poll().
struct MultiresModifierData* get_multires_modifier | ( | struct Scene * | scene, |
struct Object * | ob, | ||
bool | use_first | ||
) |
used for applying scale on mdisps layer and syncing subdivide levels when joining objects.
use_first | return first multi-res modifier if all multi-res'es are disabled. |
Definition at line 317 of file multires.c.
References BKE_modifier_is_enabled(), eModifierMode_Realtime, eModifierType_Multires, ListBase::first, Object::modifiers, ModifierData::next, NULL, scene, and ModifierData::type.
Referenced by BKE_sculpt_get_first_deform_matrices(), join_mesh_single(), multires_apply_smat(), multires_sync_levels(), multiresbake_check(), multiresbake_create_hiresdm(), and multiresbake_create_loresdm().
int mdisp_rot_face_to_crn | ( | struct MVert * | mvert, |
struct MPoly * | mpoly, | ||
struct MLoop * | mloop, | ||
const struct MLoopTri * | lt, | ||
int | face_side, | ||
float | u, | ||
float | v, | ||
float * | x, | ||
float * | y | ||
) |
Find per-corner coordinate with given per-face UV coord.
Referenced by get_ccgdm_data().
Delete mesh mdisps and grid paint masks.
Customdata
Definition at line 67 of file multires.c.
References BMEditMesh::bm, BM_data_layer_free(), CD_GRID_PAINT_MASK, CD_MDISPS, CustomData_external_remove(), CustomData_free_layer_active(), CustomData_has_layer(), Mesh::edit_mesh, Mesh::id, BMesh::ldata, Mesh::ldata, and Mesh::totloop.
Referenced by modifier_apply_obdata(), multires_del_higher(), multires_sync_levels(), and object_modifier_remove().
void multires_do_versions_simple_to_catmull_clark | ( | struct Object * | object, |
struct MultiresModifierData * | mmd | ||
) |
Convert displacement which is stored for simply-subdivided mesh to a Catmull-Clark subdivided mesh.
Definition at line 56 of file multires_versioning.c.
References BKE_subdiv_free(), multires_reshape_assign_final_coords_from_mdisps(), multires_reshape_context_create_from_modifier(), multires_reshape_context_create_from_subdiv(), multires_reshape_context_free(), multires_reshape_object_grids_to_tangent_displacement(), multires_reshape_store_original_grids(), subdiv_for_simple_to_catmull_clark(), Mesh::totloop, and MultiresModifierData::totlvl.
Referenced by do_versions_after_linking_290().
Makes sure data from an external file is fully read.
Since the multi-res data files only contain displacement vectors without knowledge about subdivision level some extra work is needed. Namely make is to all displacement grids have proper level and number of displacement vectors set.
Definition at line 1482 of file multires.c.
References CD_DEFAULT, CD_MASK_MDISPS, CD_MDISPS, CustomData_add_layer(), CustomData_external_read(), CustomData_external_test(), CustomData_get_layer(), Mesh::id, Mesh::ldata, MDisps::level, MEM_SAFE_FREE, mesh, multires_grid_tot, NULL, MDisps::totdisp, and Mesh::totloop.
Referenced by multiresModifier_ensure_external_read(), and multiresModifier_reshapeFromCCG().
Definition at line 408 of file multires.c.
References SculptSession::active, BKE_pbvh_type(), SubdivCCG::coords, SubdivCCG::dirty, SubdivCCG::hidden, mesh, SculptSession::modifier, SculptSession::multires, multiresModifier_reshapeFromCCG(), NULL, SculptSession::pbvh, PBVH_GRIDS, Object::sculpt, SculptSession::subdiv_ccg, and MultiresModifierData::totlvl.
Referenced by ED_editors_flush_edits_for_object_ex(), ED_object_sculptmode_exit_ex(), init_multiresbake_job(), multires_force_sculpt_rebuild(), multiresbake_image_exec_locked(), and multiresModifier_subdivide_to_level().
Definition at line 457 of file multires.c.
References BKE_mesh_from_object(), CD_MASK_MDISPS, CustomData_external_reload(), Mesh::id, Mesh::ldata, mesh, multires_force_sculpt_rebuild(), and Mesh::totloop.
Definition at line 437 of file multires.c.
References BKE_pbvh_free(), MEM_SAFE_FREE, multires_flush_sculpt_updates(), NULL, SculptSession::pbvh, SculptSession::pmap, SculptSession::pmap_mem, and Object::sculpt.
Referenced by BKE_mesh_assign_object(), libblock_remap_data_postprocess_obdata_relink(), modifier_apply_obdata(), multires_del_higher(), multires_force_external_reload(), multires_subdivide_create_tangent_displacement_linear_grids(), multiresModifier_base_apply(), multiresModifier_del_levels(), and multiresModifier_rebuild_subdiv().
int multires_get_level | ( | const struct Scene * | scene, |
const struct Object * | ob, | ||
const struct MultiresModifierData * | mmd, | ||
bool | render, | ||
bool | ignore_simplify | ||
) |
struct DerivedMesh* multires_make_derived_from_derived | ( | struct DerivedMesh * | dm, |
struct MultiresModifierData * | mmd, | ||
struct Scene * | scene, | ||
struct Object * | ob, | ||
MultiresFlags | flags | ||
) |
Definition at line 1205 of file multires.c.
References APPLY_DISPLACEMENTS, Object::data, CCGKey::elem_size, eMultiresModifierFlag_ControlEdges, MultiresModifierData::flags, CCGDerivedMesh::local_mmd, CCGDerivedMesh::lvl, MEM_freeN, MEM_malloc_arrayN, CCGDerivedMesh::mmd, CCGDerivedMesh::modified_flags, CCGDerivedMesh::multires, MULTIRES_ALLOC_PAINT_MASK, multires_get_level(), MULTIRES_IGNORE_SIMPLIFY, multires_output_hidden_to_ccgdm(), multires_set_tot_mdisps(), MULTIRES_USE_LOCAL_MMD, MULTIRES_USE_RENDER_PARAMS, multiresModifier_disp_run(), multiresModifier_ensure_external_read(), NULL, CCGDerivedMesh::ob, result, scene, subsurf_dm_create_local(), SUBSURF_IGNORE_SIMPLIFY, SUBSURF_UV_SMOOTH_NONE, CCGDerivedMesh::totlvl, MultiresModifierData::totlvl, and MultiresModifierData::uv_smooth.
Referenced by multires_dm_create_local(), multiresbake_create_hiresdm(), and multiresbake_create_loresdm().
void multires_mark_as_modified | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
enum MultiresModifiedFlags | flags | ||
) |
Definition at line 387 of file multires.c.
References Object::data, DEG_get_evaluated_object(), depsgraph, mesh, multires_ccg_mark_as_modified(), NULL, Mesh::runtime, and Mesh_Runtime::subdiv_ccg.
Referenced by mask_flood_fill_exec(), partialvis_update_grids(), SCULPT_flush_update_step(), sculpt_gesture_mask_end(), and sculpt_undo_restore_list().
int multires_mdisp_corners | ( | const struct MDisps * | s | ) |
Referenced by bm_corners_to_loops_ex(), and layerSwap_mdisps().
void multires_modifier_update_hidden | ( | struct DerivedMesh * | dm | ) |
Definition at line 1146 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), Object::data, CCGDerivedMesh::gridHidden, MDisps::hidden, Mesh::ldata, CCGDerivedMesh::lvl, MEM_freeN, CCGDerivedMesh::multires, multires_mdisps_upsample_hidden(), NULL, CCGDerivedMesh::ob, Mesh::totloop, and CCGDerivedMesh::totlvl.
Referenced by ccgDM_release().
void multires_modifier_update_mdisps | ( | struct DerivedMesh * | dm, |
struct Scene * | scene | ||
) |
Definition at line 1019 of file multires.c.
References ADD_DISPLACEMENTS, BLI_assert, CALC_DISPLACEMENTS, CCG_elem_offset_co(), ccgSubSurf_updateFromFaces(), ccgSubSurf_updateLevels(), CD_GRID_PAINT_MASK, CD_MASK_BAREMESH, CD_MDISPS, CDDM_from_mesh(), CustomData_get_layer(), CustomData_has_layer(), Object::data, DM_set_only_copy(), CCGKey::elem_size, DerivedMesh::getGridData, DerivedMesh::getGridKey, DerivedMesh::getGridSize, DerivedMesh::getNumGrids, Mesh::ldata, CCGDerivedMesh::lvl, MEM_calloc_arrayN, MEM_freeN, CCGDerivedMesh::mmd, CCGDerivedMesh::multires, multires_copy_dm_grid(), multires_dm_create_local(), MULTIRES_IGNORE_SIMPLIFY, multires_set_tot_mdisps(), multiresModifier_disp_run(), multiresModifier_ensure_external_read(), NULL, CCGDerivedMesh::ob, DerivedMesh::release, scene, sub_v4_v4v4(), subsurf_dm_create_local(), SUBSURF_IGNORE_SIMPLIFY, SUBSURF_UV_SMOOTH_NONE, CCGDerivedMesh::totlvl, MultiresModifierData::totlvl, and MultiresModifierData::uv_smooth.
Referenced by ccgDM_release().
void multires_set_tot_level | ( | struct Object * | ob, |
struct MultiresModifierData * | mmd, | ||
int | lvl | ||
) |
Definition at line 365 of file multires.c.
References CLAMPIS, MultiresModifierData::lvl, MAX2, Object::mode, OB_MODE_SCULPT, MultiresModifierData::renderlvl, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by ED_object_multires_update_totlevels_cb(), multires_del_higher(), multires_subdivide_create_tangent_displacement_linear_grids(), multiresModifier_del_levels(), and multiresModifier_subdivide_to_level().
Definition at line 1178 of file multires.c.
References BKE_pbvh_get_grid_updates(), BKE_pbvh_type(), BKE_subdiv_ccg_average_stitch_faces(), BLI_assert, faces, MEM_freeN, NULL, SculptSession::pbvh, PBVH_GRIDS, Object::sculpt, and SculptSession::subdiv_ccg.
Referenced by sculpt_fix_noise_tear(), and sculpt_mask_init_exec().
void multires_subdivide_create_tangent_displacement_linear_grids | ( | struct Object * | object, |
struct MultiresModifierData * | mmd | ||
) |
Definition at line 59 of file multires_reshape_subdivide.c.
References CD_CALLOC, CD_MDISPS, CustomData_add_layer(), CustomData_has_layer(), Mesh::ldata, multires_force_sculpt_rebuild(), multires_reshape_context_create_from_modifier(), multires_reshape_context_free(), multires_reshape_ensure_grids(), multires_reshape_object_grids_to_tangent_displacement(), multires_set_tot_level(), multires_subdivide_create_object_space_linear_grids(), NULL, Mesh::totloop, and MultiresModifierData::totlvl.
Referenced by multiresModifier_subdivide_to_level().
Update multi-res data after topology changing.
Definition at line 1448 of file multires.c.
References CD_MASK_MDISPS, CD_MDISPS, CustomData_external_read(), CustomData_get_layer(), MDisps::disps, Mesh::id, Mesh::ldata, MEM_calloc_arrayN, NULL, MDisps::totdisp, and Mesh::totloop.
Referenced by BM_mesh_bm_to_me().
void multiresModifier_base_apply | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
struct MultiresModifierData * | mmd | ||
) |
Definition at line 240 of file multires_reshape.c.
References depsgraph, multires_force_sculpt_rebuild(), multires_reshape_apply_base_refine_from_base(), multires_reshape_apply_base_refine_from_deform(), multires_reshape_apply_base_refit_base_mesh(), multires_reshape_apply_base_update_mesh_coords(), multires_reshape_assign_final_coords_from_mdisps(), multires_reshape_context_create_from_object(), multires_reshape_context_free(), multires_reshape_object_grids_to_tangent_displacement(), and multires_reshape_store_original_grids().
Referenced by multires_base_apply_exec().
void multiresModifier_del_levels | ( | struct MultiresModifierData * | mmd, |
struct Scene * | scene, | ||
struct Object * | object, | ||
int | direction | ||
) |
direction | 1 for delete higher, 0 for lower (not implemented yet). |
Definition at line 695 of file multires.c.
References BKE_mesh_from_object(), CD_MDISPS, CustomData_get_layer(), Mesh::ldata, multires_del_higher(), multires_force_sculpt_rebuild(), multires_get_level(), multires_set_tot_level(), multires_set_tot_mdisps(), multiresModifier_ensure_external_read(), scene, and MultiresModifierData::totlvl.
Referenced by multires_higher_levels_delete_exec().
void multiresModifier_ensure_external_read | ( | struct Mesh * | mesh, |
const struct MultiresModifierData * | mmd | ||
) |
Referenced by initialize().
void multiresModifier_prepare_join | ( | struct Depsgraph * | depsgraph, |
struct Scene * | scene, | ||
struct Object * | ob, | ||
struct Object * | to_ob | ||
) |
Definition at line 1431 of file multires.c.
References BKE_object_scale_to_mat3(), depsgraph, invert_m3(), mul_m3_m3m3(), multires_apply_smat(), multires_sync_levels(), and scene.
Referenced by join_mesh_single().
int multiresModifier_rebuild_subdiv | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
struct MultiresModifierData * | mmd, | ||
int | rebuild_limit, | ||
bool | switch_view_to_lower_level | ||
) |
Definition at line 1204 of file multires_unsubdivide.c.
References MultiresUnsubdivideContext::base_mesh, BKE_mesh_nomain_to_mesh(), CD_MASK_MESH, Object::data, depsgraph, if(), MultiresModifierData::lvl, MultiresUnsubdivideContext::max_new_levels, MultiresReshapeContext::mdisps, mesh, multires_create_grids_in_unsubdivided_base_mesh(), multires_force_sculpt_rebuild(), multires_reshape_assign_final_coords_from_mdisps(), multires_reshape_context_create_from_base_mesh(), multires_reshape_context_create_from_object(), multires_reshape_context_free(), multires_reshape_object_grids_to_tangent_displacement(), multires_reshape_store_original_grids(), multires_unsubdivide_context_free(), multires_unsubdivide_context_init(), multires_unsubdivide_to_basemesh(), MultiresUnsubdivideContext::num_new_levels, MultiresUnsubdivideContext::num_total_levels, MultiresUnsubdivideContext::original_mdisp, MultiresModifierData::renderlvl, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by multires_rebuild_subdiv_exec(), and multires_unsubdivide_exec().
bool multiresModifier_reshapeFromCCG | ( | int | tot_level, |
struct Mesh * | coarse_mesh, | ||
struct SubdivCCG * | subdiv_ccg | ||
) |
Definition at line 124 of file multires_reshape.c.
References MultiresReshapeContext::level, multires_ensure_external_read(), multires_reshape_assign_final_coords_from_ccg(), multires_reshape_context_create_from_ccg(), multires_reshape_context_free(), multires_reshape_ensure_grids(), multires_reshape_object_grids_to_tangent_displacement(), multires_reshape_smooth_object_grids_with_details(), multires_reshape_store_original_grids(), and MultiresReshapeContext::top.
Referenced by multires_flush_sculpt_updates(), and object_update_from_subsurf_ccg().
bool multiresModifier_reshapeFromDeformModifier | ( | struct Depsgraph * | depsgraph, |
struct Object * | ob, | ||
struct MultiresModifierData * | mmd, | ||
struct ModifierData * | deform_md | ||
) |
Definition at line 82 of file multires_reshape.c.
References BKE_id_free(), BKE_mesh_vert_coords_alloc(), BKE_modifier_deform_verts(), BKE_multires_create_mesh(), ModifierEvalContext::depsgraph, depsgraph, Object::flag, float(), MultiresModifierData::lvl, MEM_freeN, MOD_APPLY_IGNORE_SIMPLIFY, MOD_APPLY_USECACHE, multiresModifier_reshapeFromVertcos(), NULL, MultiresModifierData::renderlvl, result, MultiresModifierData::sculptlvl, MultiresModifierData::totlvl, and Mesh::totvert.
Referenced by modifier_apply_obdata().
bool multiresModifier_reshapeFromObject | ( | struct Depsgraph * | depsgraph, |
struct MultiresModifierData * | mmd, | ||
struct Object * | dst, | ||
struct Object * | src | ||
) |
Returns truth on success, false otherwise.
This function might fail in cases like source and destination not having matched amount of vertices.
Definition at line 56 of file multires_reshape.c.
References BKE_mesh_vert_coords_alloc(), CD_MASK_BAREMESH, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), depsgraph, float(), MEM_freeN, mesh_get_eval_final(), multiresModifier_reshapeFromVertcos(), result, and src.
Referenced by multires_reshape_exec().
bool multiresModifier_reshapeFromVertcos | ( | struct Depsgraph * | depsgraph, |
struct Object * | object, | ||
struct MultiresModifierData * | mmd, | ||
const float(*) | vert_coords[3], | ||
int | num_vert_coords | ||
) |
Definition at line 33 of file multires_reshape.c.
References Object::data, depsgraph, MultiresReshapeContext::level, multires_reshape_assign_final_coords_from_vertcos(), multires_reshape_context_create_from_object(), multires_reshape_context_free(), multires_reshape_ensure_grids(), multires_reshape_object_grids_to_tangent_displacement(), multires_reshape_smooth_object_grids_with_details(), multires_reshape_store_original_grids(), and MultiresReshapeContext::top.
Referenced by multiresModifier_reshapeFromDeformModifier(), and multiresModifier_reshapeFromObject().
void multiresModifier_scale_disp | ( | struct Depsgraph * | depsgraph, |
struct Scene * | scene, | ||
struct Object * | ob | ||
) |
Definition at line 1421 of file multires.c.
References BKE_object_scale_to_mat3(), depsgraph, multires_apply_smat(), and scene.
Referenced by apply_objects_internal().
void multiresModifier_set_levels_from_disps | ( | struct MultiresModifierData * | mmd, |
struct Object * | ob | ||
) |
Reset the multi-res levels to match the number of mdisps.
Definition at line 503 of file multires.c.
References BMEditMesh::bm, CD_MDISPS, CustomData_get_layer(), Object::data, Mesh::edit_mesh, get_levels_from_disps(), BMesh::ldata, Mesh::ldata, MultiresModifierData::lvl, MIN2, MultiresModifierData::renderlvl, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by BKE_modifiers_test_object(), and ED_object_modifier_add().
void multiresModifier_subdivide | ( | struct Object * | object, |
struct MultiresModifierData * | mmd, | ||
eMultiresSubdivideModeType | mode | ||
) |
Definition at line 154 of file multires_reshape.c.
References Object::mode, multiresModifier_subdivide_to_level(), and MultiresModifierData::totlvl.
Referenced by multires_subdivide_exec().
void multiresModifier_subdivide_to_level | ( | struct Object * | object, |
struct MultiresModifierData * | mmd, | ||
int | top_level, | ||
eMultiresSubdivideModeType | mode | ||
) |
Subdivide displacement to the given level. If level is lower than the current top level nothing happens.
Definition at line 162 of file multires_reshape.c.
References CD_CALLOC, CD_MDISPS, CustomData_add_layer(), CustomData_has_layer(), ELEM, Mesh::ldata, MultiresReshapeContext::level, Object::mode, multires_flush_sculpt_updates(), multires_reshape_assign_final_elements_from_orig_mdisps(), multires_reshape_context_create_from_modifier(), multires_reshape_context_free(), multires_reshape_ensure_grids(), multires_reshape_free_original_grids(), multires_reshape_object_grids_to_tangent_displacement(), multires_reshape_smooth_object_grids(), multires_reshape_smooth_object_grids_with_details(), multires_reshape_store_original_grids(), multires_set_tot_level(), multires_subdivide_create_tangent_displacement_linear_grids(), MULTIRES_SUBDIVIDE_LINEAR, MULTIRES_SUBDIVIDE_SIMPLE, NULL, MultiresReshapeContext::top, Mesh::totloop, and MultiresModifierData::totlvl.
Referenced by multiresModifier_subdivide(), and multiresModifier_sync_levels_ex().
void multiresModifier_sync_levels_ex | ( | struct Object * | ob_dst, |
struct MultiresModifierData * | mmd_src, | ||
struct MultiresModifierData * | mmd_dst | ||
) |
If ob_src
and ob_dst
both have multi-res modifiers, synchronize them such that ob_dst
has the same total number of levels as ob_src
.
Definition at line 1330 of file multires.c.
References multires_del_higher(), MULTIRES_SUBDIVIDE_CATMULL_CLARK, multiresModifier_subdivide_to_level(), and MultiresModifierData::totlvl.
Referenced by BKE_object_copy_modifier(), and multires_sync_levels().
Definition at line 1277 of file multires.c.
References add_v3_v3v3(), blender::math::floor(), libmv::isnan(), mul_v3_fl(), mul_v3_v3fl(), usdtokens::out(), usdtokens::st(), v, x, x2, and y.
Referenced by loop_interp_multires_cb().