Dop Import

The Ultimate Houdini node reference

Visit the Node Bible

To learn more, please log in or sign up for free to explore the Node Bible.
Write your awesome label here.

Dop Import

Write your awesome label here.
Write your awesome label here.

This SOP is designed to collect data from DOPs.  This DOP data is then imported or applied to existing other existing data within SOPs.

Drag to resize


    The key to understanding the DOP import is understanding the purpose behind each import style.  The DOP import can simply import geometry from DOPs, and it can also apply transform data found in dops to things in sops.  Also remember that in DOPs, your geometry is stored within your "objects" (ex: static objects, rbd objects, cloth objects, etc...)  Because of this, the DOP Import is looking for those objects to fetch information.  Also remember that when typing expressions in the object mask -  "*" = "everything" ... "!" = "except" ... and "*foo*" = "find anything with the name 'foo' in it." 

Drag to resize

Main Parameters:

DOP Network:

-- The DOP network to use

Object Mask:

--  Which objects in dops would you like this node to import information from?  

Use Single Object:

--  The DOP import node will try to transform sop geometry that's connected to it.  If "Use Single Object" is turned off, then it will try to match primitive groups in sops to primitive groups found in dops.  If it finds a match between groups, then it knows how to associate objects in sops with objects in dops.  
    If "Use Single Object" is turned on, however, then it will not try to match things based on primitive groups.  Instead, it just looks at the first object it finds in the object mask and uses that transform for all the connected geometry.  In truth, this parameter is unnecessary, and I would recommend just typing in the object name if you only want to read one transform from something in DOPs.  

Drag to resize

Import Style:

ransform Input Geometry:

--  This setting will try to transform sop data that's connected to the Dop Import node.  In order for this to work, you'll need something to associate the dop objects with the corresponding sop objects.  There's two main ways of doing this:  One way is by using primitive groups (see "Use Single Object" parameter above), and the other way of doing this is through the @name attribute.  NOTE:  You must check off "Import By Name" if you intend on using primitive groups. 

    Also keep in mind, that the name attribute needs to be a primitive attribute!  This will not work if the name is set to a point attribute.

    What's really cool about this import style is that it makes it possible to simulate with low res geometry while applying it's transform data to high resolution geometry.  Because it uses either the primitive group or @name, it allows you to speed up your simulation with low res, while applying the transform data to high res.

Fetch Geometry from DOP Network:

--  If you use Fetch Geometry from DOP Network, then the DOP Import node will ignore anything that's connected to it.  In this situation, it will simply just import all the information found inside the dop objects.

Fetch Packed Geometry from DOP Network (depreciated):

--  Do not use this parameter because it is depreciated.

Fetch Unpacked Geometry from DOP Network:

--  Don't know what "packed" geometry is?  Then check out Destruction I where I cover this topic in detail.  According to the docs:
    **  "Pulls geometry from the DOP Network, ignoring any SOP that may be connected to its input. For an RBD Packed Object, the unpacked collision geometry will be returned."  Based on that definition, this will unpack any packed geometry that's being used in DOPs by a RBD Packed Object node. **
    ** For more information on why packed objects are used in RBD simulations, check out Destruction I

Stamp Input Geometry:

--  In general, I would advise against using this import style unless you find some sort of reason that makes it necessary.  This parameter is poorly explained and I have yet to find great resources which demonstrate it's use and functionality.  If you happen to find something that offers a better explanation, please contact me, and I will be happy to update this section with a better explanation. 

    What this parameter is trying to do is this:  Suppose you have multiple objects in your dop simulation that have the same object name (which is, generally speaking, a very bad way of working).  What happens when the dop import tries to associate the object name with the primitive groups in sops?  It doesn't know what to do.  So, to fix this potential issue, the Stamp Input Geometry creates copies of primitive groups (found in dops) from the SOP connected to its input, and it gives you the option to associate geometry based on something called an "Object Id."  An "Object Id" is unique to each object in the dop network - even if they are named the same thing. 
    You'll notice that if you set this to Object Id, the dop import node will try associating things based on primitive groups that have been renamed to "objectid_(1,2,3,4,etc..)"  With this new object ID, you are then able to get around the problem of naming two objects the same thing... but in truth, you're better off just not naming dop objects the same thing in the first place, and matching an object id to the proper mesh in sops is problematic.

Create Points to Represent Objects

--  This import style is ideal when importing packed, fractured geometry, and you can find a demonstration of this technique by visiting Destruction I.  Be sure to fast-forward the lesson to about the 8 minute mark.  The intention here is that you are creating points which represent each object in your simulation.  This then gets copied over along with your high resolution geometry, and the transform is controlled by the attributes on those points.  This process is typically achieved through the transform pieces sop. 
    The great thing about using points like this is that it makes your cached files very light and also makes it easier for you to calculate sub-frame data on cached points when using this with a time warp node.  For these reasons, the Create Points to Represent Objects setting is my recommended setting for importing RBD data.  Just don't forget to transfer any attributes or groups that you would like to be associated with these points as well in the "transfer attribute" and "transfer groups" parameters below.

Drag to resize

Misc Settings:

These settings will be available depending on which import style you've selected

Pivot Location:

--  Only available with "Fetch Packed Geometry from DOP Network" and relates to where the pivot of each packed piece ought to exist.

Display As:

--  Only available with "Fetch Packed Geometry from DOP Network" and defines how the packed geometry ought to be displayed in your viewport.  If using a large amount of packed data, this can be useful for speeding up the viewport performance.

Import By Name:

--  This parameter tells the dop import to associate the geometry and sops with the objects in dops using the @name attribute.  This parameter also says to the dop import node, "Hey buddy, don't worry about associating primitive groups or object ids with anything.  We're going to use the name attribute instead."  NOTE:  The name attribute must exist as a primitive attribute.  This will not work as a point attribute.

Object Names is only available with the Fetch Geo From DOP Network, Fetch Packed Geo from DOP Network, Fetch Unpacked Geo from DOP Network, and Stamp Input Geometry settings.

Additionally, it will assign groups to the incoming geometry based on which Object Names setting you select.

Object Names:

--  Use Dop Object Name
    **  The DOP Object name is used to identify the object. For an RBD Packed Object, the value of the name point attribute is used.

--  Use DOP Object ID
    **  Generates a name based on the numeric identifier of the source DOP object. You may want to use this setting if there is some chance that multiple DOP Objects with the same name may be imported from the DOP network.

--  Use Full Path to Object
    **  For an RBD Packed Object, the DOP Object name is combined with the value of the name point attribute to produce an identifier such as object2/piece3. You may want to use this setting if there is some chance that multiple RBD Packed Objects may contain packed primitives with the same names.

Geometry Data Path:

--  This is a pretty cool parameter because it allows you to import a sub-set of geometry found within a dop object.  As an example, let's say that you want to import the collision mesh used by bullet into SOPs.  In this Geometry Data Path, you could say something like:  "Geometry/BulletData"  Now the DOP Import node will go to your object and browse for Geometry/BulletData.  This path correlates with the information you see when viewing your Geometry Spreadsheet while in DOPs.  As another example, you would also use this Geometry Data Path to import the constraints used in a simulation.  Basically any data that lives inside of an object can be imported individually here.

Transfer Attributes:

--  Only available when using Create Points to Represent Objects.  This will transfer attributes from DOPs onto the generated points.

Transfer Groups

--  Only available when using Create Points to Represent Objects. This will transfer groups from DOPs onto the generated points.

Inverse Transform:

--  Applies the inverse transformation of whatever is fetched from DOPs.  This could be useful for removing a transformation made on objects by another dop import node... or to just create weird effects I suppose.

Transform Data with Position Data

--  In Dops, there can be Data named "Position" that describes the translation and rotation of something.  This applies that data to the resulting sop object.

Transform Data with Geometry Data

-- In Dops, there is usually an option called "Use Object Transform" which tells the object to listen to any transformations that have been made on the obj level.  If you check that box on, then you need to also be sure that Transform Data with Geometry Data is also checked on for the transforms to work properly.

Preserve World Space Positions

--  Lets say that you applied OBJ level transforms to the network which contains the DOP Import node.  Those OBJ level transformations will not affect the result of this node of this "Preserve World Space Positions" is turned on.  If you turn this setting off, then OBJ level transformations are allowed to affect the geometry.

Center at Pivot

--  This is only available when using "Create Points to Represent Objects."  If you're not using packed objects, then you'll need to be sure that the generated points are at the center of each object.  This setting allows that to happen.  

Add DOP Object Name Attribute

--  Only available for all import modes except "Create Points to Represent Objects."  This will add a primitive attribute called "name" onto the geometry that's either being imported or altered.  The format of the name is specified by the Object Names parameter.

Add DOP Object Path Attribute

--  Only available for all import modes except "Create Points to Represent Objects." This adds a string primitive attribute dopobject which contains the path of the DOP Network followed by the DOP object id.

Add Dop Object Id Attribute

--  Adds an integer primitive attribute dopobjectid which contains the DOP object id of the sourced object.

Add to Existing Velocity Attributes

--  Adds velocities computed from the DOP Object to any existing velocity attribute values on the geometry. Turning off this option causes the velocity computed from the DOP Object to simply override any existing velocity attribute value.  When geometry is dynamically fractured, point velocities are added to transfer the velocity to the smaller chunks. If this parameter is turned on, these point velocities will go to your final render. Turn this parameter off to improve motion blur. It is on by default, but is turned off by shelf tools by default.

Delete Abandoned Primitives

--  When in transform mode, any primitives that do not have a corresponding DOP Object will be deleted instead of being left untransformed. This is useful if your solver deletes objects over time.

Point Velocities:

In general, it advised to not rely on velocity when calculating motion blur because it will not curve.  Instead, refer to the Curved Motion Blur quicktip.  These settings relate to calculating velocity that are used for calculating motion blur.  This can be set to either "Instantaneous Point Velocities" or "Integrated Point Velocities."

--  Instantaneous Point Velocities
    **  This combines the linear and angular velocities of the objects and represents the correct velocity values.  The downside is that if the angular velocity gets too high, then it can cause the motion blur to break.

--  Integrated Point Velocities  
    **  This integrates two velocities over time.  It is not a true representation of the combined velocity of SOPs and what is imported by DOPs.  Integrated velocity fixes the issue listed above when angular velocity reaches a high value and causes a problem.  This parameter is used in conjunction with the Integrate Over Time parameter.

Integrate Over Time:

--  The time interval over which velocities are calculated when using the Integrated Point Velocities calculation. This value should be set to a single frame time, or the duration of a single geometry segment when using multi-segment motion blur.  In most cases, you will not need to adjust this parameter.

Do Not Trigger Simulation:

--  If the DOP simulation being imported is out of date, the old cached value will be returned rather than trying to simulate. This avoids recursion problems when viewing a SOP chain being used by a SOP Solver that would store bad geometry in the simulation cache.  Unless you are using this with the SOP Solver, then the defaults ought to be fine.

Drag to resize