Editing
Appendix/Ramblings/OculusRiftS
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Simultaneous Pair of Animated Rotations=== Now that we understand in a more complete fashion how <rotate> instructions are used to reorient ellipsoids (or, presumably, any specified visual_scene objects) and <animation><channel> instructions are used to implement time-dependent object spins, let's investigate whether or not a pair of <channel>-implemented spins can be carried out simultaneously. All four of the following model examples include the same set of initial (TIME = 0.0) <rotate> instructions, namely … <table border="0" align="center" width="90%"><tr><td align="left"> <pre> <node id="EntireEllipsoid" name="OculusRift_EFE"> <translate>0.0 8.0 0.0</translate>^M <rotate sid="rotationY">0.0 1.0 0.0 90.0</rotate>^M <rotate sid="rotationZ">0.0 0.0 1.0 90.0</rotate>^M <rotate sid="rotationX">1.0 0.0 0.0 90.0</rotate>^M <scale sid="scale">4.0 4.0 4.0</scale>^M ... </pre> </td></tr></table> <ul> <li> <font color="darkgreen">FullLast50ZX.dae on 26 April 2020</font>: <br />In this model we explicitly introduced a second set of <animation> instructions, which included a new, separate <channel> instruction. (The COLLADA code for both <animation> instructions is provided, in entirety, in the yellow-framed plain-text box immediately below.) Via its <channel> instruction, the first <animation> explicitly targeted a time-varying "EntireEllipsoid/rotationX.ANGLE" while, via its separate <channel> instruction, the second one established a time-varying "EntireEllipsoid/rotationZ.ANGLE". </li> </ul> <table border="0" align="center" width="90%"><tr><td align="left"> <div style="height: 400px; width: 100%; text-align: left; overflow: scroll; border: 3px solid yellow;"> <pre> <animation id="First_rotation_euler_X">^M <source id="First_rotation_euler_X-input">^M <float_array id="First_rotation_euler_X-input-array" count=" 2">^M 0.0000^M 10.0000^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_X-input-array" count=" 2" stride="1">^M <param name="TIME" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <source id="First_rotation_euler_X-output">^M <float_array id="First_rotation_euler_X-output-array" count=" 2">^M 90.0^M 270.0^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_X-output-array" count=" 2" stride="1">^M <param name="ANGLE" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <sampler id="First_rotation_euler_X-sampler">^M <input semantic="INPUT" source="#First_rotation_euler_X-input"/>^M <input semantic="OUTPUT" source="#First_rotation_euler_X-output"/>^M </sampler>^M <channel source="#First_rotation_euler_X-sampler" target="EntireEllipsoid/rotationX.ANGLE"/>^M </animation>^M <animation id="First_rotation_euler_Z">^M <source id="First_rotation_euler_Z-input">^M <float_array id="First_rotation_euler_Z-input-array" count=" 2">^M 0.0000^M 10.0000^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_Z-input-array" count=" 2" stride="1">^M <param name="TIME" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <source id="First_rotation_euler_Z-output">^M <float_array id="First_rotation_euler_Z-output-array" count=" 2">^M 90.0^M 180.0^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_Z-output-array" count=" 2" stride="1">^M <param name="ANGLE" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <sampler id="First_rotation_euler_Z-sampler">^M <input semantic="INPUT" source="#First_rotation_euler_Z-input"/>^M <input semantic="OUTPUT" source="#First_rotation_euler_Z-output"/>^M </sampler>^M <channel source="#First_rotation_euler_Z-sampler" target="EntireEllipsoid/rotationZ.ANGLE"/>^M </animation>^M </pre> </div> </td></tr></table> <ul> <li> <font color="darkgreen">FullLast51ZX.dae on 26 April 2020</font>: <br />In this model we effectively accomplished the same time-dependent motion of the EntireEllipsoid, but we did it from within a single <animation> instruction. </li> </ul> <table border="0" align="center" width="90%"><tr><td align="left"> <div style="height: 400px; width: 100%; text-align: left; overflow: scroll;"> <pre> <animation id="First_rotation_euler_X">^M <source id="First_rotation_euler_X-input">^M <float_array id="First_rotation_euler_X-input-array" count=" 2">^M 0.0000^M 10.0000^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_X-input-array" count=" 2" stride="1">^M <param name="TIME" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <source id="First_rotation_euler_X-output">^M <float_array id="First_rotation_euler_X-output-array" count=" 2">^M 90.0^M 270.0^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_X-output-array" count=" 2" stride="1">^M <param name="ANGLE" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <sampler id="First_rotation_euler_X-sampler">^M <input semantic="INPUT" source="#First_rotation_euler_X-input"/>^M <input semantic="OUTPUT" source="#First_rotation_euler_X-output"/>^M </sampler>^M <source id="First_rotation_euler_Z-output">^M <float_array id="First_rotation_euler_Z-output-array" count=" 2">^M 90.0^M 180.0^M </float_array>^M <technique_common>^M <accessor source="#First_rotation_euler_Z-output-array" count=" 2" stride="1">^M <param name="ANGLE" type="float"/>^M </accessor>^M </technique_common>^M </source>^M <sampler id="First_rotation_euler_Z-sampler">^M <input semantic="INPUT" source="#First_rotation_euler_X-input"/>^M <input semantic="OUTPUT" source="#First_rotation_euler_Z-output"/>^M </sampler>^M <channel source="#First_rotation_euler_X-sampler" target="EntireEllipsoid/rotationX.ANGLE"/>^M <channel source="#First_rotation_euler_Z-sampler" target="EntireEllipsoid/rotationZ.ANGLE"/>^M </animation>^M </pre> </div> </td></tr></table> <ul> <li> <font color="darkgreen">FullLast51XZ.dae on 27 April 2020</font>: <br />This "51XZ" model is identical to the one immediately above (i.e., 51ZX) except we swapped the order of the pair of <channel> instructions. </li> </ul> <table border="0" align="center" width="90%"><tr><td align="left"> <pre> <channel source="#First_rotation_euler_Z-sampler" target="EntireEllipsoid/rotationZ.ANGLE"/>^M <channel source="#First_rotation_euler_X-sampler" target="EntireEllipsoid/rotationX.ANGLE"/>^M </pre> </td></tr></table> RESULT: This set of three models has demonstrated that, indeed, a tumbling ellipsoid — that is, an ellipsoid that is not simply spinning about one of its three principal axes — can be nicely illustrated by executing a COLLADA-formatted code that prescribes a simultaneous pair of animated rotations. When we used the Mac's Preview app to execute these models (…50ZX, …51ZX, and …51XZ), they produced identical results. This was expected, but nevertheless gratifying. It was gratifying as well to find that we were able to use the Oculus Rift S to import and execute — without complaint — the ".glb" versions of all three of these models. But when viewed using the 3D VR environment of the Oculus Rift S, the ellipsoid's motion was clearly different from the motion that was seen using the 3D environment of the Mac's Preview app. It appeared as though, on the Oculus Rift S, the component of the motion governed by the "rotationX" parameter was in the opposite direction to the resulting "rotationX" motion as viewed on the Mac's Preview app. In order to test this hypothesis, we edited the "…51ZX" model to effectively change the ''direction'' of spin about the ellipsoid's longest axis. Instead of specifying that the ANGLE start at 90° and end at 270° — which dictates an angle increment of +18° per second — we specified that the ANGLE start at +90° and end at -90° [see model FullLast52ZX.dae, immediately below] — which dictates an angle increment of -18° per second. This generated the result we expected, that is, when this new model was viewed inside the Oculus Rift S environment, its spinning motion matched the motion that was seen when the Mac's Preview app was used to view the first three models. Of course, when this fourth model (…52ZX) was viewed using the Mac's Preview app, its motion changed as well and, now, matched the motion of the first three models when they were viewed in the Oculus Rift S environment. <ul> <li> <font color="darkgreen">FullLast52ZX.dae on 26 April 2020</font>: <br />This "52ZX" model is identical to "51ZX" except we have changed the START and END values of X-output-array. </li> </ul> <table border="0" align="center" width="90%"><tr><td align="left"> <pre> <float_array id="First_rotation_euler_X-output-array" count=" 2">^M 90.0^M -90.0^M </float_array>^M </pre> </td></tr></table> <font color="red"><b>27 April 2020:</b></font> At the present time it is unclear to us why the Mac's Preview app and the Oculus Rift S present different representations of the tumbling ellipsoid when they execute the same COLLADA code that includes this pair of simultaneous animated rotations.
Summary:
Please note that all contributions to JETohlineWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
JETohlineWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Tiled Menu
Table of Contents
Old (VisTrails) Cover
Appendices
Variables & Parameters
Key Equations
Special Functions
Permissions
Formats
References
lsuPhys
Ramblings
Uploaded Images
Originals
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information