<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2035182658;
        mso-list-type:hybrid;
        mso-list-template-ids:-59087516 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:17;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>For example:</p><p class=MsoNormal><o:p> </o:p></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<o:p></o:p></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<o:p></o:p></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<o:p></o:p></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<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:9.5pt;font-family:"Courier New";color:black;background:white'><o:p> </o:p></span></b></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:joedwil@earthlink.net">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">GPU Group</a>; <a href="mailto:x3d-public@web3d.org">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><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Q. And could/should named navigation modes/types be<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>How about some more work on:<o:p></o:p></p><p class=MsoNormal>Extensible 3D (X3D) Part 1: Architecture and base components<o:p></o:p></p><p class=MsoNormal>Annex G Recommended navigation behaviours<o:p></o:p></p><p class=MsoNormal>(informative)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/behaviours.html">https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/behaviours.html</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Several reasons the annex was informative at that time, or even attempted. <o:p></o:p></p><p class=MsoNormal>Maybe more Is understood now, and this offers some guidance from some point in time.<o:p></o:p></p><p class=MsoNormal>Thanks, <o:p></o:p></p><p class=MsoNormal>Joe<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:gpugroup@gmail.com">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">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] [x3d] Spec Comment by dougsanden on 19775-1: X3DArchitecture - V3.0<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Forwarding some comments on other channels<o:p></o:p></p><div><p class=MsoNormal>Q. should specs > NavigationInfo attempt to abstract input / pointing device terminology<o:p></o:p></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:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Instead of mouse xy, it would be 'primaryXY channel' or  'primary 2D pointing device'<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></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:<o:p></o:p></p></div><div><p class=MsoNormal>WALK: yaw and Z are applied to last yaw-z pose, then pitch-roll applied<o:p></o:p></p></div><div><p class=MsoNormal>FREEFLY: yaw,z,pitch,roll are applied in any order<o:p></o:p></p></div><div><p class=MsoNormal>Perhaps something in a table format?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Thanks,<o:p></o:p></p></div><div><p class=MsoNormal>Doug Sanden<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Sat, Jun 13, 2020 at 12:15 PM GPU Group <<a href="mailto:gpugroup@gmail.com">gpugroup@gmail.com</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='margin-left:4.8pt'>"have your ray loop forget about ID=2"<o:p></o:p></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. <o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>- that makes no difference to MultiTouch/MultiDragSensor, which only works with down-drags.<o:p></o:p></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.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>And what you do when a button / touch is 'released': <o:p></o:p></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<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>- updrag-incapable input devices - you likely release/forget/recycle the ID number<o:p></o:p></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<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>- up-drags<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>- drag-ID<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'>- drag-ID recycling<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:4.8pt'><o:p> </o:p></p></div></div><p class=MsoNormal style='margin-left:4.8pt'><o:p> </o:p></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:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><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.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>A mouse-friendly use of a MultiDragSensor:<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>- your regular pointing device ray might be ID=1<o:p></o:p></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 <o:p></o:p></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. <o:p></o:p></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.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:9.6pt'>-Doug<o:p></o:p></p></div></div><p class=MsoNormal style='margin-left:9.6pt'><o:p> </o:p></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:<o:p></o:p></p></div></div></blockquote></div></blockquote></div><p class=MsoNormal style='margin-left:.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><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>