Blender V5.0
SubdivCCG Struct Reference

#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
NonCopyableoperator= (const NonCopyable &other)=delete
 NonCopyable ()=default
 NonCopyable (NonCopyable &&other)=default
NonCopyableoperator= (NonCopyable &&other)=default

Public Attributes

blender::bke::subdiv::Subdivsubdiv = nullptr
int level = -1
int grid_size = -1
int grid_area = -1
int grids_num = -1
blender::Array< blender::float3positions
blender::Array< blender::float3normals
blender::Array< floatmasks
blender::OffsetIndices< int > faces
blender::Span< int > grid_to_face_map
blender::Array< SubdivCCGAdjacentEdgeadjacent_edges
blender::Array< SubdivCCGAdjacentVertexadjacent_verts
blender::BitGroupVector grid_hidden
struct { 
   bool   coords = false 
   bool   hidden = false 
dirty

Detailed Description

Representation of subdivision surface which uses CCG grids.

Definition at line 120 of file BKE_subdiv_ccg.hh.

Constructor & Destructor Documentation

◆ ~SubdivCCG()

SubdivCCG::~SubdivCCG ( )

Definition at line 444 of file subdiv_ccg.cc.

References blender::bke::subdiv::free().

Member Data Documentation

◆ adjacent_edges

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().

◆ adjacent_verts

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().

◆ coords

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]

◆ faces

◆ grid_area

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().

◆ grid_hidden

◆ grid_size

◆ grid_to_face_map

◆ grids_num

◆ hidden

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().

◆ level

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().

◆ masks

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().

◆ normals

◆ positions

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().

◆ subdiv

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().


The documentation for this struct was generated from the following files: