Three.js: Changer le point de pivot de mon objet?

Créé le 20 févr. 2012  ·  10Commentaires  ·  Source: mrdoob/three.js

Je suis très nouveau dans ce domaine, alors excusez-moi si c'est une question stupide.

Mon problème:

Je veux construire un prisme (le polygone se compose de 24 plans). J'ai donc 24 avions, chacun d'eux est à 15 ° les uns des autres et groupés. Parce qu'il est trop compliqué de calculer la distance x et z, ce serait plus facile si vous définissez le point de pivot en bas à droite par exemple? droite? mais comment? ou existe-t-il une autre possibilité de créer un cercle composé de plans?

Désolé pour mon mauvais anglais :-/

Question

Commentaire le plus utile

Vous avez deux options.

Décalez tous les sommets de votre géométrie:

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

Créez un objet qui fera office de pivot:

mesh.position.y = 10;

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

scene.add( pivot );

Tous les 10 commentaires

Vous avez deux options.

Décalez tous les sommets de votre géométrie:

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

Créez un objet qui fera office de pivot:

mesh.position.y = 10;

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

scene.add( pivot );

y a-t-il des avantages ou des inconvénients dans ces deux méthodes?

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

est maintenant

geometry.applyMatrix (nouveau THREE.Matrix4 (). makeTranslation (0, 10, 0));

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

la chose applyMatrix makeTranslation, ne fonctionne pas dans mon cas. je ne sais pas pourquoi.
l'objet pivot fonctionne. et à mon humble avis, c'est plus facile.
Remarque:
utilisez ceci

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

au lieu de:

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

Merci @placegraphichere , cela a aidé.

Quelque chose comme ça devrait fonctionner aussi bien avec three.js v78, si vous vouliez par exemple. tourner autour du bord de vos objets si son centre:

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

Mais sachez que l'utilisation de geometry.translate() va modifier la position de tous les sommets. C'est une bonne solution tant que vous ne prévoyez pas de changer de pivot plus tard.

Je veux traduire l'origine de mon maillage (conteneur de boîte 3D) du centre vers le coin inférieur gauche. Ainsi, lorsque j'ajouterai une autre petite boîte de maillage à l'intérieur du maillage du conteneur, elle devrait être placée dans le coin inférieur gauche au lieu de la placer au centre.

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

Lorsque j'utilise cela, ma position de maillage est également modifiée

@imguccho s'il vous plaît, utilisez le forum pour obtenir de l'aide.

Comment puis-je traduire le point pour ArrowHelper

Cette page vous a été utile?
0 / 5 - 0 notes