|
View:
New views
20 Messages
—
Rating Filter:
Alert me
|
|
|
[Breaking Change] DO3D has new props localRotationX / Y /Z , pitch, yaw, roll are methods againHi List,
Sorry for this confusion, but we decided to revert back to pitch( angle ), yaw( angle ) and roll( angle ) methods. There are three new getter / setters now though: do3d.localRotationX do3d.localRotationY do3d.localRotationZ So: pitch( 30 ) would be the same as doing localRotationX = 30; Note that localRotationX / Y /Z are rotations relative to the rotation as set by rotationX / Y / Z. Also note that after do3d.lookAt() localRotationX/Y/Z will be resetted to 0 Tim _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new props localRotationX / Y /Z , pitch, yaw, roll are methods againHi Tim,
Thanks for the update. Are there still issues with near and lookAt ?
|
|
|
Re: [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods againHi Tim,
I'm experiencing some problems after this update which you might not be aware of. When I execute onenterframe for example the following code: object.yaw(1) trace(object.rotationY); When I expect to receive a value of +/- 90, it will return NaN. I've located this problem to changes in the Matrix3D class. The following code execution is happening and will trace NaN as well: var number:Number = -1.0000000000000029; trace(Math.asin(-number/1)); //Traces NaN Unfurtuantly I'm not that skilled right now to solve this problem. Maybe you have an idea? When I do for example a object.pitch(1) and trace(object.rotationX), it will return the right values. Beside it seems that rotationY is always between -90 and +90, instead of between -180 and +180. Is this a bug, or is it a feature, which use I'm not aware of? :-) Paul -----Original Message----- From: papervision3d-bounces@... [mailto:papervision3d-bounces@...] On Behalf Of Tim Knip Sent: zondag 20 juli 2008 18:32 To: papervision3d@... Subject: [Papervision3D] [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods again Hi List, Sorry for this confusion, but we decided to revert back to pitch( angle ), yaw( angle ) and roll( angle ) methods. There are three new getter / setters now though: do3d.localRotationX do3d.localRotationY do3d.localRotationZ So: pitch( 30 ) would be the same as doing localRotationX = 30; Note that localRotationX / Y /Z are rotations relative to the rotation as set by rotationX / Y / Z. Also note that after do3d.lookAt() localRotationX/Y/Z will be resetted to 0 Tim _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods againOn Jul 23, 2008, at 12:12 PM, Paul Tondeur wrote:
Might be a bug in the Flash Player. var number:Number = -1.0000000000000029; var n:Number = -number/1; trace( Math.asin(n) ); // 57.295779513082486 cheers, jon _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods againOn Jul 23, 2008, at 12:12 PM, Paul Tondeur wrote:
If the issue is with matrix2euler, change this euler.y = Math.asin(-m.n31/sz); to this var n:Number = -m.n31/sz; euler.y = Math.asin(n); Hope that fixes it. best, jon _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods againOn Jul 23, 2008, at 12:36 PM, Jon Bradley wrote: > If the issue is with matrix2euler If you're really bold, you can try this method instead: public static function matrix2euler( m :Matrix3D, euler:Number3D=null, scale:Number3D=null ) : Number3D { euler = euler || new Number3D(); var x:Number = 0; var y:Number = 0; var c:Number = 0; euler.y = -Math.asin( m.13); c = Math.cos(ay); if ( Math.abs(c) > 0.005 ) { x = m.33/c; y = -m.23/c; euler.x = Math.atan2(y,x); x = m.11/c; y = m.12/c; euler.z = atan2(y,x); } else { euler.x = 0; x = m.22; y = m.21; euler.z = atan2(y,x); } // Clamp values euler.x = (euler.x > 360) ? 360:((euler.x < 0) ? 0:euler.x); euler.y = (euler.y > 360) ? 360:((euler.y < 0) ? 0:euler.y); euler.z = (euler.z > 360) ? 360:((euler.z < 0) ? 0:euler.z); if(Papervision3D.useDEGREES) { euler.x *= toDEGREES; euler.y *= toDEGREES; euler.z *= toDEGREES; } return euler; } _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new props localRotationX/ Y /Z , pitch, yaw, roll are methods againAh, I'm a doofus. Didn't put in the matrix props correctly. This
method is completely untested. public static function matrix2euler( m :Matrix3D, euler:Number3D=null, scale:Number3D=null ) : Number3D { euler = euler || new Number3D(); var x:Number = 0; var y:Number = 0; var c:Number = 0; euler.y = -Math.asin( m.n13); c = Math.cos(ay); if ( Math.abs(c) > 0.005 ) { x = m.n33/c; y = -m.n23/c; euler.x = Math.atan2(y,x); x = m.n11/c; y = m.n12/c; euler.z = atan2(y,x); } else { euler.x = 0; x = m.n22; y = m.n21; euler.z = atan2(y,x); } // Clamp values euler.x = (euler.x > 360) ? 360:((euler.x < 0) ? 0:euler.x); euler.y = (euler.y > 360) ? 360:((euler.y < 0) ? 0:euler.y); euler.z = (euler.z > 360) ? 360:((euler.z < 0) ? 0:euler.z); if(Papervision3D.useDEGREES) { euler.x *= toDEGREES; euler.y *= toDEGREES; euler.z *= toDEGREES; } return euler; } _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againHi Jon,
Thanks for the suggestions to solve this problem! Unfortunately, none of these seems to work out correctly. I tried using the code for this method from revision 647. This seems to work without any problems right now. However I expect that this might introduce some new problems as well. It might be an idea that someone from the pv3d team looks into this and put this in the next update? As soon as I've found a way to update the current implemented code I'll post a new message. Paul -----Original Message----- From: papervision3d-bounces@... [mailto:papervision3d-bounces@...] On Behalf Of Jon Bradley Sent: woensdag 23 juli 2008 19:04 To: papervision3d@... Subject: Re: [Papervision3D] [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods again Ah, I'm a doofus. Didn't put in the matrix props correctly. This method is completely untested. public static function matrix2euler( m :Matrix3D, euler:Number3D=null, scale:Number3D=null ) : Number3D { euler = euler || new Number3D(); var x:Number = 0; var y:Number = 0; var c:Number = 0; euler.y = -Math.asin( m.n13); c = Math.cos(ay); if ( Math.abs(c) > 0.005 ) { x = m.n33/c; y = -m.n23/c; euler.x = Math.atan2(y,x); x = m.n11/c; y = m.n12/c; euler.z = atan2(y,x); } else { euler.x = 0; x = m.n22; y = m.n21; euler.z = atan2(y,x); } // Clamp values euler.x = (euler.x > 360) ? 360:((euler.x < 0) ? 0:euler.x); euler.y = (euler.y > 360) ? 360:((euler.y < 0) ? 0:euler.y); euler.z = (euler.z > 360) ? 360:((euler.z < 0) ? 0:euler.z); if(Papervision3D.useDEGREES) { euler.x *= toDEGREES; euler.y *= toDEGREES; euler.z *= toDEGREES; } return euler; } _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againyeah I'm sure tim will likely get back to you - he's been working on this pretty vigorously as of late
Thanks for the posts guys, this does help! On Wed, Jul 23, 2008 at 3:21 PM, Paul Tondeur <paul@...> wrote: Hi Jon, -- [ JPG ] _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againHi all,
The NaN issue is fixed I beleive, update is in repo. Now... the issue of #rotationY only going from -90 / +90... This has to do with the fact that #rotationX / Y / Z are Euler-angles. A problem is that when one does pitch(), yaw() or roll() the above props are getting updated thru Matrix3D#matrix2euler. Now: the process to convert a matrix into Euler-angles is called 'factoring'. This process has one BIG disadvantage: the 'factorization' can yield TWO possible solutions (Different sets of eulers can descibe the same rotation). Bottomline is that yaw()-ing past rotationY = +/- 90 will make #rotationX / Z 180... Note that this behaviour only occurs with yaw(), pitch() and roll() => only these will trigger matrix2euler() Don't see a solution for this (think its just the nature of euler-angles)... anyone? Tim 2008/7/23 John Grden <neoriley@...>: > yeah I'm sure tim will likely get back to you - he's been working on this > pretty vigorously as of late > > Thanks for the posts guys, this does help! > > On Wed, Jul 23, 2008 at 3:21 PM, Paul Tondeur <paul@...> wrote: >> >> Hi Jon, >> >> Thanks for the suggestions to solve this problem! Unfortunately, none of >> these seems to work out correctly. >> I tried using the code for this method from revision 647. This seems to >> work without any problems right now. However I expect that this might >> introduce some new problems as well. >> >> It might be an idea that someone from the pv3d team looks into this and >> put this in the next update? >> As soon as I've found a way to update the current implemented code I'll >> post a new message. >> >> Paul >> >> >> -----Original Message----- >> From: papervision3d-bounces@... >> [mailto:papervision3d-bounces@...] On Behalf Of Jon Bradley >> Sent: woensdag 23 juli 2008 19:04 >> To: papervision3d@... >> Subject: Re: [Papervision3D] [Breaking Change] DO3D has new >> propslocalRotationX/ Y /Z , pitch, yaw, roll are methods again >> >> Ah, I'm a doofus. Didn't put in the matrix props correctly. This >> method is completely untested. >> >> public static function matrix2euler( m :Matrix3D, >> euler:Number3D=null, scale:Number3D=null ) : Number3D >> { >> euler = euler || new Number3D(); >> >> var x:Number = 0; >> var y:Number = 0; >> var c:Number = 0; >> >> euler.y = -Math.asin( m.n13); >> c = Math.cos(ay); >> >> if ( Math.abs(c) > 0.005 ) >> { >> x = m.n33/c; >> y = -m.n23/c; >> >> euler.x = Math.atan2(y,x); >> >> x = m.n11/c; >> y = m.n12/c; >> >> euler.z = atan2(y,x); >> } >> else >> { >> euler.x = 0; >> x = m.n22; >> y = m.n21; >> euler.z = atan2(y,x); >> } >> >> // Clamp values >> euler.x = (euler.x > 360) ? 360:((euler.x < 0) ? 0:euler.x); >> euler.y = (euler.y > 360) ? 360:((euler.y < 0) ? 0:euler.y); >> euler.z = (euler.z > 360) ? 360:((euler.z < 0) ? 0:euler.z); >> >> if(Papervision3D.useDEGREES) >> { >> euler.x *= toDEGREES; >> euler.y *= toDEGREES; >> euler.z *= toDEGREES; >> } >> >> return euler; >> } >> >> >> >> >> _______________________________________________ >> Papervision3D mailing list >> Papervision3D@... >> http://osflash.org/mailman/listinfo/papervision3d_osflash.org >> >> _______________________________________________ >> Papervision3D mailing list >> Papervision3D@... >> http://osflash.org/mailman/listinfo/papervision3d_osflash.org > > > > -- > [ JPG ] > _______________________________________________ > Papervision3D mailing list > Papervision3D@... > http://osflash.org/mailman/listinfo/papervision3d_osflash.org > > _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againOn Jul 23, 2008, at 5:13 PM, Tim Knip wrote:
Tricky, definitely. The only way to really do it is to record the previous euler result and using it to choose the proper solution. It's pretty easy to do for a situation where you have that previous result, but when that result does not exist you're always going to get 2 valid solutions (at a minimum) and infinite solutions (cosine 0) at a maximum. BTW, I think the code I posted is a more generic solution than what is there right now. I'd just have to go through it and test it out. It doesn't handle scale though. cheers, jon _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againAnd in response to my previous post about using the previous result from a matrix to euler conversion, the following code dump might be of assistance.
_______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againHere's a good reference: www.geometrictools.com/Documentation/EulerAngles.pdf
Apparenlty PV3D need 'ZYX' factoring. Tim 2008/7/23 Jon Bradley <jbradley@...>: > > On Jul 23, 2008, at 5:13 PM, Tim Knip wrote: > > Don't see a solution for this (think its just the nature of > > euler-angles)... anyone? > > Tricky, definitely. > The only way to really do it is to record the previous euler result and > using it to choose the proper solution. > It's pretty easy to do for a situation where you have that previous result, > but when that result does not exist you're always going to get 2 valid > solutions (at a minimum) and infinite solutions (cosine 0) at a maximum. > BTW, I think the code I posted is a more generic solution than what is there > right now. I'd just have to go through it and test it out. It doesn't handle > scale though. > cheers, > jon > _______________________________________________ > Papervision3D mailing list > Papervision3D@... > http://osflash.org/mailman/listinfo/papervision3d_osflash.org > > _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againOn Jul 23, 2008, at 5:42 PM, Tim Knip wrote: > Here's a good reference: www.geometrictools.com/Documentation/EulerAngles.pdf > > Apparenlty PV3D need 'ZYX' factoring. FYI, I love that resource. I've been using that for all sorts of good stuff. cheers, jon _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods againStill...
Lets view this conceptually: We can conclude that factoring eulers from a matrix is tricky to say the least. Confusion arises because pitch(), yaw() and roll() update the rotationX / Y / Z (eulers!) values to reflect the current rotation-matrix. Now: p/y/r work on the 'existing' rotation-matrix (ie: what we've set before thru rotationX/Y/Z). Now: is this conceptually sound? I'm not sure. Mixing eulers and p/y/r seems somewhat weird. Wouldn't it be better to simply choose a single system? As p/y/r work in the objects 'local' frame of reference, whilst rotationX / Y / Z work in the 'global' frame of reference. I'm sure this is something basic in 3D, but I'm lost at the moment. If anyone can shed any light on how other 3D-apps handle the diverse 'rotation types' (local, global, parent, etc) i'll be *very* happy. Tim 2008/7/24 Jon Bradley <jbradley@...>: > > On Jul 23, 2008, at 5:42 PM, Tim Knip wrote: > >> Here's a good reference: www.geometrictools.com/Documentation/EulerAngles.pdf >> >> Apparenlty PV3D need 'ZYX' factoring. > > FYI, I love that resource. I've been using that for all sorts of good > stuff. > > cheers, > > jon > > _______________________________________________ > Papervision3D mailing list > Papervision3D@... > http://osflash.org/mailman/listinfo/papervision3d_osflash.org > _______________________________________________ Papervision3D mailing list Papervision3D@... http://osflash.org/mailman/listinfo/papervision3d_osflash.org |
|
|
Re: [Breaking Change] DO3D has new propslocalRotationX/ Y /Z , pitch, yaw, roll are methods again |