<div dir="ltr">My experience implementing (v4 proposed) MultitouchSensor in freewrl:<div><br></div><div>Results:</div><div><p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><a href="http://dug9.users.sourceforge.net/web3d/tests/sensors/DragCascade_MultitouchSensor.mp4">http://dug9.users.sourceforge.net/web3d/tests/sensors/DragCascade_MultitouchSensor.mp4</a></p>

<p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><a href="http://dug9.users.sourceforge.net/web3d/tests/sensors/DragCascade_MultitouchSensor.x3d">http://dug9.users.sourceforge.net/web3d/tests/sensors/DragCascade_MultitouchSensor.x3d</a></p><p class="MsoNormal" style="margin:0cm 0cm 0.0001pt;font-size:10pt;font-family:Verdana"><br></p></div><div>Method:</div><div>freewrl has had a multitouch emulator built in for serveral years.</div><div>- a command line option turns it on, then it uses the mouse differently</div><div>-- a RMB click creates a new drag -with a touchID</div><div>-- a LMB click near an existing drag will grab it, and LMB drag will drag it</div><div>-- another RMB click on an existing drag will delete it</div><div>- and then whereever we are passing around mouse coordinates and button status, we pass an additional touchID.</div><div>-- I verified the touch emulator approach with another emulator that puts touches into the windows desktop from a 2nd computer, and inhales the touches via windows events.</div><div>But all we did was drag 2 separate dragsensors with 2 separate touches. <br></div><div><br></div><div>This new spec node adds a node that will take 2+ touches and do something interesting - output a rotation and scale, along with the usual planesensor type translation.<br></div><div>So I started by copying the Planesensor and hacking it to count active drags, and when it has only one, it acts like a PlaneSensor, and when it has 2+ it uses the first 2 to compute rotation and scale </div><div><br></div><div>Time:</div><div>Took 2.5 days. fiddly hard to understand code in freewrl. Hope other browsers are more organized.</div><div><br></div><div>And of the 2.5 days I spent 1/2 day reviewing a least_squares option which I didn't use, but could be used with 3+ points to compute a best-fit affine (6 parameter - 2 scales, 1 shear, 1 rotation, and xy 2 translations)</div><div><br></div><div>-Doug</div></div>