discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Working on SpacePilot support, need help with rotation

TP
Torsten Paul
Sat, Jul 18, 2015 8:00 PM

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:

  • Separate into different driver objects
  • Move to QThread as c++11 is not yet possible as default
  • Collect some more USB IDs (totally untested)
  • Add Joystick driver (works with my SpaceMouse Wireless
    without spacenavd installed/running)
  • Add DBus Remote Driver based on QtDBus
  • Make all drivers compile time optional

Both Joystick and DBus driver are quite rough still and
Linux only.

ciao,
Torsten.

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: - Separate into different driver objects - Move to QThread as c++11 is not yet possible as default - Collect some more USB IDs (totally untested) - Add Joystick driver (works with my SpaceMouse Wireless without spacenavd installed/running) - Add DBus Remote Driver based on QtDBus - Make all drivers compile time optional Both Joystick and DBus driver are quite rough still and Linux only. ciao, Torsten.
JK
Jochen Kunz
Sat, Jul 18, 2015 8:53 PM

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...)

Please don't troll. ;-)

tschüß,
Jochen

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...) Please don't troll. ;-) -- tschüß, Jochen
GM
Gert Menke
Sat, Jul 18, 2015 9:32 PM

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: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
GM
Gert Menke
Sat, Jul 18, 2015 9:54 PM

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

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
TP
Torsten Paul
Sun, Jul 19, 2015 12:54 AM

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.

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.
M
MichaelAtOz
Sun, Jul 19, 2015 3:02 AM

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.

The TPP is no simple “trade agreement.”  Fight it! http://www.ourfairdeal.org/

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.

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. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ -- 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.
JK
Jochen Kunz
Sun, Jul 19, 2015 7:18 AM

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.

"spnavd_ctl x11 start" didn't work for me due to privilege separation
issues.

tschüß,
Jochen

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. "spnavd_ctl x11 start" didn't work for me due to privilege separation issues. -- tschüß, Jochen
JK
Jochen Kunz
Sun, Jul 19, 2015 7:34 AM

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...

I took some "inspirations" from your code to refactor my code. (E.g.
separating translation and rotation in methods of calss QGLView, using
spnav for Linux.)

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... I took some "inspirations" from your code to refactor my code. (E.g. separating translation and rotation in methods of calss QGLView, using spnav for Linux.) -- tschüß, Jochen
TP
Torsten Paul
Mon, Jul 20, 2015 6:38 PM

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.

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.
M
MichaelAtOz
Mon, Jul 20, 2015 10:34 PM

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

www.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.

The TPP is no simple “trade agreement.”  Fight it! http://www.ourfairdeal.org/

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.

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 www.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. The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ -- 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.