2013-08-27 6 views
14

Я показываю элемент OBJ с помощью Three.js с помощью WebGlRenderer, теперь я хочу разрешить пользователям поворачивать камеру вокруг объекта в любом направлении, я нашел этот ответ :Поверните камеру вокруг объекта с помощью Three.js

Rotate camera in Three.js with mouse

Но оба пример возвращает мне ошибки, первые говорит, что проектор не определен, и я не знаю, что это означает, что с «проектором». У меня просто простая камера, объект и немного света. Во втором коде сказано, что undefined не является функцией.

Кто-нибудь знает, как получить нужный мне результат?

ответ

29

Это то, что вы хотите: http://threejs.org/examples/misc_controls_orbit.html

Включить контроль орбиты (после того, как вы загрузили их):

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

Настройка переменной:

var controls; 

Attach элементы управления к камеры и добавить слушателя:

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

и в функции одушевленного обновить элементы управления:

controls.update(); 

[Update] controls.autoRotate = true; (проверено в V73. Последние версии OrbitControls.js добавили этот элемент управления.)

+0

Спасибо, но теперь это элемент, который вращается вокруг камеры ... как я могу инвертировать поведение? спасибо –

+1

@FezVrasta Вы можете выбрать, что на орбите, поэтому вместо камеры вы можете поместить туда объект, если вам нравится, например, «сфера», так это будет: new THREE.OrbitControls (sphere); –

+0

Спасибо, но я не могу заставить его работать, я использую этот код для загрузки OBJ: http://jsfiddle.net/7aqmB/, но если я использую _object_ в ** OrbitControls **, он говорит, что объект не определен ... –

1

Действительно, если вы замените «камеру» на объект по вашему выбору, объект будет вращаться. Но если вокруг него есть другие объекты (например, сетка на полу), они все равно будут стоять на месте. Это может быть то, что вы хотите, или это может показаться странным. (? Представьте себе стул вращающийся парит над полом ...)

я переопределить центральный объект из OrbitControls.JS из моего кода после инициализации Orbit Controls

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

(отказ от ответственности: У меня есть впечатление есть разные версии OrbitControls.js вокруг, но я предполагаю, что все они используют этот центр-объект)

Смежные вопросы