|
Blender V4.3
|
#include "MEM_guardedalloc.h"#include "DNA_mesh_types.h"#include "DNA_modifier_types.h"#include "DNA_object_types.h"#include "BLI_linklist.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_utildefines.h"#include "BKE_crazyspace.hh"#include "BKE_curves.hh"#include "BKE_editmesh.hh"#include "BKE_geometry_set.hh"#include "BKE_grease_pencil.hh"#include "BKE_lib_id.hh"#include "BKE_mesh.hh"#include "BKE_mesh_runtime.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_modifier.hh"#include "BKE_multires.hh"#include "BKE_object_types.hh"#include "BKE_report.hh"#include "DEG_depsgraph_query.hh"Go to the source code of this file.
Namespaces | |
| namespace | blender |
| namespace | blender::bke |
| namespace | blender::bke::crazyspace |
| void BKE_crazyspace_api_displacement_to_deformed | ( | Object * | object, |
| ReportList * | reports, | ||
| int | vertex_index, | ||
| const float | displacement[3], | ||
| float | r_displacement_deformed[3] ) |
Definition at line 512 of file crazyspace.cc.
References BKE_reportf(), mul_v3_m3v3(), and RPT_ERROR.
| void BKE_crazyspace_api_displacement_to_original | ( | Object * | object, |
| ReportList * | reports, | ||
| int | vertex_index, | ||
| const float | displacement_deformed[3], | ||
| float | r_displacement[3] ) |
Definition at line 532 of file crazyspace.cc.
References BKE_reportf(), copy_v3_v3(), invert_m3_m3(), mul_v3_m3v3(), and RPT_ERROR.
| void BKE_crazyspace_api_eval | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | object, | ||
| ReportList * | reports ) |
Definition at line 487 of file crazyspace.cc.
References BKE_crazyspace_build_sculpt(), BKE_report(), depsgraph, OB_MESH, and RPT_ERROR.
| void BKE_crazyspace_api_eval_clear | ( | Object * | object | ) |
Definition at line 556 of file crazyspace.cc.
Referenced by BKE_object_free_derived_caches().
| void BKE_crazyspace_build_sculpt | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | object, | ||
| blender::Array< blender::float3x3, 0 > & | deformmats, | ||
| blender::Array< blender::float3, 0 > & | deformcos ) |
Definition at line 398 of file crazyspace.cc.
References BKE_crazyspace_set_quats_mesh(), BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), BKE_sculpt_get_first_deform_matrices(), BLI_SCOPED_DEFER, copy_m3_m3(), crazyspace_init_object_for_eval(), crazyspace_modifier_supports_deform(), ModifierTypeInfo::deform_matrices, ModifierTypeInfo::deform_verts, depsgraph, eModifierMode_Realtime, blender::Array< T, InlineBufferCapacity, Allocator >::fill(), float, blender::MatBase< float, 3, 3 >::identity(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), MEM_freeN(), MEM_mallocN, mul_m3_m3m3(), ptr, quat_to_mat3(), blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), and Object::runtime.
Referenced by BKE_crazyspace_api_eval(), and sculpt_update_object().
| int BKE_crazyspace_get_first_deform_matrices_editbmesh | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| BMEditMesh * | em, | ||
| blender::Array< blender::float3x3, 0 > & | deformmats, | ||
| blender::Array< blender::float3, 0 > & | deformcos ) |
Returns an array of deform matrices for crazy-space correction, and the number of modifiers left.
Definition at line 224 of file crazyspace.cc.
References BKE_id_free(), BKE_mesh_wrapper_from_editmesh(), BKE_mesh_wrapper_vert_coords_copy(), BKE_modifier_calc_data_masks(), BKE_modifier_get_info(), BKE_modifier_is_correctable_deformed(), BKE_modifiers_clear_errors(), BKE_modifiers_get_cage_index(), BKE_modifiers_get_virtual_modifierlist(), BLI_linklist_free(), BMEditMesh::bm, CD_MASK_BAREMESH, Object::data, ModifierTypeInfo::deform_matrices_EM, depsgraph, blender::bke::editbmesh_modifier_is_enabled(), eModifierMode_Editmode, eModifierMode_Realtime, blender::Array< T, InlineBufferCapacity, Allocator >::fill(), blender::MatBase< float, 3, 3 >::identity(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), CDMaskLink::mask, ModifierData::next, OnlyDeform, blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), BMesh::totvert, ModifierData::type, and ModifierTypeInfo::type.
Referenced by transform_convert_mesh_crazyspace_detect().
| blender::Array< blender::float3 > BKE_crazyspace_get_mapped_editverts | ( | Depsgraph * | depsgraph, |
| Object * | obedit ) |
Disable subdivision-surface temporal, get mapped coordinates, and enable it.
Definition at line 89 of file crazyspace.cc.
References BKE_editmesh_from_object(), BKE_modifiers_get_cage_index(), BMEditMesh::bm, CD_MASK_BAREMESH, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), DEG_id_tag_update(), depsgraph, blender::bke::editbmesh_get_eval_cage(), Object::id, ID_RECALC_GEOMETRY, blender::bke::mesh_data_update(), blender::bke::mesh_get_mapped_verts_coords(), modifiers_disable_subsurf_temporary(), and BMesh::totvert.
Referenced by transform_convert_mesh_crazyspace_detect().
| void BKE_crazyspace_set_quats_editmesh | ( | BMEditMesh * | em, |
| const blender::Span< blender::float3 > | origcos, | ||
| const blender::Span< blender::float3 > | mappedcos, | ||
| float(*) | quats[4], | ||
| const bool | use_select ) |
Definition at line 120 of file crazyspace.cc.
References BMEditMesh::bm, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_elem_index_get, BM_elem_index_set, BM_ELEM_SELECT, BM_ELEM_TAG, BM_FACE_FIRST_LOOP, BM_FACES_OF_MESH, BM_ITER_MESH, BM_ITER_MESH_INDEX, BM_VERTS_OF_MESH, BMVert::co, BMesh::elem_index_dirty, blender::Span< T >::is_empty(), BMLoop::next, BMLoop::prev, set_crazy_vertex_quat(), BMLoop::v, and v.
Referenced by transform_convert_mesh_crazyspace_detect().
| void BKE_crazyspace_set_quats_mesh | ( | Mesh * | mesh, |
| const blender::Span< blender::float3 > | origcos, | ||
| const blender::Span< blender::float3 > | mappedcos, | ||
| float(*) | quats[4] ) |
Definition at line 184 of file crazyspace.cc.
References blender::Span< T >::is_empty(), and set_crazy_vertex_quat().
Referenced by BKE_crazyspace_build_sculpt().
| int BKE_sculpt_get_first_deform_matrices | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | object, | ||
| blender::Array< blender::float3x3, 0 > & | deformmats, | ||
| blender::Array< blender::float3, 0 > & | deformcos ) |
Definition at line 327 of file crazyspace.cc.
References BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), BLI_assert, BLI_SCOPED_DEFER, crazyspace_init_object_for_eval(), crazyspace_modifier_supports_deform(), crazyspace_modifier_supports_deform_matrices(), Object::data, ModifierTypeInfo::deform_matrices, depsgraph, eModifierMode_Realtime, blender::Array< T, InlineBufferCapacity, Allocator >::fill(), get_multires_modifier(), blender::MatBase< float, 3, 3 >::identity(), blender::Array< T, InlineBufferCapacity, Allocator >::is_empty(), ModifierData::next, OB_MODE_SCULPT, blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), Object::runtime, and ModifierData::type.
Referenced by BKE_crazyspace_build_sculpt().
|
static |
Crazy-space evaluation needs to have an object which has all the fields evaluated, but the mesh data being at undeformed state. This way it can re-apply modifiers and also have proper pointers to key data blocks.
Similar to BKE_object_eval_reset(), but does not modify the actual evaluated object.
Definition at line 300 of file crazyspace.cc.
References Object::data, DEG_get_evaluated_object(), depsgraph, and Object::runtime.
Referenced by BKE_crazyspace_build_sculpt(), and BKE_sculpt_get_first_deform_matrices().
|
static |
Definition at line 321 of file crazyspace.cc.
References BKE_modifier_get_info(), OnlyDeform, ModifierData::type, and ModifierTypeInfo::type.
Referenced by BKE_crazyspace_build_sculpt(), and BKE_sculpt_get_first_deform_matrices().
|
static |
Definition at line 312 of file crazyspace.cc.
References BKE_modifier_get_info(), ELEM, eModifierType_Multires, eModifierType_Subsurf, OnlyDeform, ModifierData::type, and ModifierTypeInfo::type.
Referenced by BKE_sculpt_get_first_deform_matrices().
Definition at line 74 of file crazyspace.cc.
References eModifierMode_DisableTemporary, eModifierType_Subsurf, ListBase::first, ModifierData::mode, Object::modifiers, ModifierData::next, and ModifierData::type.
Referenced by BKE_crazyspace_get_mapped_editverts().
|
static |
Definition at line 58 of file crazyspace.cc.
References q1, sub_qt_qtqt(), and tan_calc_quat_v3().
Referenced by BKE_crazyspace_set_quats_editmesh(), and BKE_crazyspace_set_quats_mesh().
| BLI_INLINE void tan_calc_quat_v3 | ( | float | r_quat[4], |
| const float | co_1[3], | ||
| const float | co_2[3], | ||
| const float | co_3[3] ) |
Definition at line 36 of file crazyspace.cc.
References cross_v3_v3v3(), nor, normalize_v3(), sub_v3_v3v3(), tri_to_quat_ex(), and unit_qt().
Referenced by set_crazy_vertex_quat().