Viewers

 


About Viewers

You can create as many Viewers as you want, each dynamically updated in any channel you choose from any node you choose. You can therefore watch the behavior downstream to see the effects of a node you modify upstream.

Each Viewer has a set of two buffers to compare images, or you can create multiple Viewers by pressing N with the cursor in the Viewer area. If you have multiple Viewers, double-clicking in a Viewer window selects that Viewer and displays the currently viewed node in it. The next time you click on the left side of a node to view it, it displays in the active Viewer. To switch to a different Viewer, double-click it.

The Viewers take up memory, so if rendering, you may want to close your higher-resolution viewers. Additionally, the more Viewers you have, the slower your display rate is.

If you are getting strange Viewer behavior, delete the Viewer, and create a new one by pressing N.

You can create a separate Viewer workspace to be used on a second monitor with the menu function Spawn Viewer Desktop in the View menu. This only works if the second monitor is being run from the same graphics card.

In order to protect you from accidentally rendering an enormous image (whoops – put 200 instead of 20 into your zoom parameter?) the Viewer's resolution is limited to 4k. This limit is configurable (see Maximum Viewer Resolution). It has no effect on rendered images – it only crops the view in the GUI to the set resolution.


Looking At Images In A Viewer

In this image, the vanilla node is loaded into Viewer 1, buffer A.

The Pixel Analyzer and Color Picker windows can help you analyze this data.

 


The Viewer Buttons

Many buttons correspond to a Right mouse menu selection with the same function. You can also select the setting from the menu.

Some of the buttons have different behaviors between clicking and holding.

For example,

clicking... holding down...

 


Override the default choices of clicking progression by Ctrl+clicking. For example, when you are on RGB View and you click, you go to Alpha View. When you click again, you return to RGB View. To modify this to go from RGB View to Red View to Alpha View, do the following steps:

Some Viewer functions have number keys to cycle through them, i.e. 2 will toggle through the channels. Shift+2 will toggle backwards. Nobody uses these except button 1, which toggles the compare buffers.

Function
Keyboard
Notes
  Drag the cursor over the window and X, Y position, and RGBA color values are printed in the top of the screen
  Stows the current viewer.
Ctrl+F Fits the Frame to the Image.
Shift+F Fits the Frame to fit the entire Viewer Workspsace. When down, the Viewer "sticks" to the Workspace. You can therefore resize the workspace and the Viewer will expand to match.
Right Menu: Delete Deletes the Viewer. A good strategy if anything bizarre is happening. Create a new viewer by pressing N.
1 Buffer tabs. You can have two different buffers in a viewer to compare images. See Using the Compare Buffers, below.
R,G,B,A,C
2/Shift+2 cycle
Toggles through different color channels.
3/Shift+3 This update mode displays a rendered image only after it is finished rendering. This is for relatively fast renders.
3/Shift+3 Scrolling update mode. Displays each line, starting from the bottom, as the image renders. Used for slower renders.
3/Shift+3 No Update. The Viewer never updates until this is deactivated. Use this to load an image into a Viewer, then switch to the second buffer (see below) and do some changes. You can then compare it with the original.
  Incremental Viewer Update. Only updates the portion of the image which changes. As an example, if you composite a 10x10 pixel element on top of a 6k plate and panned it around, the entire 6k plate would have to be updated if this is deactivated. Only the actual 10x10 pixel area is updated when this is turned on. There are still a few update glitches, mainly when doing filter operations. To fix this, turn off the Incremental Update and adjust again – the glitches are corrected. This button has no effect on the output file or batch rendering speed, only on the image in the Viewer.
  Activates Viewer Lookups. VLuts differ from Viewer Scripts in that you can scrub from the unmodified plate. See Viewer Lookups, ROI and Scripts, below.
  Gain/Offset/LogLin - allows you to apply different quick lookups to your image. See Viewer Lookups, ROI and Scripts, below.
  Turns on the ROI Rendering. This limits your rendering area. See Viewer Lookups, ROI and Scripts, below.
4/Shift+4 Viewer Scripts. See Viewer Lookups, ROI and Scripts, below.
  Applies aperture markings. See Viewer Lookups, ROI and Scripts, below.
  Applies a PlotScanline. See Viewer Lookups, ROI and Scripts, below.
  Applies a Histogram. See Viewer Lookups, ROI and Scripts, below.
  Views the Z channel. See Viewer Lookups, ROI and Scripts, below.
  Displays superwhite and subzero pixels. See Viewer Lookups, ROI and Scripts, below.
5/Shift+5 Off Compare mode. Only one buffer is displayed. See Using the Compare Buffers, below.
5/Shift+5 Horizontal Compare mode. See Using the Compare Buffers, below.
5/Shift+5 Vertical Compare mode. See Using the Compare Buffers, below.
5/Shift+5 Fade Compare mode. See Using the Compare Buffers, below.
  DOD/Frame display toggle. Displays the green Domain of Definition (either created automatically by Shake, or manually with SetDOD) and the red border. It has no effect on processing or the rendered image.
Home Centers the image and sets the zoom level to 1:1.
F Fit the image to the Frame. Be careful, since you may get a non-integer zoom (for example, instead of 2:1, you get 2.355:1), which might give you display artifacts. Don't use this when massaging pixels.
 

Flipbook button to render a RAM-based image player.

Left Mouse: Render with the current settings
Right Mouse: Render Setting Page. For information on this page, jump to The Flipbook Parameters Window under Title Bar Functions and Buttons.

 

These generic buttons appear for many functions with onscreen controls. For more information on onscreen controls, jump to onscreen Controls.

 

Function
Notes
AutoKey is on. Whenever you move an onscreen control, you are be entering a keyframe.
Always display the onscreen control when those parameters are loaded.
Turn off the onscreen control display when actually modifying the image. They return when you release the mouse.
Turn off the onscreen controls.
Delete Key at the current frame. This is used because controls for functions like Move2D enter keyframes on xPan, yPan, xScale, yScale, and angle simultaneously. Therefore, Delete Key delete from all of these parameters.
X/Y Lock Button. Indicates that you can move a control in both X and Y directions.
Indicates that you can move a control in only the X direction.
Indicates that you can move a control in only the Y direction.
Press this to change the color of the onscreen control.
Motion Path Display Button. Displays both the path and the key positions. You can grab the keys and move them onscreen.
Displays just the key positions.
Does not display the path or the keys in the Viewer.

 



Using the Compare Buffers

You can load two images at once into a Viewer by using the A and B buffers. In this example, there are two images, both from the pix/keylight tutorial.

 

 

 

Notice how the Compare button at the bottom of the Viewer indicates you are in vertical mode .

 

No Updates in the Viewer? A common mistake is to move the Compare Slider all the way to the left or right (or top or bottom), making one image disappear, revealing only the second image. Therefore, when you change a node parameter, you don't see any updates, which makes you angry at us, which makes you go to the Shake list and rant for several messages before you settle down. To save you from this regrettable path, make sure you turn off the Compare mode to ensure you really are looking at the current image.

If it isn't the compare mode, check to see if your Update button isn't turned off: .

If that isn't the problem, check the manual update mode on the top of the interface: .

OK, now you can rant on the Shake list.



Viewer Lookups, Viewer Scripts, and the Viewer DOD

There are three similar ways of affecting how your images are viewed, which are the Viewer Lookups (VLuts) , the Viewer DOD and Viewer Scripts . None of these functions affect the output image, they only modify the image for efficiency or previsualization purposes. You can, however, optionally apply these to a render launched from the GUI.

Here is an example of using a VLUT with a log image:

 

With LogLin conversion turned on in g/o/log - you still work on the log image in the process tree, you are seeing the linearized plate.

 

To activate VLut or Viewer Script Controls:

The current default scripts and luts are:

Function
Notes
Gamma/Offset/LogLin - Allows Gamma, Add and LogLin operators to be applied.

A field chart. Lots of chart controls to figure out...

 

Displays a PlotScanline of your image. See Overview - About Color for more information about a Plot Scanline.

 

Displays the values along the horizontal axis (where the light grey line is). You can see the bluescreen is pretty evenly lit. You can choose to look at rgb, a, or rgba, and calculate the value based on color, luminance, or value.

 

Displays a Histogram of your image.

  • ignore: This ignores pixels with a 0 or 1 value.
  • maxPerChannel: this pushes the values up on a per-channel basis.
  • fade: This fades the display of the histogram.

The colors are squeezed down in a limited range, an indication that this is probably a logarithmic image. Notice the big healthy chunk of blue near the high-end. That is good.

 

Displays Z depth of an image either normalized or between a set range. One very important thing: closer pixels are white, so the image can fade to infinity (black) without a visual discontinuity.

  • floatZinA: This puts the Z values in the Alpha channel to scrub and retrieve these values. They are either off, the original values, or normalized between 0 and 1. If you have an object moving from far away towards the screen over several frames, Original returns your z values relative to each other; Normalized only indicates the Z values within that frame.
  • zNormalize: Indicate if the render came from Maya or 3DSMax. Underneath this is a parameter for to set the limit at which point pixels are considered infinite, and are therefore clipped.
  • zRangeSource: Evaluate the original values, or the near/far Input values.

Displays pixel values above 1 or below 0 for float images. The Alpha channel is also tested.

view: This parameter controls how the pixels are displayed:

  • per Channel: This sets subzero pixels to 0, sets pixels between 0 and 1 to .5 and pixels above 1 to be 1. This is applied on a per-channel basis.
  • per Image: This will turn subzero pixels black, pixels between 0 and 1 grey and pixels above 1 to be 1. This is applied across the entire image, so if any channel is beyond 0 or 1, it will be indicated.
  • on Image: This mixes the subzero and superwhite pixels back onto the image. The colors are controlled with the two color pickers.

sub-zero color: Only active when view equals on Image, it indiicates the sub-zero pixels.

superwhite color: Only active when view equals on Image, it indicates the superwhite pixels.

Example:

  • Read in doc/pix/keylight/saint_bg.@.jpg.

  • Apply a Other - Bytes node and a Color - LogLin node.

  • Toggle Bytes from 8 to float.

  • Apply the Float View viewerscript.

  • Because LogLin pushes values above 1,the sky loses its punch when you go back out to Log if you process the image in only 16 bits.

Tree Input Log image LogLin (linear) image
per-channel float view per-image float view on image float view

 

The per-channel view indicates that most of the superwhite values are in the blue channel. The per-image view indicates the dark areas more clearly. The on image view has coded the highlights yellow and the darks blue.

 

The VLuts and the Viewer Scripts are similar in that they apply an arbitrary set of functions that modify the image. The typical example is a color lookup table to compensate for the display properties of the monitor. The key difference is that VLuts allow you to scrub pixel values from the unmodified image. You can turn this behavior off for VLuts. You are always scrubbing the modified pixel values with Viewer Scripts. As an example, you may want to work on cineon plates in logarithmic space without converting them to linear space. However, you want a rough idea of what they look like in linear color space. Apply a VLut to convert the images to linear space. Your color scrubs are still coming from the input logarithmic plates, ensuring accurate processing for your output images.

Therefore, VLuts are typically used for color correction, and Viewer Scripts are typically used for odd operations like doing something for stereoscopic viewing. Both allow you to put in any series of pre-created functions you want (See below).

You can have as many VLuts as you want, but Shake comes with only one. You can only turn on one VLut and one Viewer Script at the same time, but you can have both of these simulateously activated. To apply multiple color corrections, build your VLuts and Scripts to have multiple controls.

DOD stands for Domain of Definition. The Viewer DOD limits your rendering region to a box, optimizing your processing. For example, if you are doing head replacement, you may want to activate the Viewer DOD and box off the head, saving your processing time for the rest of the image.

Keep in mind:

Image with VLut 1 and Viewer DOD applied:



If you Right click on the Viewer DOD button, you have several display options on the DOD controls. However, the interesting one is Frame DOD to Viewer, which sets it to the Viewer frame. With this, you can zoom in on an area you want to focus on and limit your DOD to that area. Note it is not dynamic, as it would be constantly recalculating as you pan around.

For more information on what the DOD is, jump to Overview - The DOD.

 

Creating your own VLuts and Viewer Scripts. The preset examples are stored in the end of the nreal.h file. To roll your own, you first declare them in a startup directory following the same guidelines for macros. The following functions do absolutely nothing:



image ViewerLookup1_(image img)
{
    return img;
}


image ViewerScript1_(image img)
{
    return img;
}



     

You then, also in a startup file, hook them into the Viewers:

nfxDefViewerLookup("Lookup1", "ViewerLookup1_()", "default");
nfxDefViewerScript("Script1", "ViewerScript1_()", "default");

The first argument ("Lookup1", "Script1") is the name of the VLut/Script as it appears in the list in the interface. The second argument ("ViewerLookup1_()", "ViewerScript1_()") are the actual functions they call when activated. These must be declared in a startup .h file. The third arguments are the optional icon files, relative to the icons/viewer directory. It is assumed there is an .nri extension and that you also have a focused version called [icon].focus.nri. Therefore, if you wanted to load a button called icons/viewer/vluts/dufus.nri, you also create a focused version called icons/viewer/vluts/dufus.focus.nri. You then use "vluts/dufus" as your icon name. "default" means it is looking for vlut.@.nri, vlut.@.focus.nri, vscript.@.nri and vscript.@.focus.nri. (@ = 1, 2, 3, etc.) All paths are relative to icons/viewer. The icons for viewer scripts are 30x30 pixels, no Alpha. The standard VLut buttons are 51x30 pixels, no Alpha. There is a macro in Cookbook - Other Macros - VLUTButton to make your own. Necessary macros (it relies on others) are found in doc/cook/macros.

 

The Viewer Hot Keys

Also, see above for keyboard equivalents to Viewer buttons.

Keyboard
Notes
N Create/Copy New Viewer
F Fit Image to Viewer
Ctrl+F Fit Viewer to Image
Shift+F, Fit Viewer to Desktop
Alt+drag Pan image
+/- Zoom image in Viewer
Home Reset view
R,G,B,A,C Toggle Red, Green, Blue, Alpha, and Color views

 

The Right Mouse Menu

Tree
Function
Keyboard
Notes
Edit Undo Ctrl+Z Undo the last operation. Does not work with RotoShape or QuickPaint.
Redo Ctrl+Y Redoes last un-did command.
View Zoom In/Out +/- (by Backspace) Zooms in and out by increments. You can also Ctrl+middle drag or Ctrl+Alt+drag to zoom in/out with non-integer increments.
Reset View Home Sets the viewer ration to 1:1. The viewer ratio is listed in the upper left corner of the title bar.
  Fit Image To Viewer F Resizes the image to the Viewer boundaries.
  Fit Viewer To Desktop Shift+F Fits the Viewer window to the larger desktop pane. Does not change the Viewer zoom, it just helps you when resizing the larger Desktop pane.
  Fit Viewer To Image Ctrl+F Snaps the Viewer to the Image size.
Render Render Flipbook   Renders a non-permanent flipbook.
  Render FileOut Nodes   Renders FileOut nodes to disk.
  Render Proxies   Renders proxy images.
Clear Buffer A/B Clears out either buffer A or B.
New Viewer N Creates a new viewer. If the mouse is over a Viewer, it clones that Viewer.
Delete Viewer   Removes that Viewer. Helpful in clearing up graphic/refresh problems sometimes.
Minimize / Restore Viewer Stores the Viewer as a tiny bar.
Load Viewer Script Controls Loads the VLut/Viewscript controls into one of three options.
View Channel Views a channel. Nobody ever uses this. I'm not sure why its here...