Necesito algo de luz sobre esta pregunta. Estoy tratando de establecer vértices de una geometría usando un cuaternión y
geometry.attributes.position.array[x].applyQuaternion(quaternion)no funciona como se esperaba Sé que esta implementación cambió en el pasado y sospecho que el problema es que
geometry.vertices[x]ya no está disponible
alguien en esto?
El método .applyQuaternion() solo está disponible en Vector3() , no en un número simple. No puede realizar 7.applyQuaternion() con un número. En este contexto, no tiene sentido aplicar una rotación 3D a un valor unidimensional.
Primero, asegúrese de crear un Vector3 con las coordenadas XYZ del vértice que está tratando de manipular utilizando el método BufferAttribute.get... :
// Create quaternion const quat = new THREE.Quaternion(); quat.setFromAxisAngle( /* ... */ ); // Position attribute const posAttrib = geometry.getAttribute('position'); // Let's get the XYZ components of the 7th vertex in the geometry const twistVec = new THREE.Vector3( posAttrib.getX(7), posAttrib.getY(7), posAttrib.getZ(7) ); // Now that you've created a Vec3, you CAN apply a quaternion twistVec.applyQuaternion(quat);