Oink
Concepts

3D

Cameras, geometry, lights, the 3D Viewer and the renderers.

raw .md

The 3D nodes use a USD-based 3D system. A 3D pipe carries a scene (geometry, cameras, lights) instead of an image; a render node turns it back into an image.

Conventions

Nuke's: Y up, right-handed, cameras look down −Z; rotations in degrees with the default order ZXY and transform order SRT; one scene unit = 1 metre when exported to USD.

Nodes

KindNodes
Transforms and camerasAxis, Camera
GeometryGeoCard, GeoCube, GeoSphere, GeoCylinder, GeoImport (USD, OBJ, FBX, Alembic, PLY, STL, glTF and .blend), ReadVFX (.vfx caches), ReadSplat (Gaussian splats)
SceneGeoMerge, GeoScene, GeoTransform, GeoExport (writes USD)
LightsDirectLight, PointLight, SpotLight, EnvironmentLight
Materialsany image into a geometry node's mat input; Project3DShader projects an image through a camera; GeoBindMaterial puts that material on the prims matching a mask; UVProject makes UVs for meshes that have none
RenderersScanlineRender (fast GPU rasteriser, as Nuke), CyclesRender (the Cycles path tracer, built in), EEVEERender (Blender's real-time renderer, needs the optional Blender bridge), HydraRender (USD Hydra render delegates: Storm, and Karma when Houdini is installed)

Every renderer has the same inputs: bg (sets the output format), obj/scn (the scene) and cam. Renderers can also output depth, normals and motion vectors as extra layers; animated cameras and objects give motion blur.

The 3D Viewer

Press Tab over the Viewer to switch between 2D and 3D. Click an object to select its node; the move / rotate / scale handles edit that node's knobs. F frames the selection. In 2D, choosing a camera draws the scene as a wireframe over the image.

3D control type

Which mouse buttons move the camera is a preference: Preferences > Panels > Viewer Handles > 3D control type. The default is Maya. The wheel always zooms and the middle button always pans. In the orthographic views (top, front, side) the right button dollies; in the perspective view a plain right button flies (below) and Alt + right still dollies.

SchemeTumblePanDollyRoll
Maya (default; also Houdini)Alt + left dragAlt + middle dragAlt + right drag
NukeCtrl + left dragAlt + left dragAlt + middle dragCtrl + Shift + left drag
Lightwave / ModoAlt + left dragAlt + Shift + left dragAlt + Ctrl + left drag

The scheme applies to the 3D Viewer only; the Node Graph and the 2D Viewer keep the standard mouse keys.

Fly mode

Hold the right mouse button in the perspective 3D view to fly through the scene, as in Unreal or Blender:

While the right button is heldDoes
Move the mouseLook around (turn left / right, up / down; no roll)
W / SForward / back along the view
A / DSideways
Q / EDown / up (straight down / up in the world)
Shift4x faster
CtrlSlower
Mouse wheelFly speed up / down (shown briefly in the view)

Movement speeds up and slows down smoothly and does not depend on the frame rate. Speed 1 crosses about the size of the scene in one second; set it in Viewer settings > 3D (fly speed). While the button is held the keys only fly: Q, W, E and the other Viewer keys do nothing else, and they are normal shortcuts again when you let go. A right click without dragging opens the Viewer's right-click menu as before.

Looking through a camera: unlocked, flying leaves the camera (like any other move); with the interactive lock (Ctrl+click the lock button) flying moves that Camera node's translate and rotate knobs, one undo step per flight; locked, nothing flies.

Shadows, ambient occlusion and the grid

In the GL view, spot, point and directional lights cast soft shadows, and ambient occlusion darkens creases. Both are on by default and have switches in the Viewer settings, 3D tab. Shadows show with the scene's lights, not the headlamp. The ground grid is grey, with the major lines slightly brighter.

Big scenes: points, lighter geometry, budget

  • Point clouds draw as round points sized in screen pixels, coloured from the file, height, depth or one flat colour. max points (250 k, 1 M, 5 M default, 20 M) limits what the view draws; renders always use every point. A 5-million-point cloud orbits smoothly.
  • lighter geometry (off, above 1 M, 4 M default, 16 M triangles) draws the biggest meshes simplified in the view only. Renders always use the full mesh.
  • scene budget (bottom right, on by default) shows the triangles, points, textures and an estimate of GPU memory, and says when the view draws less than the scene holds.

Guides and masks

When you look through a camera, the Viewer's guides and masks are drawn inside that camera's format frame, over both the GL view and a rendered picture. They are not drawn in the free or orthographic views.

Scene Graph panel

The Scene Graph lists the scene in plain names (mesh, group, point cloud, spot light) with search. A ? on a row the Viewer does not draw says why (Visibility or Active switched off, a parent hidden, a Viewer setting, a disabled node). Drag rows onto a mask knob (GeoTransform, GeoBindMaterial) to fill in their paths.

Rendered view (Cycles, Karma, Storm)

The 3D Viewer header has a renderer menu. GL is the fast preview. Pick Cycles, Storm or Karma and the viewport shows a progressive render of the scene from the view you are looking through (free camera, orthographic view, or a camera you look through). It restarts while you orbit, at a lower resolution, and sharpens when you stop. Grid, handles, selection outlines and camera and light icons stay drawn on top. A readout at the bottom left shows samples, time and time to first picture. Renderers that are not available are greyed out with the reason (Karma needs Houdini).

Cycles without Blender

CyclesRender uses the Cycles engine built into Oink, so it works with no Blender installed (see Engines). In the 2D Viewer it behaves like Karma or Arnold's render view, not like a one-shot render:

  • The first picture appears within a fraction of a second and sharpens in place. Your edits restart it; the backend stays responsive while it renders.
  • A badge at the bottom left of the Viewer shows the bar, samples, time and time left, with Pause / Resume / Cancel / Restart.
  • Alt+W drag renders only the region you draw.
  • The denoise knob uses Intel Open Image Denoise: a fast pass while sharpening, a high-quality pass at the end.
  • Going back to a finished frame (undo, scrubbing back) shows it at once.
  • Depth and normals come from Oink's own rasteriser. Passes the built-in Cycles lacks (position, motion, AO, shadow, cryptomatte, diffuse / glossy / emission), motion blur, and lit-scene environment light are rendered through the Blender bridge when it is installed. The node's info line says which backend rendered.

Importing 3D

When you type a file into GeoImport's file knob, an Import dialog opens beside the comp (it never blocks you). It shows what the file holds (meshes, triangles, points, cameras, lights), its frame range, its units and up axis, and warns when a camera's film back does not match the project format. OK sets the knobs range_first / range_last, units_scale (scale to metres) and up_axis; Cancel leaves them alone.

  • GeoImport reads USD, OBJ, FBX, Alembic, PLY, STL and glTF with no Blender. Results match Blender's importers to rounding. Axes, UVs, normals and names follow the same conventions, so a scene looks the same on both engines.
  • .blend files (needs the optional Blender bridge). Use File > Open, or drop a .blend on the Node Graph. A GeoImport appears at once and Blender converts the scene in the background; progress, the log and a Cancel button are in the Jobs panel and the GeoImport panel. When it lands you get the scene's camera, a CyclesRender and a Viewer, already wired. Open sets the comp to the scene's format and frame range; drop adds the nodes where you dropped. Save the .blend in Blender and the comp reloads within about a second. Without Blender, a button offers to install it.
  • .vfx caches (particles, rigid pieces, deforming meshes, volume bricks) play through ReadVFX. It needs the separate vfxcache reader package; see the node's help. Without it the node passes its input through and says what is missing.

Textures on meshes without UVs

Cache level sets and particles from ReadVFX have no UVs. When an image is connected to ReadVFX's mat input, the node projects it automatically. Its projection knob is off, box (default), planar XY / XZ / YZ, spherical or cylindrical, and projection scale repeats the texture. A level set with a material becomes its surface mesh, the same in the GL view and in Cycles; particles take their colour from the image. UVProject does the same for any mesh, with Nuke's knobs (projection, plane, invert, u / v scale), from an Axis or Camera input.

Live Read

Camera, Axis and light nodes can follow a file (read from file): translate, rotate (all rotation orders), scale, colour, intensity and cone angle come from the file, a knob you change yourself wins, and No Change drops that local change so the knob reads the file again.

Cycles errors

An error under a Cycles render can be selected and copied with the Copy button. If the card runs out of GPU memory at the start, Oink asks idle AI models (ComfyUI, AI workers) to unload and tries once more; if the card is still full it says so.

CameraMatch

CameraMatch solves a camera from vanishing points: drag two lines per axis over edges that are parallel in the scene, put the origin on the ground, optionally give a known distance, and Create Camera makes a Camera node. Its solver is a clean-room implementation of published vanishing-point geometry.

Differences from Nuke

  • Lights use classic Nuke units (intensity, falloff), not Nuke 17's physical light units.
  • Not built yet: spherical / cylindrical cameras, lens distortion and depth of field in the renderers, GeoDisplace, MaterialX / BasicSurface materials, deep output.
  • Overlapping semi-transparent cards are not depth-sorted.

On this page