Technical fun, Harmony connected to Lightwave.

Hello people,

Harmony is more flexible than you thought it would be :wink: ,here I demo some very small part of an interesting workflow I am using.

With a bit of highschool math and a few tricks I managed to connect Harmony’s deformations to Lightwave allowing me to interact back and forth in real time between the 2 apps.

In the demo I am just controlling 3 rotations, but with a bit of scripting the bones can squash and stretch. I can control anything, from lights, to objects, to armatures. And feeding 2D images between the apps is easy.

I am utilizing the connector quite heavily, wont tell you yet what is my final use for it, but it has a loot of possibilities, the the results are quite unique.

I can do this with any mayor software out there. However I do think that LW is a perfect match.

The reason why Lightwave’s playhead is moving is because of forcing the reevaluation of the nodes, a normal thing for interacting in real time.

I would like to encourage TB to support scripting in the forums at least a minumum, it is very difficult to move forward while being blind.


this is very nice!

I have lightwave and harmony, I wish to use to render in lightwave some props for my short film, because i don’t want to use/paid for maya ;(


Here you have a more advance usage example. In this case Harmony is capturing Lightwave’s frame buffer and using it for visualization purposes.
I am as well showing you the combination between 3D rendered characters and TB’s outline.

I added some ready made 3D figure because I cannot show the actual characters which I have been using, as well I added a very thick line because I had no time to adjust the overlap properly, in my own work I use a mask in between so I can have proper thin lines.

The software which I used for capturing the video slowed down things quite a bit, as well I am using some inverse overlay to make the mesh more visible for you, which makes it slower than it is.

Otherwise this method can be used in real time work, utilizing Lightwave for cell shading and Harmony for inking and animating.

The write node requests the final render, and the display node shows LW’s frame buffer.

The method is quite effective.

This is great. Would be interested in knowing more about how this is setup. Will you be doing a tutorial or showing how you have LW and Harmony connected and talking to each other?

Yes, I can make some tutorial eventually. I am actually hooked up with other 2 developments at the same time, so it might take some time to get me started.

I have all of this perfectly integrated in my pipeline and it does work, however in order for others to use it we might need to clean up things and wrap them properly.

The issue here is that I am having to workaround the lack scripting documentation by using more system tools than it would be really needed. If Toon Boom would decide to eventually start supporting the community on scripting, we could make things a bit more accessible, right know I am using too many system tools and the overal usability gets too nerdy, better scripting would simplify it.

In a nutshell:
I am using the external module and storing data as files through the regular IO. However, in order to speed things up and dont waste the hardrives I am using the ram as a drive.

For example on mac I would use this command:
diskutil erasevolume HFS+ ‘RAMimageTOON’ hdiutil attach -nomount ram://8388608)

The external module obtain transformation data, process it, and output it to the ram drive. Lightwave is instructed to load transformation data on frame change, so an empty animation is playing on the back (the playhead is on in order to force refresh, it is the same method that lightwave studio tools use). I am using lightwave´s nodal motion in order to process the file and translate it into bone transformations, in Maya I would simply use mel. (I omit some tricks for simplicity)
The Display module uses the external module too, this time an automator application wich runs a bash script collects the framebuffer of lightwaves window and loads it to the ram disk as a file, which then the very same module outputs back to the network.
The write module calls lightwave from command line and request a rendered file.

Nothing really too complicated, but the mapping of the bone values has to be scripted otherwise it is a pain. And the ramdrive + all the other elements could be just happening behind the lines in a more automated way.
This would work great as a plugin, maybe a combination of a script, and a lightwave project file.

Anyway I could make some tutorials how to get along with transformations and share data in and out of Toon Boom. Maybe not a final howto, but to look at the general concepts behind.

Yes, I always say that Modo is Lightwave, it is so similar in all general concepts. Actually I know loot of people who was using both softwares back in the days since they complemented each other, but now modo became very large.
Anyhow if this runs in Lightwave it runs in Modo.

Sounds good. You’ve outlined the concepts pretty good. I agree that ToonBoom needs to up their game when it comes to scripting. There’s a lot of power there for those who can utilize it; but, documentation would go a long way.

Thanks for your efforts and I hope TB is looking as Lightwave would make a great companion program. Maya is out of reach for a lot of independent animators.

cool. i use foundry’s modo software (an offshoot from lightwave’s development history), would love to get this communicating with harmony like this.

Generally, what would something like this be used for?

Up to your creativity, but it is possible to request the frames to be rendered too, so I list some examples:

-Coordinating things in general, since the connection is real time you can do much more adjustments than with the current Maya render node. Background elements ofcourse, but as well characters. the keyframes are stored in TB which is the master, LW receives the transformation and renders.

-Take advantage of TB’s onionskin and others for 3d… tools for pose to pose. keys, contacts, breakdowns… TB really helps since 3D software is not really made for this purpose. TB does have 3D transformations and euler so this can be used for animating things in the 3 axis…

  • As well… making a 3d rig is a pain, if you are just animating 3 objects as if they were 2D, better to just do the skinning part in LW and use TB’s IK to animate them.

-Syflex, syflex, syflex for LW is 200dollars as opposed to the 2k in Maya… you can simulate the clothing to your drawings :wink:

And… well there is a very powerful usage that Ill show whenever my project is ready, mixing the very best of both sides.

Very nice. I have LW and Harmony. I see great things with this. Please keep us updated on your progress. I will be following with great interest and yes, please ToonBoom, open Harmony up to more than just Maya.

I forgot to say one thing, I do not necessarily heed to have Lightwave open (it is wonderful to keep it open because you can tweak values on the fly but it is not needed), Harmony can take all the juice it needs and just request the renders the same way which Maya’s connector does, but being able to control character deformation.

Maya is a very nice software, it is nice they support it. I used it almost for my entire career since version 1.0 until very recently when permanent license upgrades were not provided anymore. But now I use LW because it is reliable not only technically but I can trust the license model. And well, it is largely used in TV. Unlimited render nodes is another great stuff.
TB supports render pixie which allows more render nodes, but cannot be compared to Maya´s renderer, Mentalray, 3Delight or Lightwave, and wont be this flexible. :wink:

And LW has a great plugin called frameD, it was developed with the input of some guys in Nikelodeon, it provides x-sheet and control over image sequences, so it allows for example animate facial expressions in TB with lipsinc and load them back to LW as texture. And then with my method I can return then back to TB as a character render. Those 2 programs work very well together.

Gabriel, not sure you still monitor this thread; but, was just wondering if you have gotten any further with your scripting between Harmony and Lightwave?