20-09-2017 18:03:19
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.144.29
- Courriel Site web
Salut les filles !
Moi changer boulot = plus de temps libre STOP
Retour de moi parmi vous STOP.
Je viens de faire l'acquisition d'un casque VR oculus rift et j'aimerai vraiment le faire tourner avec Irrlicht car j'ai plein de truc cool à tester que j'avais programmé.
On peut trouver le sdk de l'oculus ici : https://developer.oculus.com/downloads/package/oculus-sdk-for-windows/
J'ai essayé déjà un peu de code, mais j'avoue que là je suis totalement largué, alors un petit coup de pied au cul me ferai du bien
.
Si l'un d'entre vous, veut bien jeter un oeil et me dire comment il s'y prendrai et ce qu'il comprend sur la façon de passer les rendu en texture à l'oculus ça m'aiderai vraiment beaucoup.
Voilou, la bise les copains ![]()
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
20-09-2017 21:39:51
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 82.234.76.73
- Courriel Site web
Oh oh ! Salut Copland ![]()
ravi de te revoir dans le coin et de savoir que tu te relance dans l'aventure !
j'ai utiliser openvr qui est un genre de framework pour utiliser ce genre de device (occulus, steamvr)
mais avec openscenegraph, je pensse pas que ce soit difficile a porter sur irrlicht
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | |
et tu as quelques operations a faire pour le rendu:
Code c++ :
// configure
osg::ref_ptr<osg::Camera> camera = m_view->getCamera();
osg::ref_ptr<osg::GraphicsContext> gc = camera->getGraphicsContext();
osg::ref_ptr<callback::Swap> swapCallback = new callback::Swap(m_device);
gc->setSwapCallback(swapCallback);
osg::Vec4 clearColor = camera->getClearColor();
camera->setProjectionMatrix(m_device->projectionMatrixCenter());
camera->setName("Main");
m_cameraRTTLeft = m_device->createRTTCamera(device::Device::LEFT, osg::Camera::RELATIVE_RF, clearColor, gc);
m_cameraRTTRight = m_device->createRTTCamera(device::Device::RIGHT, osg::Camera::RELATIVE_RF, clearColor, gc);
m_cameraRTTLeft->setName("LeftRTT");
m_cameraRTTRight->setName("RightRTT");
m_view->addSlave(m_cameraRTTLeft.get(), m_device->projectionOffsetMatrixLeft(), m_device->viewMatrixLeft(), true);
m_view->getSlave(0)._updateSlaveCallback = new callback::UpdateSlave(callback::UpdateSlave::LEFT_CAMERA, m_device.get(), swapCallback.get());
m_view->addSlave(m_cameraRTTRight.get(), m_device->projectionOffsetMatrixRight(), m_device->viewMatrixRight(), true);
m_view->getSlave(1)._updateSlaveCallback = new callback::UpdateSlave(callback::UpdateSlave::RIGHT_CAMERA, m_device.get(), swapCallback.get());
m_view->setLightingMode(osg::View::SKY_LIGHT);
camera->setGraphicsContext(nullptr);
if(gui_handler)
{
gui_handler->setCameraCallbacks(m_cameraRTTLeft.get());
gui_handler->setCameraCallbacks(m_cameraRTTRight.get());
}
// update
device::TextureBuffer *m_textureBuffer;
osg::RenderInfo &renderInfo;
m_textureBuffer->onPreRender(renderInfo);
m_textureBuffer->onPostRender(renderInfo);
// swapBuffersImplementation(osg::GraphicsContext *gc):
m_device->submitFrame();
m_device->blitMirrorTexture(gc);
gc->swapBuffersImplementation();
// updateSlave(osg::View &view, osg::View::Slave &slave)
if(m_cameraType == LEFT_CAMERA)
m_device->updatePose();
osg::Vec3 position = m_device->position();
osg::Quat orientation = m_device->orientation();
osg::Matrix viewOffset = (m_cameraType == LEFT_CAMERA) ? m_device->viewMatrixLeft() : m_device->viewMatrixRight();
viewOffset.preMultRotate(orientation);
viewOffset.setTrans(viewOffset.getTrans() + position);
slave._viewOffset = viewOffset;
slave.updateSlaveImplementation(view);
voila je t'ai mis un code un peux brute, tu me dit ce que tu arrive a en tirer
perso je suis passer par cmake + cygwin + openvr (avec steamvr) ce qui ma poser quelques soucis et j'ai du modifier les sources de openvr pour compiler correctement ...
evidement le but c'est de généré deux image décaler, ce qui pose des soucis de performances pour irrlicht qui cherche a re trier la scene et recalculer les mesh dynamique en fonction du changement de position de la camera
il faudras surment faire un patch pour optimiser un poils, cela dit, deux device irrlicht peut etre envisagable avec un partage des ressources entre les deux contexte opengl
et du coup proposer un device irrlicht "natif"
j'espère que ça te seras un peu utile
Hors ligne
21-09-2017 16:31:32
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.164.65.190
- Courriel Site web
Salut l'ami, en fait j'ai du mal à comprendre le procédé de rendu vers le casque avec le sdk.
Comment envoyer mes rendu en texture au sdk et aussi à quoi sert cette fameuse texture mirroir ?
Déjà si tu peux m'éclairer sur la texture miroir ça m'aidera à comprendre le fonctionnement ![]()
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
21-09-2017 22:35:50
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.164.65.190
- Courriel Site web
Bon j'ai pas mal progressé !
Il faut récupérer le GLuint des textures openGL sous Irrlicht et les envoyer au casque via glCopyImageSubData
.
Si j'arrive à un résultat convaincant je vous posterai le code !
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
23-09-2017 06:45:05
- Ikam
- Membres
- Date d'inscription:
- Messages: 56
- IP: 91.160.29.225
- Courriel Site web
Salut à tous
C marrant de vous revoir sur irrlicht. Je viens aussi de m'y remettre depuis hier :p en adoptant une version modifié d'Irrlicht qui utilise bgfx comme nouveau renderer.
Ca fait quelques temps que je voudrais aussi tester la VR, j'attend de pouvoir chopper un casque
et je m'y met. Je vais donc suivre ta progression Copland ![]()
Hors ligne
23-09-2017 07:57:16
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.8.196
- Courriel Site web
Cool ! on va réveiller la communauté ![]()
J'ai pas mal avancé, j'affiche ma scène dans le casque à présent mais j'ai encore un petit décalage ½il droit ½il gauche qui dérange sur le rendu final.
Dès que j'ai un truc propre avec le code nettoyé (parce-que là c'est le bordel total hein) je vous poste le code source d'une démo minimaliste compilable.
Pour la texture miroir, pour ceux qui veulent savoir à quoi ça sert, c'est juste pour afficher ce qu'on voit dans le casque à l'écran
.
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
24-09-2017 19:20:23
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.103.183
- Courriel Site web
Hello tout le monde,
J'ai bossé dessus tout le week end pour arriver à trouver d'ou venez le bug de l'image ou on avait l'impression de loucher.
Inutile de vous dire que je me suis pété le crâne à chercher dans les profondeurs des matrices car je pensais au départ que mon mauvais rendu provenez d'une mauvaise matrice. L'oculus utilisant un système de coordonée Main droite et Irrlicht Main gauche pour simplifier les choses...
En réalité, j'utilise ovrTextureSwapChain fourni dans le sdk de l'oculus qui regroupe en fait un tableau de pointeur sur les GLid des textures opengl qu'on envoi au casque par le biais de layer.
Donc dans mon cas mon textureSwapChain contient deux pointeurs : texture oeil droit et gauche.
Je ne sais pas encore pour quelle raison, mes pointeurs se retrouvent identique dans se foutu tableau et donc le casque m'affiche deux fois la même image.
En passant par deux TextureSwapChain j'arrive à afficher oeil droite et oeil gauche sans souci et le rendu est correct.
Donc j'ai pour l'instant un rendu fonctionnel avec cette bidouille.
Je vais quand même approfondir pour essayer de trouver ou ça bug parce-que ça serait bien de pouvoir l'utiliser normalement se sdk et dans l'exemple opengl qu'ils fournissent on ne retrouve pas se problème...
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
30-09-2017 07:52:12
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 82.234.76.73
- Courriel Site web
Salut copland
si tu veux je peux regarder le code
en tout cas tu as un démo fonctionelle c'est plutot sympas d'apporter ovr sur irrlicht
cela devrait intéresser quelques utilisateurs ![]()
quand tu auras un code propre, fait un post sur le forum officiel !
ps: dsl j'ai pas mal de travaille la semaine, et pour une fois, j'ai un weekend "libre" donc nésite pas
Hors ligne
06-10-2017 17:33:45
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.164.235.147
- Courriel Site web
Salut les amis,
Je nettoie mon code se week end et vous met tout ça à dispo très vite.
J'ai traîné car j'ai rajouté un effet de Glow en visuel et pour les ombres ça sera plus tard car mes projections sont faussées avec le casque :'(.
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
07-10-2017 07:07:53
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.158.189
- Courriel Site web
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
07-10-2017 09:43:59
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 78.238.98.137
- Courriel Site web
super ![]()
j'espère avoir un peut de temps pour passer au labo et tester le code
cela dit je vais uploader ton archive directement sur le site
Hors ligne
07-10-2017 10:57:26
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.158.189
- Courriel Site web
ouaip bonne idée sinon il va disparaître du net ![]()
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
07-10-2017 20:18:49
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 2.6.235.77
- Courriel Site web
petite question, tu va integrer ça a crash-car ? ça serait plutot fun !
et ça pourrais marcher
Hors ligne
08-10-2017 08:40:46
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.164.201.176
- Courriel Site web
Héhé, je me disais aussi qu'un Crash Car VR ça serait pas mal et ça sonne plutôt bien comme titre...
Mais je sais pas encore, j'ai envie de programmer des choses plus simple pour l'instant et j'aimerai bien intégrer les touch aussi car je trouve ça vraiment immersif comme système.
Mais j'y songe j'y songe ![]()
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
20-10-2017 20:00:04
- Copland
- Modérateurs
- Date d'inscription:
- Messages: 657
- IP: 176.167.121.72
- Courriel Site web
Hello les amis !
Je donne des news, j'avance toujours sur l'intégration de l'oculus.
J'ai corrigé des bugs dans les orientations et en se moment je bosse sur l'implémentation des oculus Touch pour une meilleure immersion
.
Quand j’aurai un truc fini je mettrai le code sur un sourceforge ou équivalent.
A bientôt ![]()
Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.
Hors ligne
30-10-2017 16:33:57
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 90.55.173.119
- Courriel Site web
merci copland, on attend cela ;-)
Hors ligne




