ProjectionBuddy Documentation

About

The ProjectionBuddy is used to project 2D images into World Position, or PRef data, without the need for geo exports. Useful for replacing screens/textures, adding gobo shapes, creating masks that are very complex, and caustics. It has a built in preview and calibration feature to help you project your images easier, and edge cleanup within one tool

Contents

How To Use

Getting Started


Connect the primary input to a render pass or pipe that contains position and/or PRef data, then look at the ProjectionBuddy with your viewer. You will be presented with a black and white preview of the input rgb by default, this is to help you project the images easier

AOVs


By default the ProjectionBuddy 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 ProjectionBuddy supports

  • Position World/Object/Camera/Reference

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

Image Calibration


Enable the Calibration Image and hold Ctrl+Alt while sampling the preview image to pick where the projection will be. The projection will be displayed as a pink 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.

If you connect an image to the Image Input at this point, the calibration image will adopt its format, instead of using the root format

Image Manipulation


Use the transformation knobs in the Projection section to adjust the overall Radius, Rotation, and Scale of your image

Image Placement


When you are happy with your projection placement, connect the image you want to be projected, to the Image Input, then disable the Calibration Image. The projection will now display the image you connected, in the position you calibrated to. At this point you may also want to connect a mask to the Mask Input to isolate the projection

As you get more familiar with the ProjectionBuddy 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 ProjectionBuddy 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 ProjectionBuddy to a merge node, and disable the Preview image, so only the desired RGB data is merged into the pipe

Advanced Options


Precision Fix

Use Precision Fix to remove single and sub pixel errors. These generally appear on the edges of overlapping objects that can’t be resolved properly in the data AOVs


Edge Blur

Use Edge Blur to soften the edge of shapes. You can use the options on the Advanced Tab to adjust the values more precisely

*Be careful where you use this as it can cause other edge issues if used too aggressively. It’s best used for edges that have aliasing issues, and very light grading*


Erode Shapes

Use Erode to grow or shrink the edge of a projected mask. ProjectionBuddy uses a custom erode that is capable of true subpixel values, so you can Erode the shapes very precisely

*Be careful where you use this as it can cause other edge issues if used too aggressively. It’s best used only in emergencies, and for objects with very light grading*


Smooth Shapes

Use Smooth to average the AOV data together and reduce fine details

*Be careful where you use this as it can cause other edge issues if used too aggressively. It’s best used only on high frequency objects like hair/grass, and for objects with high frequency bump normals*


Preview Options

Use this section to adjust the preview appearance, like the colour, black and white values, and clamp features


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

The Match to Image Input checkbox forces the Calibration Image to adopt the format of the image connected to the Image Input, otherwise it uses the root format

Tips & Tricks


PRef

Use a Position Reference aka PRef AOV to automatically track projected images to animations


Complex Masks

Use the ProjectionBuddy to generate very complex masks, that would be otherwise too difficult to create with something like the MaskBuddy


Find Your Center

The Projections 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

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, the Match to Image Input check box forces the Calibration Image to adopt the format of the image connected to the Image Input, otherwise it uses the root format

  • Under Advanced > Calibration, use the Global Scale slider to change the default scale of the Projection. If the images 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 certain operations like moving the image up/down to not respond like you expect

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 more projection modes, UV, Triplanar, etc...

  • Add screen space projection options

  • Add holdout options

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

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

  • 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 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

  • 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

CardBuddy

Next
Next

More to come!