web-dev-qa-db-fra.com

three.js - exemple de groupe de mailles? (TROIS.Objet3D () avancé)

J'essaie de comprendre comment regrouper/lier des maillages enfant à 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/traduction des parents fasse le bon choix pour les enfants

Ma seule expérience dans ce domaine est l'utilisation de LSL dans Second Life pour manipuler des prims liés 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? Ceci est réalisé avec THREE.Object3D (), oui?

merci, Daniel

36
Daniel Smith

Le glissement sera un peu plus délicat car vous devez déterminer où seraient les positions x/y de la souris sur l'écran (espace d'écran) dans le monde 3D, alors vous devrez lancer un rayon et vérifier s'il coupe l'objet que vous souhaitez faire glisser. Je suppose 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 THREE.Object3D pour imbriquer des objets en utilisant sa méthode add () . L'idée est que vous utiliserez un maillage pour les objets qui ont une géométrie et des instances Object3D, où vous avez simplement besoin d'imbriquer des éléments. Je suggère de commencer par l'exemple canvas_geometry_hierarchy .

Les bits 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
George Profenza

d'une autre manière, car 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 mailles, mesh1 se manipule et mesh2, mesh2 se manipule

14
atom