|
Houdini Development Toolkit - Version 6.0Side Effects Software Inc. 2003 |
You can subscribe to the developer mailing list by sending mail to
sidefx-devkit-list-request@sidefx.com
or
sidefx-devkit-list-archive@sidefx.com
with the following in the body of the message:
There is an archive of past mail which can be found at the technical support web page. A password is required to access this site. By not entering a correct password, instructions for acquiring a password will be presented.
At the current time, the mailing list has very very low bandwidth.
You must use the SGI C++ development option. We are currently using the 4.0 version of the IDO.
The Photon C++ compiler supposedly works as a replacement for the SGI compilers, but we currently believe that there are problems creating .so files with this compiler.
For WindowsNT development, the Microsoft C++ compiler is required.
Our geometry library allows arbirtrary attributes on points/vertices/primities and the detail itself. Each attribute may be an array of floats, integers, a vector (which gets transformed) or an indexed array of strings.
Looking in GEO_Detail.h, you'll see a bunch of methods to deal with attributes:
Add an attribute to a data type Find an attribute if it exists Destroy an attributeThe add/find methods return an index for the attribute. If the index is >= 0, then the attribute exists, and the index can be used to get the attribute data... For example:
If you look at the constructor for PRM_Template, you'll see:
To reference this range:
When Houdini creates your SOP the very first time. It creates a UI file which defines the layout of the parameters. It's possible for you to customize this layout if you like by editing the UI file.
However, Houdini isn't smart enough to time-stamp the UI files, therefore, if you change your parameter list, you have to remove the UI file so that Houdini will create a new one (similar to dialog scripts).
These UI files are created somewhere writable in your Houdini search path. The files are created as high up as possible in the path, so look for the files in:
or if all else fails, these UI files will be created in /usr/tmp/Dialogs.
The way to differentiate between the two similar OPs is to get at the OP_Operator entry. There is a method in OP_Parameters::getOperator() which returns a pointer to the operator. From this, you can get at the name of the operator.
There's some misleading code in PRM_Parm.h. The
isTimeDependent() method actually only works for animated
parameters (not strings). However, there's a method in the
CH_Manager class which will expand strings for you. It returns an
inteteger 1 if the string is time dependent. So, instead of
evaluating the parameter as an expanded string, evaluate it
without expansion. Then simply call the channel manager to do the
expansion for you and use the return code to determine whether the
string is time dependent.
If you look in $HFS/houdini/help, you should see two files, exprhelp, and command.help. These are simple ASCII files which contain help (in different formats) for expressions and commands. Instead of modifying the help in $HFS, you can create a smaller file which contains only the help for your commands. This file can go anywhere within the Houdini search path (i.e. /usr/local/houdini/help, $HOME/houdini/help, $HIP/houdini/help, etc.). The help files are all merged together when displaying help.
In the cook method, simply add the following line: