Render Pick DAT

From Derivative
Jump to: navigation, search

Summary
[edit]

The Render Pick DAT lets you get information about the 3D surface at any pixel of any 3D render, allowing you to implement multi-touch on a 3D rendered scene. It samples a rendering (from a Render TOP or a Render Pass TOP) and returns 3D information from the geometry at the specified pick locations.

You feed it a DAT with minimum three columns: select, u and v. A Multi Touch In DAT is usually connected to the Render Pick DAT, where the Multi Touch In DAT points to a container that is displaying the output of the Render TOP.


Available in builds 2016.5200 and later. You can pick from multiple cameras simultaneously. You can specify a camera which allows the pick to occur from the point of a view other than the first camera listed in the Render TOP. The value in the column can either be a path (relative to the Render Pick DAT, or absolute) to a Camera COMP, or it can be an integer index, started at 0. If it's an index it will select the camera to use if there are multiple cameras listed in the Render TOP, or if there are cameras listed in the 'Custom Pick Camera(s)' parameter. This is useful for various Multi-Camera Rendering setups, and cases such as VR where your picking isn't coming from the point of view of your eye cameras, but instead hand controllers.

The pick location is a u,v (horizontal, vertical) coordinate placed in the table that you connect to the Render Pick DAT input. Each row of the input table represents one pick point to be sampled, except for the first row which contains column headings select, u and v (plus any other unused columns you want). The select, u and v columns are what you would get from a Panel CHOP. The u and v values goes 0 to 1 left to right and bottom to top, no matter what the aspect ratio of the render is.

When Strategy is Always, that u,v location is always sampled and the results are displayed in the corresponding row in the Render Pick DAT output.

The output table will show the path of the geometry that was picked, its position (in a choice of reference frames), surface normal (excluding bump mapping), distance from camera, texture UV coordinate, color, alpha and instance id. It properly picks surfaces with deforming vertices.

There are some examples here:

See also the single-sample Render Pick CHOP.

PythonIcon.pngrenderpickDAT_Class


Parameters - Render Pick Page

Strategy strategy - - Decides when to update values based on pick interactions.

  • While Select select - Continuously updates values when being selected/picked.
  • Hold First Picked holdfirst - Holds the values first returned when geometry picked.
  • Hold Last Picked holdlast - Holds the values last returned when geometry picked. This differs from the Continuous strategy in that it will hold the last values picked on geometry if the pick starts sampling empty space (no geometry in that part of the scene). Alternatively, using the Continuous strategy the values will be cleared to zero if the pick starts sampling empty space.
  • Always always - Continuously updates values at the location picked.

Clear Previous Pick on New Pick clearprev - This parameter is only enabled when the Strategy is set to Hold Last Picked. When this is on, starting a new pick on empty space will clear the values. When off, the last values will be held if the pick starts on empty space.

Response Time responsetime - - Determines when the values are updated.

  • Next Cook (Faster) nextcook - The values are captured on the current frame and updated next frame. Results are from the previous frame, but much faster cook times.
  • This Cook (Slower) thiscook - The values are captured and updated in the current frame.

Pick Radius pickradius - Controls the radius of the search area for the pick. If nothing is found at the pick's center it will keep searching for geometry in the search area defined by the Pick Radius.

Pick Radial Step pickradstep - Used to reduce the searching within the search area. The search area is sampled at locations that correspond to 'spokes' outwards from the center pick point.

Pick Circular Step pickcirstep - Used to reduce the searching within the search area. The search area is sampled at locations that correspond to 'rings' outwards from the center pick point.

Render/RenderPass TOP rendertop - Specifies which scene to pick on, and which camera to pick from. By default the first camera listed in the Render TOP will be used for picking. Another camera can be specified with the 'Custom Pick Camera(s)' parameter, and multiple different cameras can be selected using the camera input column.

Texture Sampling Parameters

Custom Pick Camera(s) custompickcameras - Picking can be done from the viewport of custom camera(s) by specifying one or more Camera COMP here. If this parameter is blank the cameras from the Render TOP are used. To pick from the viewpoint of multiple different cameras, a camera column must be specified in the input DAT.

Allow Multi-Camera Rendering allowmulticamera - Multi-Camera Rendering is a faster way to render multiple passes at the same time, and is thus a speed improvement for doing many picks at the same time. This feature may not work correctly for some older GLSL MATs made in 088 though, so this parameter allows forcing off this speed improvement if necessary. Generally it should be left on though.

Use Pickable Flags usepickableflags - When turned on only geometry whose Pickable Flag is on can be selected by the Render Pick DAT. The Pickable Flag is found on all Object components.

Include Non-Pickable Objects includenonpickable - Includes the non-pickable objects in the picking algorithm such that non-pickable objects may occlude pickable objects. For example, if there is only one pickable object in the scene with lots of additional non-pickable geometry is present, turning this parameter on will prevent the pickable object from being selected if it is behind a non-pickage object (occluded by the non-pickage object).

Merge Input DAT mergeinputdat - Appends input table to the Render Pick DATs columns.

Activate Callbacks activatecallbacks - Enables Callback DAT for each pick event.

Callbacks DAT callbacks - Path to a DAT containing callbacks for pick event received.


Parameters - Options Page

Fetch Position position - - Returns the position of the point picked on the geometry. Columns tx, ty, tz.

  • No no - Do not return position values.
  • In SOP Space sopspace - Return position of point picked in SOP transform space.
  • In World Space worldspace - Return position of point picked in world transform space.
  • In Camera Space cameraspace - Return position of point picked in camera transform space.
  • Relative to Object relativetoobj - Return position of point picked relative to object specified in Reference Object parameter.

Fetch Normal normal - - Returns the normals of the point picked on the geometry. Columns nx, ny, nz.

  • No no - Do not return normal values.
  • In SOP Space sopspace - Return normals of point picked in SOP transform space.
  • In World Space worldspace - Return normals of point picked in world transform space.
  • In Camera Space cameraspace - Return normals of point picked in camera transform space.
  • Relative to Object relativetoobj - Return normals of point picked relative to object specified in Reference Object parameter.

Reference Object referenceobj - Object used when fetching position or normals Relative to Object.

Fetch Point Color color - Returns the point color of the point picked on the geometry. Columns cr, cg, cb, ca.

Fetch Texture UV uv - Returns the texture coordinates of the point picked on the geometry. Columns mapu, mapv, mapw.

Fetch Depth depth - Returns the depth of the point picked on the geometry. This value a non-linear ratio of the point's position between the near and far planes of the Depth Buffer. Column is depth.

Fetch Instance ID instanceid - Returns the Instance ID of the object. This will always be 0 if instancing is off. Column is instance.

Custom Attrib 1 customattrib1 - Specify which custom attributes to return from the object.

Custom Attrib 1 Type customattrib1type - - The type of attribute is selected from this menu.

Custom Attrib 2 customattrib2 - Specify which custom attributes to return from the object.

Custom Attrib 2 Type customattrib2type - - The type of attribute is selected from this menu.

Custom Attrib 3 customattrib3 - Specify which custom attributes to return from the object.

Custom Attrib 3 Type customattrib3type - - The type of attribute is selected from this menu.

Custom Attrib 4 customattrib4 - Specify which custom attributes to return from the object.

Custom Attrib 4 Type customattrib4type - - The type of attribute is selected from this menu.


Parameters - Common Page

Language language - - Select how the DAT decides which script language to operate on.

  • Input input - The DAT uses the inputs script language.
  • Node node - The DAT uses it's own script language.


Edit/View Extension extension - - Select the file extension this DAT should expose to external editors.

  • dat dat - various common file extensions.
  • From Language language - pick extension from DATs script language.
  • Custom Extension custom - Specify a custom extension.


Custom Extension customext - Specifiy the custom extension.


Word Wrap wordwrap - - Enable Word Wrap for Node Display.

  • Input input - The DAT uses the inputs setting.
  • On on - Turn on Word Wrap.
  • Off off - Turn off Word Wrap.


DATs
Art-Net • CHOP Execute • CHOP to • Clip • Convert • DAT•  Execute • DAT xport• Error • EtherDream • Evaluate • Examine • Execute • FIFO • File In • File Out • Folder • In • Indices • Info • Insert • Introduction To DATs id• Keyboard In • Merge • MIDI Event • MIDI In • Monitors • MQTT Client • Multi Touch In • Null • OP Execute • OP Find • OSC In • OSC Out • Out • Panel Execute • Parameter Execute • Perform • Render Pick • Reorder • Script • Select • Serial • SOP to • Sort • Substitute • Switch • Table • TCP/IP • Text • Touch In • Touch Out • Transpose • TUIO In • UDP In • UDP Out • UDT In • UDT Out • Web • WebSocket • XML

An that manipulates text strings: multi-line text or tables. Multi-line text is often a command , but can be any multi-line text. are rows and columns of cells, each containing a text string.

An that creates, composites and modifies images, and reads/writes images and movies to/from files and the network. TOPs run on the graphics card's GPU.

An that contains its own inside. There are twelve 3D and eight 2D types. See also .

To re-compute the output data of the . An operator cooks when (1) its inputs change, (2) its change, (3) when the timeline moves forward in some cases, or (4) commands are run on the node. When the operator is a , it also cooks when a user interacts with it. When an operator cooks, it usually causes operators connected to its output to re-cook. When TouchDesigner draws the screen, it re-cooks all the necessary operators in all , contributing to a frame's total "cook time".

A 3D image created with the Render TOP. Also used more generally to include the compositing (with TOPs) to generate an output image.

(1) Indicator of certain states of an operator (bypass, display, lock), or (2) option of a command.

Some operators have a DAT to them that contains some python functions. These functions, called "callbacks", get called when something in the operator changes.

The location of an operator within the TouchDesigner environment, for example, /geo1/torus1, a node called torus1 in a component called geo1. The path / is called . To refer instead to a filesystem folder, directory, disk file or http: address, see .

An that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

The component types that are used to render 3D scenes: contain the 3D shapes to render, plus , , Ambient Light, Null, Bone, Handle and other component types.

A .

Each SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon is defined by a vertex list, which is list of point numbers.

(1) A can render its SOP geometry many times using CHOP samples, (2) an OP that doesn't actually have its own data, but rather just refers to an OP (or has an input) whose data it uses. This includes Null OPs, Select OPs and Switch OPs.

The generic thing that holds an , and includes (display, bypass, lock, render, immune) and its position/size in the network. Whether you "lay down an Operator" or "lay down an Node", you're doing the same thing.