<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0px; color: #000000; font-family: arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1;">Question: I am building a Humanoid, should I use +Zout or +Zin?</p>
<p style="margin: 0.1rem 0px; color: #000000; font-family: arial, sans-serif; font-size: 16px; white-space: normal; line-height: 1;">answer Bing chat with GPT-4 :</p>
<p style="margin: 0.1rem 0px; font-size: 16px; white-space: normal; padding: 0px; user-select: text; word-break: break-word; line-height: 1; font-variation-settings: var(--cib-type-body2-font-variation-settings); color: #111111; font-family: -apple-system, Roboto, SegoeUI, 'Segoe UI', 'Helvetica Neue', Helvetica, 'Microsoft YaHei', 'Meiryo UI', Meiryo, 'Arial Unicode MS', sans-serif; background-color: rgba(255, 255, 255, 0.7);">"The choice between +Z in or +Z out depends on the software you are using. In general, +Z in is used for Maya and +Z out is used for Blender.</p>
<p style="margin: 0.1rem 0px; font-size: 16px; white-space: normal; padding: 0px; user-select: text; word-break: break-word; line-height: 1; font-variation-settings: var(--cib-type-body2-font-variation-settings); color: #111111; font-family: -apple-system, Roboto, SegoeUI, 'Segoe UI', 'Helvetica Neue', Helvetica, 'Microsoft YaHei', 'Meiryo UI', Meiryo, 'Arial Unicode MS', sans-serif; background-color: rgba(255, 255, 255, 0.7);">In Maya, the positive Z-axis points towards the camera while in Blender it points away from the camera. So if you are using Maya, you should choose +Z in and if you are using Blender, you should choose +Z out.</p>
<p style="margin: 0.1rem 0px; font-size: 16px; white-space: normal; padding: 0px; user-select: text; word-break: break-word; line-height: 1; font-variation-settings: var(--cib-type-body2-font-variation-settings); color: #111111; font-family: -apple-system, Roboto, SegoeUI, 'Segoe UI', 'Helvetica Neue', Helvetica, 'Microsoft YaHei', 'Meiryo UI', Meiryo, 'Arial Unicode MS', sans-serif; background-color: rgba(255, 255, 255, 0.7);">I hope that helps! Let me know if you have any other questions." </p>
<p style="margin: 0.1rem 0px; font-size: 16px; white-space: normal; padding: 0px; user-select: text; word-break: break-word; line-height: 1; font-variation-settings: var(--cib-type-body2-font-variation-settings); color: #111111; font-family: -apple-system, Roboto, SegoeUI, 'Segoe UI', 'Helvetica Neue', Helvetica, 'Microsoft YaHei', 'Meiryo UI', Meiryo, 'Arial Unicode MS', sans-serif; background-color: rgba(255, 255, 255, 0.7);"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">However, this might as well say +Zout and +Zin is: one is world standard 3D righthand coordinate system for interactive graphical scenegraphs and thus for character animation, and one uses Dx lefthand system based on proprietary(?) gaming platforms?</p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">One way I heard it was +Zout was designed a long time ago by true innovators of realtime interactive viz to reduce the effects of humans on global climate change and, so the tech would be free (true story). In this plan, the default view of the character to be animated from 0 0 0 is toward the audience, not the scenery at the back of the stage. The default camera is looking at the back of the stage which is in back of the character facing the audience out here in+Z. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">Another story was +Zin was chosen as best cockpit view with pilots butt rooted at 0 0 0 facing +z. In this case the default camera is looking +Z to see the airscape out the cockpit front window. However, for character animation, the Front camera is still looking at the front of the character, so the character to be animated in +Zin is facing -Z. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">Regardless of default Z, our X and Y are the same when viewing the world system Front. Just that for the view of the Front of the model at 0 0 0 is in positive space for +Zout, and in negative space for +Zin. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">So a fundamental disturbance began that made the vrml and the ogl righties and the Dx lefties a basic workflow conflict begin, now I am off the track, like html browser wars with some primary functionality. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">Whatever. For either system the default camera looking at 0 0 0 is going to be aligned along the z axis and looking either toward toward -Z if +Zout or +Z if +Zin, but always looking at the face of the model to be animated. The rear of the stage is visible behind the model. It is only fair to start there because default camera viewpoint looking at 0 0 0 is either either oriented toward -z for +Zout, or toward +z for +Zin.</p>
<p style="margin: 0.1rem 0px; line-height: 1;">In either case, the model at 0 0 0 is facing the default camera and the X and Y axis are the same. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">So what does this mean for transportable animations, which is the goal of all this. </p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">Joe</p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;">
<p><br>From: Joe D Williams <joedwil@earthlink.net><br>Sent: Aug 10, 2023 3:18 PM<br>To: X3D Graphics public mailing list <x3d-public@web3d.org>, Vincent Marchetti <vmarchetti@kshell.com><br>Subject: Re: Zee to thee or Zee to me?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div style="color: #000000; font-family: arial,sans-serif; font-size: 12pt;">
<p style="margin: 0.1rem 0; line-height: 1.0;">So, does a debate emerge?. HAnim Humanoid space is by default same as x3d default coordinate space. Basically the x3d Right hand rule where the default viewpoint is facing -Z and if you are on the stage, at 0 0 0 you are looking into the camera, gaze toward +Z. If you move from 0 0 0, the translation to the right is negative, left is positive, up is +Y, and back is -Z and forward+Z. That is also the default rotation for any transform Transform (Joint) of the Humanoid. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">OK, so that was all there was, of course special transformations and rotations of the X Y Z directions for special purposes, including HAnim. For years data has been collected for examples of human stature. Many of those measurements happened to be of deceased and others with most data taken in while the subject is at rest face up. Thus, much of that data used X Y as the ground plane and z as elevation from the floor. Since that is not the model pose we needed for prior to animation pose, the measurement coordinate system was just tilted up, and the model then naturally was facing +Z. This worked fine along with other uses technically, so all is good. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Until mid-19nineties or so. A major toolmaker, producer and distributor of graphics products decide that right-handedness has had its day and it was time for the lefties to create their niche. So, as the GL is forming along its traditions, Dx emerges. For some undeclared Dx reasoning, now the Z axis is yawed pi rads to make a lefthanded coordinate system. Funny things can happen when you animate a lefty with righty code. Think of the situation where the model doesn't know its Zs have been swapped. How will the model know this has happened? Born a righty but implemented as a lefty. Success or ptsd in store for user?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">There is a clear way to convert righty models to lefty models and a systematic way to convert animation codings between the setups, but does the HAnim standard need to recognize both systems. With the goal of accumulating motion and interaction libraries, does x3d HAinimHumanoid need a property that says lefties are allowed and accommodated? </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Anyway, is it worth thinking anything about this now? </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Any common ways of dealing with import of lefty animations into x3d righty system?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Thanks,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>
</div>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>