CardBuddy Documentation

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

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!

Previous
Previous

DepthBuddy

Next
Next

ProjectionBuddy