ТРИ. js Позиционирование отдельных экземпляров буферной геометрии из загруженного GLTF - PullRequest
0 голосов
/ 04 мая 2020

Я адаптировал этот пример ( ссылка ) для успешной загрузки модели и экземпляра GLTF как InstancedBufferGeometry. Как мне получить доступ и управлять / устанавливать позицию для каждого экземпляра? SetAttribute не вступает в силу из того, что я могу сказать, несмотря на то, что posArray заполнен правильно ..?

Большое спасибо, как всегда!

PS: Может ли это быть связано с этой проблемой? https://github.com/mrdoob/three.js/issues/17701

var loader = new GLTFLoader();
loader.load( './models/test.gltf', function ( gltf ) {

    var childObject = gltf.scene.children[0];

    modelGeometry = new THREE.InstancedBufferGeometry();

    THREE.BufferGeometry.prototype.copy.call( modelGeometry, childObject.geometry );    

    let posArray = [];
    for (let i = 0; i < count; i++){
        posArray.push( i*5, i*5, i*5 );
    }

    modelGeometry.setAttribute("posArray", new THREE.InstancedBufferAttribute( new Float32Array( posArray ), 1 )); // Not Working
    // modelGeometry.setAttribute( "posArray", new THREE.InstancedBufferAttribute( new Float32Array( posArray ), 1, false, count ) ); // Also Not Working

    modelMesh = new THREE.InstancedMesh( modelGeometry, modelMaterial, count );


    init();
    animate();

} );
...