About
The CardBuddy can be used to quickly place 3D cards into your scene via a 2D screen space sampler. It has built in preview/calibration features to help you place your cards easier, and can switch between placing images directly on cards in 3D world space, or via camera projection. Any cards placed can also automatically generate holdouts based on world position, point, or deep data
Contents
How To Use
①
Getting Started
Connect the Primary input to a render pass or pipe that contains world position data, and the Cam input to your scene camera, then look at the CardBuddy with your viewer. You will be presented with a black and white preview of the input rgb by default, this is to help you place the Cards easier
The deep input can also be connected to generate deep holdouts, but it is not required
②
AOVs
By default the CardBuddy might not have an AOV loaded into it, or you may want to change it for a specific task. You can do so with the AOV channel knob
Below are types of Data AOVs CardBuddy supports
Position World
Deep
If you are interested in setting a permanent default AOV, and/or limiting the AOVs available to the node, see the Setup/Installation section below
③
Card Placement
Enable the Calibration Image and Hold Ctrl+Alt while sampling the preview image to pick where the 3D Card will be. The Cards shape will be displayed as a red checkerboard with labeled up, down, left, and right arrows over the preview image, to help you reorient the card in the direction you want your final image to be displayed
④
Card Manipulation
Use the transformation knobs in the 3D section to adjust the overall Scale, Rotation, and Position of your card
Different geometry types can have slightly different manipulation controls
⑤
Holdouts
Use the Holdout section to adjust if and how your card is occluded in relation to the render you are sampling
There are 4 options in this section, and each has certain advantages. None is the default, this disables the holdout options, allowing the card to be rendered quickly, but it will also sit on top of everything else
World P - This creates automatic holdouts in world space, based on your cards position. It is fast, but doesn’t always provide clean edges. Also since it uses world position, depending on where your scene camera is you might need to check Invert to flip the holdouts to face the camera. This mode only works for cards using the XY or YZ Orientations
Deep - This requires you to connect the deep input to something that carries deep data. Deep holdouts are by far the best type for speed, ease of use, and quality, but not all renders have deep data, and it can be expensive to render/store
PointCloud - This option is similar to deep, but much slower and less accurate. It’s only really meant to be used in emergencies, and if the other two holdout options are not possible. Nuke will generate a point cloud based on the World Position data and use it to occlude the card
⑥
Image Placement
When you are happy with your card placement, and holdout type, connect the image you want to be on the card, to the Image Input then disable the Calibration Image. The card will now display the image you connected, in the position you calibrated to
As you get more familiar with the CardBuddy you may not need the calibration image at all, but it is helpful to get started
⑦
Connect
Connect for Mask
If you are making a mask, connect the CardBuddy to the mask input on any standard nuke node to isolate the operation to the card you have created
Connect for Merge
If you are replacing or adding a texture, connect the CardBuddy to a merge node, and disable the Preview image, so only the desired RGB data is merged into the pipe
Camera Projections
Follow steps 1-6 above and continue here…
①
Picking A Frame
Find the best frame in your shot to project an image onto. This is usually the frame where the area you want to place the card is most visible, and easiest to work with. Once you find that frame, navigate to it in your viewer, and hit the Set Current button to load that frame into the tool
This uses a standard Project3D node under the hood, so if you are familiar with those, this works the same
②
Turning It On
In the Projection section check Enable Cam Projection, after which your image, or calibration image should now be projected onto the 3D card, relative to its 2D screen space position
③
Watch The Magic
Your input image will now line up with the projected version on the card, for the frame you have chosen in step 1, and track the camera animation for all others!
Please note, since this tool uses world position, it can only track cards to camera animation, and not characters or other animated elements
④
Connect
Connect for Mask
If you are making a mask, connect the CardBuddy to the mask input on any standard nuke node to isolate the operation to the card you have created
Connect for Merge
If you are replacing or adding a texture, connect the CardBuddy to a merge node, and disable the Preview image, so only the desired RGB data is merged into the pipe
Advanced Options
Point Clouds
The CardBuddy can generate 3D point clouds using either Deep or World Position data, these can be seen in nukes 3D viewer to help visualize card placement
Point Cloud generation can be slow however, so this is off by default. You can enable with the Point Cloud checkbox at the top of the node
There are additional point cloud controls on the Advance Tab. If you are using the PointCloud holdout option, it’s best to leave the WP values both at 1
Render Settings
Use the Render and Motion Blur sections to alter how the cards are rendered through the internal ScanlineRender node
Preview Options
Use this section to adjust the preview appearance, like the colour, black and white values, and clamp features. The calibration image can also be made transparent to make it easier to see what you are doing with large cards
Input AOVs
Use this section to set the default AOVs that will show up in the main AOV drop down menu. You can read more about this in the Setup/Installation section below
Calibration
Use this section to calibrate the tool to your render worlds scale and world space coordinates. You can read more about this in the Setup/Installation section below
Additionally the CardBuddy has a Format knob here, which can be used to alter the calibration images format
Tips & Tricks
WP Holdouts
When using World Position holdouts, you can freely rotate and reposition a card, however if you rotate it enough the holdout will appear to break, if this happens simply check the invert option to flip the holdout so it matches your camera direction again
Animation
You can connect a sequence of images to the Image input, to place animated elements as well
Look At Camera
When not using world position holdouts, you can force the card to look at the camera by enabling the checkbox in this section. This is especially useful when creating projections
Find Your Center
The Cards will always be placed around the center of your image format, this means you can reformat your images to center them around a specific area in the image, to help you place them easier. This smoke element for example is much easier to place with the center at the base of the smoke column, instead of in the middle of it
Other Shapes
Use the Shape knob to change to other primitive 3D shapes like Cubes, Spheres and Cylinders. These are sometimes useful for other things, for example you can use a cube with animated noise on it to generate a very cheep and fast volume like effect
Setup / Installation
Install
For Personal use. Place the downloaded .nk file into your ToolSets directory. If the ToolSets folder doesn’t exist you can create it. After doing this, and restarting nuke, the Tool will show up when you tab search in nukes node graph for its name
You can read more about this process in the official docs here
For Pipeline use. Always speak with your studios Pipeline support staff before trying to install anything. Every studio is different, but you’ll likely need to ask them to place the file into a central tool repository so everyone can access it
Setup
The Buddy System comes with some calibration functions that can be adjusted before the tool is handed out to your team, or on the fly as needed by the artists. Since all projects are a little different, following these steps should help get the best experience out of the tool
Under Advanced > Input AOVs, use the 4 channel knobs to set the default AOVs the tool can use, this will limit the options in the primary AOV knob to reduce clutter/confusion. After setting this, you can uncheck/check the All box to the right of the AOV, at anytime to allow access to all the input AOVs again
In addition to the above you may want to set the primary AOV knob to use a preferred AOV by default, like world position. You can do this at anytime, and simply save over the file as outlined in the install section above to bake in that AOV in permanently
The example on the right is from the MaskBuddy, but the AOV setup step is the same across all the Buddy tools
Under Advanced > Calibration, use the Format dropdown to change the format the calibration image will use
Under Advanced > Calibration, use the Global Scale slider to change the default scale of all the geo types at once. If the cards are being generated too large/small, you can use this to make them the right size for your world space, while still keeping the main scale knobs all set to a value of 1 as a default
Under Advanced > Calibration, you can use the Convert “Z Up“ to “Y Up“ check box to reorient the world position data into a Y up world. Some applications use Z as the up Axis, and this will cause certain shape types, like the Cone, Cylinder, Torus to be generated sideways
Development Goals
To-Do
Below are some of the things I still would like to do with the tool, if time permits. If there is something you think would be a nice addition, feel free to reach out!
Add stabilize/motion match options
Add angle sampler
Add 3D output toggle for scene merging
See if Look At features can be made compatible with World P holdouts
Contributors
Thanks!
Below are some of the people who helped develop this tool through direct support or indirectly via online resources
Mark Rodziewicz
Sheldon Lisoy
Adam Dent
Chris Fourney
Aled Rhys Jones
Tyler Mullett
All 3D files from https://www.blender.org/download/demo-files/
FAQ / Bug Reporter
Frequently Asked Questions
-
The Buddy Systems colour picker uses nukes indirect sampling method to allow the user to sample the data AOV while looking at the rgb of the preview image. Make sure you are pressing and holding CTRL+ALT while sampling the preview image, and not just CTRL/CMD
-
The Buddy System tools require rgb and alpha channels to work. If your render doesn’t have an alpha channel the preview image and resulting masks/shapes cannot be generated
-
A few things to try here
Make sure you have loaded the correct type of data AOV into the AOV knob at the top of the tool
Make sure your tools primary input (The input without a name) is connected to a render with an alpha channel
Double check that the result isn’t just really tiny, by adjusting the scale or global scale sliders
If the tool has a Cam input, make sure you have the scene camera connected to it
-
This can sometimes happen the first time you load a large render, and it hasn't been fully cached yet. To fix, look at the render with your viewer and wait for the image to be fully loaded before you try sampling the preview image. After the image is fully loaded the first time, you shouldn't need to wait for the viewer to update again, and can sample at any time
-
The buddy tools use python scripts to dynamically update their internals based on user input, and this doesn’t work well with the gizmo format. You can try to convert them to a gizmo, and it might work depending on the tool, but it’s highly recommended to keep them as group nodes. If you are looking to TAB create the buddy nodes they can be save as ToolSets https://learn.foundry.com/nuke/content/reference_guide/toolsets_nodes/create.html
Report A Bug
It doesn’t have to be a bug, ideas to improve the tool, or words of affirmation are appreciated too!