get_skinned_vertex_positions now returns skin transform array.

This commit is contained in:
2026-08-23 23:26:33 -04:00
parent 3119b17bd6
commit 431b7c2f8a
2 changed files with 4 additions and 4 deletions
+3 -3
View File
@@ -33,7 +33,8 @@ PackedVector3Array MeshEditingLibrary::slice_mesh(const MeshInstance3D *original
const Mesh *original_mesh = original_mesh_instance->get_mesh().ptr(); const Mesh *original_mesh = original_mesh_instance->get_mesh().ptr();
const uint8_t num_surfaces = original_mesh->get_surface_count(); const uint8_t num_surfaces = original_mesh->get_surface_count();
const SkinnedSurfaces &skinned_vertex_positions = MeshEditingLibrary::get_skinned_vertex_positions(original_mesh, original_skeleton); TypedArray<Transform3D> bone_transforms;
const SkinnedSurfaces &skinned_vertex_positions = MeshEditingLibrary::get_skinned_vertex_positions(original_mesh, original_skeleton, bone_transforms);
UtilityFunctions::print("Got skinned vertices at ", time->get_ticks_msec(), "ms"); UtilityFunctions::print("Got skinned vertices at ", time->get_ticks_msec(), "ms");
@@ -594,7 +595,7 @@ PackedVector3Array MeshEditingLibrary::slice_mesh(const MeshInstance3D *original
return impact_points; return impact_points;
} }
SkinnedSurfaces MeshEditingLibrary::get_skinned_vertex_positions(const Mesh *mesh, const Skeleton3D *skeleton) SkinnedSurfaces MeshEditingLibrary::get_skinned_vertex_positions(const Mesh *mesh, const Skeleton3D *skeleton, TypedArray<Transform3D> &bone_transforms)
{ {
const uint8_t num_surfaces = mesh->get_surface_count(); const uint8_t num_surfaces = mesh->get_surface_count();
SkinnedSurfaces skinned_vertex_surfaces; SkinnedSurfaces skinned_vertex_surfaces;
@@ -603,7 +604,6 @@ SkinnedSurfaces MeshEditingLibrary::get_skinned_vertex_positions(const Mesh *mes
if (skeleton) if (skeleton)
{ {
const uint16_t bone_count = skeleton->get_bone_count(); const uint16_t bone_count = skeleton->get_bone_count();
TypedArray<Transform3D> bone_transforms;
bone_transforms.resize(bone_count); bone_transforms.resize(bone_count);
for (uint8_t bone_index = 0; bone_index < bone_count; bone_index++) for (uint8_t bone_index = 0; bone_index < bone_count; bone_index++)
{ {
+1 -1
View File
@@ -79,7 +79,7 @@ protected:
private: private:
static const Vector2 calculate_planar_uv(const Vector3 &vertex, const Vector3 &mesh_bounds, const MeshSlicePlaneOrientation &axis); static const Vector2 calculate_planar_uv(const Vector3 &vertex, const Vector3 &mesh_bounds, const MeshSlicePlaneOrientation &axis);
static SkinnedSurfaces get_skinned_vertex_positions(const Mesh *mesh, const Skeleton3D *skeleton = nullptr); static SkinnedSurfaces get_skinned_vertex_positions(const Mesh *mesh, const Skeleton3D *skeleton = nullptr, TypedArray<Transform3D> &bone_transforms = TypedArray<Transform3D>());
static void project_edges(std::vector<MeshEditEdge2D> &out_2d_edges, const Transform3D &to_node_space, const std::vector<MeshEditEdge3D> &in_3d_edges, const Plane &plane); static void project_edges(std::vector<MeshEditEdge2D> &out_2d_edges, const Transform3D &to_node_space, const std::vector<MeshEditEdge3D> &in_3d_edges, const Plane &plane);
static void build_2d_polygons_from_edges(std::vector<MeshEditPolygon2D> &out_polygons, const std::vector<MeshEditEdge2D> &in_edges, std::vector<MeshEditPolygon2D> &error_polygons); static void build_2d_polygons_from_edges(std::vector<MeshEditPolygon2D> &out_polygons, const std::vector<MeshEditEdge2D> &in_edges, std::vector<MeshEditPolygon2D> &error_polygons);