|
Blender V5.0
|
#include <BKE_subdiv_ccg.hh>
Inherits blender::NonCopyable.
Public Member Functions | |
Creation / evaluation | |
| ~SubdivCCG () | |
| Public Member Functions inherited from blender::NonCopyable | |
| NonCopyable (const NonCopyable &other)=delete | |
| NonCopyable & | operator= (const NonCopyable &other)=delete |
| NonCopyable ()=default | |
| NonCopyable (NonCopyable &&other)=default | |
| NonCopyable & | operator= (NonCopyable &&other)=default |
Public Attributes | |
| blender::bke::subdiv::Subdiv * | subdiv = nullptr |
| int | level = -1 |
| int | grid_size = -1 |
| int | grid_area = -1 |
| int | grids_num = -1 |
| blender::Array< blender::float3 > | positions |
| blender::Array< blender::float3 > | normals |
| blender::Array< float > | masks |
| blender::OffsetIndices< int > | faces |
| blender::Span< int > | grid_to_face_map |
| blender::Array< SubdivCCGAdjacentEdge > | adjacent_edges |
| blender::Array< SubdivCCGAdjacentVertex > | adjacent_verts |
| blender::BitGroupVector | grid_hidden |
| struct { | |
| bool coords = false | |
| bool hidden = false | |
| } | dirty |
Representation of subdivision surface which uses CCG grids.
Definition at line 120 of file BKE_subdiv_ccg.hh.
| SubdivCCG::~SubdivCCG | ( | ) |
Definition at line 444 of file subdiv_ccg.cc.
References blender::bke::subdiv::free().
| blender::Array<SubdivCCGAdjacentEdge> SubdivCCG::adjacent_edges |
Edges which are adjacent to faces.
Maps from coarse edge to a directional grid_size * 2 map of indices to SubdivCCGCoord, indexed by OpenSubdiv base mesh edge.
Used for faster grid stitching, at the cost of extra memory.
Definition at line 166 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_average_grids(), and BKE_subdiv_ccg_average_stitch_faces().
| blender::Array<SubdivCCGAdjacentVertex> SubdivCCG::adjacent_verts |
Vertices which are adjacent to faces.
Maps from coarse vertex to SubdivCCGCoord, indexed by OpenSubdiv base mesh vertex.
Used for faster grid stitching, at the cost of extra memory.
Definition at line 176 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_average_grids(), and BKE_subdiv_ccg_average_stitch_faces().
| bool SubdivCCG::coords = false |
Corresponds to MULTIRES_COORDS_MODIFIED.
Definition at line 194 of file BKE_subdiv_ccg.hh.
Referenced by multires_ccg_mark_as_modified(), multires_flush_sculpt_updates(), and object_update_from_subsurf_ccg().
| struct { ... } SubdivCCG::dirty |
| blender::OffsetIndices<int> SubdivCCG::faces |
Faces from which grids are emitted. Owned by base mesh.
Definition at line 153 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_average_grids(), BKE_subdiv_ccg_average_stitch_faces(), BKE_subdiv_ccg_recalc_normals(), multires_stitch_grids(), blender::bke::pbvh::nodes_to_face_selection_grids(), and subdiv_ccg_coord_to_ptex_coord().
| int SubdivCCG::grid_area = -1 |
The number of vertices in each grid (grid_size ^2).
Definition at line 139 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_grid_hidden_ensure(), blender::ed::sculpt_paint::auto_mask::Cache::calc_cavity_factor(), blender::ed::sculpt_paint::face_set::create_op_exec(), blender::ed::sculpt_paint::boundary::do_bend_brush(), blender::ed::sculpt_paint::brushes::do_clay_brush(), blender::ed::sculpt_paint::brushes::do_clay_strips_brush(), blender::ed::sculpt_paint::brushes::do_clay_thumb_brush(), blender::ed::sculpt_paint::brushes::do_displacement_eraser_brush(), blender::ed::sculpt_paint::brushes::do_draw_vector_displacement_brush(), blender::ed::sculpt_paint::brushes::do_elastic_deform_brush(), blender::ed::sculpt_paint::brushes::do_enhance_details_brush(), blender::ed::sculpt_paint::boundary::do_grab_brush(), blender::ed::sculpt_paint::brushes::do_grab_brush(), blender::ed::sculpt_paint::boundary::do_inflate_brush(), blender::ed::sculpt_paint::brushes::do_inflate_brush(), blender::ed::sculpt_paint::brushes::do_layer_brush(), blender::ed::sculpt_paint::brushes::do_multiplane_scrape_brush(), blender::ed::sculpt_paint::brushes::do_pinch_brush(), blender::ed::sculpt_paint::brushes::do_plane_brush(), blender::ed::sculpt_paint::pose::do_pose_brush(), blender::ed::sculpt_paint::brushes::do_rotate_brush(), blender::ed::sculpt_paint::boundary::do_slide_brush(), blender::ed::sculpt_paint::boundary::do_smooth_brush(), blender::ed::sculpt_paint::brushes::do_snake_hook_brush(), blender::ed::sculpt_paint::brushes::do_thumb_brush(), blender::ed::sculpt_paint::brushes::do_topology_slide_brush(), blender::ed::sculpt_paint::boundary::do_twist_brush(), blender::ed::sculpt_paint::project::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::auto_mask::init_face_sets_masking(), blender::ed::sculpt_paint::brushes::offset_positions(), blender::ed::sculpt_paint::sculpt_transform_all_vertices(), blender::ed::sculpt_paint::transform_radius_elastic(), and blender::bke::pbvh::Tree::update_bounds().
| blender::BitGroupVector SubdivCCG::grid_hidden |
Store the visibility of the items in each grid. If empty, everything is visible.
Definition at line 179 of file BKE_subdiv_ccg.hh.
Referenced by BKE_pbvh_sync_visibility_from_verts(), BKE_subdiv_ccg_grid_hidden_ensure(), BKE_subdiv_ccg_grid_hidden_free(), blender::ed::sculpt_paint::calc_area_normal_and_center_node_grids(), blender::ed::sculpt_paint::mask::copy_old_hidden_mask_grids(), blender::ed::sculpt_paint::boundary::edit_data_init_grids(), blender::ed::sculpt_paint::flood_fill::FillDataGrids::execute(), blender::ed::sculpt_paint::fake_neighbor_search(), blender::ed::sculpt_paint::fill_factor_from_hide(), blender::ed::sculpt_paint::fill_factor_from_hide_and_mask(), blender::ed::sculpt_paint::boundary::get_closest_boundary_vert_grids(), blender::ed::sculpt_paint::pose::grow_factors_grids(), blender::ed::sculpt_paint::boundary::is_vert_in_editable_boundary_grids(), blender::ed::sculpt_paint::nearest_vert_calc_grids(), blender::bke::pbvh::node_raycast_grids(), blender::bke::pbvh::pbvh_grids_node_nearest_to_ray(), blender::ed::sculpt_paint::undo::store_vert_visibility_grids(), and blender::bke::pbvh::update_visibility_grids().
| int SubdivCCG::grid_size = -1 |
Resolution of grid. All grids have matching resolution, and resolution is same as ptex created for non-quad faces.
Definition at line 137 of file BKE_subdiv_ccg.hh.
Referenced by adjacent_vertices_index_from_adjacent_edge(), BKE_subdiv_ccg_check_coord_valid(), BKE_subdiv_ccg_coarse_mesh_adjacency_info_get(), BKE_subdiv_ccg_neighbor_coords_get(), BKE_subdiv_ccg_topology_counters(), coord_at_next_col(), coord_at_next_row(), blender::ed::sculpt_paint::undo::fill_node_data_grids(), is_boundary_grid_coord(), is_corner_grid_coord(), is_inner_edge_grid_coordinate(), blender::ed::sculpt_paint::undo::push_begin_ex(), blender::ed::sculpt_paint::set_persistent_base_exec(), subdiv_ccg_coord_to_ptex_coord(), and blender::ed::sculpt_paint::undo::topology_matches().
| blender::Span<int> SubdivCCG::grid_to_face_map |
The face in faces for each grid. Owned by base mesh (See #Mesh::corner_to_face_map()).
Definition at line 155 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_grid_to_face_index(), blender::draw::pbvh::calc_material_indices(), blender::draw::pbvh::calc_use_flat_layout(), blender::bke::pbvh::node_face_indices_calc_grids(), blender::bke::pbvh::nodes_to_face_selection_grids(), and blender::ed::sculpt_paint::mask::sculpt_mask_init_exec().
| int SubdivCCG::grids_num = -1 |
The number of grids (face corners) in the geometry (#faces.total_size()).
Definition at line 141 of file BKE_subdiv_ccg.hh.
Referenced by BKE_pbvh_get_grid_num_faces(), BKE_pbvh_get_grid_num_verts(), BKE_subdiv_ccg_check_coord_valid(), BKE_subdiv_ccg_grid_hidden_ensure(), BKE_subdiv_ccg_neighbor_coords_get(), BKE_subdiv_ccg_topology_counters(), blender::ed::sculpt_paint::pose::calc_average_face_set_center(), blender::ed::sculpt_paint::filter::calc_limit_surface_positions(), blender::ed::sculpt_paint::islands::calc_topology_islands_grids(), blender::ed::sculpt_paint::pose::ik_chain_init_face_sets_fk_grids(), blender::ed::sculpt_paint::pose::ik_chain_init_face_sets_grids(), blender::ed::sculpt_paint::boundary::init_falloff_grids(), multires_reshape_assign_final_coords_from_ccg(), blender::ed::sculpt_paint::undo::push_begin_ex(), blender::ed::sculpt_paint::undo::restore_list(), blender::ed::sculpt_paint::set_persistent_base_exec(), and blender::ed::sculpt_paint::undo::topology_matches().
| bool SubdivCCG::hidden = false |
Corresponds to MULTIRES_HIDDEN_MODIFIED.
Definition at line 196 of file BKE_subdiv_ccg.hh.
Referenced by multires_ccg_mark_as_modified(), multires_flush_sculpt_updates(), and object_update_from_subsurf_ccg().
| int SubdivCCG::level = -1 |
A level at which geometry was subdivided. This is what defines grid resolution. It is NOT the topology refinement level.
Definition at line 132 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_key_top_level(), and multires_reshape_context_create_from_ccg().
| blender::Array<float> SubdivCCG::masks |
Optional mask values with the same indexing as positions.
Definition at line 150 of file BKE_subdiv_ccg.hh.
Referenced by blender::ed::sculpt_paint::expand::any_nonzero_mask(), blender::ed::sculpt_paint::mask::apply_mask_from_settings(), blender::ed::sculpt_paint::mask::copy_old_hidden_mask_grids(), blender::ed::sculpt_paint::face_set::create_op_exec(), blender::ed::sculpt_paint::mask::decrease_contrast_mask_grids(), blender::ed::sculpt_paint::brushes::do_mask_brush(), blender::ed::sculpt_paint::mask::duplicate_mask(), blender::ed::sculpt_paint::fill_factor_from_hide_and_mask(), blender::ed::sculpt_paint::mask::fill_mask_grids(), blender::ed::sculpt_paint::mask::gather_mask_grids(), blender::ed::sculpt_paint::mask::grow_mask_grids(), blender::ed::sculpt_paint::mask::increase_contrast_mask_grids(), blender::ed::sculpt_paint::boundary::init_falloff_grids(), blender::draw::overlay::Sculpts::mesh_sync(), multires_reshape_assign_final_coords_from_ccg(), blender::ed::sculpt_paint::hide::partialvis_masked_update_grids(), blender::ed::sculpt_paint::undo::restore_mask_grids(), blender::ed::sculpt_paint::mask::scatter_mask_grids(), blender::ed::sculpt_paint::mask::sharpen_mask_grids(), blender::ed::sculpt_paint::mask::shrink_mask_grids(), blender::ed::sculpt_paint::mask::smooth_mask_grids(), blender::ed::sculpt_paint::undo::store_mask_grids(), blender::bke::pbvh::update_mask_grids(), blender::ed::sculpt_paint::expand::update_mask_grids(), and blender::ed::sculpt_paint::expand::write_mask_data().
| blender::Array<blender::float3> SubdivCCG::normals |
Vertex normals with the same indexing as positions.
Definition at line 148 of file BKE_subdiv_ccg.hh.
Referenced by blender::ed::sculpt_paint::boundary::bend_data_init_grids(), BKE_subdiv_ccg_recalc_normals(), BKE_subdiv_ccg_update_normals(), blender::ed::sculpt_paint::calc_area_normal_and_center_node_grids(), blender::ed::sculpt_paint::auto_mask::calc_blurred_cavity_grids(), blender::ed::sculpt_paint::calc_front_face(), blender::ed::sculpt_paint::smooth::calc_relaxed_translations_grids(), blender::ed::sculpt_paint::cloth::copy_normals_to_array(), blender::ed::sculpt_paint::gather_grids_normals(), blender::ed::sculpt_paint::auto_mask::normal_occlusion_automasking_fill(), blender::ed::sculpt_paint::expand::normals_falloff_create(), blender::ed::sculpt_paint::hide::partialvis_gesture_update_grids(), blender::ed::sculpt_paint::set_persistent_base_exec(), and blender::ed::sculpt_paint::undo::store_positions_grids().
| blender::Array<blender::float3> SubdivCCG::positions |
Positions represent limit surface, with displacement applied. The vertices in each grid are stored in contiguous chunks of size grid_area in the same order.
Definition at line 146 of file BKE_subdiv_ccg.hh.
Referenced by blender::ed::sculpt_paint::apply_translations(), blender::ed::sculpt_paint::boundary::bend_data_init_grids(), blender::ed::sculpt_paint::pose::calc_average_face_set_center(), blender::ed::sculpt_paint::auto_mask::calc_blurred_cavity_grids(), blender::ed::sculpt_paint::pose::calc_pose_origin_and_factor_grids(), blender::ed::sculpt_paint::smooth::calc_relaxed_translations_grids(), blender::ed::sculpt_paint::filter::calc_sharpen_filter(), blender::ed::sculpt_paint::boundary::calc_smooth_grids(), blender::ed::sculpt_paint::filter::calc_surface_smooth_filter(), blender::ed::sculpt_paint::islands::calc_topology_islands_grids(), blender::ed::sculpt_paint::cloth::copy_positions_to_array(), blender::ed::sculpt_paint::boundary::data_init_grids(), blender::ed::sculpt_paint::boundary::do_bend_brush(), blender::ed::sculpt_paint::brushes::do_clay_brush(), blender::ed::sculpt_paint::brushes::do_clay_strips_brush(), blender::ed::sculpt_paint::brushes::do_clay_thumb_brush(), blender::ed::sculpt_paint::brushes::do_displacement_eraser_brush(), blender::ed::sculpt_paint::brushes::do_draw_vector_displacement_brush(), blender::ed::sculpt_paint::brushes::do_elastic_deform_brush(), blender::ed::sculpt_paint::brushes::do_enhance_details_brush(), blender::ed::sculpt_paint::boundary::do_grab_brush(), blender::ed::sculpt_paint::brushes::do_grab_brush(), blender::ed::sculpt_paint::boundary::do_inflate_brush(), blender::ed::sculpt_paint::brushes::do_inflate_brush(), blender::ed::sculpt_paint::brushes::do_layer_brush(), blender::ed::sculpt_paint::brushes::do_multiplane_scrape_brush(), blender::ed::sculpt_paint::brushes::do_pinch_brush(), blender::ed::sculpt_paint::brushes::do_plane_brush(), blender::ed::sculpt_paint::pose::do_pose_brush(), blender::ed::sculpt_paint::brushes::do_rotate_brush(), blender::ed::sculpt_paint::boundary::do_slide_brush(), blender::ed::sculpt_paint::boundary::do_smooth_brush(), blender::ed::sculpt_paint::brushes::do_snake_hook_brush(), blender::ed::sculpt_paint::brushes::do_thumb_brush(), blender::ed::sculpt_paint::brushes::do_topology_slide_brush(), blender::ed::sculpt_paint::boundary::do_twist_brush(), blender::ed::sculpt_paint::mask::duplicate_mask(), blender::ed::sculpt_paint::boundary::edit_data_init_grids(), blender::ed::sculpt_paint::fake_neighbor_search(), blender::ed::sculpt_paint::auto_mask::fill_topology_automasking_factors_grids(), blender::ed::sculpt_paint::find_symm_verts_grids(), blender::bke::pbvh::Tree::from_grids(), blender::ed::sculpt_paint::gather_grids_positions(), blender::ed::sculpt_paint::project::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::boundary::get_closest_boundary_vert_grids(), blender::ed::sculpt_paint::pose::grow_factors_grids(), blender::ed::sculpt_paint::boundary::indices_init_grids(), blender::ed::sculpt_paint::boundary::init_boundary_grids(), blender::ed::sculpt_paint::auto_mask::init_boundary_masking_grids(), multires_reshape_assign_final_coords_from_ccg(), blender::ed::sculpt_paint::nearest_vert_calc_grids(), blender::ed::sculpt_paint::smooth::neighbor_position_average_interior_grids_impl(), blender::bke::pbvh::node_raycast_grids(), blender::ed::sculpt_paint::auto_mask::normal_occlusion_automasking_fill(), blender::ed::sculpt_paint::brushes::offset_positions(), blender::ed::sculpt_paint::paint_cursor_draw_3d_view_brush_cursor_inactive(), blender::ed::sculpt_paint::hide::partialvis_gesture_update_grids(), blender::bke::pbvh::pbvh_grids_node_nearest_to_ray(), blender::ed::sculpt_paint::expand::reposition_pivot(), blender::ed::sculpt_paint::sculpt_transform_all_vertices(), blender::ed::sculpt_paint::set_persistent_base_exec(), blender::ed::sculpt_paint::boundary::slide_data_init_grids(), blender::ed::sculpt_paint::expand::spherical_falloff_create(), blender::ed::sculpt_paint::undo::store_positions_grids(), blender::ed::sculpt_paint::transform_radius_elastic(), blender::ed::sculpt_paint::boundary::twist_data_init_grids(), blender::bke::pbvh::Tree::update_bounds(), and blender::ed::sculpt_paint::expand::update_mask_grids().
| blender::bke::subdiv::Subdiv* SubdivCCG::subdiv = nullptr |
This is a subdivision surface this CCG was created for.
TODO(sergey): Make sure the whole descriptor is valid, including all the displacement attached to the surface.
Definition at line 127 of file BKE_subdiv_ccg.hh.
Referenced by BKE_subdiv_ccg_eval_limit_positions(), multires_reshape_context_create_from_ccg(), and subdiv_ccg_coord_to_ptex_coord().