Question three.js - exemple de groupe de mailles? (THREE.Object3D () avancé)


J'essaie de comprendre comment grouper / lier des maillages d'enfants à un parent. Je veux pouvoir:

  • faites glisser le parent
  • faire pivoter les éléments enfants par rapport au parent
  • faire en sorte que la rotation / la traduction parentale fasse la bonne chose pour les enfants

Mon seul arrière-plan est d'utiliser LSL dans Second Life pour manipuler des prims liées dans un objet. Je pense que je ne veux pas fusionner les maillages, car je veux garder le contrôle (survol, texture, rotation, mise à l'échelle, etc.) sur chaque enfant.

De bons tutoriels à ce sujet là-bas? Ceci est réalisé avec THREE.Object3D (), oui?

merci Daniel


35
2017-11-02 18:53


origine


Réponses:


Le glisser sera un peu plus délicat car vous devrez déterminer où se situeront les positions x / y de la souris sur l’écran (espace écran) dans le monde 3D, puis vous devrez lancer un rayon et vérifier si coupe l'objet que vous voulez faire glisser. Je présume que ce sera une question différente.

La définition de la hiérarchie des objets est assez simple. Comme vous l'avez laissé entendre, vous utiliserez une instance de THREE.Object3D pour imbriquer des objets dans son utilisation. ajouter() méthode. L'idée est que vous utiliserez un Mesh pour les objets qui ont une géométrie et les instances Object3D, où vous devez simplement imbriquer des éléments. Je suggère de commencer par le canvas_geometry_hierarchy échantillon.

Les éléments intéressants sont:

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

58
2017-11-02 19:42



autrement dit, un maillage peut aussi être un parent

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

ou

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

mesh3 manipule toutes les maillages, mesh1 se manipule et mesh2, mesh2 se manipule


14
2017-12-10 11:22