открытие ThreeJS сжатого OBJ в памяти для рендера - PullRequest
0 голосов
/ 30 октября 2019

я работаю на сайте, созданном с vuejs , который отображает много объектов в webgl ( threejs ),

У меня есть 7 объектов с минимумом 7 МБ размер файла для этого занимает много времени для загрузки.

, но если я TGZ весь файл вместе, это будет около 4 МБ.

поэтому мой вопрос:

Могу ли я загрузить tgz в память, извлечь их и загрузить в мой threejs ?

вот мой погрузчик Threejs с компрессором Draco

var objLoader = new THREE.OBJLoader(manager);
objLoader.setPath(codepenAssetUrl1);
objLoader.load( 'wtc2.obj', function ( object ) {   
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh ) {
            let scale = 1.3;

            let area = new THREE.Box3();
                area.setFromObject( child );
            let yOffset = (area.max.y * scale) / 2;

            child.geometry.scale(scale,scale,scale);
            rocketPoints = THREE.GeometryUtils.randomPointsInBufferGeometry(child.geometry, particleCount);
            createVertices(rocketParticles, rocketPoints, yOffset, 2);
        }
    });
});

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете настроить свой сервер для обслуживания gzip (в этом случае распаковка выполняется без вывода сообщений браузером) или использовать утилиту, например zip.js , чтобы разархивировать архив во время выполнения.

Я бы также предложил рассмотреть более эффективный / современный формат файла, чем OBJ, такой как glTF в его двоичной форме (glb).

...