Myślę, że ten obraz najlepiej wyjaśnia mój problem:Jak obrócić niektóre księżyce wokół planety za pomocą THREE.js?
Najpierw przetłumaczyć pole wzdłuż czerwonej linii. Następnie chcę, aby efekt rotacji był niebieską linią w a
, ale to, co faktycznie się dzieje, jest bardziej podobne do niebieskiej linii w b
. Wydaje się, że zmiana obrotu jest zawsze względna w stosunku do oryginalnej przestrzeni obiektu, ale tłumaczenie (mimo że dzieje się to jako pierwsze) jest zawsze względne względem obiektu macierzystego i tak naprawdę nie wpływa na punkty geometrii w odniesieniu do przestrzeni obiektu. Przepraszam, jeśli to jest mylące; wyraźnie jestem nowy w tym.
Ważna część kodu wywołującego ten efekt znajduje się poniżej. Należy pamiętać, że orientacja obrazu jest inna niż ten kod; obraz jest jedynie przykładem wyraźnego pokazania efektu.
var objectContainer = new THREE.Object3D();
var tubeRadius = 100;
var tubeGeometry = new THREE.CylinderGeometry(tubeRadius, tubeRadius, tubeRadius * 3, 36, 1, false);
var tube = new THREE.Mesh(tubeGeomtry, material);
scene.add(tube);
var boxes = new THREE.Object3D();
var boxEdge = 50;
var boxGeometry = new THREE.CubeGeometry(boxEdge, boxEdge, boxEdge);
var box1 = new THREE.Mesh(boxGeometry, material);
box1.translateX(tubeRadius + boxEdge/2 + 5);
box1.translateY(boxEdge/2);
box1.rotation = new THREE.Vector3(0, 2*Math.PI/3*0, 0);
boxes.add(box1);
var box2 = box1.clone();
box2.rotation = new THREE.Vector3(0, 2*Math.PI/3*1, 0);
boxes.add(box2);
var box3 = box1.clone();
box3.rotation = new THREE.Vector3(0, 2*Math.PI/3*2, 0);
boxes.add(box3);
scene.add(boxes);
Jedynym rozwiązaniem można myślę, jest zawinąć każde okno w innej przestrzeni obiektu i obracają się wokół tego, ale wydaje się, że nadmierne pracy. Jaka jest preferowana metoda uzyskania oczekiwanego rezultatu?
Nie wiem, Three.js, ale co powiesz na przetłumaczenie go przez 'Math.cos (obrót) * boxEdge/2, Math.sin (obrót) * boxEdge/2' oraz lokalny obrót? – Ryan
To jest jak podwójna praca, obracanie i tłumaczenie każdego pudełka. Naprawdę chcę to obrócić każdy klon o ten sam punkt, który jest źródłem przed tłumaczeniem. –