On this page | |
Since | 13.0 |
The RBD Packed Object DOP creates a single DOP Object inside the DOP simulation. It takes the geometry from the given SOP Path and uses each primitive that has a transform and a single point to represent an RBD object. This includes primitives such as packed primitives, spheres, and tubes. Each primitive provides the collision geometry for a rigid body, and attributes on the primitive’s point are used to store information such as orientation, mass, and velocity.
The resulting DOP Object represents large numbers of objects in a more efficient manner than the RBD Fractured Object DOP or the RBD Point Object DOP. This object representation is currently only understood by the Bullet Solver.
Note
In Houdini 13, RBD Packed Objects can’t interact with other solvers such as cloth and fluids.
Point Attributes ¶
The Bullet Solver uses several point attributes to store the properties of each piece of a packed object.
Name | Type | Description |
---|---|---|
active
|
Integer |
Specifies whether the object is able to react to other objects in the simulation. The default active state is set by the Initial Object Type parameter. |
age
|
Float |
The age of the object, in seconds. |
animated
|
Integer |
Specifies whether the object’s transform should be updated from its SOP geometry at each timestep. This attribute is only used if the |
bounce
|
Float |
The elasticity of the object. If two objects of bounce 1.0 collide, they will rebound without losing energy. If two objects of bounce 0.0 collide, they will come to a standstill. The default value is set by the Bounce parameter. |
bullet_add_impact
|
Integer |
When enabled, any impacts that occur during the simulation will be recorded in the Impacts or Feedback data. Enabling this option may cause the simulation time and memory usage to increase. |
bullet_angular_sleep_threshold
|
Float |
The sleeping threshold for the object’s angular velocity. If the object’s angular speed is below this threshold for a period of time, the object may be treated as non-moving. |
bullet_ignore
|
Integer |
Specifies whether the object should be completely ignored by the Bullet solver. Unlike setting the |
bullet_linear_sleep_threshold
|
Float |
The sleeping threshold for the object’s linear velocity. If the object’s linear speed is below this threshold for a period of time, the object may be treated as non-moving. |
bullet_want_deactivate
|
Integer |
Disables simulation of a non-moving object until the object moves again. The linear and angular speed thresholds are used to determine whether the object is non-moving. If the Display Geometry checkbox is turned off, you will see the color of the Guide Geometry change from the Color to the Deactivated Color. |
computecom
|
Integer |
Specifies whether the center of mass of the object should be computed automatically from the object’s collision shape. The default value is set by the Compute Center of Mass parameter. |
computemass
|
Integer |
Specifies whether the mass of the object should be computed automatically from the object’s collision shape and density. The default value is set by the Compute Mass parameter. |
creationtime
|
Float |
Stores the simulation time at which the object was created. |
dead
|
Integer |
Specifies whether the object should be deleted during the next solve. The POP Kill node can be used to generate this attribute. |
deforming
|
Integer |
Specifies whether the object’s collision shape should be rebuilt from its SOP geometry at each timestep. The default value is set by the Initial Object Type parameter. |
density
|
Float |
The mass of an object is its volume times its density. The default value is set by the Density parameter. |
friction
|
Float |
The coefficient of friction of the object. A value of 0 means the object is frictionless. The default value is set by the Friction parameter. |
inertialtensorstiffness
|
Float |
A scale factor that is applied to the inertial tensor of the object. A higher stiffness will make the object less likely to spin. The default value is set by the Rotational Stiffness parameter. |
inheritvelocity
|
Integer |
If non-zero, the |
life
|
Float |
The maximum age of the object, in seconds. When the |
mass
|
Float |
The mass of the object. If |
name
|
String |
A unique name for the object. This value is used by Constraint Networks to identify constraints that should be attached to this object. |
orient
|
Quaternion |
The orientation of the object around the |
P
|
Vector |
The current position of the object’s center of mass. |
pscale
|
Float |
The uniform scale of the object around the |
pivot
|
Vector |
The pivot point that the orientation is applied to. If |
restxform
|
Matrix |
The initial transform of the packed primitive.
The packed primitive’s current transform is the combination of this transform with the position transform (the transform applied by the simulation). The position transform is defined by |
scale
|
Vector |
The scale of the object around the The solver automatically updates the collision geometry and the object’s inertial tensor to reflect this scale. Note To recompute the object’s mass when the scale is changed, set the Note Dynamic scaling is not supported for auto-fitted collision shapes (i.e. when Geometry Representation is Box, Capsule, Cylinder, Sphere, or Plane).
In such cases you can set the |
v
|
Vector |
The linear velocity of the object. The initial velocity is set by the Velocity parameter. |
w
|
Vector |
The angular velocity of the object, in radians per second. The initial angular velocity is set by the Angular Velocity parameter. |
Collision Shape Attributes ¶
The following attributes can be used to customize the collision shape for each object.
Name | Type | Description |
---|---|---|
bullet_adjust_geometry
|
Integer |
Shrinks the collision geometry to prevent the Collision Padding from increasing the effective size of the object. This can improve the simulation’s performance by preventing initially closely-packed collision shapes from interpenetrating, and also removes the gap between objects caused by the Collision Padding. |
bullet_autofit
|
Integer |
Specifies whether to use the bounds of the object’s geometry to compute the collision shape when Geometry Representation is Box, Capsule, Cylinder, Sphere, or Plane. |
bullet_collision_margin
|
Float |
A padding distance between shapes, which is used by the Bullet engine to improve the reliability and performance of the collision detection. You may need to scale this value depending on the scale of your scene. This padding increases the size of the collision shape, so it is recommended to enable Shrink Collision Geometry to prevent the collision shape from growing. This option is not supported for the Concave or Plane geometry representations. |
bullet_color
|
Vector |
Specifies the color of the shape’s guide geometry. |
bullet_deactivated_color
|
Vector |
Specifies the color of the shape’s guide geometry if the object is not moving and has been deactivated by the solver. |
bullet_georep
|
String |
The collision shape used to represent the object.
Possible values are |
bullet_groupconnected
|
Integer |
When Geometry Representation is Convex Hull, specifies whether the solver should create a compound shape that contains a separate convex hull collision shape for each set of connected primitives in the geometry. |
bullet_length
|
Float |
The length of the Capsule or Cylinder collision shape in the Y direction. If AutoFit is enabled, this value will be computed automatically from the object’s geometry. |
bullet_primR
|
Vector |
The orientation of the Box, Capsule, Cylinder, or Plane collision shape in the Bullet world. If AutoFit is enabled, this value will be computed automatically from the object’s geometry. |
bullet_primS
|
Vector |
The size of the Box collision shape. If AutoFit is enabled, this value will be computed automatically from the object’s geometry. |
bullet_primT
|
Vector |
The position of the Box, Sphere, Capsule, Cylinder, or Plane collision shape in the Bullet world. If AutoFit is enabled, this value will be computed automatically from the object’s geometry. |
bullet_radius
|
Float |
The radius of the Sphere, Capsule, or Cylinder collision shape. If AutoFit is enabled, this value will be computed automatically from the object’s geometry. |
bullet_shrink_amount
|
Float |
Specifies the amount of resizing done by Shrink Collision Geometry. |
Collision Attributes ¶
The attributes listed below can be used to configure the object’s collision-related behavior.
Name | Type | Description |
---|---|---|
activationignore
|
String |
If the object is inactive and has a positive
|
activationxformgroup
|
String |
For an agent, specifies which of its rigid bodies should be activated when using the |
collisiongroup
|
String |
Specifies the name of a collision group that this object belongs
to. This can be used by the |
collisionignore
|
String |
The object will not collide against any objects that match this pattern.
This pattern can use the name of DOP objects, the ID of DOP objects, DOP groups, the
|
min_activation_impulse
|
Float |
The minimum impulse from a collision that will cause the object to switch from inactive to active. The activation occurs at the instant that the collision occurs.
The |
stickycollisionignore
|
String |
Sticky collisions will not occur for collisions with any objects that match this pattern.
The pattern uses the same syntax as the |
minstickycollisionimpulse
|
Float |
The minimum impulse from a collision that will cause the object to stick to the other object.
The constraint between the two objects is created at the instant that the collision occurs.
The |
maxstickycollisionobjects
|
Integer |
The maximum number of other objects that this object can be stuck to. A value less than or equal to 0 disables this behavior, allowing the object to be stuck to any number of other objects. |
numstickycollisionobjects
|
Integer |
Updated by the solver to track the number of other objects that this object was stuck to (limited by |
maxstickycollisionpoints
|
Integer |
The maximum number of anchor points (constraints) that can be used to stick this object to another object. Constraints are attached at contact points between the two objects. The default value is 1, allowing a single constraint to be created between each pair of objects. |
Speed Limit Attributes ¶
The attributes listed below can be used to clamp the linear or angular speed of specific objects. The clamping is performed during each substep after forces and constraints have been applied (but before positions are updated), so this enforces a hard limit on the object’s speed. If the attribute value is negative, no clamping is performed. For animated or deforming static objects, the speed limit affects the velocities used when resolving collisions. The POP Speed Limit node can be used to generate these attributes.
Name | Type | Description |
---|---|---|
speedmin
|
Float |
The slowest speed (in units/second) that an object can move. This does not affect stationary objects. |
speedmax
|
Float |
The fastest speed (in units/second) that an object can move. |
spinmin
|
Float |
The slowest speed (in radians/second) that an object can rotate. This does not affect non-spinning objects. |
spinmax
|
Float |
The fastest speed (in radians/second) that an object can rotate. |
The attributes listed below can be used to limit the change in the object’s linear or angular velocity when solving constraints and collisions. This does not affect changes to the object’s velocity due to external forces, and is enforced each frame after constraints have been solved and positions have been updated. This can be useful to tame collisions that produce very high linear or angular velocities. If the value is negative, no clamping is performed.
Note
For best results, it is recommended to clamp both linear and angular acceleration simultaneously.
Setting the max acceleration to a very low value can introduce jitter for situations such as objects resting on the ground plane. With such values, the contact constraints cannot change the object’s velocity by enough to counter the acceleration due to gravity.
Name | Type | Description |
---|---|---|
accelmax
|
Float |
Limits the change in the object’s speed that is caused by enforcing constraints. |
angaccelmax
|
Float |
Limits the change in the object’s angular speed that is caused by enforcing constraints. |
Force Attributes ¶
The attributes listed below can be used to apply forces to specific objects. Nodes such as POP Force and POP Drag can be used to generate these forces.
Name | Type | Description |
---|---|---|
airresist
|
Float |
Specifies how important it is to match the target velocity ( |
drag
|
Float |
When an object is dragged by the |
dragexp
|
Float |
Higher drag exponents cause objects that are far from |
force
|
Vector |
Specifies a force that will be applied to the center of mass of the object. |
spinresist
|
Float |
Specifies how important it is to match the target angular velocity ( |
targetv
|
Vector |
Specifies a target velocity for the object. This is used in combination with the |
targetw
|
Vector |
Specifies a target angular velocity for the object. This is used in combination with the |
torque
|
Vector |
Specifies a torque that will be applied to the object. |
Agent Attributes ¶
For agent primitives, a rigid body is created for each transform in its rig that has at least one shape attached to it in the agent’s collision layer.
Array attributes are used for properties that can vary for each of an agent’s rigid bodies, and the attributes are named with the _agent
suffix.
The arrays are indexed using the transform index from the agent’s rig.
The following array attributes are required:
-
bullet_autofit_valid_agent
-
bullet_length_agent
-
bullet_primR_agent
-
bullet_primS_agent
-
bullet_primT_agent
-
bullet_radius_agent
-
bullet_sleeping_agent
-
deactivation_time_agent
-
mass_agent
-
orient_agent
-
pivot_agent
-
trans_agent
-
v_agent
-
w_agent
The following array attributes are optional and can be used instead of the regular point attributes if varying values are needed.
-
active_agent
-
activationignore_agent
-
activationxformgroup_agent
-
bounce_agent
-
bullet_adjust_geometry_agent
-
bullet_collision_margin_agent
-
bullet_color_agent
-
bullet_deactivated_color_agent
-
bullet_shrink_amount_agent
-
collisiongroup_agent
-
collisionignore_agent
-
density_agent
-
force_agent
-
friction_agent
-
inertialtensorstiffness_agent
-
maxstickycollisionobjects_agent
-
maxstickycollisionpoints_agent
-
min_activation_impulse_agent
-
minstickycollisionimpulse_agent
-
numstickycollisionobjects_agent
-
stickycollisionignore_agent
-
torque_agent
The attributes listed below can also be used for agent primitives.
Name | Type | Description |
---|---|---|
bullet_updateagentxform
|
Integer |
Specifies whether the solver should update the agent’s overall transform (e.g. the |
Reserved Solver Attributes ¶
Below is a list of attributes that are maintained internally by the solver. You should not modify these attributes yourself.
Name | Class | Type | Description |
---|---|---|---|
bullet_autofit_valid
|
Point | Integer |
When AutoFit is enabled, this value stores whether the solver has already computed collision shape attributes such as |
bullet_sleeping
|
Point | Integer |
Tracks whether the object has been put to sleep by the solver. This occurs after the object and any nearby / constrained objects have been below the Linear Threshold and Angular Threshold for a period of time. Note When manually waking an object, the |
deactivation_time
|
Point | Float |
The amount of time that the object’s speed has been below the Linear Threshold or Angular Threshold. The solver uses this value to disable simulation of objects that have been inactive for a period of time. |
found_overlap
|
Point | Integer |
When the solver sees an object for the first time, it checks whether that object is initially overlapping with any other objects in the simulation and prevents any such pairs of objects from being forced apart. This value is used by the solver to determine whether it has performed this process for the object on a previous frame. |
id
|
Point | Integer |
A unique identifier for the object. This value is used by the solver to identify objects that have been added to or removed from the simulation. |
nextid
|
Detail | Integer |
Stores the |
Parameters ¶
Creation Frame Specifies Simulation Frame
Determines if the creation frame refers to global Houdini frames ($F
) or to simulation specific frames ($SF
). The latter is affected by the offset time and scale time at the DOP network level.
Creation Frame
The frame number on which the object will be created. The object is created only when the current frame number is equal to this parameter value. This means the DOP Network must evaluate a timestep at the specified frame, or the object will not be created.
For example, if this value is set to 3.5, the Timestep parameter of the DOP Network must be changed to 1/(2*$FPS)
to ensure the DOP Network has a timestep at frame 3.5
.
Initial Object Type
Specifies the initial state of the objects. The active
, animated
, and deforming
point attributes can be used to vary these values on a per object basis.
For animated and deforming objects, the name
point attribute is used to find the matching point from the SOP Path.
Create Active Objects
The objects will be simulated and react to other objects in the simulation.
Create Static Objects
The objects will not move or react to other objects in the simulation.
Create Animated Static Objects
The objects' transforms will be updated on each timestep from the SOP Path, but the objects will not react to other objects in the simulation.
Create Deforming Static Objects
The objects' collision shapes will be rebuilt on each timestep from the SOP Path, but the objects will not react to other objects in the simulation.
Create Deforming Active Objects
The objects will be simulated and react to other objects in the simulation, and their collision shapes will also be rebuilt on each timestep from the SOP Path.
Geometry Source
Specifies the source of the objects' geometry.
SOP
Use the SOP specified by the SOP Path parameter.
First Context Geometry
Use the SOP connected to the DOP network’s first input.
Second Context Geometry
Use the SOP connected to the DOP network’s second input.
Third Context Geometry
Use the SOP connected to the DOP network’s third input.
Fourth Context Geometry
Use the SOP connected to the DOP network’s fourth input.
SOP Path
The path to a SOP (or an Object, in which case the display SOP is used) which will be the geometry for this object.
Overwrite Attributes from SOP
When enabled, specifies a list of point attributes that will be updated on each frame from the SOP Path. The name
point attribute is used to find the matching point from the SOP geometry.
Use Object Transform
The transform of the object containing the chosen SOP is applied to the geometry. This is useful if the initial location of the geometry is defined by an object transform.
Display Geometry
Controls if the geometry is displayed in the viewport. Does not reset the simulation when it is changed.
Simulation Geometry
The objects' geometry is displayed in the viewport.
Render Geometry
The geometry specified by the Render SOP Path parameter is transformed to match the simulation geometry and is displayed in the viewport. This is useful for visualizing the results of the simulation when using lower resolution shapes for the simulation geometry.
Render SOP Path
Specifies the SOP geometry to use when Display Geometry is set to Render Geometry.
Initial State ¶
Position
Initial position in world space of the object.
Rotation
Initial orientation of the object. This is in RX/RY/RZ format.
Velocity
Initial velocity of the object.
Angular Velocity
Initial angular velocity of the object. This is the axis of rotation times the rate of rotation. Speed of rotation is measured in degrees per second, so a value of 360 will cause the object to rotate once per second.
Inherit Velocity from Point Velocity
If enabled, the v
and w
point attributes of the source geometry will override the object’s initial velocity.
Bullet Data ¶
Show Guide Geometry
When turned on, displays a visualization of the object’s collision shape, including the Collision Padding. This is useful for debugging issues with collision detection, but is typically slower than only displaying the object’s geometry.
Color
The color of the guide geometry.
Deactivated Color
The color of the guide geometry if the object is not moving and has been deactivated by the Bullet Solver.
Geometry Representation
The shape used by the Bullet engine to represent the object. The Show Guide Geometry parameter can be used to visualize this collision shape.
Convex Hull
The default shape for the object. The Bullet Solver creates a collision shape from the convex hull of the geometry points.
Concave
The Bullet Solver converts the geometry to polygons and creates a concave collision shape from the resulting triangles. This shape is useful when simulating concave objects such as a torus or a hollow tube. However, it is recommended to only use the concave representation when necessary, since the convex hull representation typically provides better performance.
Box
The bounding box of the object.
Capsule
The bounding capsule of the object.
Cylinder
The bounding cylinder of the object.
Compound
Creates a complex shape consisting of Bullet primitives (including boxes, spheres, and cylinders). You will need to use the Bake ODE SOP.
Sphere
The bounding sphere of the object.
Plane
A static ground plane.
Create Convex Hull per Set of Connected Primitives
When turned on, and Geometry Representation is set to Convex Hull, the Bullet Solver creates a compound shape that contains a separate convex hull collision shape for each set of connected primitives in the geometry.
AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry
When turned on, the object’s Geometry subdata is analyzed instead of using the Position, Rotation, Box Size, Radius, and Length values.
When Geometry Representation is set to Box, Capsule, Cylinder, Sphere, or Plane, use the geometry bounds to create the shape.
Position
The position of the object shape in the Bullet world. This parameter is available when Geometry Representation is set to Box, Sphere, Capsule, Cylinder, or Plane, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.
Rotation
The orientation of the object shape in the Bullet world. This parameter is available when Geometry Representation is set to Box, Capsule, Cylinder, or Plane, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.
Box Size
The half extents of the box shape. This parameter is available when Geometry Representation is set to Box, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.
Radius
The radius of the sphere shape. This parameter is available when Geometry Representation is set to Sphere, Capsule, or Cylinder, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.
Length
The length of the capsule or cylinder in the Y direction. This parameter is available when Geometry Representation is set to Capsule or Cylinder, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.
Collision Padding
A padding distance between shapes, which is used by the Bullet engine to improve the reliability and performance of the collision detection. You may need to scale this value depending on the scale of your scene. This padding increases the size of the collision shape, so it is recommended to turn on Shrink Collision Geometry to prevent the collision shape from growing.
This parameter is not available when Geometry Representation is set to Plane.
Shrink Collision Geometry
When turned on, shrinks the collision geometry to prevent the Collision Padding from increasing the effective size of the object.
This can improve the simulation’s performance by preventing initially closely-packed collision shapes from interpenetrating, and also removes the gap between objects caused by the Collision Padding.
When Geometry Representation is set to Box, Capsule, Cylinder, Compound, or Sphere, the radius and/or length of each primitive is reduced by Shrink Amount.
When Geometry Representation is set to Convex Hull, each polygon in the representation geometry is shifted inward by Shrink Amount.
This parameter is not available when Geometry Representation is set to Concave or Plane.
Shrink Amount
The amount of resizing done by Shrink Collision Geometry. By default, this value is equal to the Collision Padding so that the resulting size of the collision shape (including the Collision Padding) is the same size as the object’s geometry.
This parameter is not available when Geometry Representation is set to Concave or Plane.
Add Impact Data
When turned on, any impacts that occur during the simulation is recorded in the Impacts or Feedback data. Turning on this option may cause the simulation time and memory usage to increase.
The Impacts and Feedback data are added as subdata on the DOP object. You can see them in the details view when there is at least one impact during the timestep.
The Feedback data is essentially the same as the Impacts data, but is used when there is mutual interaction in the DOP network between multiple objects that are being solved by different solvers. For example, for an RBD object and FLIP fluid object to mutually interact, the DOP network runs multiple feedback loops to resolve the interactions, and the Feedback data is used to pass impact data between the solvers.
Enable Sleeping
When turned on, disables simulation of a non-moving object until the object moves again. The linear and angular speed thresholds are used to determine whether the object is non-moving. If Display Geometry is turned off, you will see the color of the guide geometry change from the Color to the Deactivated Color.
Linear Threshold
The sleeping threshold for the object’s linear velocity. If the object’s linear speed is below this threshold for a period of time, the object may be treated as non-moving.
Angular Threshold
The sleeping threshold for the object’s angular velocity. If the object’s angular speed is below this threshold for a period of time, the object may be treated as non-moving.
Allow Initial Overlap
When the solver sees an object for the first time, it checks whether that object is initially overlapping with any other objects in the simulation and prevents any such pairs of objects from being forced apart. If this is disabled, initially overlapping objects will be moved apart to resolve the collisions.
Tip
To resolve collisions between initially overlapping objects without adding velocity, ensure that Split Impulse is enabled on the Bullet solver and set the Penetration Threshold to 0.
Min Activation Impulse
The minimum impulse from a collision that will cause the object to switch from inactive to active. The activation occurs at the instant that the collision occurs.
The activationignore
attribute can be used to prevent the object from being activated by collisions with particular objects.
Physical ¶
Compute Center of Mass
Specifies that the object’s center of mass should be computed automatically from its collision shape on the next frame it is solved.
Inherit Pivot from Point Position
Sets the center of mass to the primitive’s initial point position.
Pivot
Specifies the object’s center of mass.
Compute Mass
Determines if the mass will be calculated automatically from the object’s volumetric representation and glued sub-objects.
Density
The mass of an object is its volume times its density.
Mass
The absolute mass of the object.
Rotational Stiffness
When an object receives a glancing blow, it will often acquire a spin. The amount of spin acquired depends on the shape and mass distribution of the object, known as the inertial tensor.
The Rotational Stiffness is a scale factor applied to this. A higher stiffness will make the object less liable to spinning, a lower value will make it more ready to spin.
Bounce
The elasticity of the object. If two objects of bounce 1.0 collide, they rebound without losing energy. If two objects of bounce 0.0 collide, they come to a standstill.
Bounce Forward
The tangential elasticity of the object. If two objects of bounce forward 1.0 collide, their tangential motion is affected only by friction. If two objects of bounce forward 0.0 collide, their tangential motion is matched.
Friction
The coefficient of friction for the object. A value of 0 means the object is frictionless.
This governs how much the tangential velocity is affected by collisions and resting contacts.
Dynamic Friction Scale
An object sliding may have a lower friction coefficient than an object at rest. This is the scale factor that relates the two. It is not a friction coefficient, but a scale between zero and one.
A value of one means that dynamic friction is equal to static friction. A scale of zero means that as soon as static friction is overcome, the object acts without friction.
Temperature
Temperature marks how warm or cool an object is. This is used in gas simulations for ignition points of fuel or for buoyancy computations.
Since this does not relate directly to any real world temperature scale, ambient temperature is usually considered 0.
Outputs ¶
First
The RBD object created by this node is sent through the single output.
Locals ¶
ST
The simulation time for which the node is being evaluated.
Depending on the settings of the DOP Network Offset Time and Scale Time parameters, this value may not be equal to the current Houdini time represented by the variable T.
ST is guaranteed to have a value of zero at the
start of a simulation, so when testing for the first timestep of a
simulation, it is best to use a test like $ST == 0
, rather than
$T == 0
or $FF == 1
.
SF
The simulation frame (or more accurately, the simulation time step number) for which the node is being evaluated.
Depending on the settings of the DOP Network parameters, this value may not be equal to the current Houdini frame number represented by the variable F. Instead, it is equal to the simulation time (ST) divided by the simulation timestep size (TIMESTEP).
TIMESTEP
The size of a simulation timestep. This value is useful for scaling values that are expressed in units per second, but are applied on each timestep.
SFPS
The inverse of the TIMESTEP value. It is the number of timesteps per second of simulation time.
SNOBJ
The number of objects in the simulation. For nodes that create objects such as the Empty Object DOP, SNOBJ increases for each object that is evaluated.
A good way to guarantee unique object names is to use an expression
like object_$SNOBJ
.
NOBJ
The number of objects that are evaluated by the current node during this timestep. This value is often different from SNOBJ, as many nodes do not process all the objects in a simulation.
NOBJ may return 0 if the node does not process each object sequentially (such as the Group DOP).
OBJ
The index of the specific object being processed by the node. This value always runs from zero to NOBJ-1 in a given timestep. It does not identify the current object within the simulation like OBJID or OBJNAME; it only identifies the object’s position in the current order of processing.
This value is useful for generating a random number for each object, or simply splitting the objects into two or more groups to be processed in different ways. This value is -1 if the node does not process objects sequentially (such as the Group DOP).
OBJID
The unique identifier for the object being processed. Every object is assigned an integer value that is unique among all objects in the simulation for all time. Even if an object is deleted, its identifier is never reused. This is very useful in situations where each object needs to be treated differently, for example, to produce a unique random number for each object.
This value is also the best way to look up information on an object using the dopfield expression function.
OBJID is -1 if the node does not process objects sequentially (such as the Group DOP).
ALLOBJIDS
This string contains a space-separated list of the unique object identifiers for every object being processed by the current node.
ALLOBJNAMES
This string contains a space-separated list of the names of every object being processed by the current node.
OBJCT
The simulation time (see variable ST) at which the current object was created.
To check if an object was created
on the current timestep, the expression $ST == $OBJCT
should
always be used.
This value is zero if the node does not process objects sequentially (such as the Group DOP).
OBJCF
The simulation frame (see variable SF) at which the current object was created. It is equivalent to using the dopsttoframe expression on the OBJCT variable.
This value is zero if the node does not process objects sequentially (such as the Group DOP).
OBJNAME
A string value containing the name of the object being processed.
Object names are not guaranteed to be unique within a simulation. However, if you name your objects carefully so that they are unique, the object name can be a much easier way to identify an object than the unique object identifier, OBJID.
The object name can
also be used to treat a number of similar objects (with the same
name) as a virtual group. If there are 20 objects named “myobject”,
specifying strcmp($OBJNAME, "myobject") == 0
in the activation field
of a DOP will cause that DOP to operate on only those 20 objects.
This value is the empty string if the node does not process objects sequentially (such as the Group DOP).
DOPNET
A string value containing the full path of the current DOP network. This value is most useful in DOP subnet digital assets where you want to know the path to the DOP network that contains the node.
Note
Most dynamics nodes have local variables with the same names as the node’s parameters. For example, in a Position DOP, you could write the expression:
$tx + 0.1
…to make the object move 0.1 units along the X axis at each timestep.
Examples ¶
ActivateObjects Example for RBD Packed Object dynamics node
This example shows how to modify the “active” point attribute of an RBD Packed Object to change objects from static to active.
AnimatedObjects Example for RBD Packed Object dynamics node
This example shows how to use animated packed primitives in an RBD Packed Object and set up a transition to active objects later in the simulation.
DeleteObjects Example for RBD Packed Object dynamics node
This example shows how to remove objects from the simulation that are inside a bounding box.
EmittingObjects Example for RBD Packed Object dynamics node
This example shows how to use a SOP Solver to create new RBD objects and add them to an existing RBD Packed Object.
ScalingRBDs Example for RBD Packed Object dynamics node
This example demonstrates how to modify the scale of RBD objects during a simulation.
SpeedLimit Example for RBD Packed Object dynamics node
This example shows how to limit the speed of specific objects in the simulation.
See also |