[Sidefx-houdini-list] I3d Opacity

Andrew D Lyons tstexture at gmail.com
Fri Aug 4 12:47:22 EDT 2006

On 04/08/06, Jean-Claude <jclaude at mimgfx.com> wrote:
> hm.. here I might lack of english knowledge.. cause I dont really got the point... sorry -_-

Here's a humor-less and slightly tabulated explanation.

As you probably know - in Houdini, points can have attributes. You can
also assign a variable to that attribute for referencing it's values
easily in expressions. (If you look in the "attribute create" sop you
will see how this can be implemented.)

As an example of the general case in Houdini, lets look at the normal
attribute and it's default variable:
Attribute name = nx ny nz
Variable name = $NX $NY $NZ

$NX = nx = normal x component
$NY = ny = normal y component
$NZ = nz = normal z component
Generally things in Houdini are kind of straight-forward and intuitive
like this. The default variable is usually just an upper case version
of the attribute name with a $ sign in front of it. (You can obviouly
create arbitrary variable names using different conventions in the
AttribCreate SOP.)

The $LIFE variable does not however have such a direct and intuitive
mapping between the attribute and the variable.
Attribute name = life[0] life[1]
Variable name =$LIFE $AGE


$LIFE = life[0] / life[1] = the normalized age of the particle
(between 0 and 1).
$AGE = life[0] = the age of the particles in seconds.

P.S. In POPs there is also a $LIFESPAN:
$LIFESPAN = life[1] = the duration that the particle is going to live
for in seconds.


This whole area is a regular cause for confusion for Houdini
beginners. While the $LIFE variable is confusing because it's a break
with the general convention exemplified in the normal attribute and
it's variable, IMHO the nature of variables in Houdini in general is
confusing and needs simplification:

* Why do some attributes get default variables created and others don't?
* Why don't all attributes get an associated variable created by default?

A number of Houdini using FX houses now have custom SOPs which
auto-create a variable for the multiple attributes created in each
instance of that custom SOP. Given the amount of work we do massaging
attributes with expressions for certain effects this massively cuts
down on huge chains of AttribCreate SOPs and/or
point("../"+opinput...) expressions.

It seems to me that we want a default variable for an attribute more
often than we don't.
I personally would like to see all attributes created get a default
variable. I'd rather delete unwanted variables with one sop at the end
of a network than have the huge chains of SOPs and expressions needed
to create them manually. I don't believe the user time required to
create all those variables is justified by the speed or memory
overhead involved in having them there by default.



Andrew D Lyons | Digital Artist | http://www.tstex.com

More information about the Sidefx-houdini-list mailing list