Three.js: Изменить точку поворота моего объекта?

Созданный на 20 февр. 2012  ·  10Комментарии  ·  Источник: mrdoob/three.js

Я новичок в этой области, так что извините, если это глупый вопрос.

Моя проблема:

Я хочу построить призму (многоугольник состоит из 24 плоскостей). Итак, у меня 24 самолета, каждый из них сгруппирован под углом 15 °. Поскольку сложно рассчитать расстояние по осям x и z, было бы проще, если бы вы установили точку поворота, например, в правом нижнем углу? правильно? но как? или есть еще возможность создать круг, состоящий из плоскостей?

Извините за мой плохой английский :-/

Question

Самый полезный комментарий

У вас есть два варианта.

Сместите все вершины в вашей геометрии:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

Создайте объект, который будет действовать как точка поворота:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

Все 10 Комментарий

У вас есть два варианта.

Сместите все вершины в вашей геометрии:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

Создайте объект, который будет действовать как точка поворота:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

Есть ли у этих двух методов плюсы или минусы?

geometry.applyMatrix (новый THREE.Matrix4 (). setTranslation (0, 10, 0));

сейчас

geometry.applyMatrix (новый THREE.Matrix4 (). makeTranslation (0, 10, 0));

https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834

вещь applyMatrix makeTranslation в моем случае не работает. не знаю почему.
сводный объект работает. и ИМХО так проще.
заметка:
использовать этот

mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;

вместо:

mesh.position.set(###,###,###);

Спасибо @placegraphic здесь , это помогло.

Что-то вроде этого должно работать и с three.js v78, если вы хотите, например. вместо этого вращайте вокруг края объекта, если его центр:

.js mesh.geometry.translate( -myObjectWidth/2, 0, 0 );

Но имейте в виду, что использование geometry.translate() изменит положение всех вершин. Это хорошее решение, если вы не планируете снова менять точку опоры.

Я хочу переместить исходную точку моей сетки (контейнера 3D-коробки) из центра в левый нижний угол. Поэтому, когда я добавлю любой другой небольшой сетчатый блок внутри контейнера, он должен быть помещен в левый нижний угол, а не в центр.

mesh.geometry.translate (-myObjectWidth / 2, 0, 0);

Когда я использую это, моя позиция сетки также меняется.

@imguccho, пожалуйста, воспользуйтесь форумом для помощи.

Как перевести точку для ArrowHelper

Была ли эта страница полезной?
0 / 5 - 0 рейтинги