[X3D-Public] Common translation tool via X3D PlaneSensor?

Limper, Max max.limper at igd.fraunhofer.de
Wed Mar 5 02:10:47 PST 2014

Dear all,

it seems many people want some tools to realize common 3D "handles" like known from popular modeling programs (Maya, Blender, ...) - here's an example from the three.js folks:
Since there have been many requests for such tools in X3DOM, we have started to implement the PointingDeviceSensor component´, as we didn't want to re-invent the wheel and keep conformant with X3D.

However, it turned out that it is quite hard to achieve what we want with the PointingDeviceSensor component, especially for the Transformation tool (please find attached a screenshot, as well as the corresponding X3D file).
There are two issues where I would be pleased to hear your opinion:

1.)    The axisRotation field lets us track pointer motion mapped onto a different plane than the standard Z=0 plane. This is great to realize the handles: For the X and Y handle, we keep the standard orientation of the virtual sensor plane. For the Z handle, we rotate it.
However, since the sensors always fire the _unrotated_ transformations (in the local sensor coordinate system), we need to apply an extra rotation above the target transform in order to translate motion on the Z handle properly. Is this intended?
My first impression was that it makes the application actually more complicated. InstantPlayer has changed the behavior towards a rotated output (applying the axisRotation) within the last week (dailybuilds only - this is experimental and can be reverted), while bs contact seems to ignore the axisRotation field (it was added in a later version of the spec?).

2.)    With the PlaneSensor component, there is an obvious drawback when implementing such axis-aligned transformation handles:
Since the sensor tracks motion on a plane, we get in trouble when we have a viewing direction that is perpendicular to the plane normal. For the attached example, you can see the problem if you look into the direction of the x-Axis and trigger the y-Axis' handle - in that case, the viewing direction will be perpendicular to the Z=0 plane used by the PlaneSensor, and you will get random transformation results.

Especially the second point seems to be caused by us using the PlaneSensor for things for which it was not originally intended.
However, I wasn't able to find any other X3D-conformant way to declare such common translation handles. Do you have any idea how X3D could provide something like that? Is there maybe already a proposal for X3D 4.0, which solves this problem?

Thanks a lot in advance!

Best Regards,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20140305/a2ef4285/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sensorDemo.x3d
Type: application/octet-stream
Size: 7996 bytes
Desc: sensorDemo.x3d
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20140305/a2ef4285/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TranslationHandles.png
Type: image/png
Size: 23606 bytes
Desc: TranslationHandles.png
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20140305/a2ef4285/attachment-0001.png>

More information about the X3D-Public mailing list