Как повернуть и расположить центральный объект?

#javascript #matrix #three.js #autodesk-forge #matrix-multiplication

Вопрос:

введите описание изображения здесь введите описание изображения здесь

Я создал набор инструментов, который может поворачивать и перемещать сетку с осью посередине. Когда я разделю вращение и положение, положение вернется к предыдущему. Однако это вызывает вращение не на сетке. Поэтому я использую умножение. Но это не то, что я ожидал, потому что положение сетки должно быть там, где я его отметил (не на оси сетки). Как повернуть и расположить объект так, чтобы он оставался в указанном положении и вращался в этом месте ? Вот мой код :

 const translation = new THREE.Matrix4().makeTranslation(  this.valueAOA_X,  this.valueAOA_Y,  this.valueAOA_Z ); const angleRadian = CoordinateConverter.degreeToRadian(  this.valueAOA_Rotation ); const rotationAOA = new THREE.Matrix4().makeRotationZ(angleRadian);  this.selectedModel.setPlacementTransform(  rotationAOA.multiply(translation) );  

Комментарии:

1. С кем вы работаете Matrix4 ? Есть ли что-то неправильное в использовании простого selectedModel.position.set(x, y, z); и затем selectedModel.rotation.set(x, y, z); ?

2. Потому что я использовал Autodesk Forge Scene Builder. Поэтому, чтобы иметь возможность взаимодействовать с viewerm, я должен использовать Matrix4.

3. Хорошо, я добавил [autodesk-forge] тег, надеюсь, кто-нибудь из службы поддержки Autodesk сможет помочь вам с их платформой.

4. Привет, Маркиззо. Я исправил это путем перевода умножения вращения

Ответ №1:

Исправлено этой строкой:

 this.selectedModel.setPlacementTransform(  translation.multiply(rotationAOA)  );