Estoy tratando de reemplazar un object3D con un modelo de character , con otro, manteniendo todas sus propiedades, como la posición.
var object = new THREE.Object3D( ); object = models.character[0].clone( ); object.position.set( 100, 230, 15 ); scene.add( object.scene ); const clip = THREE.AnimationClip.findByName( object.animations, 'idle' ); var action = mixer.clipAction( clip ); action.play(); //...later on, replace the model, while keeping it's position object = models.character[1].clone( ); ¿Cómo reemplazo el modelo de un THREE.Object3D( ) ?
Un Object3D no tiene modelo porque no tiene geometría ni materiales. Esta línea de código no hace nada porque está reemplazando inmediatamente el Object3D con otra cosa:
var object = new THREE.Object3D( ); object = models.character[0].clone( ); Creo que deberías usar Mesh , que es una subclase de Object3D. Ahora, si desea cambiar el "modelo" de una Mesh , puede acceder a su propiedad .geometry y asignarle una nueva:
// This is the original geometry const mesh = new THREE.Mesh(geometry, material); mesh.position.set(100, 230, 15); // Here we assign a new geometry to the Mesh mesh.geometry = someOtherGeometry;