33inline namespace crease_cc {
47 for (
const int i :
verts.index_range()) {
48 translations[i] = location - positions_eval[
verts[i]];
56 for (
const int i : positions.index_range()) {
57 translations[i] = location - positions[i];
66 translations[i] += offset * factors[i];
123 const float strength,
160 const float strength,
194 const bool invert_strength,
210 if (brush_alpha > 0.0f) {
211 crease_correction /= brush_alpha * brush_alpha;
215 const float strength = std::abs(cache.
bstrength) * crease_correction *
216 (invert_strength ? -1.0f : 1.0f);
219 switch (pbvh.
type()) {
221 const Mesh &mesh = *
static_cast<Mesh *
>(
object.data);
244 SubdivCCG &subdiv_ccg = *
object.sculpt->subdiv_ccg;
float BKE_brush_alpha_get(const Scene *scene, const Brush *brush)
const Brush * BKE_paint_brush_for_read(const Paint *paint)
const blender::Set< BMVert *, 0 > & BKE_pbvh_bmesh_node_unique_verts(blender::bke::pbvh::BMeshNode *node)
@ PAINT_FALLOFF_SHAPE_TUBE
Object is a sort of wrapper for general info.
constexpr IndexRange index_range() const
void tag_positions_changed(const IndexMask &node_mask)
Span< NodeT > nodes() const
void foreach_index(Fn &&fn) const
const Depsgraph * depsgraph
pbvh::Tree * pbvh_get(Object &object)
void update_node_bounds_bmesh(BMeshNode &node)
void update_node_bounds_mesh(Span< float3 > positions, MeshNode &node)
Span< float3 > vert_normals_eval(const Depsgraph &depsgraph, const Object &object_orig)
void update_node_bounds_grids(int grid_area, Span< float3 > positions, GridsNode &node)
void flush_bounds_to_parents(Tree &pbvh)
static void calc_grids(const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Brush &brush, const float3 &offset, const float strength, bke::pbvh::GridsNode &node, LocalData &tls)
static void calc_faces(const Depsgraph &depsgraph, const Sculpt &sd, const Brush &brush, const float3 &offset, const float strength, const MeshAttributeData &attribute_data, const Span< float3 > vert_normals, const bke::pbvh::MeshNode &node, Object &object, LocalData &tls, const PositionDeformData &position_data)
static void calc_bmesh(const Depsgraph &depsgraph, const Sculpt &sd, Object &object, const Brush &brush, const float3 &offset, const float strength, bke::pbvh::BMeshNode &node, LocalData &tls)
static BLI_NOINLINE void translations_from_position(const Span< float3 > positions_eval, const Span< int > verts, const float3 &location, const MutableSpan< float3 > translations)
static void do_crease_or_blob_brush(const Depsgraph &depsgraph, const Scene &scene, const Sculpt &sd, const bool invert_strength, Object &object, const IndexMask &node_mask)
static BLI_NOINLINE void add_offset_to_translations(const MutableSpan< float3 > translations, const Span< float > factors, const float3 &offset)
void do_blob_brush(const Depsgraph &depsgraph, const Scene &scene, const Sculpt &sd, Object &object, const IndexMask &node_mask)
MutableSpan< float3 > gather_grids_positions(const SubdivCCG &subdiv_ccg, const Span< int > grids, Vector< float3 > &positions)
void gather_bmesh_positions(const Set< BMVert *, 0 > &verts, MutableSpan< float3 > positions)
void calc_factors_common_grids(const Depsgraph &depsgraph, const Brush &brush, const Object &object, Span< float3 > positions, const bke::pbvh::GridsNode &node, Vector< float > &r_factors, Vector< float > &r_distances)
void calc_factors_common_mesh_indexed(const Depsgraph &depsgraph, const Brush &brush, const Object &object, const MeshAttributeData &attribute_data, Span< float3 > vert_positions, Span< float3 > vert_normals, const bke::pbvh::MeshNode &node, Vector< float > &r_factors, Vector< float > &r_distances)
void scale_translations(MutableSpan< float3 > translations, Span< float > factors)
void clip_and_lock_translations(const Sculpt &sd, const SculptSession &ss, Span< float3 > positions, Span< int > verts, MutableSpan< float3 > translations)
void project_translations(MutableSpan< float3 > translations, const float3 &plane)
void apply_translations(Span< float3 > translations, Span< int > verts, MutableSpan< float3 > positions)
void do_crease_brush(const Depsgraph &depsgraph, const Scene &scene, const Sculpt &sd, Object &object, const IndexMask &node_mask)
void calc_factors_common_bmesh(const Depsgraph &depsgraph, const Brush &brush, const Object &object, Span< float3 > positions, bke::pbvh::BMeshNode &node, Vector< float > &r_factors, Vector< float > &r_distances)
float crease_pinch_factor
blender::ed::sculpt_paint::StrokeCache * cache
blender::Array< blender::float3 > positions
Vector< float > distances
Vector< float3 > translations
Vector< float3 > positions
float3 sculpt_normal_symm
Vector< float > distances
Vector< float3 > translations
Vector< float3 > positions