¿Cómo verificaría si la rotación de un modelo ha cambiado? intentó:
var oldRotate = this._target.quaternion; console.log('works returns vector3 quaternion: ', oldRotate); var newRotate = oldRotate; if (oldRotate != newRotate) { console.log('this isnt triggering'); }esto no funciona y sí está en un 'bucle'
también probé:
var oldRotation = new THREE.Vector3(); oldRotation.copy(controlObject.quaternion); controlObject.position.copy(pos); this._position.copy(pos); this._parent.SetPosition(this._position); this._parent.SetQuaternion(this._target.quaternion); var newRotation = new THREE.Vector3(); newRotation.copy(controlObject.quaternion); console.log(oldRotation.equals(newRotation));¿algunas ideas?
No puede comparar objetos por igualdad usando el operador == / != . Esto simplemente comparará las referencias a los objetos, no sus valores. Deberá comparar utilizando el método .equals .
Además, en su ejemplo, está asignando oldR a newRotate directamente. No estoy seguro si no ha incluido algún código intermedio. De cualquier manera, también debería usar .clone lo contrario != nunca sucederá.
Consulte: https://threejs.org/docs/#api/en/math/Quaternion para obtener información sobre los métodos clone y equals .