2013-08-27 98 views
14

Tôi đang hiển thị phần tử OBJ với Three.js bằng WebGlRenderer, bây giờ tôi muốn cho phép người dùng xoay camera xung quanh đối tượng theo bất kỳ hướng nào, tôi đã tìm thấy câu trả lời này :Xoay camera xung quanh đối tượng với Three.js

Rotate camera in Three.js with mouse

Nhưng cả hai ví dụ trả lại cho tôi lỗi, người đầu tiên nói rằng máy chiếu không được định nghĩa, và tôi không biết ý nghĩa của nó với "máy chiếu". Tôi chỉ là một chiếc máy ảnh đơn giản, vật thể và ánh sáng. Mã thứ hai nói rằng undefined không phải là một hàm.

Có ai đó biết cách nhận kết quả tôi cần không?

Trả lời

29

Đây là những gì bạn muốn: http://threejs.org/examples/misc_controls_orbit.html

Bao gồm các điều khiển quỹ đạo (sau khi bạn đã tải về chúng):

<script src="js/controls/OrbitControls.js"></script> 

Thiết lập các biến:

var controls; 

Gắn điều khiển để máy ảnh và thêm người nghe:

controls = new THREE.OrbitControls(camera); 
controls.addEventListener('change', render); 

và chức năng Animate của bạn cập nhật các điều khiển:

controls.update(); 

[Cập nhật] controls.autoRotate = true; (thử nghiệm trong V73. Phiên bản gần đây của OrbitControls.js đã thêm điều khiển này.)

+0

Cảm ơn bạn nhưng bây giờ là mục xoay quanh máy ảnh ... làm cách nào tôi có thể đảo ngược hành vi? cảm ơn –

+1

@ FezVrasta Bạn có thể chọn những gì để quỹ đạo vì vậy thay vì máy ảnh bạn có thể đặt một đối tượng trong đó nếu bạn thích ví dụ "hình cầu" vì vậy nó sẽ là: mới BA.OrbitControls (sphere); –

+0

Cảm ơn nhưng tôi không thể làm cho nó hoạt động, tôi sử dụng mã này để tải OBJ: http://jsfiddle.net/7aqmB/ nhưng nếu tôi sử dụng _object_ trong ** OrbitControls ** nó nói rằng đối tượng là undefined ... –

1

Thật vậy, nếu bạn thay thế 'máy ảnh' bằng đối tượng bạn chọn, đối tượng sẽ xoay. Nhưng nếu có những vật thể khác xung quanh nó (ví dụ như một lưới trên sàn), chúng vẫn sẽ đứng yên. Đó có thể là những gì bạn muốn, hoặc nó có thể trông kỳ lạ. (? Hãy tưởng tượng một chiếc ghế xoay nổi trên sàn nhà ...)

tôi chọn bỏ qua đối tượng trung tâm từ OrbitControls.JS từ mã của tôi sau khi khởi tạo Orbit Controls

controls = new THREE.OrbitControls(camera, renderer.domElement); 
… 
controls.center = new THREE.Vector3(
    chair.position.x, 
    chair.position.y, 
    chair.position.z 
); 

(từ chối trách nhiệm: Tôi có ấn tượng có các phiên bản khác nhau của OrbitControls.js xung quanh, nhưng tôi cho rằng tất cả chúng đều sử dụng đối tượng trung tâm này)