EarthSky and two channels

New Message Reply Date view Thread view Subject view Author view

Steve Woolsey (woolsr++at++inel.gov)
Thu, 05 Nov 1998 11:18:51 -0700


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
-------------------------------------------------------------------


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Thu Nov 05 1998 - 10:10:24 PST

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.