[Plib-users] R: R: culling problems w/ off-axis projection
Brought to you by:
sjbaker
From: Paolo L. <p.l...@ci...> - 2010-04-21 14:41:09
|
John, Please find attached the patch. This patch also include a fix to the function sgQuatToAxisAngle which manages cases of Quat's W outside the range [-1:1] (acos undefined). For this I used _isnan and _finite functions in MS Visual C++, whose availability I ask all of you to verify on other Plib-supported platforms. Otherwise just ignore this second part of the patch. Thanks a lot, Paolo Leoncini > -----Messaggio originale----- > Da: Fay, John F Dr CTR USAF AFMC 46 SK > [mailto:joh...@eg...] > Inviato: sabato 17 aprile 2010 18.33 > A: PLIB Users > Oggetto: Re: [Plib-users] R: culling problems w/ off-axis projection > > Paolo, > > Congratulations and very good on having solved the > problem. Is there a code change that you want me to put into > Subversion? > > Dr. John F. Fay > Technical Fellow > Jacobs Technology TEAS Group > 850-883-1294 > > > -----Original Message----- > From: Paolo Leoncini [mailto:p.l...@ci...] > Sent: Monday, April 12, 2010 3:21 AM > To: 'PLIB Users' > Subject: [Plib-users] R: culling problems w/ off-axis projection > > Dear friends, > > I think to have solved the problem. > > > -----Messaggio originale----- > > Da: p.l...@ci... [mailto:p.l...@ci...] > > Inviato: martedì 6 aprile 2010 11.19 > > A: pli...@li... > > Oggetto: [Plib-users] culling problems w/ off-axis projection > > > > Dear all, > > > > I'm doing off-axis projection (the most general form of > > projection) by translating the four corners of the screen into a > > projection matrix, for which I added a new method to the sgFrustum > > class and to the Context too. The only difference with > giving the six > > frustum extrema values is that no calculation occurs. > Culling seems to > > rely only on the projection matrix values, so, apparently, no > > difference w/ the on-axis standard case. > > > > As far as the projection is not far from the on-axis case > the culling > > gives no problem. Instead when screen position definition > results in a > > large rotation in the projection matrix objects suddenly > disappear and > > reappear by apparently no rule. > > > > Are culling calculations based on a particular form of the > projection > > matrix? > > should culling planes be extracted in a different way to > support the > > more general case? > > In sgFrustum::contains( const sgSphere *s ) (sg.cxx), the for > the non-ortho case which is presently done this way: > > sp1 = plane[ SG_LEFT_PLANE ][0] * center[0] + plane[ > SG_LEFT_PLANE ][2] * center[2] ; > sp2 = plane[ SG_RIGHT_PLANE ][0] * center[0] + plane[ > SG_RIGHT_PLANE ][2] * center[2] ; > sp3 = plane[ SG_BOT_PLANE ][1] * center[1] + plane[ SG_BOT_PLANE > ][2] * center[2] ; > sp4 = plane[ SG_TOP_PLANE ][1] * center[1] + plane[ SG_TOP_PLANE > ][2] * center[2] ; > > should be substituted by the following general form: > > sp1 = sgScalarProductVec3 ( plane[ SG_LEFT_PLANE ], > center ) + plane[ SG_LEFT_PLANE ][3] ; > sp2 = sgScalarProductVec3 ( plane[ SG_RIGHT_PLANE ], > center ) + plane[ SG_RIGHT_PLANE ][3] ; > sp3 = sgScalarProductVec3 ( plane[ SG_BOT_PLANE ], > center ) + plane[ > SG_BOT_PLANE ][3] ; > sp4 = sgScalarProductVec3 ( plane[ SG_TOP_PLANE ], > center ) + plane[ > SG_TOP_PLANE ][3] ; > > The hint were just below there (see comment "Note: in the > general case, we would have to do:"). > I propose to patch it since this general form also manages > the default on-axis case, but Steve should definitely give > the go-ahead. > Should someone be concerned about performances I could supply > a bit larger patch for introducing the ability to supply the > Context a general perspective matrix, so to have the general > case only calculated in this eventuality. > > > Thanks a lot, > > > > Paolo Leoncini > > Thanks in advance to a good will updater (John, it's you as usual?). > > Paolo Leoncini > > > > -------------------------------------------------------------- > > ---------------- > > Download Intel® Parallel Studio Eval Try the new > software tools > > for yourself. Speed compiling, find bugs proactively, and fine-tune > > applications for parallel performance. > > See why Intel Parallel Studio got high marks during beta. > > http://p.sf.net/sfu/intel-sw-dev > > _______________________________________________ > > plib-users mailing list > > pli...@li... > > https://lists.sourceforge.net/lists/listinfo/plib-users > > > > > -------------------------------------------------------------- > ---------------- > Download Intel® Parallel Studio Eval Try the new > software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > plib-users mailing list > pli...@li... > https://lists.sourceforge.net/lists/listinfo/plib-users > > -------------------------------------------------------------- > ---------------- > Download Intel® Parallel Studio Eval Try the new > software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > plib-users mailing list > pli...@li... > https://lists.sourceforge.net/lists/listinfo/plib-users > |