Re: preIsectFunc bad trav matrix

New Message Reply Date view Thread view Subject view Author view

Steve Baker (steve++at++mred.bgm.link.com)
Wed, 16 Apr 97 13:57:43 -0500


Chehayeb, Nassouh <nchehayeb++at++ceit.es> asked:

> this is an example code tha I use to get the node isect matrix In
> the ISECT process.
>
> int vrPoolIsect::preIsectFunc(pfTraverser *trav, void *data)
> {
> pfMatrix mat;
> ...
> trav->getMat(mat);
> ...
> }
>
> The node used to set the traverser CB is a pfDCS with a changing matrix,
> The result of printing is an Ident matrix instead of the dcs matrix at
> ISECT time.
>
> Am I making a mistake or its a Performer bug?

Bernard Leclerc <bleclerc++at++cae.ca> replied:

> If you're using a pre-Isect callback, the DCS matrix is not yet applied.
> You can change to a post-Isect callback if you're interested in the
> current transformation matrix after the DCS matrix is applied.
>
> However if you're interested in the current value of the DCS matrix, you
> should do this
>
> pfDCS* dcs = (pfDCS*) trav->getNode();
> dcs->getMat(mat);

..but that only works for DCS's - what about other kinds of nodes?

I'm pretty sure I've seen this problem in Cull traversals too.

What makes you so sure that the matrix isn't applied until after
the pre-traversal callback? I could (maybe) understand that in
the case of a DCS or an SCS, the matrix might be applied somewhere
between the pre- and post- traversal callbacks, but for (say) a
regular pfGroup, this should not be a problem...yet (for me at least)
there *is* a problem.

The man page simply says:

     pfGetTravMat sets mat to the current transformation matrix, which is the
     concatenation of the matrices from the root of the scene down to and
     including the current node.

...it warns you that you can't make this call in a DRAW traversal, but
for APP, CULL and ISECT traversals, it makes it pretty clear that even
for DCS and SCS nodes, you can expect to get back a transform that includes
the current node.

I still think it's a genuine pfBug.

Steve Baker 817-619-1361 (Vox-Lab)
Hughes Training Inc. 817-619-8776 (Vox-Office/Vox-Mail)
2200 Arlington Downs Road 817-619-4028 (Fax)
Arlington, Texas. TX 76005-6171 Steve++at++MrEd.bgm.link.com (eMail)
http://www.hti.com (external) http://MrEd.bgm.link.com/staff/steve (intranet)
                                http://web2.airmail.net/sjbaker1 (external)

"You can't destroy the Earth - that's where I keep all my stuff!" - The Tick.

=======================================================================
List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
            Submissions: info-performer++at++sgi.com
        Admin. requests: info-performer-request++at++sgi.com


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:55:04 PDT

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