Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_bitmap.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BKE_ccg.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_editmesh.h"
#include "BKE_mesh.h"
#include "BKE_mesh_mapping.h"
#include "BKE_mesh_runtime.h"
#include "BKE_modifier.h"
#include "BKE_multires.h"
#include "BKE_paint.h"
#include "BKE_pbvh.h"
#include "BKE_scene.h"
#include "BKE_subdiv_ccg.h"
#include "BKE_subsurf.h"
#include "BKE_object.h"
#include "CCGSubSurf.h"
#include "DEG_depsgraph_query.h"
#include "multires_reshape.h"
#include <math.h>
#include <string.h>
Go to the source code of this file.
Classes | |
struct | MultiresThreadedData |
Macros | |
#define | DNA_DEPRECATED_ALLOW |
Typedefs | |
typedef struct MultiresThreadedData | MultiresThreadedData |
Enumerations | |
enum | DispOp { APPLY_DISPLACEMENTS , CALC_DISPLACEMENTS , ADD_DISPLACEMENTS } |
Variables | |
static const int | multires_grid_tot [] |
static const int | multires_side_tot [] |
#define DNA_DEPRECATED_ALLOW |
Definition at line 11 of file multires.c.
typedef struct MultiresThreadedData MultiresThreadedData |
enum DispOp |
Enumerator | |
---|---|
APPLY_DISPLACEMENTS | |
CALC_DISPLACEMENTS | |
ADD_DISPLACEMENTS |
Definition at line 56 of file multires.c.
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().
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().
MultiresModifierData* find_multires_modifier_before | ( | Scene * | scene, |
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().
|
static |
Definition at line 466 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), Object::data, Mesh::ldata, MPoly::loopstart, Mesh::mpoly, MDisps::totdisp, MPoly::totloop, and Mesh::totpoly.
Referenced by multiresModifier_set_levels_from_disps().
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().
|
static |
Definition at line 782 of file multires.c.
References CCG_grid_elem_co(), CCGKey::grid_size, sub_v3_v3v3(), t, x, and y.
Referenced by grid_tangent_matrix().
|
static |
Definition at line 815 of file multires.c.
References CCG_grid_elem_no(), copy_v3_v3(), grid_tangent(), normalize_v3(), x, and y.
Referenced by multires_disp_run_cb().
int mdisp_rot_face_to_crn | ( | struct MVert * | UNUSEDmvert, |
struct MPoly * | mpoly, | ||
struct MLoop * | UNUSEDmloop, | ||
const struct MLoopTri * | UNUSEDlt, | ||
const int | face_side, | ||
const float | u, | ||
const float | v, | ||
float * | x, | ||
float * | y | ||
) |
Definition at line 1517 of file multires.c.
References len, len_v3v3(), MPoly::loopstart, NULL, offset, MPoly::totloop, v, w(), x, and y.
|
static |
Definition at line 1378 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), Object::data, get_multires_modifier(), is_uniform_scaled_m3(), Mesh::ldata, mat3_to_scale(), mesh, multires_apply_uniform_scale(), multiresModifier_ensure_external_read(), NULL, scene, and MultiresModifierData::totlvl.
Referenced by multiresModifier_prepare_join(), and multiresModifier_scale_disp().
Definition at line 1366 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), Object::data, MDisps::disps, Mesh::ldata, mesh, mul_v3_fl(), MDisps::totdisp, and Mesh::totloop.
Referenced by multires_apply_smat().
|
static |
Definition at line 377 of file multires.c.
References SubdivCCG::coords, SubdivCCG::dirty, SubdivCCG::hidden, MULTIRES_COORDS_MODIFIED, and MULTIRES_HIDDEN_MODIFIED.
Referenced by multires_mark_as_modified().
|
static |
Definition at line 583 of file multires.c.
References CCG_elem_offset_co(), CCGKey::elem_size, CCGKey::grid_size, x, and y.
Referenced by multires_modifier_update_mdisps().
|
static |
Definition at line 559 of file multires.c.
References copy_v3_v3(), x, and y.
Referenced by multires_del_higher().
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().
|
static |
Definition at line 633 of file multires.c.
References CD_GRID_PAINT_MASK, CD_MDISPS, CustomData_get_layer(), Object::data, MDisps::disps, float(), usdtokens::g(), MDisps::hidden, Mesh::ldata, MDisps::level, MPoly::loopstart, MEM_calloc_arrayN, MEM_freeN, Mesh::mpoly, multires_copy_grid(), multires_customdata_delete(), multires_force_sculpt_rebuild(), multires_grid_paint_mask_downsample(), multires_grid_tot, multires_mdisps_downsample_hidden(), multires_set_tot_level(), multires_set_tot_mdisps(), multires_side_tot, multiresModifier_ensure_external_read(), NULL, MDisps::totdisp, MPoly::totloop, MultiresModifierData::totlvl, and Mesh::totpoly.
Referenced by multiresModifier_del_levels(), and multiresModifier_sync_levels_ex().
|
static |
Definition at line 839 of file multires.c.
References ADD_DISPLACEMENTS, add_v3_v3(), add_v3_v3v3(), APPLY_DISPLACEMENTS, CALC_DISPLACEMENTS, CCG_grid_elem_co(), CCG_grid_elem_mask(), CLAMPIS, data, GridPaintMask::data, MultiresThreadedData::dGridSize, MDisps::disps, MultiresThreadedData::dSkip, float(), CCGKey::grid_area, MultiresThreadedData::grid_paint_mask, grid_tangent_matrix(), MultiresThreadedData::gridData, MultiresThreadedData::gridOffset, MultiresThreadedData::gridSize, invert_m3(), MultiresThreadedData::key, CCGKey::level, GridPaintMask::level, MPoly::loopstart, mask(), MultiresThreadedData::mdisps, MEM_calloc_arrayN, MEM_freeN, MultiresThreadedData::mpoly, mul_v3_m3v3(), NULL, MultiresThreadedData::op, paint_grid_paint_mask(), sub_v3_v3v3(), MultiresThreadedData::subGridData, MPoly::totloop, x, and y.
Referenced by multiresModifier_disp_run().
|
static |
Definition at line 718 of file multires.c.
References MultiresModifierData::lvl, MULTIRES_ALLOC_PAINT_MASK, multires_make_derived_from_derived(), MULTIRES_USE_LOCAL_MMD, NULL, MultiresModifierData::renderlvl, scene, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by multires_modifier_update_mdisps().
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 Scene * | scene, |
const Object * | ob, | ||
const MultiresModifierData * | mmd, | ||
bool | render, | ||
bool | ignore_simplify | ||
) |
Definition at line 345 of file multires.c.
References get_render_subsurf_level(), MultiresModifierData::lvl, Object::mode, NULL, OB_MODE_SCULPT, Scene::r, MultiresModifierData::renderlvl, scene, and MultiresModifierData::sculptlvl.
Referenced by multires_make_derived_from_derived(), and multiresModifier_del_levels().
|
static |
Definition at line 613 of file multires.c.
References BKE_ccg_gridsize(), data, GridPaintMask::data, GridPaintMask::level, MEM_calloc_arrayN, MEM_freeN, paint_grid_paint_mask(), square_i(), x, and y.
Referenced by multires_del_higher().
DerivedMesh* multires_make_derived_from_derived | ( | DerivedMesh * | dm, |
MultiresModifierData * | mmd, | ||
Scene * | scene, | ||
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 | ( | Depsgraph * | depsgraph, |
Object * | object, | ||
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 MDisps * | s | ) |
Definition at line 1406 of file multires.c.
References MDisps::totdisp.
|
static |
Definition at line 160 of file multires.c.
References BKE_ccg_factor(), BKE_ccg_gridsize(), BLI_assert, BLI_BITMAP_NEW, BLI_BITMAP_SET, BLI_BITMAP_TEST, square_i(), x, and y.
Referenced by multires_del_higher(), and multires_output_hidden_to_ccgdm().
Definition at line 208 of file multires.c.
References BLI_assert, MDisps::hidden, MDisps::level, MEM_freeN, multires_mdisps_upsample_hidden(), and NULL.
Referenced by multires_reallocate_mdisps().
|
static |
Grid hiding
Definition at line 93 of file multires.c.
References BKE_ccg_factor(), BKE_ccg_gridsize(), BLI_assert, BLI_BITMAP_NEW, BLI_BITMAP_SET, BLI_BITMAP_TEST, MEM_dupallocN, offset, and square_i().
Referenced by multires_mdisps_subdivide_hidden(), and multires_modifier_update_hidden().
void multires_modifier_update_hidden | ( | 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, |
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().
|
static |
Definition at line 184 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), CCGDerivedMesh::dm, usdtokens::g(), DerivedMesh::getGridOffset, CCGDerivedMesh::gridHidden, MDisps::hidden, Mesh::ldata, MDisps::level, Mesh::mpoly, multires_mdisps_downsample_hidden(), MPoly::totloop, and Mesh::totpoly.
Referenced by multires_make_derived_from_derived().
Definition at line 536 of file multires.c.
References MDisps::disps, float(), MDisps::level, MEM_calloc_arrayN, MEM_freeN, multires_grid_tot, multires_mdisps_subdivide_hidden(), and MDisps::totdisp.
Referenced by multiresModifier_disp_run().
void multires_set_tot_level | ( | Object * | ob, |
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 523 of file multires.c.
References CD_MDISPS, CustomData_get_layer(), Mesh::ldata, MDisps::level, multires_grid_tot, MDisps::totdisp, and Mesh::totloop.
Referenced by multires_del_higher(), multires_make_derived_from_derived(), multires_modifier_update_mdisps(), and multiresModifier_del_levels().
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().
Definition at line 1347 of file multires.c.
References Object::data, get_multires_modifier(), multires_customdata_delete(), multiresModifier_sync_levels_ex(), and scene.
Referenced by multiresModifier_prepare_join().
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_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().
|
static |
Definition at line 936 of file multires.c.
References APPLY_DISPLACEMENTS, BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), CALC_DISPLACEMENTS, CCG_TASK_LIMIT, ccgSubSurf_stitchFaces(), ccgSubSurf_updateNormals(), CD_DEFAULT, CD_GRID_PAINT_MASK, CD_MDISPS, CD_MPOLY, CustomData_add_layer(), CustomData_get_layer(), CustomData_has_layer(), data, DerivedMesh::getGridData, DerivedMesh::getGridKey, DerivedMesh::getGridOffset, DerivedMesh::getGridSize, CCGKey::has_mask, Mesh::ldata, DerivedMesh::loopData, TaskParallelSettings::min_iter_per_thread, Mesh::mpoly, multires_disp_run_cb(), multires_reallocate_mdisps(), multires_side_tot, NULL, DerivedMesh::numLoopData, DerivedMesh::numPolyData, DerivedMesh::polyData, CCGDerivedMesh::ss, Mesh::totloop, and Mesh::totpoly.
Referenced by multires_make_derived_from_derived(), and multires_modifier_update_mdisps().
void multiresModifier_ensure_external_read | ( | struct Mesh * | mesh, |
const MultiresModifierData * | mmd | ||
) |
Definition at line 1510 of file multires.c.
References mesh, multires_ensure_external_read(), and MultiresModifierData::totlvl.
Referenced by multires_apply_smat(), multires_del_higher(), multires_make_derived_from_derived(), multires_modifier_update_mdisps(), and multiresModifier_del_levels().
void multiresModifier_prepare_join | ( | struct Depsgraph * | depsgraph, |
Scene * | scene, | ||
Object * | ob, | ||
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().
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_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().
|
static |
Definition at line 741 of file multires.c.
References eSubsurfModifierFlag_ControlEdges, SubsurfModifierData::flags, SubsurfModifierData::levels, ME_SIMPLE_SUBSURF, Object::mode, NULL, OB_MODE_EDIT, SubsurfModifierData::quality, SubsurfModifierData::renderLevels, scene, SubsurfModifierData::subdivType, SUBSURF_ALLOC_PAINT_MASK, SUBSURF_IN_EDIT_MODE, subsurf_make_derived_from_derived(), SUBSURF_USE_RENDER_PARAMS, SUBSURF_UV_SMOOTH_NONE, SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES, and SubsurfModifierData::uv_smooth.
Referenced by multires_make_derived_from_derived(), and multires_modifier_update_mdisps().
|
static |
Definition at line 50 of file multires.c.
Referenced by multires_del_higher(), multires_ensure_external_read(), multires_reallocate_mdisps(), and multires_set_tot_mdisps().
|
static |
Definition at line 52 of file multires.c.
Referenced by multires_del_higher(), and multiresModifier_disp_run().