Jump to content

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


photo

Recommended Posts

Posted

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!

Posted

Evgenij,

Could you please describe the use-case that you are trying to achieve? Do you want to point camera to the specific direction when world is being loaded? Or something else?

Thanks!

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

Posted (edited)

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

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

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

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

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

Спасибо!

Edited by evgenij.zherenkov
Posted

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

Спасибо!

AppWorldLogic.h AppWorldLogic.cpp

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

Posted

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

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

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

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

 

Posted

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!

Posted

thank you very much your answer has already solved my problem

  • Like 1
×
×
  • Create New...