Я адаптировал этот пример ( ссылка ) для успешной загрузки модели и экземпляра 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();
} );