HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
19.5: Major Changes In The HDK

Bounding box/sphere geometry method changes

The pure virtual method GEO_Primitive::getBBox() now returns bool instead of int to more accurately reflect the expected result. The semantics of the return value has not changed.

The GEO_Detail::get*BBox() and GEO_Detail::get*BSphere() methods also now return bool instead of int for the same reason. Previously, some of these were also unnecessarily virtual. All of these methods are now non-virtual. Another minor change here was the renaming of the updateRequired parameter for these methods to accurate_bounds which is a clearer name for this flag.

FS_Info and timestamp values

The virtual method FS_InfoHelper::getModTime() and various timestamp value types in libFS and libOP have been changed from int to time_t , ie. from 32-bit to 64-bit signed integers. Code inheriting from FS_InfoHelper will require a signature change for getModTime() . Callers should also try to maintain their timestamp values as time_t now as well to avoid Y2038 bugs.

Note however FS_IndexFile (therefore HDAs) have not changed their file format so these timestamp values still serialize out as 32-bit integers.

HUSD

The XUSD_HydraRenderBuffer.h class was removed. For cryptomatte support in render delegates, please now see HUSD_CryptomatteResource.h

The USD library deprecated instantaneousShutter in favour of disableMotionBlur. Render delegates should be aware that Houdini now uses disableMotionBlur.

DOP_Node

The DOP_Node::preNetworkProcessing() and DOP_Node::postNetworkProcessing() methods have been removed. These were primarily used to clear old cached data from a previous timestep or when the simulation was reset, but traversed all child DOP nodes rather than only the nodes being cooked. The replacement is to implement DOP_Node::ensureCachedDataIsValid() which is called from cookMe() when the DOP is cooked. Comparing DOP_Node::getLastSimVersion() to DOP_Engine::getModVersion() can be used to identify if the simulation was reset or a frame was resimulated since the last cook. Any DOPs that override cookMe() should ensure that DOP_Node::ensureCachedDataIsValid() is called if the parent cookMe() method is not called.

MocapStream Loading of Devices

The Mocap Stream SOP now uses the newMocapStreamDevice to install custom devices. This is done automatically for all dynamic objects found in the HOUDINI_MOCAPSTREAM_DSO_PATH.