evgenij.zherenkov Posted January 24, 2020 Share Posted January 24, 2020 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
silent Posted January 24, 2020 Share Posted January 24, 2020 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: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
evgenij.zherenkov Posted January 24, 2020 Author Share Posted January 24, 2020 (edited) Если можно, я по-русски) Суть такова. Персонаж в игровом мире, который видит человек, наклоняется вперед, при этом в реальности вращение шлема происходит назад(запрокидывается) . Вот в этот момент, возникающую разницу в углах, мне нужно скомпенсировать. Моя идея была в том, что бы угол, на который повернули шлем(назад), добавить к углу камеры в игровом пространсте. Иначе углы шлема выбирают угол наклона вперед в игровом мире, и наклона камеры не происходит. Я пытался задать смещение угола через head->setRotation() в VRPlayer и просто player->getCamera()->setOffset() , но он постоянно обновляются на данные углов полученные от шлема через AppVive без моего добавочного угла. Может, быть есть возможность поместить объект камеры(head) в какой-то дополнительный Node, и добавлять угол вращения к ниму. В следствии чего, камера и Node будут вращатся вместе с ActorPlayer. Камера(head) будет вращастся в след за шлемом. А Node "докручивать" камеру на нужный нам угол. Но у меня не выходит. Спасибо! Edited January 24, 2020 by evgenij.zherenkov Link to comment
silent Posted January 27, 2020 Share Posted January 27, 2020 Управлять углами в шлеме можно самому, для этого нужно заблокировать автоматическое обновление трансформаций из плагина (setHeadRotationLock(1) и setHeadPositionLock(1)). В аттаче вы можете найти пример реализации своего алгоритма установки трансформаций для шлема. Спасибо! AppWorldLogic.h AppWorldLogic.cpp How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
evgenij.zherenkov Posted January 28, 2020 Author Share Posted January 28, 2020 Ваш ответ помог. Единственное, пришлось отказаться от PlayerActor в пользу PlayerDummy, потому что камера PlayerActor из-за вектора Up постоянно пыталась перевернуться головой вверх если я сильно крутил камеру вниз. Спасибо за помощь! Link to comment
leon.fuchs Posted October 7, 2021 Share Posted October 7, 2021 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
bmyagkov Posted October 8, 2021 Share Posted October 8, 2021 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
leon.fuchs Posted October 11, 2021 Share Posted October 11, 2021 thank you very much your answer has already solved my problem 1 Link to comment
Recommended Posts