Three.js: Alterar o ponto de articulação do meu objeto?

Criado em 20 fev. 2012  ·  10Comentários  ·  Fonte: mrdoob/three.js

Sou muito novo nesta área, desculpe se for uma pergunta estúpida.

Meu problema:

Quero construir um prisma (o polígono consiste em 24 planos). Então eu tenho 24 aviões, todos eles são 15 graus um do outro e agrupados. Como é muito complicado calcular a distância x e z, seria mais fácil se você definir o ponto de pivô no canto inferior direito, por exemplo? direito? mas como? ou existe outra possibilidade de criar um círculo que consiste em planos?

desculpe pelo meu inglês ruim: - /

Question

Comentários muito úteis

Você tem duas opções.

Desloque todos os vértices em sua geometria:

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

Crie um objeto que funcionará como pivô:

mesh.position.y = 10;

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

scene.add( pivot );

Todos 10 comentários

Você tem duas opções.

Desloque todos os vértices em sua geometria:

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

Crie um objeto que funcionará como pivô:

mesh.position.y = 10;

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

scene.add( pivot );

há prós ou contras nesses dois métodos?

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

é agora

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

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

a coisa do make do applyMatrix, não funciona no meu caso. não sei porque.
o objeto pivô funciona. e IMHO é mais fácil.
Nota:
usa isto

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

ao invés de:

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

Obrigado @placegraphichere , isso ajudou.

Algo assim deve funcionar bem com three.js v78, se você quiser, por exemplo. gire em torno da borda de seus objetos se o centro:

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

Mas esteja ciente de que usar geometry.translate() irá modificar a posição de todos os vértices. É uma boa solução, desde que você não planeje mudar o pivô novamente mais tarde.

Eu quero traduzir minha origem de malha (recipiente de caixa 3D) do centro para o canto inferior esquerdo. Então, quando vou adicionar qualquer outra caixa de malha pequena dentro da malha do contêiner, ela deve ser colocada dentro do canto inferior esquerdo em vez de ser colocada no centro.

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

Quando estou usando isso, minha posição de malha também está mudando

@imguccho por favor, use o fórum para obter ajuda.

Como posso traduzir o ponto para ArrowHelper

Esta página foi útil?
0 / 5 - 0 avaliações