2012-08-11 35 views
18

Tôi đã tạo một hình trụ và tôi muốn di chuyển vòng xoay của nó đến một trong các đầu của nó bằng cách thay đổi hộp kết thúc của nó nhưng không hoạt động.Trung tâm hình học di chuyển Three.js

http://jsfiddle.net/736a7/1/

Có ví dụ về những gì tôi đang làm việc.

Về cơ bản, tôi muốn xoay hình trụ xung quanh như thể nó là một thanh kiếm được vung bằng tay cầm của nó.

Trả lời

28

Tìm ra nhờ một số trợ giúp.

geometry.applyMatrix(new THREE.Matrix4().makeTranslation(x, y, z)); 

sử dụng tôi đã dịch y của xy lanh 100 điểm để về cơ bản quay ở cuối thấp hơn.

+0

Đối với cuộc sống của tôi, tôi không thể làm việc này. Nó cũng dịch điểm gốc, và vòng quay không thay đổi chút nào. – Tyguy7

+2

@ Tyguy7 - Bạn cần đặt geometry.verticesNeedUpdate = true –

+5

Bây giờ bạn có thể sử dụng phím tắt này 'geometry.translate (x, y, z);', xem http://stackoverflow.com/questions/12835361/three-js -move-custom-geometry-to-origin – kraftwer1

2

Tôi đã sử dụng phương pháp tiếp cận bằng cách sử dụng mưu đồ trong trường hợp của tôi. Về cơ bản, bạn tạo một điểm pivot:

var pointToRotateAround; 
var objectToRotate; 
... 
var pivot = new THREE.Object3D(); 
pivot.position=pointToRotateAround.position; 
pivot.add(objectToRotate); 
scene.add(pivot); 
... 
function render(){ 
pivot.rotation.z +=0.05; 
} 
... 

Nó cung cấp các cách có thể để làm cho một cơ thể xoay quanh một điểm khác hoặc bất kỳ điểm nào. Dưới đây là thêm về cách tiếp cận đó: https://github.com/mrdoob/three.js/issues/1830

Các vấn đề liên quan