Например, пример tr.js - mesh group? (THREE.Object3D() расширен)
Я пытаюсь понять, как группировать/связывать дочерние ячейки с родителем. Я хочу иметь возможность:
- перетащите родительский
- вращать дочерние элементы относительно родительского
- иметь родительскую ротацию/перевод сделать правильную вещь для детей
Мой единственный опыт в этом - использование LSL в Second Life для управления связанными примитивами в объекте. Я думаю, что я не хочу объединять сетки, потому что я хочу поддерживать контроль (зависание, текстуру, вращение, масштабирование и т.д.) Над каждым ребенком.
Какие-нибудь хорошие учебники по этому поводу? Это достигается с помощью THREE.Object3D(), да?
спасибо, Daniel
Ответы
Ответ 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 манипулирует собой