|
Blender V5.0
|
#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_index_mask.hh"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BLI_task.h"#include "BKE_ccg.hh"#include "BKE_editmesh.hh"#include "BKE_mesh.h"#include "BKE_mesh_runtime.hh"#include "BKE_mesh_types.hh"#include "BKE_modifier.hh"#include "BKE_multires.hh"#include "BKE_paint.hh"#include "BKE_paint_bvh.hh"#include "BKE_scene.hh"#include "BKE_subdiv_ccg.hh"#include "BKE_object.hh"#include "DEG_depsgraph_query.hh"#include <cmath>#include <cstring>Go to the source code of this file.
Macros | |
| #define | DNA_DEPRECATED_ALLOW |
Variables | |
| static const int | multires_grid_tot [] |
| static const int | multires_side_tot [] |
| #define DNA_DEPRECATED_ALLOW |
Definition at line 12 of file multires.cc.
| blender::Array< blender::float3 > BKE_multires_create_deformed_base_mesh_vert_coords | ( | Depsgraph * | depsgraph, |
| Object * | object, | ||
| MultiresModifierData * | mmd ) |
Get coordinates of a deformed base mesh which is an input to the given multi-res modifier.
Definition at line 119 of file multires.cc.
References 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(), DEG_get_evaluated_scene(), DEG_get_mode(), depsgraph, eModifierMode_Realtime, eModifierMode_Render, ModifierEvalContext::flag, MOD_APPLY_RENDER, MultiresModifierData::modifier, ModifierData::next, OnlyDeform, Object::runtime, Object::sculpt, and ModifierTypeInfo::type.
Referenced by multires_reshape_apply_base_refine_from_deform(), and blender::ed::sculpt_paint::undo::refine_subdiv().
| Mesh * BKE_multires_create_mesh | ( | Depsgraph * | depsgraph, |
| Object * | object, | ||
| MultiresModifierData * | mmd ) |
Creates mesh with multi-res modifier applied on current object's deform mesh.
Definition at line 99 of file multires.cc.
References BKE_mesh_copy_for_eval(), BKE_modifier_get_info(), CD_MASK_BAREMESH, DEG_get_evaluated(), DEG_get_evaluated_scene(), depsgraph, ModifierEvalContext::depsgraph, ModifierEvalContext::flag, blender::bke::mesh_get_eval_deform(), MOD_APPLY_IGNORE_SIMPLIFY, MOD_APPLY_USECACHE, MultiresModifierData::modifier, ModifierTypeInfo::modify_mesh, ModifierEvalContext::object, result, and ModifierData::type.
Referenced by multiresModifier_reshapeFromDeformModifier().
| MultiresModifierData * find_multires_modifier_before | ( | Scene * | scene, |
| ModifierData * | lastmd ) |
Definition at line 164 of file multires.cc.
References BKE_modifier_is_enabled(), eModifierMode_Realtime, eModifierType_Multires, and ModifierData::prev.
Referenced by blender::ed::object::modifier_apply(), blender::ed::object::modifier_apply_obdata(), and blender::ed::object::modifier_apply_poll().
|
static |
Definition at line 348 of file multires.cc.
References CD_MDISPS, Mesh::corner_data, CustomData_get_layer(), Object::data, faces, i, and MDisps::totdisp.
Referenced by multiresModifier_set_levels_from_disps().
| MultiresModifierData * get_multires_modifier | ( | Scene * | scene, |
| 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 178 of file multires.cc.
References BKE_modifier_is_enabled(), eModifierMode_Realtime, eModifierType_Multires, LISTBASE_FOREACH, and Object::modifiers.
Referenced by BKE_sculpt_get_first_deform_matrices(), blender::ed::object::init_multiresbake_job(), blender::ed::mesh::join_objects_exec(), multires_apply_smat(), multires_sync_levels(), blender::ed::object::multiresbake_check(), and blender::ed::object::multiresbake_image_exec_locked().
|
static |
Definition at line 666 of file multires.cc.
References CD_MDISPS, Mesh::corner_data, CustomData_get_layer(), get_multires_modifier(), is_uniform_scaled_m3(), mat3_to_scale(), multires_apply_uniform_scale(), multiresModifier_ensure_external_read(), and MultiresModifierData::totlvl.
Referenced by multiresModifier_prepare_join(), and multiresModifier_scale_disp().
Definition at line 653 of file multires.cc.
References CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_for_write(), MDisps::disps, i, mul_v3_fl(), and MDisps::totdisp.
Referenced by multires_apply_smat().
|
static |
Definition at line 237 of file multires.cc.
References SubdivCCG::coords, SubdivCCG::dirty, SubdivCCG::hidden, MULTIRES_COORDS_MODIFIED, and MULTIRES_HIDDEN_MODIFIED.
Referenced by multires_mark_as_modified().
|
static |
Definition at line 418 of file multires.cc.
References copy_v3_v3(), x, and y.
Referenced by multires_del_higher().
| void multires_customdata_delete | ( | Mesh * | mesh | ) |
Custom-data.
Definition at line 53 of file multires.cc.
References BM_data_layer_free(), CD_GRID_PAINT_MASK, CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_external_remove(), CustomData_free_layer_active(), CustomData_has_layer(), Mesh::id, and Mesh::runtime.
Referenced by blender::ed::object::modifier_apply_obdata(), multires_del_higher(), multires_sync_levels(), and blender::ed::object::object_modifier_remove().
|
static |
Definition at line 465 of file multires.cc.
References CD_GRID_PAINT_MASK, CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_for_write(), Object::data, MDisps::disps, faces, float, MDisps::hidden, i, MDisps::level, MEM_calloc_arrayN(), MEM_freeN(), 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(), MDisps::totdisp, and MultiresModifierData::totlvl.
Referenced by multiresModifier_del_levels(), and multiresModifier_sync_levels_ex().
| void multires_ensure_external_read | ( | Mesh * | mesh, |
| int | top_level ) |
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 766 of file multires.cc.
References CD_MASK_MDISPS, CD_MDISPS, CD_SET_DEFAULT, Mesh::corner_data, Mesh::corners_num, CustomData_add_layer(), CustomData_external_read(), CustomData_external_test(), CustomData_get_layer(), i, Mesh::id, MDisps::level, MEM_SAFE_FREE, multires_grid_tot, and MDisps::totdisp.
Referenced by multiresModifier_ensure_external_read(), and multiresModifier_reshapeFromCCG().
| void multires_flush_sculpt_updates | ( | Object * | object | ) |
Definition at line 270 of file multires.cc.
References SculptSession::active, BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), SubdivCCG::coords, SubdivCCG::dirty, eModifierMode_Realtime, eModifierType_Multires, blender::bke::pbvh::Grids, SubdivCCG::hidden, SculptSession::modifier, SculptSession::multires, multiresModifier_reshapeFromCCG(), ModifierData::next, blender::bke::object::pbvh_get(), Object::sculpt, SculptSession::subdiv_ccg, MultiresModifierData::totlvl, and blender::bke::pbvh::Tree::type().
Referenced by ED_editors_flush_edits_for_object_ex(), blender::ed::object::init_multiresbake_job(), multires_force_sculpt_rebuild(), blender::ed::object::multiresbake_image_exec_locked(), multiresModifier_subdivide_to_level(), blender::ed::sculpt_paint::object_sculpt_mode_exit(), and blender::ed::sculpt_paint::undo::push_multires_mesh_begin().
| void multires_force_external_reload | ( | Object * | object | ) |
Definition at line 339 of file multires.cc.
References BKE_mesh_from_object(), CD_MASK_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_external_reload(), Mesh::id, and multires_force_sculpt_rebuild().
| void multires_force_sculpt_rebuild | ( | Object * | object | ) |
Definition at line 327 of file multires.cc.
References BKE_sculptsession_free_pbvh(), multires_flush_sculpt_updates(), and Object::sculpt.
Referenced by BKE_mesh_assign_object(), libblock_remap_data_postprocess_obdata_relink(), blender::ed::object::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, | ||
| const bool | render, | ||
| const bool | ignore_simplify ) |
Definition at line 205 of file multires.cc.
References get_render_subsurf_level(), MultiresModifierData::lvl, Object::mode, OB_MODE_SCULPT, Scene::r, MultiresModifierData::renderlvl, and MultiresModifierData::sculptlvl.
Referenced by BKE_multires_subdiv_mesh_settings_init(), multires_ccg_settings_init(), multires_reshape_context_create_from_base_mesh(), multires_reshape_context_create_from_object(), and multiresModifier_del_levels().
|
static |
Definition at line 447 of file multires.cc.
References CCG_grid_size(), data, GridPaintMask::data, GridPaintMask::level, MEM_calloc_arrayN(), MEM_freeN(), paint_grid_paint_mask(), square_i(), x, and y.
Referenced by multires_del_higher().
| void multires_mark_as_modified | ( | Depsgraph * | depsgraph, |
| Object * | object, | ||
| const MultiresModifiedFlags | flags ) |
Definition at line 247 of file multires.cc.
References Object::data, DEG_get_evaluated(), depsgraph, multires_ccg_mark_as_modified(), and Mesh::runtime.
Referenced by blender::ed::sculpt_paint::flush_update_step(), blender::ed::sculpt_paint::mask::gesture_end(), blender::ed::sculpt_paint::hide::grid_hide_update(), blender::ed::sculpt_paint::hide::grids_show_all(), blender::ed::sculpt_paint::hide::grow_shrink_visibility_grid(), blender::ed::sculpt_paint::mask::invert_mask_grids(), blender::ed::sculpt_paint::hide::invert_visibility_grids(), and blender::ed::sculpt_paint::undo::restore_list().
| int multires_mdisp_corners | ( | const MDisps * | s | ) |
Definition at line 693 of file multires.cc.
References MDisps::totdisp.
Referenced by bm_corners_to_loops_ex(), and layerSwap_mdisps().
|
static |
Definition at line 77 of file multires.cc.
References BLI_assert, BLI_BITMAP_NEW, BLI_BITMAP_SET, BLI_BITMAP_TEST, CCG_grid_factor(), CCG_grid_size(), square_i(), x, and y.
Referenced by multires_del_higher().
| void multires_set_tot_level | ( | Object * | ob, |
| MultiresModifierData * | mmd, | ||
| const int | lvl ) |
Definition at line 225 of file multires.cc.
References MultiresModifierData::lvl, Object::mode, OB_MODE_SCULPT, MultiresModifierData::renderlvl, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by multires_del_higher(), multires_subdivide_create_tangent_displacement_linear_grids(), blender::ed::object::multires_update_totlevels(), multiresModifier_del_levels(), and multiresModifier_subdivide_to_level().
|
static |
Definition at line 405 of file multires.cc.
References CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_for_write(), i, MDisps::level, multires_grid_tot, and MDisps::totdisp.
Referenced by multires_del_higher(), and multiresModifier_del_levels().
| void multires_stitch_grids | ( | Object * | ob | ) |
Definition at line 549 of file multires.cc.
References BKE_subdiv_ccg_average_stitch_faces(), BLI_assert, SubdivCCG::faces, blender::bke::pbvh::Grids, blender::bke::object::pbvh_get(), Object::sculpt, and SculptSession::subdiv_ccg.
Referenced by blender::ed::sculpt_paint::sculpt_fix_noise_tear().
Definition at line 636 of file multires.cc.
References Object::data, get_multires_modifier(), multires_customdata_delete(), and multiresModifier_sync_levels_ex().
Referenced by multiresModifier_prepare_join().
| void multires_topology_changed | ( | Mesh * | mesh | ) |
Update multi-res data after topology changing.
Definition at line 732 of file multires.cc.
References CD_MASK_MDISPS, CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_external_read(), CustomData_get_layer_for_write(), MDisps::disps, i, Mesh::id, MEM_calloc_arrayN(), and MDisps::totdisp.
| void multiresModifier_del_levels | ( | MultiresModifierData * | mmd, |
| Scene * | scene, | ||
| Object * | object, | ||
| int | direction ) |
| direction | 1 for delete higher, 0 for lower (not implemented yet). |
Definition at line 526 of file multires.cc.
References BKE_mesh_from_object(), CD_MDISPS, Mesh::corner_data, Mesh::corners_num, CustomData_get_layer_for_write(), multires_del_higher(), multires_force_sculpt_rebuild(), multires_get_level(), multires_set_tot_level(), multires_set_tot_mdisps(), multiresModifier_ensure_external_read(), and MultiresModifierData::totlvl.
Referenced by blender::ed::object::multires_higher_levels_delete_exec().
| void multiresModifier_ensure_external_read | ( | Mesh * | mesh, |
| const MultiresModifierData * | mmd ) |
Definition at line 798 of file multires.cc.
References multires_ensure_external_read(), and MultiresModifierData::totlvl.
Referenced by blender::bke::subdiv::initialize(), multires_apply_smat(), multires_del_higher(), and multiresModifier_del_levels().
| void multiresModifier_prepare_join | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| Object * | to_ob ) |
Definition at line 718 of file multires.cc.
References BKE_object_scale_to_mat3(), depsgraph, invert_m3(), mul_m3_m3m3(), multires_apply_smat(), and multires_sync_levels().
Referenced by blender::ed::mesh::join_objects_exec().
Definition at line 708 of file multires.cc.
References BKE_object_scale_to_mat3(), depsgraph, and multires_apply_smat().
Referenced by blender::ed::object::apply_objects_internal().
| void multiresModifier_set_levels_from_disps | ( | MultiresModifierData * | mmd, |
| Object * | ob ) |
Reset the multi-res levels to match the number of mdisps.
Definition at line 385 of file multires.cc.
References CD_MDISPS, Mesh::corner_data, CustomData_get_layer(), Object::data, get_levels_from_disps(), MultiresModifierData::lvl, MultiresModifierData::renderlvl, Mesh::runtime, MultiresModifierData::sculptlvl, and MultiresModifierData::totlvl.
Referenced by BKE_modifiers_test_object(), and blender::ed::object::modifier_add().
| void multiresModifier_sync_levels_ex | ( | Object * | ob_dst, |
| const MultiresModifierData * | mmd_src, | ||
| 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 619 of file multires.cc.
References CatmullClark, multires_del_higher(), multiresModifier_subdivide_to_level(), and MultiresModifierData::totlvl.
Referenced by BKE_object_copy_modifier(), and multires_sync_levels().
Definition at line 568 of file multires.cc.
References add_v3_v3v3(), floor, isnan, mul_v3_fl(), mul_v3_v3fl(), out, v, x, and y.
Referenced by loop_interp_multires_cb().
|
static |
Definition at line 46 of file multires.cc.
Referenced by multires_del_higher(), multires_ensure_external_read(), and multires_set_tot_mdisps().
|
static |
Definition at line 48 of file multires.cc.
Referenced by multires_del_higher().