25class RandomNumberGenerator;
80 float approximate_density,
103 const float2 &sample_pos_re,
104 float sample_radius_re,
106 bool front_face_only,
115 const int3 &corner_tri,
120 const int3 &corner_tri,
121 const Span<T> corner_attribute)
124 corner_attribute[corner_tri[0]],
125 corner_attribute[corner_tri[1]],
126 corner_attribute[corner_tri[2]]);
131 const int3 &corner_tri,
135 corner_attribute[corner_tri[0]],
136 corner_attribute[corner_tri[1]],
137 corner_attribute[corner_tri[2]]);
178 std::optional<bke::MeshFieldContext> source_context_;
179 std::unique_ptr<fn::FieldEvaluator> source_evaluator_;
BaryWeightFromPositionFn(GeometrySet geometry)
void call(const IndexMask &mask, mf::Params params, mf::Context context) const
void call(const IndexMask &mask, mf::Params params, mf::Context context) const
BaryWeightSampleFn(GeometrySet geometry, fn::GField src_field)
CornerBaryWeightFromPositionFn(GeometrySet geometry)
void call(const IndexMask &mask, mf::Params params, mf::Context context) const
T mix3(const float3 &weights, const T &v0, const T &v1, const T &v2)
int sample_surface_points_spherical(RandomNumberGenerator &rng, const Mesh &mesh, Span< int > tris_to_sample, const float3 &sample_pos, float sample_radius, float approximate_density, Vector< float3 > &r_bary_coords, Vector< int > &r_tri_indices, Vector< float3 > &r_positions)
void sample_corner_normals(Span< int3 > corner_tris, Span< int > tri_indices, Span< float3 > bary_coords, Span< float3 > src, const IndexMask &mask, MutableSpan< float3 > dst)
void sample_point_attribute(Span< int > corner_verts, Span< int3 > corner_tris, Span< int > tri_indices, Span< float3 > bary_coords, const GVArray &src, const IndexMask &mask, GMutableSpan dst)
float3 compute_bary_coord_in_triangle(Span< float3 > vert_positions, Span< int > corner_verts, const int3 &corner_tri, const float3 &position)
void sample_corner_attribute(Span< int3 > corner_tris, Span< int > tri_indices, Span< float3 > bary_coords, const GVArray &src, const IndexMask &mask, GMutableSpan dst)
int sample_surface_points_projected(RandomNumberGenerator &rng, const Mesh &mesh, BVHTreeFromMesh &mesh_bvhtree, const float2 &sample_pos_re, float sample_radius_re, FunctionRef< void(const float2 &pos_re, float3 &r_start, float3 &r_end)> region_position_to_ray, bool front_face_only, int tries_num, int max_points, Vector< float3 > &r_bary_coords, Vector< int > &r_tri_indices, Vector< float3 > &r_positions)
void sample_face_attribute(Span< int > corner_tri_faces, Span< int > tri_indices, const GVArray &src, const IndexMask &mask, GMutableSpan dst)
T sample_corner_attribute_with_bary_coords(const float3 &bary_weights, const int3 &corner_tri, const Span< T > corner_attribute)
void sample_point_normals(Span< int > corner_verts, Span< int3 > corner_tris, Span< int > tri_indices, Span< float3 > bary_coords, Span< float3 > src, IndexMask mask, MutableSpan< float3 > dst)