ТРИ JS преобразования в BufferGeometry из геометрии не работает при загрузке файла PLY

Я загружаю очень сложную 3D-модель из файла PLY (более 60 МБ). В моем проекте мне нужно использовать контроль орбиты для перемещения вокруг объекта. Очевидно, что из-за большого файла в некоторых компьютерах операция мучительно медленная. Чтобы немного ускорить процесс, я пытаюсь преобразовать свою геометрию в геометрию буфера со следующими строками кода:

this.loader.load('assets/data/GuyFawkesMask.ply', function (geometry) {
      var bufferGeometry = new THREE.BufferGeometry().fromGeometry( geometry );

      console.log(bufferGeometry);

      // Create object
        let object =
            new THREE.Mesh(bufferGeometry,
            new THREE.MeshPhongMaterial(
                {
                    color: 0xFFFFFF,
                    //vertexColors: THREE.VertexColors,
                    shading: THREE.FlatShading,
                    shininess: 0
                })
            );

        _this.add(object);
    });

Но я получаю следующую ошибку:

TypeError: Невозможно прочитать свойство '0' из неопределенного в DirectGeometry.fromGeometry (three.module.js:12219) в BufferGeometry.fromGeometry (three.module.js:14307) в threed-viewer.component.ts:379 в index.js:52 в XMLHttpRequest. (three.module.js:29263) в ZoneDelegate.webpackJsonp.818.ZoneDelegate.invokeTask (zone.js:367) в Object.onInvokeTask (ng_zone.js:264) в ZoneDelegate.webpackJsonp.818.ZoneDeaskate js:366) в Zone.webpackJsonp.818.Zone.runTask (zone.js:166) в XMLHttpRequest.ZoneTask.invoke (zone.js:420)

Любая идея?

Спасибо,

Dino

1 ответ

Решение

Просто оставьте комментарий на пленника (как ответ) для дальнейшего использования:

Если я правильно понял, изучая исходный код PLYLoader.js, геометрия, которую возвращает функция обратного вызова, уже имеет вид THREE.BufferGeometry()

Другие вопросы по тегам