Nyx Voltron provides a very powerful and efficient workflow between 3ds Max and Adobe After Effects with interactive capabilities.
Link anything from 3ds Max to AE with as little baking as possible and preserving Bezier keys/handles on animation curves.
The Nyx Framework is a high-level communications system that basically lets application talk to each other. This opens up interesting workflows and can create powerful pipeline tools.
The main components of the Nyx framework are:
The server part is the main hub of the Nyx Framework, all clients connect to it and it keeps track of everything. There should only be one server per Nyx network. By default it uses TCP/IP ports 4015, 4016 and 4017 so open those in the firewall when using it trough a LAN/WAN.
Clients are the ones that transmit and receive data, there are two kinds of clients, ‘stand alone’ and ‘plugged in’:
The ‘stand alone’ client runs as a separate process and assimilates local applications into the
BorgNyx framework. For example, for Voltron it sets up a custom communications channel from itself to After Effects, so the client connect to the hub and processes all the Nyx communication and then simply tells After Effects what to do. In return AE talks to the client which then relays it into the Nyx framework again. These clients can also start and stop other applications, for example in Nyx DBR they are responsible for starting/terminating Max instances on remote render nodes.
The ‘plugged in’ client does the same but as a plugin for a host application. for 3dsmax we have made the client a plugin so Max can directly speak Nyx. It all depends on the kind of SDK features a software package has if it make sense to either build a client-plugin or use the assimilation method.
Starting the Nyx Framework
For simplicity we’re going to do everything on one workstation so everything runs locally, Nyx works fine on the LAN or even WAN but for the first steps its easier if everything runs on the same machine.
- Start the ‘Nyx Server’ and ‘Nyx Client’. After a few seconds they will find each other and some activity can be seen in the loggers.
- Start After Effects. In AE go to ‘window->extensions’ and start ‘Nyx’. It auto-connects to the client and It should log ‘connected’ if all went well. You can dock the Nyx panel anywhere in the AE UI. The logger in the Nyx panel will show all activity as well as warnings and errors, so if something doesn’t look right check there for clues. If you want to rename your AE session to easily identify your workstation just give it a new name and press ‘link’.
- Start 3ds Max. Press ‘x’ and type ‘Nyx Voltron’ and run it. Since the Nyx network is up and running the connection indicator should turn green and the AE node from step 2 should be listed in the dropdown. If there are multiple Nyx’ed AE session connected to the server you can pick the one you want to target there.
It’s now ready for use, but first a bit about links.
The Concept of Links.
A link is simply a connection between something in Max and something in AE. Voltron will always try to keep the baking to an absolute minimum (Baking is creating a key at each frame for the whole timeline). Baking can result in thousands of keys key causing low performance and issues with motion blur in AE. BezierFloat controllers from Max are mimicked in AE, using the same key types (bezier, linear, step etc) and by setting handles in such a way that curves in Max and AE an exact mathematical match. If it falls back to baking for some reason it will list it as an issue which can be reviewed using the ‘issues’ button on Voltron’s UI, giving hints on how to fix it.
Possible links type are:
- Incomplete: Either a Max and/or AE item are undefined in the link properties, this is the state a new link will be in.
- Unsupported: This happens when a connection doesn’t make sense, like linking a position to an opacity value for example
- Node > Layer: This is a compound link which transfers the Transform (Pos, Rot, Scale) from a max node to an AE layer. Both the default ‘Transform: Pos/Rot/Scale” and “Transform: Look At” controllers are supported, meaning that when a Max node has a target, like a targeted spotlight, it will create a target version of whatever it’s linked to in AE when possible. If the AE item can’t have a target the rotation part will be baked so it will always be a match with it’s Max counterpart.
- Cam > Cam: This is a compound link which handles all the relevant camera properties like it’s transform, FOV, target distance and sets a look-at target if required. It will automatically work for both free- and target-cams, the camera in AE will be set accordingly.
- Plane > Layer: This is a compound link which makes an AE layer occupy the exact same screenspace as it does in the max viewport . So even is you have a square 10×10 plane linked to a 1920×1080 layer, the layer in AE will look identical to the square in Max. It always matches and doesn’t requires any global scale settings etc, it just works. If you want to animate the plane size do it using a normal scale transform and leave the plane’s size settings constant. The plane’s default UV space matches the plane in AE, so a texture on a plane looks identical to the same texture as a 3d layer in AE. This link type is ideal for doing screen replacement/additions in rendered footage. And make sure not to put modifiers on the plane’s stack the make it lose it’s plane class. (basically any modifier that operates on the mesh)
- Ctrl > Prop: This links a BezierFloat controller from max to a one dimensional property in AE. For example a light multiplier from Max to a light intensity in AE. It can happen that ranges don’t match between Max and AE, a 0-to-1 range in Max to a 0-to-100 range in AE for example. To solve this you can add an AE expression in the link’s properties. In this case use a ‘value * 100′ and that will be added to AE’s property as an expression. This allows for non baked transfer of animation curves since the original 0 to 1 range is transferred to AE and the expression converts that data to the AE equivalent.
- Const > Prop: Same as “Ctrl > Prop” only for constants, for max values that don’t use a controller.
- Color > Color: This will links a color from max to a color in AE, animations will work as well.
All links have a context menu where you can fine tune their actions. You can enable/disable sub items as well. If you only want a node’s rotation to link but not it’s position just disable the position part.
Voltron supports hierarchies (parented nodes) in a couple of different ways. The quick way out is the bake-to-worldspace option, each links that contains a ansform has this.This will simply ignore parenting in AE and bake the parented object from max into AE worldspace. Obviously the above method can’t fail but requires baking of keys which we try to avoid for various reasons. So Nyx provides another solution:
- Recreate the hierarchy in a AE, just create a null layer in AE for each parent object in Max.
- Create Voltron Links between the Max parent objects and AE null layers. When you update the links Voltron will set the correct parenting in AE and does all the transform etc.
- Now you have the same (animated) hierarchy in AE, all with original animation curves transferred without baking.
Use the bake-to-worldspace method for situation where for example a complex rig is holding a sign which you need to add in AE, where recreating the parent hierarchy is to much work. Use the other method for simpler hierarchies where the benefit of a non bake solution is worth the extra effort of creating parent objects in AE.
Note: Don’t use ‘Plane > Layer’-links mid hierarchy, they have special scaling that messes things up, better to use helpers/null layers. You can use a ‘Plane’-link as a last child in the hierarchy.
There are two ways of making links, the quickest one is to send over an item from max using the QuickLink button, but first we’re going to do it manually to get a sense of what’s happening. The basic workflow for this is that you create object in both max and in AE that you want to link. Then select a pair and build the link.
- Create a camera, plane and a light in Max, do the same in AE, in max make sure the camera can see the plane an light.
- Make sure Max’s render output size matches the comp size in AE. Actually resolution can be different as long as the aspect ratio is the same. Also make sure camera’s ‘film size’ matches, this can be found in max’s render dialog and by double clicking a camera in AE, default value is 36mm.
- in Max open Voltron and press ‘new link’, then double click the link in the list to put in in the edit area.
- Select the camera in Max and press the ‘$’ button, this will use the currently selected object as a link source.
- In AE make sure the camera layer is selected on the timeline, got back to max and press ‘pick AE’ button.
- Give the link a name and press save, repeat and now link the plane to the plane and the light to the light. (The light will get a “node> layer” LinkType, which is normal)
Now you have 3 active links, press update and notice that AE now matches Max’s camera view. You can enable ‘interactive’ mode and move things around in Max and see them update in real time in AE.
Use the ‘sync time’ checkbox to control if both timelines are synced or not, when enabled AE’s timeline will be set to the same time Max is at. When interactive mode is enabled AE will scrub in sync with Max.
Now for another type of link we’re going to link Max’s light color to the AE light:
- Disable interactive if still on and create a new link
- Now use the ‘pick max’ button and find the light’s color property
- In AE find and selected the light’s color property on the timeline, press ‘pick AE’ in max.
- Name it and save, press update to send it over to AE.
You can now change/animate the light color in max and AE will follow it, enable interactive mode for instant feedback.
A quicker way to setup standard type of links it the QuickLink button: ( labeled ‘>>’ )
- if any, remove all links in max and create a new comp in AE.
- Select a single object in max (camera, plane, light, helper, etc)
- Press the ‘$’ button so the current selection it set as source.
- Make sure you have the right comp open in AE which will receive the items.
- now press ‘>>’ and it should appear in AE with the link is setup automatically, names reflecting the selected Max item.
If Nyx notices less then ideal conditions it will make a note for you which you can review when the button is red. Most common will be a warning about rotation orders.
A few things worth knowing:
AE and Max use a different world coordinate system and a different rotation order. Max by default does rotations in an XYZ sequence, AE does ZYX. When these two don’t match the rotation will be baked, there is no mathematical way to avoid that. But luckily you can set Max’s rotation order to ZYX if required:
- Select your node
- In the Motion panel press the ‘rotation’ button and set the ‘Axis Order’ to ‘ZYX’
This will alter your current rotations, so better do it before you start animating.
Links are saved in the scene when you save your max file.