Jump to content

[SOLVED] The offset of the player's camera angle relative to the angle of VR.


photo

Recommended Posts

I am using Plugin AppVive for VR. As I understand it, he constantly updates the camera angles to the helmet angles in the VR space.

Tell me how (or at what point) to apply the offset (setOffset ()) for the camera to shift the camera angle by a certain value relative to the angle from AppVive. At the same time, ActorPlayer itself and its vector Up do not change their position.

For example, in VR space, the helmet angle is Y = 3, and the player’s camera angle will be Y = 48 (3 + 45).

Thanks!

Link to comment

Если можно, я по-русски)

Суть такова. Персонаж в игровом мире, который видит человек, наклоняется вперед, при этом в реальности вращение шлема происходит назад(запрокидывается) . Вот в этот момент, возникающую разницу в углах, мне нужно скомпенсировать.

Моя идея была в том, что бы угол, на который повернули шлем(назад), добавить к углу камеры в игровом пространсте. Иначе углы шлема выбирают угол наклона вперед в игровом мире, и наклона камеры не происходит.

Я пытался задать смещение угола через head->setRotation() в VRPlayer  и просто player->getCamera()->setOffset() , но он постоянно обновляются на данные углов полученные от шлема через AppVive без моего добавочного угла.

Может, быть есть возможность поместить объект камеры(head) в какой-то дополнительный Node, и добавлять угол вращения к ниму. В следствии чего, камера и Node будут вращатся  вместе с ActorPlayer. Камера(head) будет вращастся в след за шлемом. А Node "докручивать" камеру на нужный нам угол. Но у меня не выходит.

Спасибо!

Edited by evgenij.zherenkov
Link to comment

Управлять углами в шлеме можно самому, для этого нужно заблокировать автоматическое обновление трансформаций из плагина (setHeadRotationLock(1) и setHeadPositionLock(1)). В аттаче вы можете найти пример реализации своего алгоритма установки трансформаций для шлема.

Спасибо!

AppWorldLogic.h AppWorldLogic.cpp

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Ваш ответ помог. Единственное, пришлось отказаться от PlayerActor в пользу PlayerDummy, потому что камера PlayerActor из-за вектора Up постоянно пыталась перевернуться головой вверх если я сильно крутил камеру вниз.

Спасибо за помощь!

Link to comment
  • silent changed the title to [SOLVED] The offset of the player's camera angle relative to the angle of VR.
  • 1 year later...

Is it also possible to change the offset of the controller? Otherwise I have the problem that the controller is above the VRplayer at this example.

Thanks

 

Link to comment

Hello!

18 hours ago, leon.fuchs said:

Otherwise I have the problem that the controller is above the VRplayer at this example.

Could you be a little more specified on this? What kind of VR equipment you use? Does the issue happens out of the box or there is some custom logic implemented?

Looking ahead I want to share functions where the position of the controllers changes. We just get the controller's position and then add the player's position to it.

For AppVive:
 

Quote

 

mat4 transform = vive.getDevicePose(device_id);

controller[num]->setWorldTransform(player_transform * Mat4(transform) * Mat4(rotateX(-90.0f)));

 

For AppOculus:
 

Quote

 

void VRPlayerVive::controller_update(int num, const Mat4 &player_transform, int device_id)

void VRPlayerVR::controller_update(int num, const Mat4 &player_transform, int is_device_connected, const mat4 &device_pose)

 

Thanks!

Link to comment
×
×
  • Create New...