Подтвердить что ты не робот

Например, пример tr.js - mesh group? (THREE.Object3D() расширен)

Я пытаюсь понять, как группировать/связывать дочерние ячейки с родителем. Я хочу иметь возможность:

  • перетащите родительский
  • вращать дочерние элементы относительно родительского
  • иметь родительскую ротацию/перевод сделать правильную вещь для детей

Мой единственный опыт в этом - использование LSL в Second Life для управления связанными примитивами в объекте. Я думаю, что я не хочу объединять сетки, потому что я хочу поддерживать контроль (зависание, текстуру, вращение, масштабирование и т.д.) Над каждым ребенком.

Какие-нибудь хорошие учебники по этому поводу? Это достигается с помощью THREE.Object3D(), да?

спасибо, Daniel

4b9b3361

Ответ 1

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

Установка иерархии объектов довольно проста. Как вы намекали, вы будете использовать экземпляр THREE.Object3D, чтобы вложить объекты в использование метода add(). Идея состоит в том, что вы будете использовать Mesh для объектов с геометрией и экземпляров Object3D, где вам просто нужно вложить элементы. Я предлагаю начать с примера canvas_geometry_hierarchy.

Интересными битами являются:

group = new THREE.Object3D();//create an empty container
group.add( mesh );//add a mesh with geometry to it
scene.add( group );//when done, add the group to the scene

Ответ 2

другой способ, потому что сетка также может быть родителем

meshParent.add(meshChild1);
meshParent.add(meshChild2);
scene.add(meshParent);

или

mesh1.add(mesh2);
mesh3.add(mesh1);
scene.add(mesh3);

mesh3 манипулирует всеми сетками, mesh1 манипулирует собой и mesh2, mesh2 манипулирует собой