HDK
|
The VEX Ray-Tracing library (VRAY) was renamed to RAY. This affects all class names and header files used for mantra plug-ins. Backward compatibility headers are provided for H16.5.
The gCreate()
method in the low level SOHO API has been deprecated in favour of gCreate2()
. gCreate2()
returns a tuple of the geometry handle and an error message which should be set if the returned handle is invalid. This allows SOHO to access the error message on the SOP and give better diagnostics.
Several classes and in STY library got renamed to clarify their purpose:
Several functions were also renamed to match the data type name changes. For example, STY_Styler::getOverrides()
was changed to STY_Styler::getResults()
.
Stock Boost C++ libraries are no longer shipped with the HDK.
The HDK instead ships with custom Boost librares that place public symbols in an hboost
namespace.
You can continue using Boost in HDK plugins but you are now required to supply the headers and libraries. Note that any version of Boost can be used.
One caveat for Houdini 16.5 is that the _1
, _2
, ..., _9
symbols in the boost/bind/placeholders.hpp
header must be prefixed with the boost::placeholders:
: namespace when referenced.
For example, rather than:
Do instead:
Otherwise you may run into ambiguous symbol errors during compilation.
Alternatively, you can use the custom Boost libraries that ship with the HDK. This requires porting code to work with the hboost
namespace instead of the boost
namespace. This generally involves making three changes to code:
boost
namespace to hboost
instead. BOOST_*
preprocessor variables to HBOOST_*
instead. <boost/
...> header includes to <hboost/
...> instead. It also involves linking against hboost libraries by replacing -lboost_iostreams
with -lhboost_iostreams
for example.
String attributes now use a lighter data structure using UT_StringHolder, making copying faster, and allowing use of cached string hashes, for fast use in hash tables. GA_ROHandleS::get now returns const
UT_StringHolder&
, instead of const
char*
, and GA_RWHandleS::set now accepts const
UT_StringHolder&
instead of const
char*
. Note that GA_ATIString is no longer a subclass of GA_ATIBlob.