toFlameVertices method
Implementation
(List<flame_3d.Vertex>, List<int>) toFlameVertices(
JointData jointData,
Matrix4 transform,
) {
assert(mode == PrimitiveMode.triangles);
final positions = this.positions!.get().typedData();
final indices = this.indices?.get().typedData() ??
// for non-indexed geometries
List.generate(positions.length, (i) => i);
final texCoords = this.texCoords?.get().typedData();
final normals = this.normals?.get().typedData() ??
flame_3d.Vertex.calculateVertexNormals(positions, indices);
Vector3? process(Vector3? v) {
if (v == null) {
return null;
}
return transform.transform3(v.clone());
}
final maxIndex = indices.reduce(max);
final vertices = <flame_3d.Vertex>[];
for (var i = 0; i <= maxIndex; i++) {
vertices.add(
flame_3d.Vertex(
position: process(positions[i])!,
texCoord: texCoords?.elementAtOrNull(i) ?? Vector2.zero(),
normal: process(normals.elementAtOrNull(i)),
joints: jointData.localizedJoint(i),
weights: jointData.weight(i),
),
);
}
return (vertices, indices);
}