[chimera-dev] 3dconnexion

Dougherty, Matthew T matthewd at bcm.edu
Thu Mar 7 19:12:15 PST 2013


I had to get into the code and knock the rotation values down by dividing by 15.
no one in the lab uses 3dconnexion, excited at first, disappointed in the end.
It is like a bomb when you touch it; effectively useless and creates problems.

for the mac I would recommend ditching it, tell the users to go with controllermate.
It is the way to go on the mac, no reservations on that recommendation.
I can do two simultaneously, manage the focus, and create a usable response function.
Plus I can easily program in 5 shuttle expresses, logitech g13, logitech extreme pro, and an xkey 3 button foot pedal.
All can be interconnected as functional multipliers, so I am building fail safe combos to prevent accidental button pushes that erase my positions, etc.

Today I did a 2 hour dome/USB demo with Jane Richardson.  She sees how it will make a difference in her package.  I can even use it to finesse different s/w packages to behave at the same time.  For example, matching chimera stereo output, to frame pack on HDMI using a third party system utility.  Making stereo operate automatically is a priority.

Chimera.app/Contents/Resources/lib/_spacenavigator.so
I was trying to avoid that, I would rather not muck with the code that way.
I guess I could write a keyboard shortcut to cull it reliably, or a startup script to look for it and erase it.


 http://plato.cgl.ucsf.edu/trac/chimera/ticket/11512
completely forgot about that.
if it is going to be a major problem, close it.
again I will nail it with controllermate using a contour shuttle express to do the z moves, and 3d connexion to do the xy translations.
A lot of this translation/rotation stuff is like mountain climbing, one misstep and you are upside down falling into a pit of WTF.
the 6D stuff is nice, but for most humans it is going to be a long learning curve, until at least you can properly set the response curve to match one's habits.
Which puts its success squarely on getting the human interface correct, either by self investigation, training or examples.


Two related questions:
1) At this point, all my displays are moving to 1080p, so I have fixed reproducible real estate that I can account for.
How would I call up the "camera side view" and place the top corner at pixel 500,700? Then close it when I am done using python?

2) I have started going head on to master solid rendering. I have been trying to avoid it for 20 years, because of its complexity.  Isosurface, one variable, get the researcher to confess the number.  It is complex because of 1) the methods, and 2) the void on how to manage the control space; I can see situations where 100-1000 variables are needed to get the data to be stunningly visual.  Any thoughts on that?  Compared to the Amira's volume render gui, Chimera is pretty limited; but I am thinking through commands and python it may have more possibilities making it more formidable.  Are the docs comprehensive, or will I need to get into the source to access more features?

Are there any volume rendering chimera power users?
extensions?


Matthew Dougherty
National Center for Macromolecular Imaging
Baylor College of Medicine
________________________________________
From: Tom Goddard [goddard at sonic.net]
Sent: Thursday, March 07, 2013 6:07 PM
To: Dougherty, Matthew T
Cc: chimera-dev at cgl.ucsf.edu
Subject: Re: [chimera-dev] 3dconnexion

Hi Matt,

   Chimera use of 3dconnexion devices like Space Navigator was a pain to
implement because 3dconnexion has different APIs on Windows, Mac and
Linux -- so we have 3 different ways of interfacing to the device for
those 3 operating systems.  None of them have been very well implemented.

   On Mac OS Chimera gets the space navigator events via a C++ library
we wrote.  It is

      Chimera.app/Contents/Resources/lib/_spacenavigator.so

Remove or rename that (e.g. to _spacenavigator.so.keep) and Chimera will
not get an space navigator events.

   I recently tried two space navigators on the Mac by modifying
_spacenavigator.so.  I used one to dock a ligand while the other changed
the view point.  I didn't check in that code though.  But it was not
difficult to get the separate events from two devices. I haven't decided
whether to check in that code.  It requires some clean-up that I don't
have time for right now.

   The Mac Chimera interface gets the space nav events even when Chimera
does not have the input focus.  I think this is probably what you mean
by it is using the low level driver.  I spent many hours trying to get
it to receive only events when Chimera had the input focus, there is an
argument to a 3dconnexion initialization routine that is supposed to do
this, but nothing worked.  I found no working example on the web
either.  Look at the Chimera _spacenavigator.so code in the
spacenav_connect() routine if you want to see where the problem is.

http://plato.cgl.ucsf.edu/trac/chimera/browser/trunk/libs/_spacenavigator/spacenav.cpp

My experience has been that the 3dconnexion drivers are very poor
compared to the hardware quality.

   Chimera has the scroll wheel hard-coded to zoom.  That is bad. I made
a Chimera request to fix this 4 months ago when you asked

     http://plato.cgl.ucsf.edu/trac/chimera/ticket/11512

Has not received any attention.

     Tom


-------- Original Message --------
Subject: [chimera-dev] 3dconnexion
From: Dougherty, Matthew T
To: chimera-dev at cgl.ucsf.edu
Date: 3/7/13 3:18 PM
> Hi,
>
> I am starting to build a matrix of USB HID devices using controllermate on a mac.
>
> I am planning to use two 3dconnexion devices.  one to handle 6D translation/rotation, and the other to manage color/lighting; or maybe left hand for trans and right for rotation, etc.
> .
> The current driver in chimera only sees one device. If I touch the first USB 3dconnexion device plugged in, it behaves as expected.  Touching the second device, chimera acts as though it is the first device.  So the driver is not keeping track of the number of devices.
>
> In controllermate I can see both devices and can program them independently.
>
> For example, I will be able to remap these signals to my choosing and pass it on to a chimera extension I am developing.
>
> The second problem I am having is when chimera starts up it exclusively grabs the low level driver, ignoring the the high level driver which incorporates context management.
> Consequently controllermate is unable to intercept and modify the signal before passing it on.  A good reason to do this would be creating deadband zones, or a user defined response curve, or integration with multibutton panel like the logitech g13 so that I can modulate the response (eg, 0.1x,1x,10x,100x, etc).
>
> How do I disable 3dConnexion so that it will not load in chimera?  I could wipe out the code, but would prefer minimally screwing with chimera base code which is a headache for daily builds and has a risk factor of unforeseen consequences.  Something in preferences would be helpful.
>
> In a related question on preferences, the scroll wheel is tied to camera zoom.  I would like to remap that  as a movement in z.  Generally I like to keep my scale factor at 1; I find heavy or casual use tends to get me into camera problems.
> Is this possible? at the moment I disable the scroll wheel.
>
>
> Matthew Dougherty
> National Center for Macromolecular Imaging
> Baylor College of Medicine
> _______________________________________________
> Chimera-dev mailing list
> Chimera-dev at cgl.ucsf.edu
> http://www.rbvi.ucsf.edu/mailman/listinfo/chimera-dev
>





More information about the Chimera-dev mailing list