|
Blender V4.3
|
#include "sculpt_boundary.hh"#include "BLI_array_utils.hh"#include "BLI_enumerable_thread_specific.hh"#include "BLI_math_rotation_legacy.hh"#include "BLI_math_vector.hh"#include "BLI_task.h"#include "DNA_brush_types.h"#include "DNA_mesh_types.h"#include "DNA_object_types.h"#include "BKE_brush.hh"#include "BKE_ccg.hh"#include "BKE_colortools.hh"#include "BKE_paint.hh"#include "BKE_pbvh_api.hh"#include "brushes/types.hh"#include "mesh_brush_common.hh"#include "paint_intern.hh"#include "sculpt_automask.hh"#include "sculpt_cloth.hh"#include "sculpt_flood_fill.hh"#include "sculpt_intern.hh"#include "GPU_immediate.hh"#include "GPU_state.hh"#include <cstdlib>Go to the source code of this file.
Classes | |
| struct | blender::ed::sculpt_paint::boundary::LocalDataMesh |
| struct | blender::ed::sculpt_paint::boundary::LocalDataGrids |
| struct | blender::ed::sculpt_paint::boundary::LocalDataBMesh |
Namespaces | |
| namespace | blender |
| namespace | blender::ed |
| namespace | blender::ed::sculpt_paint |
| namespace | blender::ed::sculpt_paint::boundary |
Functions | |
| static bool | blender::ed::sculpt_paint::boundary::check_counts (const int neighbor_count, const int boundary_vertex_count) |
| static bool | blender::ed::sculpt_paint::boundary::is_vert_in_editable_boundary_mesh (const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_vert, const Span< bool > hide_poly, const BitSpan boundary, const int initial_vert) |
| static bool | blender::ed::sculpt_paint::boundary::is_vert_in_editable_boundary_grids (const OffsetIndices< int > faces, const Span< int > corner_verts, const SubdivCCG &subdiv_ccg, const BitSpan boundary, const SubdivCCGCoord initial_vert) |
| static bool | blender::ed::sculpt_paint::boundary::is_vert_in_editable_boundary_bmesh (BMVert &initial_vert) |
Nearest Boundary Vert | |
| static std::optional< int > | blender::ed::sculpt_paint::boundary::get_closest_boundary_vert_mesh (Object &object, const GroupedSpan< int > vert_to_face, const Span< float3 > vert_positions, const Span< bool > hide_vert, const Span< bool > hide_poly, const BitSpan boundary, const int initial_vert, const float radius) |
| static std::optional< SubdivCCGCoord > | blender::ed::sculpt_paint::boundary::get_closest_boundary_vert_grids (Object &object, const OffsetIndices< int > faces, const Span< int > corner_verts, const SubdivCCG &subdiv_ccg, const BitSpan boundary, const SubdivCCGCoord initial_vert, const float radius) |
| static std::optional< BMVert * > | blender::ed::sculpt_paint::boundary::get_closest_boundary_vert_bmesh (Object &object, BMesh *bm, BMVert &initial_vert, const float radius) |
Specialized Initialization | |
Methods for initializing specialized data inside SculptBoundary | |
| static void | blender::ed::sculpt_paint::boundary::bend_data_init_mesh (const Span< float3 > vert_positions, const Span< float3 > vert_normals, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::bend_data_init_grids (const SubdivCCG &subdiv_ccg, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::bend_data_init_bmesh (BMesh *bm, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::slide_data_init_mesh (const Span< float3 > vert_positions, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::slide_data_init_grids (const SubdivCCG &subdiv_ccg, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::slide_data_init_bmesh (BMesh *bm, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::populate_twist_data (const Span< float3 > positions, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::twist_data_init_mesh (const Span< float3 > vert_positions, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::twist_data_init_grids (const SubdivCCG &subdiv_ccg, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::twist_data_init_bmesh (BMesh *bm, SculptBoundary &boundary) |
Common helpers | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::filter_uninitialized_verts (const Span< int > propagation_steps, const MutableSpan< float > factors) |
Bend Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_bend_position (const Span< float3 > positions, const Span< float3 > pivot_positions, const Span< float3 > pivot_axes, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_bend_mesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_pivot_positions, const Span< float3 > vert_pivot_axes, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_bend_grids (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_pivot_positions, const Span< float3 > vert_pivot_axes, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_bend_bmesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_pivot_positions, const Span< float3 > vert_pivot_axes, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_bend_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Slide Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_slide_position (const Span< float3 > positions, const Span< float3 > directions, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_slide_mesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_slide_directions, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_slide_grids (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_slide_directions, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_slide_bmesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const Span< float3 > vert_slide_directions, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_slide_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Inflate Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_inflate_position (const Span< float3 > positions, const Span< float3 > normals, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_inflate_mesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_inflate_grids (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_inflate_bmesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_inflate_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Grab Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_grab_position (const Span< float3 > positions, const float3 grab_delta, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_grab_mesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 grab_delta_symmetry, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_grab_grids (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 grab_delta_symmetry, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_grab_bmesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 grab_delta_symmetry, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_grab_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Twist Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_twist_position (const Span< float3 > positions, const float3 pivot_point, const float3 pivot_axis, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_twist_mesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 twist_pivot_position, const float3 twist_axis, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_twist_grids (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const float3 twist_pivot_position, const float3 twist_axis, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_twist_bmesh (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const float3 twist_pivot_position, const float3 twist_axis, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_twist_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Smooth Deformation | |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_smooth_position (const Span< float3 > positions, const Span< float3 > average_position, const Span< float > factors, const MutableSpan< float3 > new_positions) |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_average_position (const Span< float3 > vert_positions, const Span< int > vert_propagation_steps, const Span< Vector< int > > neighbors, const Span< int > propagation_steps, const MutableSpan< float > factors, const MutableSpan< float3 > average_positions) |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_average_position (const SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< Vector< SubdivCCGCoord > > neighbors, const Span< int > propagation_steps, const MutableSpan< float > factors, const MutableSpan< float3 > average_positions) |
| static BLI_NOINLINE void | blender::ed::sculpt_paint::boundary::calc_average_position (const Span< int > vert_propagation_steps, const Span< Vector< BMVert * > > neighbors, const Span< int > propagation_steps, const MutableSpan< float > factors, const MutableSpan< float3 > average_positions) |
| static void | blender::ed::sculpt_paint::boundary::calc_smooth_mesh (const Sculpt &sd, Object &object, const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_poly, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::MeshNode &node, LocalDataMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target, const PositionDeformData &position_data) |
| static void | blender::ed::sculpt_paint::boundary::calc_smooth_grids (const Sculpt &sd, Object &object, SubdivCCG &subdiv_ccg, const Span< int > vert_propagation_steps, const Span< float > vert_factors, const bke::pbvh::GridsNode &node, LocalDataGrids &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::calc_smooth_bmesh (const Sculpt &sd, Object &object, const Span< int > vert_propagation_steps, const Span< float > vert_factors, bke::pbvh::BMeshNode &node, LocalDataBMesh &tls, const float3 symmetry_pivot, const float strength, const eBrushDeformTarget deform_target) |
| static void | blender::ed::sculpt_paint::boundary::do_smooth_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask, const SculptBoundary &boundary, const float strength, const eBrushDeformTarget deform_target) |
Brush Initialization | |
| static float | blender::ed::sculpt_paint::boundary::displacement_from_grab_delta_get (const SculptSession &ss, const SculptBoundary &boundary) |
| static std::pair< float, float > | blender::ed::sculpt_paint::boundary::calc_boundary_falloff (const SculptBoundary &boundary, const Brush &brush, const float radius, const int index) |
| static void | blender::ed::sculpt_paint::boundary::init_falloff_mesh (const Span< float > mask, const Brush &brush, const float radius, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::init_falloff_grids (const SubdivCCG &subdiv_ccg, const Brush &brush, const float radius, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::init_falloff_bmesh (BMesh *bm, const Brush &brush, const float radius, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::init_boundary_mesh (const Depsgraph &depsgraph, Object &object, const Brush &brush, const ePaintSymmetryFlags symm_area) |
| static void | blender::ed::sculpt_paint::boundary::init_boundary_grids (Object &object, const Brush &brush, const ePaintSymmetryFlags symm_area) |
| static void | blender::ed::sculpt_paint::boundary::init_boundary_bmesh (Object &object, const Brush &brush, const ePaintSymmetryFlags symm_area) |
| static float | blender::ed::sculpt_paint::boundary::get_mesh_strength (const SculptSession &ss, const Brush &brush) |
| void | blender::ed::sculpt_paint::boundary::do_boundary_brush (const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const IndexMask &node_mask) |
Public API | |
| std::unique_ptr< SculptBoundary > | blender::ed::sculpt_paint::boundary::data_init (const Depsgraph &depsgraph, Object &object, const Brush *brush, const int initial_vert, const float radius) |
| std::unique_ptr< SculptBoundary > | blender::ed::sculpt_paint::boundary::data_init_mesh (const Depsgraph &depsgraph, Object &object, const Brush *brush, const int initial_vert, const float radius) |
| std::unique_ptr< SculptBoundary > | blender::ed::sculpt_paint::boundary::data_init_grids (Object &object, const Brush *brush, const SubdivCCGCoord initial_vert, const float radius) |
| std::unique_ptr< SculptBoundary > | blender::ed::sculpt_paint::boundary::data_init_bmesh (Object &object, const Brush *brush, BMVert *initial_vert, const float radius) |
Boundary Drawing | |
Helper methods to draw boundary information. | |
| std::unique_ptr< SculptBoundaryPreview > | blender::ed::sculpt_paint::boundary::preview_data_init (const Depsgraph &depsgraph, Object &object, const Brush *brush, const float radius) |
| void | blender::ed::sculpt_paint::boundary::edges_preview_draw (const uint gpuattr, SculptSession &ss, const float outline_col[3], const float outline_alpha) |
| void | blender::ed::sculpt_paint::boundary::pivot_line_preview_draw (const uint gpuattr, SculptSession &ss) |
Edit Data Calculation | |
| #define | BOUNDARY_VERTEX_NONE -1 |
| #define | BOUNDARY_STEPS_NONE -1 |
| static void | blender::ed::sculpt_paint::boundary::edit_data_init_mesh (OffsetIndices< int > faces, Span< int > corner_verts, GroupedSpan< int > vert_to_face, Span< float3 > vert_positions, Span< bool > hide_vert, Span< bool > hide_poly, const int initial_vert_i, const float radius, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::edit_data_init_grids (const SubdivCCG &subdiv_ccg, const int initial_vert_i, const float radius, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::edit_data_init_bmesh (BMesh *bm, const int initial_vert_i, const float radius, SculptBoundary &boundary) |
Boundary Index Calculation | |
| constexpr int | blender::ed::sculpt_paint::boundary::BOUNDARY_INDICES_BLOCK_SIZE = 300 |
| static void | blender::ed::sculpt_paint::boundary::add_index (SculptBoundary &boundary, const int new_index, const float distance, Set< int, BOUNDARY_INDICES_BLOCK_SIZE > &included_verts) |
| static void | blender::ed::sculpt_paint::boundary::indices_init_mesh (Object &object, const OffsetIndices< int > faces, const Span< int > corner_verts, const GroupedSpan< int > vert_to_face, const Span< bool > hide_vert, const Span< bool > hide_poly, const BitSpan boundary_verts, const Span< float3 > vert_positions, const int initial_boundary_vert, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::indices_init_grids (Object &object, const OffsetIndices< int > faces, const Span< int > corner_verts, const SubdivCCG &subdiv_ccg, const BitSpan boundary_verts, const SubdivCCGCoord initial_vert, SculptBoundary &boundary) |
| static void | blender::ed::sculpt_paint::boundary::indices_init_bmesh (Object &object, BMesh *bm, BMVert &initial_boundary_vert, SculptBoundary &boundary) |
| #define BOUNDARY_STEPS_NONE -1 |
Definition at line 436 of file sculpt_boundary.cc.
Referenced by blender::ed::sculpt_paint::boundary::bend_data_init_bmesh(), blender::ed::sculpt_paint::boundary::bend_data_init_grids(), blender::ed::sculpt_paint::boundary::bend_data_init_mesh(), blender::ed::sculpt_paint::boundary::edit_data_init_bmesh(), blender::ed::sculpt_paint::boundary::edit_data_init_grids(), blender::ed::sculpt_paint::boundary::edit_data_init_mesh(), blender::ed::sculpt_paint::boundary::filter_uninitialized_verts(), blender::ed::sculpt_paint::boundary::init_falloff_bmesh(), blender::ed::sculpt_paint::boundary::init_falloff_grids(), blender::ed::sculpt_paint::boundary::init_falloff_mesh(), blender::ed::sculpt_paint::boundary::slide_data_init_bmesh(), blender::ed::sculpt_paint::boundary::slide_data_init_grids(), and blender::ed::sculpt_paint::boundary::slide_data_init_mesh().
| #define BOUNDARY_VERTEX_NONE -1 |
Definition at line 435 of file sculpt_boundary.cc.
Referenced by blender::ed::sculpt_paint::boundary::edit_data_init_bmesh(), blender::ed::sculpt_paint::boundary::edit_data_init_grids(), and blender::ed::sculpt_paint::boundary::edit_data_init_mesh().