Angus Dorbie (dorbie++at++sgi.com)
Thu, 03 Sep 1998 13:10:45 -0700
It may be a bug in the GFX release you are using
in which case a patch set would be a good idea.
Cheers,Angus.
Mattias.Johansson++at++saab.se wrote:
>
> Hi all,
>
> We seem to be getting into trouble using three channels on one IR pipe.
> We have a terrain database of partially generic terrain with
> fairly large triangles.
>
> Sometimes when such a triangle covers a large portion of the pipe
> pieces of it gets missing (clipped).
>
> This can also be demonstrated using perfly (3++at++1280x1024_60 format)
>
> perfly -l 2 -g 0 -p 27.835300,15.988377,5.0 -e 0.0,-90.0,0.000000
> sampler.nff
>
> Here one can see an object close to the eye getting drawn correctly
> but the "floor" polygon in the distance is clipped.
>
> We have seen this before on other IR based systems and did
> send a test case to SGI Sweden, but nothing happened :-(
>
> The current setup is an Onyx2 with 4 RM7's and all the latest patches.
>
> We are using the standard distributed 3++at++1280x1024_60 video combination
> format.
>
> I attach a small performer program that sets up three channels
> to demonstrate the problem.
>
> Anybody else seen this? solutions/workarounds?
>
> /Mattias
>
> --
> ----------------------------------------------------------------------------
> Mattias Johansson Email:
> Mattias.Johansson++at++saab.se
> Systems Engineer Phone: +46 (0)13 - 181740
> Saab Aerospace - Simulation Center Fax : +46 (0)13 - 184177
> 581 88 Linkoping - Sweden
> ----------------------------------------------------------------------------
>
> ------------------------------------------------------------------------
> #include <stdlib.h>
> #include <Performer/pf.h>
> #include <Performer/pfutil.h>
> #include <Performer/pfdu.h>
>
> int main (int argc, char *argv[])
> {
> pfScene *scene;
> pfNode *root;
> pfPipe *p;
> pfPipeWindow *pw;
> pfChannel *left;
> pfChannel *middle;
> pfChannel *right;
> pfVec3 middleHPR = {0.0, 0.0, 0.0};
> pfVec3 leftHPR = {60.0, 0.0, 0.0};
> pfVec3 rightHPR = {-60.0, 0.0, 0.0};
> pfVec3 zeroOffset = {0.0, 0.0, 0.0};
> pfDCS *dcs;
> int n;
>
> pfCoord view;
> char *model = "/usr/share/Performer/data/board.sv";
>
> pfInit();
> pfMultiprocess( PFMP_DEFAULT );
> pfdInitConverter(model);
>
> pfConfig();
>
> pfFilePath("/usr/share/Performer/data/");
>
> if ((root = pfdLoadFile(model)) == NULL) {
> pfExit();
> exit(-1);
> }
>
> scene = pfNewScene();
> dcs = pfNewDCS();
> pfAddChild(dcs, root);
> pfDCSScale(dcs, 10000); /* Scale up them polys */
> pfAddChild(scene, dcs);
>
> pfAddChild(scene, pfNewLSource());
>
> p = pfGetPipe(0);
> pw = pfNewPWin(p);
> pfPWinType(pw, PFPWIN_TYPE_X);
> pfPWinName(pw, "DBTest");
> pfPWinOriginSize(pw, 0, 0, 3840, 1024);
> pfOpenPWin(pw);
>
> /* We use 3 channels */
> middle = pfNewChan(p);
> left = pfNewChan(p);
> right = pfNewChan(p);
>
> pfChanScene(middle, scene);
> pfChanFOV(middle, 60.0f, 40.0f);
>
> pfChanShare(middle, PFCHAN_FOV |
> PFCHAN_VIEW |
> PFCHAN_NEARFAR | PFCHAN_SCENE);
>
> pfAttachChan(middle,left);
> pfAttachChan(middle,right);
>
>
> /* feel free to insert your fav near/far ratio */
> pfChanNearFar(middle, 1.0f, 550000.0f);
>
> pfChanViewport(middle, 0.0, 1.0/3.0, 0.0, 1.0);
> pfChanViewport(right, 1.0/3.0, 2.0/3.0, 0.0, 1.0);
> pfChanViewport(left, 2.0/3.0, 1.0, 0.0, 1.0);
>
>
> pfChanViewOffsets(middle, zeroOffset, middleHPR);
> pfChanViewOffsets(left, zeroOffset, leftHPR);
> pfChanViewOffsets(right, zeroOffset, rightHPR);
>
> /* somewhere over the chessboard */
> view.xyz[PF_X] = 8000;
> view.xyz[PF_Y] = 19000;
>
> /* 2000m over the board looking down. In the middle channel there
> is a crack in the chessboard :-( */
> view.xyz[PF_Z] = 2000.0;
> view.hpr[PF_H] = 0.0;
> view.hpr[PF_P] = -90.0;
> view.hpr[PF_R] = 0.0;
>
> pfChanView(middle, view.xyz, view.hpr);
>
> /* display the crack for 500 frames */
> for(n=0;n<500;n++) {
> pfSync();
> pfFrame();
> }
>
> /* Move away to see the "big picture" */
> for(;view.xyz[PF_Z] < 200000;view.xyz[PF_Z]+=100.0) {
> pfSync();
> pfChanView(middle, view.xyz, view.hpr);
> pfFrame();
> }
> pfExit();
> }
-- "Only the mediocre are always at their best." -- Jean GiraudouxFor advanced 3D graphics Performer + OpenGL based examples and tutors: http://www.dorbie.com/
This archive was generated by hypermail 2.0b2 on Thu Sep 03 1998 - 13:10:48 PDT