Dear Carsten, et al, I just want to express a short 'thank you' for this information. Due to other problems we still could not test it, but I intent to keep you informed about success or failure.
thanks, Martin Carsten Neumann schrieb: > Martin Wewior wrote: >>>> [implementing headtracking] >>> what does your setup look like, that is do you have an HMD, a (large) >>> single screen, or a CAVE-like environment? >> I'll provide some background information: We are developing a >> cooperative visualisation tool, which is currently focused on desktop >> rendering. ("We" are at the Regional Computing Centre of the University >> of Cologne) >> >> This desktop tool should be enabled for VR-installations in general. But >> the first step is a single screen (rear-projection, two projectors, >> polarizing filters). >> Currently we are using OpenSG 1.8. Using 2.0 is desired but not actually >> planned. >> >>> What do you specifically want to know about the ProjectionCameraDeco? >>> Basically it works by defining a projection surface in the coordinate >>> system of the decorated camera and the user position relative to the >>> decorated camera. So data from your headtracker influences the user, >>> while to navigate around the scene you'd modify the camera's beacon. >> We have implemented stereo projection using >> ShearedStereoCameraDecorator-objects decorating the camera. Which works >> as expected. Reading further, we came across this directions >>> http://www.opensg.org/htdocs/doc-1.8/PageSystemWindow.html#PageSystemWindowCameraDecoratorsStereoProjection >> In theory it is obvious, what needs to be done. >> We studied >>> http://www.opensg.org/htdocs/doc-1.8/classosg_1_1ProjectionCameraDecorator.html >> and could not distil the relevant information: >> >> 1) According to the description the corners of the projection screen >> have to be set. Which function needs to be used to to so? > > something like this should do it: > > Pnt3f screen_pnts[4]; > ProjectionCameraDecoratorPtr pcd; > > pcd->editMFSurface()->push_back(screen_pnts[0]); // lower left > pcd->editMFSurface()->push_back(screen_pnts[1]); // lower right > pcd->editMFSurface()->push_back(screen_pnts[2]); // upper right > pcd->editMFSurface()->push_back(screen_pnts[3]); // upper left > >> Which >> coordinate system/units have to be used? > > hm, I don't remember exactly, but using the same coord system/units that > the tracking data for the users head is in would make sense. > >> 2) From the tracking system we obtain coordinates of the user's eyes in >> mm from an arbitrary origin. > > this is arbitrary, but fixed and known? > >> This has to be passed to the system in coordinates relatively to the >> camera. So there has to be a node, which is a child of the >> camera-beacon. This is transformed(translated/rotated) corresponding to >> the position of the tracked user to the centre of the screen? > > yes, create a Node (userBeaconN) with a Transform core, make it a child > of your camera beacon and pass it as the user beacon: > > camBeacon->addChild(userBeaconB); > > pcd->setUser(userBeaconN); > > If you write your tracking data to that Transform core it is used as an > offset from the camera position to give you the correct shape of the > frustum. > Basically the idea is that changing the camera beacon allows you to > navigate your scene, while changing the "user" accounts for the head > tracking. > >> There are private functions which seem connected to this (e.g. NodePtr >> &getUser(void) ) but I do not see how the actual implementation should >> be done, i.e. how and which functions need to be utilised. > > getUser() is public in ProjectionCameraDecoratorBase as well as the > other field accessors (surface, width, height). > > Cheers, > Carsten > > ------------------------------------------------------------------------------ > _______________________________________________ > Opensg-users mailing list > Opensg-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensg-users ------------------------------------------------------------------------------ _______________________________________________ Opensg-users mailing list Opensg-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensg-users