<div dir="ltr"><div dir="ltr"><p class="MsoNormal">EXPLORE III</p>

<p class="MsoNormal">For navigaiton we mostly use the pointing device in the
graphics window as a 2D slidebar Often the slidebar maps to parameters only
indirectly related to the position of the 2D slidebar.</p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">In theory, a number of regular slidebars or 2D slidebars
could be provided separately from the graphics window, to control the
parameters.</p>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal">Here's another re-write of EXPLORE that uses the notion of
general scalar and 2D scalar controls, and leaving it to browsers to apply
meaning to the slidebar value, perhaps with named tabs on 2D touch area
separate from graphics area, or navigation-meaning-named modifier buttons</p><p class="MsoNormal"><br></p>

<p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Courier New";color:black">"EXPLORE"</span><span style="font-size:11pt;color:black"> navigation
is used to provide consistent <span style="background:yellow">mapping of user inputs</span> to navigation for both geospatial and
Cartesian modes. Browsers will provide scalar and 2D scalar controls with
meanings applied during drags. When </span><span style="font-size:8.5pt;font-family:"Courier New";color:black">"EXPLORE"</span><span style="font-size:11pt;color:black"> mode is active:<span></span></span></p>

<ol style="margin-top:0cm" start="1" type="a">
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">vertical axis rotation - scalar control -</span><span style="font-size:11pt"> Dragging the <span style="background:yellow">scalar control</span> causes
     viewpoint rotation about a vertical axis that passes through the point of
     rotation. This vertical axis is always perpendicular to the viewpoint
     vector. Motion in the <span style="background:yellow">-ve</span>
      direction rotates the viewpoint
     clockwise (as viewed from the top) about the vertical axis. Rotation is
     tied to the motion of the <span style="background:yellow">scalar control</span>; there is no damping or delay.<span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">horizontal axis rotation - scalar control</span><span style="font-size:11pt"> - Dragging the scalar
     control causes rotation about a horizontal axis that passes through the
     point of rotation. Motion in the <span style="background:yellow">+ve</span> direction rotates the viewpoint clockwise
     (as viewed from the right) about the horizontal axis. Rotation is tied to
     the motion of the pointing device; there is no damping or delay.<span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">zoom - scalar control - drag movement in +ve direction</span><span style="font-size:11pt"> causes the viewpoint
     to zoom toward and <span style="background:yellow">-ve
     away</span> from the point of rotation. <span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">zoom with</span><span style="font-size:11pt"> disabled touch sensors <span style="background:yellow">- scalar control - similar to zoom</span><span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt">pan - 2D control - motion
     of the <span style="background:yellow">2d control</span>
     is translated into a pan of the viewpoint in a plane passing through the
     viewpoint perpendicular to the vector pointing to the point of rotation. <span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt">pan without
     touchsensors <span style="background:yellow">- 2D
     control - similar to pan</span><span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">object / point centering</span><span style="font-size:11pt"> - 2D control - The point of rotation can be
     set <span style="background:yellow">by casting a ray
     onto a scene object</span> . To provide feedback that the point has been
     selected, the viewpoint shall zoom about twenty percent of the distance
     toward that point.<span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt">isOver ray display - if
     the <span style="background:yellow">ray</span> is
     positioned over a TouchSensor, the <span style="background:yellow">ray</span> shall change its appearance to indicate a
     <span style="background:yellow">click</span> will
     activate the TouchSensor.<span></span></span></li>
 <li class="MsoNormal" style="color:black;margin-top:2.7pt"><span style="font-size:11pt;background:yellow">navigation - only - 2D control -</span><span style="font-size:11pt"> overrides any TouchSensor, functions as the
     viewpoint navigation tool<span></span></span></li>
</ol>

<p class="MsoNormal"><span> </span></p>

<p class="MsoNormal"><span> </span></p></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 14, 2020 at 11:41 AM GPU Group <<a href="mailto:gpugroup@gmail.com">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">my attempt to abstract the EXPLORE NavigationInfo type:<div><br></div><div><p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:8.5pt;font-family:"Courier New";color:black">"EXPLORE"</span><span style="font-size:11pt;color:black"> navigation
is used to provide consistent <s><span style="background:yellow">keystroke</span></s><span style="background:yellow">
<u>input device mapping</u></span> navigation for both geospatial and Cartesian
modes. <span style="background:yellow">Common terms:</span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;color:black;background:yellow">Drag - moving primary pointing device with a
trigger activated, primary trigger unless otherwise specified</span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;color:black;background:yellow">Click - activating and releasing a trigger, primary
trigger unless otherwise specified</span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;color:black;background:yellow">up/down,left/right - relative to viewport sides</span><span style="font-size:11pt;color:black"></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;color:black;background:yellow">trigger button state-permutation names:</span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">1.primary</span></em></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">2. secondary</span></em></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">3. tertiary</span></em></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">4. quaternary</span></em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow"></span></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">5. </span><em><span style="font-family:Helvetica">quinary</span></em></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">6</span></em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">, </span><em><span style="font-family:Helvetica">senary</span></em></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">7.</span></em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow"> </span><em><span style="font-family:Helvetica">septenary</span></em></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">8.</span></em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow"> </span><em><span style="font-family:Helvetica">octonary</span></em></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">9. </span><em><span style="font-family:Helvetica">nonary</span></em></p>



<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow">10</span></em><span style="font-size:11pt;font-family:Helvetica;color:rgb(42,42,42);background:yellow"> </span><em><span style="font-family:Helvetica">denary</span></em><span style="font-size:11pt;color:black"></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt;color:black">When </span><span style="font-size:8.5pt;font-family:"Courier New";color:black">"EXPLORE"</span><span style="font-size:11pt;color:black"> mode is
active:</span></p>

<ol style="margin-top:0cm;margin-bottom:0cm" start="1" type="a">
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt">Dragging left and
     right <s><span style="background:yellow">while
     holding the left button down</span></s> causes viewpoint rotation about a
     vertical axis that passes through the point of rotation. This vertical
     axis is always perpendicular to the viewpoint vector. Motion in the left
     direction rotates the viewpoint clockwise (as viewed from the top) about
     the vertical axis. Rotation is tied to the motion of the pointing device;
     there is no damping or delay.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt">Dragging <s><span style="background:yellow">the</span></s> up and down <s><span style="background:yellow">while holding the left
     button down</span></s> causes rotation about a horizontal axis that passes
     through the point of rotation. Motion in the up direction rotates the
     viewpoint clockwise (as viewed from the right) about the horizontal axis.
     Rotation is tied to the motion of the pointing device; there is no damping
     or delay.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><s><span style="font-size:11pt;background:yellow">Holding the Ctrl key (or other key that may be user-selectable)
     down modifies the left button down</span></s><span style="font-size:11pt;background:yellow"> Secondary
     trigger</span><span style="font-size:11pt"> drag
     movement <s><span style="background:yellow">such that</span></s>
     up <s><span style="background:yellow">and</span></s>
     down <s>(Y-axis)</s> movement causes the viewpoint to zoom toward and from
     the point of rotation. <span style="background:yellow">Tertiary
     trigger</span> Left and right motion <s><span style="background:yellow">while Ctrl is held down has no effect. Shift and
     Ctrl (or other keys that may be user-selectable) held at the same time
     also</span></s> enables zoom but disables TouchSensors.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><s><span style="font-size:11pt;background:yellow">Holding the Alt key (or other key that may be user-selectable)
     modifies the movement such that motion of the pointing device while the
     left button is held down</span></s><span style="font-size:11pt;background:yellow"> Quaternary
     trigger movement</span><span style="font-size:11pt"> is translated into a pan of the viewpoint in a plane passing
     through the viewpoint perpendicular to the vector pointing to the point of
     rotation. <s><span style="background:yellow">Shift
     and Alt (or other keys that may be user-selectable) held at the same time
     also</span></s><span style="background:yellow"> Quinary
     trigger</span> enables pan but disables TouchSensors.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt">The point of rotation
     can be set by <s><span style="background:yellow">holding
     the Shift key (or other key that may be user-selectable) while</span></s>
     pointing at an object and clicking <s><span style="background:yellow">the left button</span></s><span style="background:yellow"> senary trigger</span>. To provide feedback
     that the point has been selected, the viewpoint shall zoom about twenty
     percent of the distance toward that point.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><span style="font-size:11pt">If the pointer is
     positioned over a TouchSensor, the pointer icon shall change its
     appearance to indicate that a <s><span style="background:yellow">left</span></s><span style="background:yellow"> primary</span> click will activate the TouchSensor.</span></li>
 <li class="MsoNormal" style="color:black;margin:2.7pt 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><s><span style="font-size:11pt;background:yellow">Holding the Shift key (or other key that may be user-selectable)</span></s><span style="font-size:11pt;background:yellow"> Septenary trigger</span><span style="font-size:11pt"> overrides any TouchSensor that the pointer may be over and forces
     the pointing device to function as the viewpoint navigation tool; </span><i><span style="font-size:11pt">i.e.</span></i><span style="font-size:11pt">, drag operations cause rotation, click operations cause center of
     rotation point selection.</span></li>
</ol>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><s><span style="font-size:11pt;color:black;background:yellow">Whether user-selectable alternatives to the Shift,
Ctrl, and/or Alt are provided is browser-dependent. If provided, the method by
which such alternatives are specified is also browser-dependent.</span></s><s><span style="font-size:11pt;color:black"></span></s></p></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 14, 2020 at 9:45 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Yes I see there's terminology it looks like its is mapping keyboard to work as a pointing device<div>Hypothesis: there could be a way to remap EXPLORE (which is heavy in button / pointing-device-motion specifics)</div><div>a) write it more generally somehow</div><div>b) then as with Appendix G, do some device-specific mappings.</div><div>Same with (new v4) HELICOPTER, GAME motions - could they be written generally like the WALK, FLY, EXAMINE - with very little talk about buttons and pointing devices - and then somehow articulate mappings in Appendix G?</div><div><br></div><div>Here are some device scenarios</div><div>i) desktop 2 button + wheel mouse, full keyboard with arrow keys, ctrl,shft,alt<br>ii) mobile - gyro, touch screen<br>iii) non-mobile touch screen<br>iv) HMD with gyro and viewport center<br></div><div>v) desktop game controller</div><div><br></div><div>EXPLORE could define 'drag / dragging' in such a way to share with HELICOPTER, GAME and new ones if they can't be specified notion-lessly.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 14, 2020 at 9:36 AM Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div><p class="MsoNormal">For example:</p><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal"><b><span style="font-size:9.5pt;font-family:"Courier New";color:black;background:white">WALK:      forward/backward/left/right<u></u><u></u></span></b></p><p class="MsoNormal"><b><span style="font-size:9.5pt;font-family:"Courier New";color:black;background:white">FLY:       forward/backward/left/right<u></u><u></u></span></b></p><p class="MsoNormal"><b><span style="font-size:9.5pt;font-family:"Courier New";color:black;background:white">EXAMINE:   orbit up/down/left/right around center of rotation<u></u><u></u></span></b></p></div><p class="MsoNormal"><b><span style="font-size:9.5pt;font-family:"Courier New";color:black;background:white">           with camera pointed at center of rotation<u></u><u></u></span></b></p><p class="MsoNormal"><b><span style="font-size:9.5pt;font-family:"Courier New";color:black;background:white"><u></u> <u></u></span></b></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10</p><p class="MsoNormal"><u></u> <u></u></p><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:joedwil@earthlink.net" target="_blank">Joseph D Williams</a><br><b>Sent: </b>Sunday, June 14, 2020 8:31 AM<br><b>To: </b><a href="mailto:gpugroup@gmail.com" target="_blank">GPU Group</a>; <a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] [x3d] Spec Comment by dougsanden on 19775-1:X3DArchitecture - V3.0</p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li style="margin-left:0in">Q. And could/should named navigation modes/types be<u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">How about some more work on:<u></u><u></u></p><p class="MsoNormal">Extensible 3D (X3D) Part 1: Architecture and base components<u></u><u></u></p><p class="MsoNormal">Annex G Recommended navigation behaviours<u></u><u></u></p><p class="MsoNormal">(informative)<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/behaviours.html" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/behaviours.html</a><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Several reasons the annex was informative at that time, or even attempted. <u></u><u></u></p><p class="MsoNormal">Maybe more Is understood now, and this offers some guidance from some point in time.<u></u><u></u></p><p class="MsoNormal">Thanks, <u></u><u></u></p><p class="MsoNormal">Joe<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal"><b>From: </b><a href="mailto:gpugroup@gmail.com" target="_blank">GPU Group</a><br><b>Sent: </b>Sunday, June 14, 2020 6:28 AM<br><b>To: </b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] [x3d] Spec Comment by dougsanden on 19775-1: X3DArchitecture - V3.0<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Forwarding some comments on other channels<u></u><u></u></p><div><p class="MsoNormal">Q. should specs > NavigationInfo attempt to abstract input / pointing device terminology<u></u><u></u></p></div><div><p class="MsoNormal">- so gyros, game controllers/pads, touch screens, 3D pointing devices ?, HMD / AR gyro/view-center - can all be mapped more generically:<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Instead of mouse xy, it would be 'primaryXY channel' or  'primary 2D pointing device'<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Q. And could/should named navigation modes/types be specified in terms of the order and transform element being mapped to:<u></u><u></u></p></div><div><p class="MsoNormal">WALK: yaw and Z are applied to last yaw-z pose, then pitch-roll applied<u></u><u></u></p></div><div><p class="MsoNormal">FREEFLY: yaw,z,pitch,roll are applied in any order<u></u><u></u></p></div><div><p class="MsoNormal">Perhaps something in a table format?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Thanks,<u></u><u></u></p></div><div><p class="MsoNormal">Doug Sanden<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Jun 13, 2020 at 12:15 PM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt"><div><div><p class="MsoNormal" style="margin-left:4.8pt">"have your ray loop forget about ID=2"<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">One notable difference between a touch device and a mouse: a mouse has an up-drag. A touch doesn't. <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- that makes no difference to MultiTouch/MultiDragSensor, which only works with down-drags.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">Where you see the difference: isOver, and navigation modes that assume updrag is available - like proposed GAME mode.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">And what you do when a button / touch is 'released': <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- updrag-capabile input devices: you likely just change a button state, and keep drawing the cursor at the last location<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- updrag-incapable input devices - you likely release/forget/recycle the ID number<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">SUMMARY: web3d specs may need more terms to describe input device classes and capabilities more abstractly<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- up-drags<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- drag-ID<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt">- drag-ID recycling<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:4.8pt"><u></u> <u></u></p></div></div><p class="MsoNormal" style="margin-left:4.8pt"><u></u> <u></u></p><div><div><p class="MsoNormal" style="margin-left:4.8pt">On Sat, Jun 13, 2020 at 11:59 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt"><div><div><p class="MsoNormal" style="margin-left:9.6pt">Drags need an ID ie 1,2,3 and that comes normally in windows 7 desktop WM_TOUCH events, or more precisely you can get an index number in a lookup table of touches.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">A mouse-friendly use of a MultiDragSensor:<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">- your regular pointing device ray might be ID=1<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">- to create a second ray, you can park/freeze ID=1 with some mouse or keyboard button ie MMB - and push a 2nd one with ID=2 onto a stack <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">- then you would move drag ID= 2, until done with scaling and rotation, and unfreeze / pop to get back to dragging ID=1 - maybe same button- and have your ray loop forget about ID=2 after that, until the user repeats the cycle. Or something like that. <u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">SUMMARY: yes - it can be abstracted from touch devices, but you still need a per-drag ID.<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-left:9.6pt">-Doug<u></u><u></u></p></div></div><p class="MsoNormal" style="margin-left:9.6pt"><u></u> <u></u></p><div><div><p class="MsoNormal" style="margin-left:9.6pt">On Sat, Jun 13, 2020 at 11:18 AM Spec Feedback <<a href="mailto:spec-comment@web3d.org" target="_blank">spec-comment@web3d.org</a>> wrote:<u></u><u></u></p></div></div></blockquote></div></blockquote></div><p class="MsoNormal" style="margin-left:0.2in">-- Submitter indicates that this comment may be public: *Yes* --<br><br>Comment on 19775-1: X3D Architecture - V3.0<br>MultiTouchSensor<br><br><br>-----------------<br>MultiTouchSensor > Touch vs Drag > MutliDragSensor<br>In theory it should be called something that abstracts it from the particular<br>type of input device.<br>Drag is more input device neutral - there could be other device-neutral<br>terms.<br>For example a typical game controller has 2 thumb sticks that could act like<br>2 touches.<br>A combination of device gyro -in HMD or mobile phone or Wii Controller- and<br>freeze-button could shoot one ray, freeze it as one touch, then shoot another<br>ray to drag.<br>Internally, code works with a plane sensor xy origin when a button goes<br>down/a ray is shot, then a drag xy is compared to the orgin xy to see how far<br>in what direction: internally its drag-oriented and doesn't care what device<br>shot the rays.<br>-----------------<br><br>Submitted on Saturday, 2020,  June 13 - 11:18am<br>by dougsanden (dougsanden )<br>IP: 75.159.18.239<br><br>See: <a href="https://www.web3d.org/node/1694/submission/4039" target="_blank">https://www.web3d.org/node/1694/submission/4039</a><br><br><br>_______________________________________________<br>x3d mailing list<br><a href="mailto:x3d@web3d.org" target="_blank">x3d@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d_web3d.org</a><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></blockquote></div>
</blockquote></div>
</blockquote></div>