Object CHOP
Summary
The Object CHOP compares two objects and outputs channels containing their raw or relative positions and orientations. The information that can be output is:
- Position of one object relative to another
- Rotation of one object relative to another
- Bearing of one object relative to another
- Single Bearing Angle between two objects
- Distance between the origin of two objects
- Inverse Square of the Distance between two objects
The optional two inputs allow you to compare X,Y,Z points in world space with objects or each other. The inputs are expected to have three channels containing XYZ points (three channels with the suffix x, y and z). Alternatively, they can be in the standard transform formats as described by the Transform CHOP help. These inputs replace the target and/or reference objects. Object and points can be compared with each other, but "Rotation" mode will always return zero.
See also the SOP to CHOP and the Parameter CHOP. They retrieve other information from objects and SOPs.
Parameters - Object Page
dat
- Uses a Table DAT to specify the target and reference objects to use. The first column will be the target objects while the second column will be the reference objects. No headers are used.
target
- The object that is being compared to the position of the reference object. The Target Object can be expressed as a text string. This can be useful when the object name needs to be a variable - it allows you to type in a name which may include expressions or variables.
reference
- The object that acts as the origin of the comparison. The Reference Object can be expressed as a text string.
swaptargetreference
- Swap the objects defined above in the Target Object and Reference Object parameters.
Parameters - Output Page
compute
- ⊞ - Specify the information to output from the objects as described in the parameters below. Except for 'measurements', these match the standard transform formats as described by the Transform CHOP.
- Transform (Euler)
transform
- A transform using euler (rx ry rz) for the rotation.
- Transform (Quaternion)
transformquat
- A transform using quaternion (qx qy qz qw) for the rotation.
- 4x4 Matrix
mat
- A 4x4 transform matrix.
- 3x3 Matrix
mat3
- A 3x3 transform matrix. This includes scale/rotation but no translation.
- Measurements
measure
- Enables the toggles below to select what to measure. Measurements give you one object's position relative to another. You get the XYZ of the origin of the Target Object relative to the origin and rotation of the Reference Object. That is, you get the XYZ of the target object's origin as if you were at the 0,0,0 location (origin) of the Reference Object, looking down the Reference Object's Z-axis.
translate
- The displacement from the reference object to the target object.
rotate
- The orientation difference from the reference object to the target object.
scale
- The scale difference from reference object to the target object.
quat
- The quaternion from reference object to the target object.
bear
- The rotation necessary for the reference object to be facing the target object.
singlebear
- An angle representing where the target object is relative to the reference object. Zero degrees is directly in front, 90 degrees is beside and 180 degrees is behind.
distance
- The distance between the two objects.
invsqr
- The inverse squared distance between the two objects, useful for modeling electric forces, audio dropoff and gravity.
xord
- ⊞ - The transform order to use for Rotation, Scale, Transform, Bearing, or Single Bearing Angle Compute modes.
- Scale Rotate Translate
srt
-
- Scale Translate Rotate
str
-
- Rotate Scale Translate
rst
-
- Rotate Translate Scale
rts
-
- Translate Scale Rotate
tsr
-
- Translate Rotate Scale
trs
-
rord
- ⊞ - The rotation order to use for Rotation, Scale, Transform, Bearing, or Single Bearing Angle Compute modes.
- Rx Ry Rz
xyz
-
- Rx Rz Ry
xzy
-
- Ry Rx Rz
yxz
-
- Ry Rz Rx
yzx
-
- Rz Rx Ry
zxy
-
- Rz Ry Rx
zyx
-
includeorderchans
- Turn on to include channels for Transform Order and Rotate Order.
bearingref
- ⊞ - Bearing requires a direction to use as a reference base.
- X Axis
x
-
- Y Axis
y
-
- Z Axis
z
-
- Bearing Vector
vector
-
bearing
- ⊞ - An arbitrary base direction for the bearing calculation.
- X
bearingx
-
- Y
bearingy
-
- Z
bearingz
-
tscopex
- When one of the optional point inputs is connected, this determines which channels represent X, Y and Z.
tscopey
- When one of the optional point inputs is connected, this determines which channels represent X, Y and Z.
tscopez
- When one of the optional point inputs is connected, this determines which channels represent X, Y and Z.
appendattribs
- Adds a rotate attribute to any rotation channels the Object CHOP creates.
smoothrotate
- When on outputs a smooth rotation curve without graphical jumps at 0, 90, etc.
Parameters - Channel Page
nameformat
- ⊞ - Sets how the created channels are named.
- Channel Name
channel
- Automatically names channels. For example:tx, ty, tz
.
- Target and Channel Names
target
- Names channels with target prefix. For example: if target =obj1
, thenobj1:tx, obj1:ty, obj1:tz
.
- Reference and Channel Names
reference
- Names channels with reference parameter prefix. Behaves like Target and Channel Names above but uses the name of the reference object.
outputrange
- ⊞ - The start and end time of the desired interval of the object path.
- Current Frame
currentframe
- Output a single sample at the current frame.
- Current Time Slice
timeslice
- Span of samples covering the current Time Slice.
- Start / End
startend
- Uses range defined by the Start / End parameters below.
cookpast
- If the project has skipped one or more frames, this will attempt to cook it's inputs at multiple previous frames to avoid discontinuities in it's calculations.
start
- The start time of the desired interval of the object path.
startunit
- Select the units to use for this parameter, Samples, Frames, or Seconds.
end
- The end time of the desired interval of the object path.
endunit
- Select the units to use for this parameter, Samples, Frames, or Seconds.
left
- ⊞ - The extend condition before the CHOP interval. They are:
- Hold
hold
- Hold the current value of the channel.
- Slope
slope
- Continue the slope before the start of the channel.
- Cycle
cycle
- Cycle the channel repeatedly.
- Mirror
mirror
- Cycle the channel repeatedly, mirroring every other cycle.
- Default Value
default
- Use the constant value specified in the Default Value parameter.
right
- ⊞ - Extend condition after the interval. Same options as Extend Left.
- Hold
hold
- Hold the current value of the channel.
- Slope
slope
- Continue the slope after the end of the channel.
- Cycle
cycle
- Cycle the channel repeatedly.
- Mirror
mirror
- Cycle the channel repeatedly, mirroring every other cycle.
- Default Value
default
- Use the constant value specified in the Default Value parameter.
defval
- The value used for the Default Value extend condition.
Note: When creating rotation channels, the Transform CHOP and Object CHOP will select values which minimize frame-to-frame discontinuity. The graphs will appear continuous and free of 180 degree shifts.
Parameters - Common Page
timeslice
- Turning this on forces the channels to be "Time Sliced". A Time Slice is the time between the last cook frame and the current cook frame.
scope
- To determine which channels get affected, some CHOPs use a Scope string on the Common page.
srselect
- ⊞ - Handle cases where multiple input CHOPs' sample rates are different. When Resampling occurs, the curves are interpolated according to the Interpolation Method Option, or "Linear" if the Interpolate Options are not available.
- Resample At First Input's Rate
first
- Use rate of first input to resample others.
- Resample At Maximum Rate
max
- Resample to the highest sample rate.
- Resample At Minimum Rate
min
- Resample to the lowest sample rate.
- Error If Rates Differ
err
- Doesn't accept conflicting sample rates.
exportmethod
- ⊞ - This will determine how to connect the CHOP channel to the parameter. Refer to the Export article for more information.
- DAT Table by Index
datindex
- Uses the docked DAT table and references the channel via the index of the channel in the CHOP.
- DAT Table by Name
datname
- Uses the docked DAT table and references the channel via the name of the channel in the CHOP.
- Channel Name is Path:Parameter
autoname
- The channel is the full destination of where to export to, such hasgeo1/transform1:tx
.
autoexportroot
- This path points to the root node where all of the paths that exporting by Channel Name is Path:Parameter are relative to.
exporttable
- The DAT used to hold the export information when using the DAT Table Export Methods (See above).
Operator Inputs
- Input 0: -
- Input 1: -
Info CHOP Channels
Extra Information for the Object CHOP can be accessed via an Info CHOP.
Common CHOP Info Channels
- start - Start of the CHOP interval in samples.
- length - Number of samples in the CHOP.
- sample_rate - The samplerate of the channels in frames per second.
- num_channels - Number of channels in the CHOP.
- time_slice - 1 if CHOP is Time Slice enabled, 0 otherwise.
- export_sernum - A count of how often the export connections have been updated.
Common Operator Info Channels
- total_cooks - Number of times the operator has cooked since the process started.
- cook_time - Duration of the last cook in milliseconds.
- cook_frame - Frame number when this operator was last cooked relative to the component timeline.
- cook_abs_frame - Frame number when this operator was last cooked relative to the absolute time.
- cook_start_time - Time in milliseconds at which the operator started cooking in the frame it was cooked.
- cook_end_time - Time in milliseconds at which the operator finished cooking in the frame it was cooked.
- cooked_this_frame - 1 if operator was cooked this frame.
- warnings - Number of warnings in this operator if any.
- errors - Number of errors in this operator if any.
TouchDesigner Build: