fromGraphNode method

void fromGraphNode(
  1. Object3D group
)

Implementation

void fromGraphNode(Object3D group) {
  group.updateWorldMatrix(true, true);
  group.traverse((object) {
    if (object.type == 'Mesh') {
      Mesh obj = object;
      late BufferGeometry geometry;
      bool isTemp = false;

      if (obj.geometry!.index != null) {
        isTemp = true;
        geometry = obj.geometry!.clone().toNonIndexed();
      } else {
        geometry = obj.geometry!;
      }

      BufferAttribute positionAttribute = geometry.getAttribute('position');

      for (int i = 0; i < positionAttribute.count; i += 3) {
        Vector3 v1 = Vector3().fromBufferAttribute(positionAttribute, i);
        Vector3 v2 = Vector3().fromBufferAttribute(positionAttribute, i + 1);
        Vector3 v3 = Vector3().fromBufferAttribute(positionAttribute, i + 2);

        v1.applyMatrix4(obj.matrixWorld);
        v2.applyMatrix4(obj.matrixWorld);
        v3.applyMatrix4(obj.matrixWorld);

        addTriangle(Triangle(v1, v2, v3));
      }

      if (isTemp) {
        geometry.dispose();
      }
    }
  });

  build();
}