|
Blender V4.3
|
A BVH for high poly meshes. More...
#include <optional>#include <string>#include <variant>#include "BLI_array.hh"#include "BLI_bit_group_vector.hh"#include "BLI_bit_vector.hh"#include "BLI_bounds_types.hh"#include "BLI_compiler_compat.h"#include "BLI_function_ref.hh"#include "BLI_generic_span.hh"#include "BLI_index_mask_fwd.hh"#include "BLI_math_vector_types.hh"#include "BLI_offset_indices.hh"#include "BLI_set.hh"#include "BLI_span.hh"#include "BLI_string_ref.hh"#include "BLI_utildefines.h"#include "BLI_vector.hh"#include "DNA_customdata_types.h"#include "BKE_ccg.hh"#include "BKE_pbvh.hh"#include "bmesh.hh"Go to the source code of this file.
Classes | |
| class | blender::bke::pbvh::Node |
| struct | blender::bke::pbvh::MeshNode |
| struct | blender::bke::pbvh::GridsNode |
| struct | blender::bke::pbvh::BMeshNode |
| class | blender::bke::pbvh::DrawCache |
| class | blender::bke::pbvh::Tree |
| struct | PBVHFrustumPlanes |
Namespaces | |
| namespace | blender |
| namespace | blender::bke |
| namespace | blender::bke::pbvh |
| namespace | blender::bke::pbvh::pixels |
Enumerations | |
| enum | PBVHTopologyUpdateMode { PBVH_Subdivide = 1 , PBVH_Collapse = 2 } |
A BVH for high poly meshes.
Definition in file BKE_pbvh_api.hh.
| Enumerator | |
|---|---|
| PBVH_Subdivide | |
| PBVH_Collapse | |
Definition at line 426 of file BKE_pbvh_api.hh.
| void BKE_pbvh_bmesh_after_stroke | ( | BMesh & | bm, |
| blender::bke::pbvh::Tree & | pbvh ) |
Definition at line 2470 of file pbvh_bmesh.cc.
References bm, CD_PROP_INT32, CustomData_get_offset_named(), blender::bke::pbvh::Node::flag_, blender::index_mask::IndexMask::from_bools(), blender::IndexRange::index_range(), blender::bke::pbvh::Tree::nodes_, PBVH_Leaf, BMesh::pdata, blender::bke::pbvh::Tree::tag_positions_changed(), blender::bke::pbvh::Tree::tag_topology_changed(), and BMesh::vdata.
Referenced by blender::ed::sculpt_paint::flush_update_done().
| const blender::Set< BMFace *, 0 > & BKE_pbvh_bmesh_node_faces | ( | blender::bke::pbvh::BMeshNode * | node | ) |
Definition at line 2517 of file pbvh_bmesh.cc.
Referenced by blender::ed::sculpt_paint::undo::bmesh_push(), blender::ed::sculpt_paint::islands::calc_topology_islands_bmesh(), blender::draw::pbvh::ensure_vbos_allocated_bmesh(), blender::draw::pbvh::fill_vbos_bmesh(), blender::ed::sculpt_paint::face_set::gesture_apply_bmesh(), blender::ed::sculpt_paint::hide::invert_visibility_bmesh(), and blender::ed::sculpt_paint::hide::partialvis_update_bmesh_nodes().
| const blender::Set< BMVert *, 0 > & BKE_pbvh_bmesh_node_other_verts | ( | blender::bke::pbvh::BMeshNode * | node | ) |
Definition at line 2511 of file pbvh_bmesh.cc.
Referenced by blender::ed::sculpt_paint::undo::bmesh_push(), and blender::ed::sculpt_paint::hide::partialvis_update_bmesh_nodes().
| void BKE_pbvh_bmesh_node_save_orig | ( | BMesh * | bm, |
| BMLog * | log, | ||
| blender::bke::pbvh::BMeshNode * | node, | ||
| bool | use_original ) |
In order to perform operations on the original node coordinates (currently just ray-cast), store the node's triangles and vertices.
Skips triangles that are hidden.
Definition at line 2418 of file pbvh_bmesh.cc.
References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), bm, BM_elem_flag_test, BM_ELEM_HIDDEN, blender::bke::pbvh::bm_face_as_array(), BM_VERT, blender::bke::pbvh::copy_original_vert(), BMesh::elem_index_dirty, blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of(), log(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve(), v, and verts.
Referenced by blender::bke::pbvh::bmesh_update_topology(), and blender::ed::sculpt_paint::dynamic_topology_update().
| const blender::Set< BMVert *, 0 > & BKE_pbvh_bmesh_node_unique_verts | ( | blender::bke::pbvh::BMeshNode * | node | ) |
Definition at line 2505 of file pbvh_bmesh.cc.
Referenced by blender::ed::sculpt_paint::cloth::apply_filter_forces_bmesh(), blender::ed::sculpt_paint::mask::apply_mask_bmesh(), blender::ed::sculpt_paint::mask::apply_new_mask_bmesh(), blender::ed::sculpt_paint::project::apply_projection_bmesh(), blender::ed::sculpt_paint::smooth::blur_geometry_data_array(), blender::ed::sculpt_paint::undo::bmesh_push(), blender::ed::sculpt_paint::calc_area_normal_and_center_node_bmesh(), blender::ed::sculpt_paint::boundary::calc_bend_bmesh(), blender::ed::sculpt_paint::calc_bmesh(), blender::ed::sculpt_paint::pose::calc_bmesh(), blender::ed::sculpt_paint::cloth::calc_constraint_factors(), blender::ed::sculpt_paint::filter::calc_enhance_details_filter(), blender::ed::sculpt_paint::calc_factors_common_bmesh(), blender::ed::sculpt_paint::calc_factors_common_from_orig_data_bmesh(), blender::ed::sculpt_paint::cloth::calc_forces_bmesh(), blender::ed::sculpt_paint::boundary::calc_grab_bmesh(), blender::ed::sculpt_paint::boundary::calc_inflate_bmesh(), blender::ed::sculpt_paint::filter::calc_inflate_filter(), blender::ed::sculpt_paint::filter::calc_random_filter(), blender::ed::sculpt_paint::filter::calc_relax_face_sets_filter(), blender::ed::sculpt_paint::filter::calc_relax_filter(), blender::ed::sculpt_paint::filter::calc_scale_filter(), blender::ed::sculpt_paint::filter::calc_sharpen_filter(), blender::ed::sculpt_paint::boundary::calc_slide_bmesh(), blender::ed::sculpt_paint::boundary::calc_smooth_bmesh(), blender::ed::sculpt_paint::filter::calc_smooth_filter(), blender::ed::sculpt_paint::filter::calc_sphere_filter(), blender::ed::sculpt_paint::filter::calc_surface_smooth_filter(), blender::ed::sculpt_paint::boundary::calc_twist_bmesh(), blender::ed::sculpt_paint::create_node_vert_offsets_bmesh(), blender::ed::sculpt_paint::mask::decrease_contrast_mask_bmesh(), blender::ed::sculpt_paint::cloth::do_simulation_step(), blender::ed::sculpt_paint::elastic_transform_node_bmesh(), blender::ed::sculpt_paint::cloth::ensure_nodes_constraints(), blender::ed::sculpt_paint::fake_neighbor_search_bmesh(), blender::ed::sculpt_paint::mask::fill_mask_bmesh(), blender::ed::sculpt_paint::mask::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::pose::grow_factors_bmesh(), blender::ed::sculpt_paint::mask::grow_mask_bmesh(), blender::ed::sculpt_paint::mask::increase_contrast_mask_bmesh(), blender::ed::sculpt_paint::mask::invert_mask_bmesh(), blender::ed::sculpt_paint::hide::invert_visibility_bmesh(), blender::ed::sculpt_paint::filter::mesh_filter_sharpen_init(), blender::ed::sculpt_paint::nearest_vert_calc_bmesh(), blender::ed::sculpt_paint::hide::partialvis_update_bmesh_nodes(), blender::ed::sculpt_paint::undo::restore_mask_from_undo_step(), blender::ed::sculpt_paint::undo::restore_position_from_undo_step(), blender::ed::sculpt_paint::sample_node_surface_bmesh(), blender::ed::sculpt_paint::mask::sculpt_mask_init_exec(), blender::ed::sculpt_paint::mask::sharpen_mask_bmesh(), blender::ed::sculpt_paint::mask::shrink_mask_bmesh(), blender::ed::sculpt_paint::mask::smooth_mask_bmesh(), blender::ed::sculpt_paint::transform_node_bmesh(), and blender::ed::sculpt_paint::expand::update_mask_bmesh().
| int BKE_pbvh_debug_draw_gen_get | ( | blender::bke::pbvh::Node & | node | ) |
Definition at line 2525 of file pbvh.cc.
Referenced by DRW_sculpt_debug_cb().
Definition at line 1502 of file pbvh.cc.
References BKE_subdiv_ccg_key_top_level(), BLI_assert, CCGKey::grid_size, blender::bke::pbvh::Grids, SubdivCCG::grids_num, blender::bke::object::pbvh_get(), square_i(), and SculptSession::subdiv_ccg.
Referenced by stats_object_sculpt().
Definition at line 1494 of file pbvh.cc.
References BKE_subdiv_ccg_key_top_level(), BLI_assert, CCGKey::grid_area, blender::bke::pbvh::Grids, SubdivCCG::grids_num, blender::bke::object::pbvh_get(), and SculptSession::subdiv_ccg.
Referenced by SCULPT_vertex_count_get(), and stats_object_sculpt().
| void BKE_pbvh_mark_rebuild_pixels | ( | blender::bke::pbvh::Tree & | pbvh | ) |
Definition at line 1517 of file pbvh.cc.
References blender::bke::pbvh::Tree::nodes_, PBVH_Leaf, and PBVH_RebuildPixels.
Referenced by sculpt_update_object().
| bool BKE_pbvh_node_frustum_contain_AABB | ( | const blender::bke::pbvh::Node * | node, |
| const PBVHFrustumPlanes * | frustum ) |
Test if AABB is at least partially inside the PBVHFrustumPlanes volume.
Definition at line 2354 of file pbvh.cc.
References blender::bke::pbvh::ISECT_OUTSIDE, and blender::bke::pbvh::test_frustum_aabb().
Referenced by drw_sculpt_generate_calls(), and blender::draw::sculpt_batches_get_ex().
| bool BKE_pbvh_node_frustum_exclude_AABB | ( | const blender::bke::pbvh::Node * | node, |
| const PBVHFrustumPlanes * | frustum ) |
Test if AABB is at least partially outside the PBVHFrustumPlanes volume.
Definition at line 2361 of file pbvh.cc.
References blender::bke::pbvh::ISECT_INSIDE, and blender::bke::pbvh::test_frustum_aabb().
| bool BKE_pbvh_node_fully_hidden_get | ( | const blender::bke::pbvh::Node & | node | ) |
Definition at line 1542 of file pbvh.cc.
References PBVH_FullyHidden, and PBVH_Leaf.
Referenced by drw_sculpt_generate_calls(), blender::ed::sculpt_paint::mask::get_hidden_verts(), blender::ed::sculpt_paint::node_fully_masked_or_hidden(), blender::ed::sculpt_paint::hide::node_visible_verts(), and blender::draw::sculpt_batches_get_ex().
| void BKE_pbvh_node_fully_hidden_set | ( | blender::bke::pbvh::Node & | node, |
| int | fully_hidden ) |
Definition at line 1530 of file pbvh.cc.
References BLI_assert, PBVH_FullyHidden, and PBVH_Leaf.
Referenced by blender::ed::sculpt_paint::hide::invert_visibility_bmesh(), blender::ed::sculpt_paint::hide::partialvis_update_bmesh_nodes(), and blender::bke::pbvh::pbvh_bmesh_node_finalize().
| bool BKE_pbvh_node_fully_masked_get | ( | const blender::bke::pbvh::Node & | node | ) |
Definition at line 1559 of file pbvh.cc.
References PBVH_FullyMasked, and PBVH_Leaf.
Referenced by blender::ed::sculpt_paint::node_fully_masked_or_hidden().
| void BKE_pbvh_node_fully_masked_set | ( | blender::bke::pbvh::Node & | node, |
| int | fully_masked ) |
Definition at line 1547 of file pbvh.cc.
References BLI_assert, PBVH_FullyMasked, and PBVH_Leaf.
Referenced by blender::ed::sculpt_paint::mask::fill_mask_bmesh(), and blender::ed::sculpt_paint::mask::fill_mask_mesh().
| bool BKE_pbvh_node_fully_unmasked_get | ( | const blender::bke::pbvh::Node & | node | ) |
Definition at line 1576 of file pbvh.cc.
References PBVH_FullyUnmasked, and PBVH_Leaf.
| void BKE_pbvh_node_fully_unmasked_set | ( | blender::bke::pbvh::Node & | node, |
| int | fully_masked ) |
Definition at line 1564 of file pbvh.cc.
References BLI_assert, PBVH_FullyUnmasked, and PBVH_Leaf.
Referenced by blender::ed::sculpt_paint::mask::fill_mask_bmesh(), and blender::ed::sculpt_paint::mask::fill_mask_mesh().
| void BKE_pbvh_node_get_bm_orco_data | ( | const blender::bke::pbvh::BMeshNode & | node, |
| blender::Span< blender::float3 > & | r_orig_positions, | ||
| blender::Span< blender::int3 > & | r_orig_tris ) |
Definition at line 1617 of file pbvh.cc.
Referenced by blender::ed::sculpt_paint::calc_area_normal_and_center_node_bmesh().
| blender::Bounds< blender::float3 > BKE_pbvh_node_get_original_BB | ( | const blender::bke::pbvh::Node * | node | ) |
Definition at line 1611 of file pbvh.cc.
Referenced by blender::bke::pbvh::clip_ray_ortho(), blender::ed::sculpt_paint::node_in_cylinder(), and blender::ed::sculpt_paint::node_in_sphere().
| float BKE_pbvh_node_get_tmin | ( | const blender::bke::pbvh::Node * | node | ) |
Definition at line 766 of file pbvh.cc.
Referenced by sculpt_find_nearest_to_ray_cb(), sculpt_raycast_cb(), and blender::ed::sculpt_paint::dyntopo::sculpt_raycast_detail_cb().
| void BKE_pbvh_node_mark_topology_update | ( | blender::bke::pbvh::Node & | node | ) |
Definition at line 2500 of file pbvh_bmesh.cc.
References PBVH_UpdateTopology.
Referenced by blender::ed::sculpt_paint::dynamic_topology_update(), and blender::ed::sculpt_paint::dyntopo::sculpt_detail_flood_fill_exec().
| void BKE_pbvh_node_mark_update | ( | blender::bke::pbvh::Node & | node | ) |
Definition at line 1512 of file pbvh.cc.
References PBVH_RebuildPixels.
Referenced by BKE_sculpt_update_object_before_eval().
| blender::Bounds< blender::float3 > BKE_pbvh_redraw_BB | ( | const blender::bke::pbvh::Tree & | pbvh | ) |
Definition at line 1439 of file pbvh.cc.
References blender::bounds::merge(), blender::bke::pbvh::negative_bounds(), node, blender::bke::pbvh::pbvh_iter_begin(), blender::bke::pbvh::pbvh_iter_next(), PBVH_Leaf, PBVH_UpdateRedraw, and blender::bke::pbvh::tree_is_empty().
Referenced by SCULPT_get_redraw_rect().
| void BKE_pbvh_sync_visibility_from_verts | ( | Object & | object | ) |
Definition at line 2530 of file pbvh.cc.
References BKE_subdiv_ccg_key_top_level(), bm, SculptSession::bm, BM_EDGES_OF_MESH, BM_elem_flag_disable, BM_elem_flag_enable, BM_elem_flag_test, BM_ELEM_HIDDEN, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_VERT, BM_VERTS_OF_MESH, blender::bke::pbvh::BMesh, BMLoop::e, e, BMLoop::f, blender::bke::Face, blender::bke::SpanAttributeWriter< T >::finish(), blender::index_mask::IndexMask::from_predicate(), SubdivCCG::grid_hidden, blender::bke::pbvh::Grids, blender::bits::BitGroupVector< InlineBufferCapacity, Allocator >::is_empty(), l, blender::index_mask::masked_fill(), blender::bke::pbvh::Mesh, blender::bke::mesh_hide_face_flush(), blender::bke::mesh_hide_vert_flush(), blender::bke::object::pbvh_get(), blender::bke::MutableAttributeAccessor::remove(), blender::bke::SpanAttributeWriter< T >::span, SculptSession::subdiv_ccg, and v.
Referenced by 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::hide::invert_visibility_grids(), and blender::ed::sculpt_paint::undo::restore_list().
| void BKE_pbvh_vert_coords_apply | ( | blender::bke::pbvh::Tree & | pbvh, |
| blender::Span< blender::float3 > | vert_positions ) |
Definition at line 2398 of file pbvh.cc.
References blender::bke::pbvh::Tree::nodes_num(), blender::bke::pbvh::store_bounds_orig(), blender::bke::pbvh::Tree::tag_positions_changed(), and blender::bke::pbvh::update_bounds_mesh().
Referenced by blender::bke::build_pbvh_from_regular_mesh(), and sculpt_update_object().
| ENUM_OPERATORS | ( | PBVHTopologyUpdateMode | , |
| PBVH_Collapse | ) |