On 07/18/2015 09:12 PM, Gert Menke wrote:
I finally managed to get the rotation right. :-)
Cool.
I've just finished integrating the patch that Jochen posted,
it's now in:
https://github.com/openscad/openscad/tree/inputdriver2
First commit is basically the patch from the mailing list.
I've set Jochen as author as git does only support one, but
added you both in the about screen. If you want some link
added, let me know or just post a patch.
I've also added the default OpenSCAD licence to the drivers
and added the info about the initial Public Domain implementation
https://github.com/openscad/openscad/blob/inputdriver2/src/input/HidApiInputDriver.cc#L28
Let me know if that's ok for you both.
What I did in addition is:
Both Joystick and DBus driver are quite rough still and
Linux only.
ciao,
Torsten.
Am 18.07.15 um 21:12 schrieb Gert Menke:
I finally managed to get the rotation right. :-)
Not left? ;-)
Basically, I convert the euler/gimbal values to a rotation matrix, apply
the requested rotation and convert the matrix back to euler values.
Works like a charm and you don't have to worry about gimbal lock.
Have a look at:
https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
Also look at the examples from libspnav in libspnav-0.2.3/examples/cube
which is an example implementation of rotation using quaternions.
I tried your code and it is much better then the current state of the
affair. But it still has a problem: The rotation originates at the
origin of the view / camera. It should rotate the object around the
origin of the object. This is easy to see when you move the object away
from the view / camera origin. Try the cube example from libspnav, this
does it right. (Not left).
Also, I got multiple MainWindows to play nicely together. The currently
active window is the only one that interacts with the driver, and the
driver is opened/closed only by the first/last window.
I handle event reception in an extra thread and send custom QEvents to
the window in focus. Also I support libspnav (for Linux) and HIDAPI (for
MacOSX and possibly Windows) at the same time. See attached code.
PS: I tend to prefer the direct spnav connection over using X11 events,
There is an other reason: To get X11 events the spacenavd needs to
connect to the X11 server. To do so you have to start it from your
~/.xsession to get the needed authorization credentials. At least Debian
starts spacenavd at boot time, so it can't connect to the X11server as
it has no authorization credentials. Thus no X11 events from spacenavd.
The AF_UNIX way still works, as it is independent from X11.
because I hope Wayland will take over the world soon. (Which, in X11
terms, probably means in the next one or two decades, I guess...)
tschüß,
Jochen
Hi!
Am 18.07.2015 um 22:00 schrieb Torsten Paul:
I've just finished integrating the patch that Jochen posted,
That's great!
I've set Jochen as author as git does only support one, but
added you both in the about screen. If you want some link
added, let me know or just post a patch.
[...]
Let me know if that's ok for you both.
Fine by me, but to be fair, I don't see much of my code in there...
So if you're adding me to the about screen, please take my rotation
code. ;-)
Regards
Gert
Hi,
Am 18.07.2015 um 22:53 schrieb Jochen Kunz:
Am 18.07.15 um 21:12 schrieb Gert Menke:
I finally managed to get the rotation right. :-)
Not left? ;-)
:-P
Basically, I convert the euler/gimbal values to a rotation matrix, apply
the requested rotation and convert the matrix back to euler values.
Works like a charm and you don't have to worry about gimbal lock.
Have a look at:
https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
Also look at the examples from libspnav in libspnav-0.2.3/examples/cube
which is an example implementation of rotation using quaternions.
I have looked into quaternions a little, but the thing is that the
camera object still wants euler angles. And since the conversion to a
rotation matrix was already there, it seemed natural to use that.
I tried your code and it is much better then the current state of the
affair. But it still has a problem: The rotation originates at the
origin of the view / camera. It should rotate the object around the
origin of the object. This is easy to see when you move the object away
from the view / camera origin. Try the cube example from libspnav, this
does it right. (Not left).
Well, personally, I find it more intuitive to rotate around the origin
of the view.
Take for example an scad file that contains several objects that belong
together and are placed next to each other. When I want to inspect, say,
the leftmost object, I place it in the center of the screen and zoom in.
Then, rotating around a point that is currently off-screen would be
irritating to me.
There is an other reason: To get X11 events the spacenavd needs to
connect to the X11 server. To do so you have to start it from your
~/.xsession to get the needed authorization credentials. At least Debian
starts spacenavd at boot time, so it can't connect to the X11server as
it has no authorization credentials. Thus no X11 events from spacenavd.
The AF_UNIX way still works, as it is independent from X11.
You can use "spnavd_ctl x11 start" to tell the daemon to connect to the
X server once it's started. That works, but it's still a bit of a pain.
I'm glad we don't need to to it that way.
Please don't troll. ;-)
It's a personal thing between X11 and me.
I won't mention it again, promise. ;-)
Regards
Gert
On 07/18/2015 11:32 PM, Gert Menke wrote:
Fine by me, but to be fair, I don't see much of my code in there...
So if you're adding me to the about screen, please take my rotation code. ;-)
Yep, that's next on the list :-). Thanks for getting this to
work.
For now I've added a decoder for the different HIDAPI values my
Space Mouse Wireless produces and fixed the Windows compilation.
While my test setup is a bit unusual (Windows7 VM running on a
remote server + USB redirection of the 3D mouse from my Notebook),
I guess it should work on a normal Windows system too.
Multiple OpenSCAD-Windows of a single instance work fine, I'm
not yet sure how to support multiple OpenSCAD instances.
Probably this would mean to close the HID device when losing
the focus. Right now only the first instance is able to open
the device and the connect polling got lost in the driver
separation changes.
ciao,
Torsten.
tp3 wrote
While my test setup is a bit unusual (Windows7 VM running on a
remote server + USB redirection of the 3D mouse from my Notebook),
I guess it should work on a normal Windows system too.
I just ordered one, so can help with some testing shortly.
Unless specifically shown otherwise above, my contribution is in the Public Domain; To the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. This work is published globally via the internet. :) Inclusion of works of previous authors is not included in the above.
View this message in context: http://forum.openscad.org/Working-on-SpacePilot-support-need-help-with-rotation-tp13057p13246.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
Am 18.07.15 um 23:54 schrieb Gert Menke:
I have looked into quaternions a little, but the thing is that the
camera object still wants euler angles. And since the conversion to a
rotation matrix was already there, it seemed natural to use that.
Yes. As I understand things it is easier to calculate with quaternions
then linear algebra with a matrix. They also avoid gimbal lock. Thats
why they are preferred e.g. in robotics. You need conversions in both
cases and they are equivalent.
Well, personally, I find it more intuitive to rotate around the origin
of the view.
[...]
Probably this is a matter of personal taste or prior experience. The
demos from 3Dconnexion, libspnav and SGI (IIRC) rotate around the object
origin.
You can use "spnavd_ctl x11 start" to tell the daemon to connect to the
X server once it's started. That works, but it's still a bit of a pain.
I'm glad we don't need to to it that way.
tschüß,
Jochen
Am 18.07.15 um 23:32 schrieb Gert Menke:
Fine by me, but to be fair, I don't see much of my code in there...
tschüß,
Jochen
On 07/19/2015 05:02 AM, MichaelAtOz wrote:
tp3 wrote
While my test setup is a bit unusual (Windows7 VM running on a
remote server + USB redirection of the 3D mouse from my Notebook),
I guess it should work on a normal Windows system too.
I just ordered one, so can help with some testing shortly.
:-)
I've uploaded snapshots from the inputdriver2 branch to files.openscad.org
OpenSCAD-2015.07.20-x86-{32,64}_inputdriver2*
Right now, no config at all. I guess we want something similar
to the config UI FreeCAD has:
http://www.freecadweb.org/wiki/index.php?title=3Dconnexion_input_devices
ciao,
Torsten.
Thanks, I'll let you know how it goes when I get it.
Also I tried.... failed. Wasn't expecting much, but had to ask. See thread
below:
Hello Michael,
thank you for your interest in our products. We appreciate your dedication
to support the developers to integrate the support for our 3D mouse into
OpenSCAD.
Can you perhaps explain why you think that our license is prohibitive?
Regards,
Uta
From: 3Dconnexion Team [mailto:info@3dconnexion.com]
Sent: Friday, 10 July, 2015 02:38
To: support.us
Subject: Licencing for use with FOSS?
language: ENG
salutation: Mr.
first_name: Michael
last_name: Marx
company:
email: oz.at.michael@gmail.com
phone:
extension:
country: AUS
product: SpaceMouse Wireless
serial_number:
connector: USB
driver_version:
os: Linux
application:
summary: Licencing for use with FOSS?
description: Hi,
I'm a user of OpenSCAD, I am not part of the official developer group, but
help out with bug fixes and testing etc.
A forum thread has started looking to support your devices, however comments
say:
"The best way would be to use the API of 3Dconnexion. But the license of the
API is prohibitive for Free- / Open Source Software."
So they are looking to support it via HID.
OpenSCAD is free, as in http://www.gnu.org/philosophy/free-sw.html
So cannot include non free components.
Is there any chance you can release something under an open license to allow
wider implementation into FOSS products? Perhaps a bare bones driver? I
imagine you would sell more hardware.
Regards,
Michael
REMOTE_ADDR: 60.242.97.120
HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101
Firefox/38.0
DATE: 00:38:01 2015-07-10
!!!
Note: If you send an answer to this email please use the "Reply" function of
your email client and do not change the subject. Otherwise your email will
not be processed.
!!!
3Dconnexion Technical Support
Clarita-Bernhard-Str. 18
81249 Muenchen
Germany
Tel: +49 (89) 897 45 42 - 44
Fax: +49 (89) 897 45 42 - 50
TechnicalSupportWW@3dconnexion.com
Geschäftsführer: Antonio Pascucci
Sitz der Gesellschaft: München
Registergericht: München HRB 99232
From: OzAtMichael [mailto:oz.at.michael@gmail.com]
Sent: Monday, 20 July, 2015 03:07
To: 3Dconnexion Technical Support
Subject: RE: [CASE:68455] Licencing for use with FOSS? [3DCX-20150710-0004]
Hi Uta,
To a degree, this is not an issue as they appear to have got the HID driver
version working (at least on one platform) and are fine tuning it.
However for your edification I’ll list a few points, seeing I already wrote
them…
The definition of Open as applied to OpenSCAD is from
http://www.gnu.org/philosophy/free-sw.html (hereafter referred to FREESW to
save my fingers) it would help if you read it as it gives the ‘flavour’ of
the concept. Specifically it uses the GNU General Public Licence (hereafter
referred to GPL), various formats are available here
http://www.gnu.org/licenses/licenses.html#GPL. To quote FREESW “Roughly, it
means that the users have the freedom to run, copy, distribute, study,
change and improve the software.”
OpenSCAD is also in a number of distributions to FOSS operating systems
(Linux and BSD based), MacOS and available for MS Windows.
Some of the FOSS distributions are known to be fanatical in their
application of the terms of open licences. One recent example was a
requirement, by Debian IIRC, to remove a small Flatter icon/link (called
‘The Button’ by Flatter) in the OpenSCAD Help/About screen because the
Flatter Licence for The Button did not meet the FOSS standards. Specifically
at https://flattr.com/terms, Clause 7, para 4, “All rights, titles and
interests in and to any Button, including but not limited to all
intellectual property rights, are the exclusive property of Flattr. Each
Site Owner acknowledges and agrees that the Buttons are provided by a
non-exclusive licence, and not sold or transferred, as part of the Service
and that he will not use them for any use other than his permitted use of
the Service.” therefore it is viewed as a restriction, not free.
The OpenSCAD development & support community has members who are fully
versed in S/W Licencing and take it very seriously. Many are commercial
software developers.
In terms of your Licence, I (and others on the OpenSCAD forum) read the
licence for the SDK at
http://www.3dconnexion.eu/service/dla-programistow/licence-agreement.html
(hereafter referred to SDKL).
I presume that is the applicable Licence?
Where I quote text from the SDKL I will italicise it. Where I quote from the
FREESW or GPL definitions I will underline it.
Below I show sections of your SDKL and relevant conflicting terms from the
GPL or FREESW.
SDKL Clause 1. “Subject to … grants to you a…, revocable license …distribute
in object code form the 3DCONNEXION SDK.” & “In addition no license is
granted under any patents that may be or later become infringed by your
modifications or derivative works”
GPL Preamble “For example, if you distribute copies of such a program,
whether gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive or
can get the source code.” and be able to distribute the source code, – I
also suspect revokable would be an issue. FREESW “The freedom to run the
program as you wish means that you are not forbidden or stopped from doing
so.”
GPL clause 11. “Patents”, I’m not as knowledgeable about patents, but at
face value this clause is in conflict with SDKL Clause 1.
SDKL Clause 2. ‘In the format set forth below, you must provide attribution
…"3D input device development tools and related technology are provided
under license from 3Dconnexion. © 3Dconnexion 1992 - 2013. All rights
reserved." ‘.
All rights reserved is in conflict with the GPL. While FOSS and GPL do allow
(and in some cases proscribe) attribution, it is in accompanying copyright
documents or source code. It does make allowances for a copyright and
warranty disclaimer to be displayed. I suggest the ‘must’ aspect would be
viewed badly, as too prescriptive.
SDKL Clause 3. “Restrictions”. Just not compatible with FOSS.
SDKL Clause 5. “Confidentiality”. Ditto.
That ends the discussion of licensing.
If (and as I did not agree to the licences, so I did not download the SDK,
and hence don’t know), the SDK requires the use of the 3DxWare driver to
integrate with other software, the absence of Linux support would rule out a
high proportion of the OpenSCAD user community.
So my original suggestion of the possibility of releasing a bare bones
driver under GPL (or compatible) license. Without your most precious trade
secrets.
I understand companies producing graphics cards and other peripherals have
managed to release GPL compliant drivers in some way. Possibly resulting in
their lawyers having a coronary ;)
Regards,
Michael.
p.s. I have just ordered a SpaceMouse.
p.p.s. There is not much discussion re Licencing, but the HID support is
discussed in the forum at:
http://forum.openscad.org/Working-on-SpacePilot-support-need-help-with-rotation-td13057.html
Hi Michael,
thank you for sending the information. The licensing stuff seems to be
rather complicated. At least for a Technician like me. ;)
The direct access of our devices seem to be the only way then to implement
it in OpenSCAD. This works fine as long as you are using a device that was
known by the developers at the time when the development was done. If
3Dconnexion launches a new device the developers have to make sure this
device is recognized by OpenSCAD, too. Additionally problems will occur if
someone is using OpenSCAD together with an application that has implemented
the support for the 3D mouse by using our SDK and therefore is using our
driver. But this might not be the case – or not your problem then. ;)
Let me know if you have any further question. Thanks.
Regards,
Uta
Unless specifically shown otherwise above, my contribution is in the Public Domain; To the extent possible under law, I have waived all copyright and related or neighbouring rights to this work. This work is published globally via the internet. :) Inclusion of works of previous authors is not included in the above.
View this message in context: http://forum.openscad.org/Working-on-SpacePilot-support-need-help-with-rotation-tp13057p13257.html
Sent from the OpenSCAD mailing list archive at Nabble.com.