2016-01-20 12 views
2

Я работаю над переносом существующего проекта three.js в WebVR + Oculus Rift. В основном, это приложение принимает STL-файл в качестве ввода, создает на нем THREE.Mesh и отображает его на пустой сцене. Мне удалось заставить его работать в Firefox Nightly с плагином VREffect до трёх.js и VRControls. Проблема, которую я имею, это модели, представленные в VR, на самом деле не 3D. А именно, когда я перемещаю HMD назад и вперед, активная трехмерная модель не приближается/больше, и я не вижу разных сторон модели. Похоже, что модель представляет собой довольно плоское фоновое изображение, прикрепленное к его положению. Если я добавлю THREE.AxisHelper к сцене, он правильно преобразуется при перемещении HMD.Как сделать THREE.Mesh выглядеть объемным с помощью WebVR?

Первоначально в приложении использовались THREE.OrbitControls, а модели были повернуты и перемещены правильно.

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

+0

Это действительно странно. Вы все еще используете OrbitControls? Является ли модель добавлена ​​в сцену напрямую или добавлена ​​в камеру? Похоже, вы добавили модель в камеру, поэтому она перемещается вместе с камерой, а это значит, что вы не можете видеть ее с разных точек зрения. – brianpeiris

+0

, вероятно, вам нужно использовать 'DeviceOrientationControls' – gaitat

+0

@brianpeiris, да, точно. У меня такое впечатление, но я добавляю сетку в сцену, затем добавляю камеру на сцену. Это странно, потому что я не мог найти демоверсии, где это рекомендуется делать. Но, в моем случае камера вообще не движется, если не добавить ее на сцену. И я не использую OrbitControls, потому что, когда включен режим VR, на дисплеях Oculus нет курсора, поэтому события мыши игнорируются. На самом деле, я бы хотел использовать OrbitControls, потому что иногда они могут пригодиться, но, похоже, это невозможно с текущей реализацией WebVR. – Ivan

ответ

3

Оказалось, что технически проблем не было. Проблема была в основном с разными масштабами моих моделей и движений Oculus. Когда VRControls используется с настройками по умолчанию, он сообщает позицию HMD, когда он считывает ее из Oculus, в метрах. Таким образом, диапазон движений моей головы едва превысил 1 м, тогда как средний размер моих моделей составляет около нескольких десятков собственных единиц. Когда я использовал их в целом на одной и той же сцене, это было похоже на то, что зритель муравей смотрит на гигантскую модель. Естественно, муравьи должны пройти некоторое время, чтобы увидеть другую сторону модели. Вот почему это казалось не трехмерным телом.

К счастью, есть свойство scaleVRControls, которое должно использоваться для регулировки масштаба движений HMD. Когда я установил его примерно в 30, все работает очень хорошо.

Благодаря комментарию @brianpeiris я решил еще раз проверить координаты модели и камеры, чтобы убедиться, что они не связаны друг с другом. И это привело меня к решению.