From: Yair Kurzion (yair++at++polygon.engr.sgi.com)
Date: 07/19/2001 18:35:50
Hi Tom !
> It looks like what I'm seeing is the change to the pfChannel's
> view matrix is not synchronized to the change in the DCS node above
> the ASD node when the COMPUTE process evaluates the ASD's geometry.
> I think the DCS change is lagging the view matrix change from the
> COMPUTE process's point of view. Does the COMPUTE process start a
> new frame between when the pfChannel is updated and the scene graph
> is updated?
A new COMPUTE frame starts at the first call to pfFrame after the previous
COMPUTE frame finished. The start of a COMPUTE frame is not asynchronous.
The COMPUTE process may take many frames to complete but it makes a copy
of the channel view parameters at the beginning of its frame.
> Questions about pfASD::setCullEnlarge:
>
> 1. If the channel's FOV is 90 degrees (symmetrical) what happens
> when the fov multiplier (first argument) is greater than 2.0?
If you provide some factor f, pfASD uses pfFrustum::makeSimple with the
original horizontal channel fov plus f. Here is a code fragment from pfASD:
chan->nb_getBaseFrust(frust);
frust->getFOV(&horiz, &vert);
aspect = frust->getAspect();
horiz += f; <------ notice plus sign.
frust->makeSimple(horiz);
frust->setAspect(PFFRUST_CALC_VERT, aspect);
The man page says that `The FOV of this frustum is fov * FOV of viewing frustum'.
This is wrong (as the code shows).
> 2. If the channel's FOV is asymmetric, how does the setCullEnlarge
> function handle this?
pfASD doesn't know how to extend an asymmetric frustum correctly. I think you
can provide a `fov' parameter to setCullEnlarge to generate a symmetric
frustum bounding the channel asymmetric one. This would result in a very
loose CULL result but this is the best the current implementation supports.
Supporting asymmetric frustum enlargement should be an RFE.
> 3. Should near and far (the other two arguments) always be greater
> or equal to 0.0?
They are factors. Why would you want them negative ?
> Another thing that I am seeing is some of the asd geometry is culled
> when the pfChannel's FOV is asymmetric. This leaves noticeable
> holes in my model. I have been unable to correct this using
> setCullEnlarge.
The above code should explain why this happens. pfASD CULL's to a symmetric
frustum.
-yair
>
> Yair Kurzion wrote:
> >
> > Hi Tom !
> >
> > pfASD evaluates its visible geometry in an asynchronous process (COMPUTE).
> > A COMPUTE frame may take longer than a regular APP/CULL/DRAW frame, and so
> > the visible geometry may be correct for an eye position in the past.
> >
> > To solve that, pfASD has to be culled for a larger frustum than the channel
> > viewing frustum. How large depends on the application:
> >
> > o The larger (more complex) the pfASD model, the longer it takes to evaluate,
> > and the older the geometry you render is.
> >
> > o The faster the eye position moves (especially - angular rate), the wider the
> > cull frustum has to be.
> >
> > Take a look at the man page for pfASD::setCullEnlarge. It lets you modify the
> > cull frustum of a pfASD.
> >
> > -yair
> >
> > > I am seeing what looks like unusual culling effects with geometry
> > > in a pfASD node. I have the pfASD node as a child of a pfDCS node.
> > > When I change the eyepoint position and the DCS position by the
> > > same amount parts of the geometry in the pfASD node, that should
> > > be visible, are culled. When the positions stop changing the
> > > culling catches up and the geometry looks the way I expect it to.
> > >
> > > I see the same thing using asdfly (using run_simple) when I rapidly
> > > change the eyepoint position backwards. It looks like it takes a
> > > couple of frames for the culling to catch up.
> > >
> > > Anyone have any explanations or solutions? Can ASD be used in an
> > > application with channels covering 360 degrees or with side channels
> > > and a high roll rate?
--
\_________ \_____ \__ \__ \_____ Yair Kurzion
\_________ \_____ \__ \__ \_____ yair++at++sgi.com
\__ \__ \____\__ \__ http://reality.sgi.com/yair
\__ \__ \__ Work: (650) 933-6502
\__ \__ \__ Home: (408) 226-9771
\__ \__ \__
This archive was generated by hypermail 2b29 : Thu Jul 19 2001 - 18:36:06 PDT