2016-03-29 3 views
1

Я играю с очень простой сценой в рамке. Я ищу информацию, чтобы получить положение камеры во время работы. Должен ли я использовать код Component и three.js?Позиция камеры во время выполнения

Как я мог это сделать?

+0

У меня есть RTFM. Но я не знаю, с чего начать. Когда я говорю «во время выполнения», я имею в виду каждый раз, когда камера движется. – pizaninja

+0

Я имел в виду, что * code * вы уже пробовали? –

+0

Можете ли вы привести пример? Ссылка на codepen будет работать http://codepen.io/team/mozvr/ –

ответ

1

Сначала возьмите объект камеры (https://aframe.io/docs/core/entity.html#Retrieving-an-Entity). Объект камеры будет иметь компонент camera, прикрепленный как атрибут HTML.

document.querySelector('[camera]') или document.querySelector('a-scene').camera.el

Затем используйте getAttribute, чтобы захватить позицию. Это вернет объект {X, Y, Z}.

document.querySelector('[camera]').getAttribute('position')

Чтобы получать уведомления о каждый раз, когда камера обновляет свою позицию, мы можем использовать componentchanged событие (https://aframe.io/docs/core/entity.html#Listening-for-Component-Changes):

document.querySelector('[camera]').addEventListener('componentchanged', function (evt) { 
    if (evt.detail.name === 'position') { 
    console.log('Camera position went from', evt.detail.oldData, 'to', evt.detail.newData); 
    } 
}); 
+0

'evt.name' остается неопределенным :-( – pizaninja

+0

Исправлено, это должно быть' evt.detail.name' – ngokevin

+0

'evt.detail.name' еще не определено FYI,' console.log (JSON.stringify (evt)) 'отображает: ' {"isTrusted": false} ' – pizaninja

0

Я, наконец, принятое это решение:

<script> 
    AFRAME.registerComponent('acceleration', { 
     tick: function() { 
      var altitude = (this.el.getAttribute('position').z); 
     } 
    }) 
</script> 
<a-scene> 
    <a-entity position="0 0 150"> 
     <a-entity id="myCamera" camera acceleration look-controls keyboard-controls></a-entity> 
    </a-entity> 
</a-scene> 

Моя последняя проблема: я не получаю абсолютные координаты камеры, но тессы относительно initiale камера положение.

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