Zbrush Petition

If you have questions or comments concerning any non-support related 3Dconnexion topic, please use this forum.

Moderator: Moderators

yogurt6
Posts: 5
Joined: Sat Mar 21, 2020 1:11 am

Re: Zbrush Petition

Post by yogurt6 »

Wish I saw u/WintrySnowman post on Reddit earlier.
https://www.reddit.com/r/ZBrush/comment ... /?sort=old
I happened to work on zBrush/3DConnexion integration too.
I derived all rotation formulas and was thinking how to move all calculations to dll, as sin and cos don`t work in zscript since zBrush 2019.
I`m not very good at C++ (to say the least). Thus I upload this as a proof of concept, and so that more knowledgeable folks could use formulas in "zConnexion.txt". Doing everything in C++ will take me another year.
I only ask that, if you happen to make everything work, please pm the source code for me to learn.

zConnexion adds 3DConnexion`s devices support to zBrush.

*************************WILL WORK ONLY IN zBRUSH 2018 or lower ************************
(since 2019 SIN and COS are broken in zscript)
Installation:
1. 3DConnexion driver needs to be installed in the system.
2. Copy "zConnexion.zsc", "zConnexion.dll" and "zConnexion.exe" to [zBrush folder]\ZStartup\ZPlugs64.
3. Make shortcut of "zConnexion.exe" and place it on desktop.
4. "zConnexion" subpalette will appear in "Tools" after next zBrush start.
CTRL+ALT CLICK - assign "F12" key as "Tools:zConnexion:Execute" button`s keyboard shortcut.
5. Start "zConnexion.exe".
How it works:
"zConnexion.exe" gets all data from spacemouse driver, then sends it to "zConnexion.dll"
and at the same time triggers "zConnexion.zsc" via virtual keystroke of "F12" button.
When "Tools:zConnexion:Execute" button is pressed, zscript reads data from "zConnexion.dll",
calculates new position and applies it with [TransformSet, ] command.
What works?
Basically everything (pan, zoom, rotate, pie menus, shortcuts assigned via 3DConnexion driver etc.)
EXCEPT 3DConnexion specific commands (like QickZoomIn, change to top view etc.).
Why .exe and not HID data:
Free pie menus that come with the 3DConnexion driver.
IMPORTANT NOTES / ISSUES:
1. While "zConnexion.exe" is running ALL data from spacemouse is routed to it, no matter what window is now in focus.
So when you switch to other than zBrush app, in order to have spacemouse support there, you need to close "zConnexion.exe".
2. Performance depends heavily on CPU speed. Navigations become laggy on high-poly models. Try increasing sensivity to somewhat mitigate that via:
"Tool:zConnexion:Pan sens." "Tool:zConnexion:Zoom sens." "Tool:zConnexion:Rot. sens." or 3DConnexion driver.
3. Sometimes model flips (very very rare), that is most likely due to the fact that we have access only to Euler angles and
not to more appropriate matrices or quaternions. Sorry i`m too tired to debug this, maybe later.
4. Those who want to dig into zScript code - don`t ask me how rotation formulas work :)))
I don`t know myself, despite my hair being significantly more gray, than a year ago, when i started this project.
Guys and gals at Pixologic are very uncoventional, to say the least.
Tested on and works:
Windows: 10 64-bit Professional
zBrush: 2018

LINKS:
Github:
https://github.com/glushkov89/zConnexion
If you wish to support:
https://gum.co/AjmDo
ngomes
Moderator
Moderator
Posts: 3318
Joined: Mon Nov 27, 2006 7:22 am
Contact:

Re: Zbrush Petition

Post by ngomes »

Hi @yogurt6,

Had quick look at the Reddit posts by WintrySnowman and RevolutionaryCold.

They seem to have take a similar approach to what we at 3Dconnexion attempted to do back in 2011, using ZBrush's "right-click navigation". There's a topic on that solution.
yogurt6
Posts: 5
Joined: Sat Mar 21, 2020 1:11 am

Re: Zbrush Petition

Post by yogurt6 »

Hi @ngomes.
Sorry for late reply (work for medical electronics manufacturer - lots of work nowadays).
RevolutionaryCold at reddit is me.
It`s not right click navigation.

The gist: in zConnexion.txt there are formulas for extrinsic rotations.
(i.e. given xR,yR,zR - current rotation values of zBrush model you get from zscript TransformGet command.
and X,Y,Z - space navigator rotation data.
For X you get functions like:
newxR=f1(X,xR,yR)
newyR=f2(X,xR,yR)
Now if you apply newxR,newyR,zR via zscript TransformSet command, the model will rotate X degrees around horizontal left to right axis.
Similarly for Y and Z.)

Maybe you guys could do something useful with this.
AFAIK there are 2 main problems:
1)SIN and COS functions don`t work in zscript since zBrush 2019. So all calculations must be moved to DLL.
2)There is no optimization for rotations via TransformGet/Set in zBrush - hi-poly models become laggy.

Here is demo video (low-poly model):
https://www.youtube.com/watch?v=k9SYtTuXwFg
yogurt6
Posts: 5
Joined: Sat Mar 21, 2020 1:11 am

Re: Zbrush Petition

Post by yogurt6 »

https://gum.co/AjmDo
Added v1.1 - should work in 2020, 2020.1.1 (also in 2019, but not tested).
yogurt6
Posts: 5
Joined: Sat Mar 21, 2020 1:11 am

Re: Zbrush Petition

Post by yogurt6 »

Tehrasha
Posts: 187
Joined: Thu Apr 22, 2010 3:55 pm
Location: Iowa
Contact:

Re: Zbrush Petition

Post by Tehrasha »

APPLAUSE

Well done.
Spacemice -- Input devices for a 3D world.
Japi
Posts: 29
Joined: Mon Aug 19, 2019 2:35 pm

Re: Zbrush Petition

Post by Japi »

Great job!! Bought from gumroad. Would love to see it also on Mac OS
Phil999
Posts: 425
Joined: Tue Jun 30, 2009 5:20 am

Re: Zbrush Petition

Post by Phil999 »

good work. Seems to be the first real ZBrush solution.

The low performance with high resolution meshes is probably the reason why 3dx support was never implemented.
Space Navigator x2, Space Pilot, Space Pilot Pro, SpaceMouse Enterprise
xbo
Posts: 34
Joined: Fri May 16, 2014 9:41 am

Re: Zbrush Petition

Post by xbo »

yogurt6 wrote: Sat Mar 21, 2020 1:14 am Wish I saw u/WintrySnowman post on Reddit earlier.
https://www.reddit.com/r/ZBrush/comment ... /?sort=old
I happened to work on zBrush/3DConnexion integration too.
I derived all rotation formulas and was thinking how to move all calculations to dll, as sin and cos don`t work in zscript since zBrush 2019.
I`m not very good at C++ (to say the least). Thus I upload this as a proof of concept, and so that more knowledgeable folks could use formulas in "zConnexion.txt". Doing everything in C++ will take me another year.
I only ask that, if you happen to make everything work, please pm the source code for me to learn.

zConnexion adds 3DConnexion`s devices support to zBrush.

*************************WILL WORK ONLY IN zBRUSH 2018 or lower ************************
(since 2019 SIN and COS are broken in zscript)
Installation:
1. 3DConnexion driver needs to be installed in the system.
2. Copy "zConnexion.zsc", "zConnexion.dll" and "zConnexion.exe" to [zBrush folder]\ZStartup\ZPlugs64.
3. Make shortcut of "zConnexion.exe" and place it on desktop.
4. "zConnexion" subpalette will appear in "Tools" after next zBrush start.
CTRL+ALT CLICK - assign "F12" key as "Tools:zConnexion:Execute" button`s keyboard shortcut.
5. Start "zConnexion.exe".
How it works:
"zConnexion.exe" gets all data from spacemouse driver, then sends it to "zConnexion.dll"
and at the same time triggers "zConnexion.zsc" via virtual keystroke of "F12" button.
When "Tools:zConnexion:Execute" button is pressed, zscript reads data from "zConnexion.dll",
calculates new position and applies it with [TransformSet, ] command.
What works?
Basically everything (pan, zoom, rotate, pie menus, shortcuts assigned via 3DConnexion driver etc.)
EXCEPT 3DConnexion specific commands (like QickZoomIn, change to top view etc.).
Why .exe and not HID data:
Free pie menus that come with the 3DConnexion driver.
IMPORTANT NOTES / ISSUES:
1. While "zConnexion.exe" is running ALL data from spacemouse is routed to it, no matter what window is now in focus.
So when you switch to other than zBrush app, in order to have spacemouse support there, you need to close "zConnexion.exe".
2. Performance depends heavily on CPU speed. Navigations become laggy on high-poly models. Try increasing sensivity to somewhat mitigate that via:
"Tool:zConnexion:Pan sens." "Tool:zConnexion:Zoom sens." "Tool:zConnexion:Rot. sens." or 3DConnexion driver.
3. Sometimes model flips (very very rare), that is most likely due to the fact that we have access only to Euler angles and
not to more appropriate matrices or quaternions. Sorry i`m too tired to debug this, maybe later.
4. Those who want to dig into zScript code - don`t ask me how rotation formulas work :)))
I don`t know myself, despite my hair being significantly more gray, than a year ago, when i started this project.
Guys and gals at Pixologic are very uncoventional, to say the least.
Tested on and works:
Windows: 10 64-bit Professional
zBrush: 2018

LINKS:
Github:
https://github.com/glushkov89/zConnexion
If you wish to support:
https://gum.co/AjmDo


Let us help this girl or guy showing some love !
She / He made for us what FOR LIGHT YEARS we wanted to have.
IF THIS WORKS, I WILL PAY FOR THE DEVELOPMENT !!
I WILL TRY YOUR PLUG-IN IN Zbrush 2020.1.3

LET US SEE WHAT WE ALREADY GOT !
xbo
Posts: 34
Joined: Fri May 16, 2014 9:41 am

Re: Zbrush Petition

Post by xbo »

I not get paid from "yogurt6 "
Here is the prove !

SHOW ME THE TRUE / http://class-a-strak.com/XBO/XBO_ZBrush ... S_sent.mp4
xbo
Posts: 34
Joined: Fri May 16, 2014 9:41 am

Re: Zbrush Petition

Post by xbo »

I forgot that I cant edit my post here.

@ yogurt6
My donation I will send you over your page
https://gumroad.com/l/AjmDo

The APP had a couple of issues.
While you use ZBrush and the 3dconnexion hardware both in use - the will not work in another application.
Not even google chrome i.e.

WELL AT LEAST WORKS WITH ZBrush NOW !
10 Years later (ALMOST)

THANK YOU EGOR SOOOOO MUCH !!!!!!
xbo
Posts: 34
Joined: Fri May 16, 2014 9:41 am

Re: Zbrush Petition

Post by xbo »

BTW !!!!!
All the credits are yours !

You will famous NOW ! :D :D :D :D :D

https://www.zbrushcentral.com/t/3d-mous ... ved/367743
Coiler
Posts: 2
Joined: Sat May 23, 2020 9:31 am

Generic Axis Support in ZBrush

Post by Coiler »

I know nothing about the ZBrush SDK (and I'm just starting with it, so know little about its control/config setup), and I know nothing about the SpaceMouse operation. But I'm a game developer who has messed with input devices, so I was curious about something. Can Pixologic not just add support for AXIS controls to manipulate the camera in order to suppport this mouse? Essentially, allow every camera manipulation action to be activated with a scaler, to allow that change to be faster or more intense.

The only other consideration I can think of is to not limit the number of these actions that can take place at once. Does ZBrush not support scalable control on actions that are scalable? Such as zoom, pan, rotate, etc. Anything that changes over time should be scalable. If it doesn't, doesn't it seem like that would be a great way to convince them to add native support for this thing? Its a generic concept, not related to the SpaceMouse, and it makes a lot of sense to have that support anyway, to allow users to rotate the camera with analog sticks and such.

I'm pretty sure that having this type of support means we can just use any input filtering program, such as AutoHotKey, to convert data however we want. But I'm still in the dark about a lot of the technicals, so if anyone can help me better understand why this wouldn't work, please do so.
yogurt6
Posts: 5
Joined: Sat Mar 21, 2020 1:11 am

Re: Zbrush Petition

Post by yogurt6 »

Hi @Coiler
Unfortunately there is no proper SDK for zBrush, only scripting language (zScript).
I assure you that if Pixologic wanted, they would have added support years ago.
3DConnexion`s SDK is absolutely comprehensive and so easy to work with, that even non-programmer like me could make something with it.
The perfect synonym for zBrush and Pixologic is - "unconventional", so be prepared if you want to go that route. :)
Coiler
Posts: 2
Joined: Sat May 23, 2020 9:31 am

Re: Zbrush Petition

Post by Coiler »

I was just wondering if it would be more effective to petition them for axis support in their control configuration. There must be a lot of ZBrush users out there that would like to use an analog stick, tracking ball, or various other X+Y axis controls to rotate, pan, or zoom the camera. This means even people that don't intend to get a SpaceMouse would help to petition for it.

Once a camera control can be rigged to an axis, it will probably make it far easier to sync that up with this 3D mouse. I'm assuming it uses several analog-like vectors or scalars for its various motions (a ranged axis like an analog, which comes back to zero, rather than a free axis like a mouse or wheel that can be moved indefinitely). If I were Pixologic, I would have already added support for both types of axes. Makes no sense not to.
Post Reply