Steve Woolsey (woolsr++at++inel.gov)
Thu, 05 Nov 1998 12:34:24 -0700
Shared->left->setViewport(0, xSize/xSize, 0,
((float(ySize)/2)-1)/ySize);
Shared->right->setViewport(0, xSize/xSize, (float(ySize)/2)/ySize,
ySize/ySize);
Steve
Steve Woolsey wrote:
> I am trying to get two channel stereo working for an n-Vision HMD.
> When I add EarthSky, it takes the whole window, not just the viewport
> assigned to the channel. What do I need to do make it only take up the
> channel viewport?
>
> void InitChannels()
> {
> float near, far, Iod, converge;
> pfVec3 hprOffsets, xyzOffsets;
> int xSize, ySize;
> Iod = 2.0f; converge = 0.2f;
> near = 1.0f; far = 10.0f*Shared->bsphere.radius+1000.0;
> Shared->left = new pfChannel(pfGetPipe(0));
> Shared->right = new pfChannel(pfGetPipe(0));
> Shared->left->setScene(Shared->scene);
> pfSphere bsphere;
> Shared->scene->getBound(&bsphere);
> Shared->left->setAutoAspect(PFFRUST_CALC_NONE);
> Shared->left->setNearFar(near, far);
> Shared->left->setFOV(45.0f, 0.0f);
> Shared->left->attach(Shared->right);
> Shared->left->setShare(PFCHAN_FOV | PFCHAN_SCENE |
> PFCHAN_NEARFAR |
> PFCHAN_LOD);
>
> // Set CULL and DRAW functions
> Shared->left->setTravFunc(PFTRAV_CULL, CullChannel);
> Shared->left->setTravFunc(PFTRAV_DRAW, DrawChannel);
>
> // Set up offsets for left and right channels for stereo viewing
>
> float eyeAngle = PF_RAD2DEG(atanf(Iod*0.5f /
> (converge*(far-near)+near)));
> Shared->pw->getSize(&xSize, &ySize);
> Shared->left->setViewport(0, xSize, 0, (int)(ySize/2)-1);
> Shared->right->setViewport(0, xSize, (int)(ySize/2), ySize);
>
> // Initialize EarthSky, fog, and sun model
> InitEnviroment();
>
> // left eye
> hprOffsets.set(-eyeAngle, 0.0f, 0.0f);
> xyzOffsets.set(-Iod/2.0f, 0.0f, 0.0f);
> Shared->left->setViewOffsets(xyzOffsets, hprOffsets);
>
> // right eye
> hprOffsets.set(eyeAngle, 0.0f, 0.0f);
> xyzOffsets.set(Iod/2.0f, 0.0f, 0.0f);
> Shared->right->setViewOffsets(xyzOffsets, hprOffsets);
>
> }
>
> void InitEnviroment()
> {
> // Setup the Earth Sky model
> if(esflag)
> {
> Shared->eSky = new pfEarthSky;
> Shared->eSky->setMode(PFES_BUFFER_CLEAR, PFES_SKY_GRND);
>
> Shared->eSky->setAttr(PFES_GRND_HT, -1.0);
> Shared->left->setESky(Shared->eSky);
> }
> }
>
> Thanks,
>
> Steve
>
> -------------------------------------------------------------------
> Steven Woolsey Associate Engineer/Scientist
> Lockheed Martin Idaho Technologies Visualization Engineer
> Idaho National Engineering Lab. EMAIL: woolsr++at++inel.gov
> P.O. Box 1625, M.S. 3605
> Idaho Falls, ID 83415-3605
> -------------------------------------------------------------------
>
> =======================================================================
> List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
> Submissions: info-performer++at++sgi.com
> Admin. requests: info-performer-request++at++sgi.com
-- ------------------------------------------------------------------- Steven Woolsey Associate Engineer/Scientist Lockheed Martin Idaho Technologies Visualization Engineer Idaho National Engineering Lab. EMAIL: woolsr++at++inel.gov P.O. Box 1625, M.S. 3605 Idaho Falls, ID 83415-3605 -------------------------------------------------------------------
This archive was generated by hypermail 2.0b2 on Thu Nov 05 1998 - 11:25:56 PST