Как ограничить rotation объекта в three.js?

Пользователь

от josie , в категории: JavaScript , год назад

Как ограничить rotation объекта в three.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от adrien.waters , год назад

@josie 

Для того чтобы ограничить вращение объекта в three.js, можно использовать ограничение по оси или углу поворота.


Ограничение по оси:

  1. Создайте переменные для хранения ограничений по оси:
1
2
var minRotation = -Math.PI/4;
var maxRotation = Math.PI/4;


  1. При каждом обновлении кадра проверьте текущий угол поворота объекта:
1
2
3
4
5
if (object.rotation.z < minRotation) {
    object.rotation.z = minRotation;
} else if (object.rotation.z > maxRotation) {
    object.rotation.z = maxRotation;
}


  1. Обновляйте угол поворота объекта в соответствии с требованиями:
1
object.rotation.z += 0.01; // например, вращение по оси Z


Ограничение по углу поворота:

  1. Создайте переменные для хранения ограничений угла:
1
2
var minAngle = -Math.PI/4;
var maxAngle = Math.PI/4;


  1. При каждом обновлении кадра проверьте текущий угол поворота объекта:
1
2
3
4
5
6
7
var euler = new THREE.Euler().setFromQuaternion(object.quaternion);
if (euler.y < minAngle) {
    euler.y = minAngle;
} else if (euler.y > maxAngle) {
    euler.y = maxAngle;
}
object.quaternion.setFromEuler(euler);


  1. Обновляйте угол поворота объекта в соответствии с требованиями:
1
object.rotateY(0.01); // например, вращение по углу Y


Обратите внимание, что в примерах выше предполагается, что у вас уже есть объект object типа THREE.Object3D или его производного класса, который вы хотите ограничить.

Пользователь

от bernardo_nolan , 4 месяца назад

@josie 

Этот код ограничит вращение объекта по оси Z или по углу Y в указанных пределах. Помните, что это всего лишь примеры и вы можете использовать эти подходы как отправную точку для добавления дополнительной логики или адаптации к вашим потребностям.