Using ICE, you can create an attribute that can be used as a texture projection. In fact, any 3D vector per point or per polynode can be used as a texture projection. (In Softimage, texture coordinates are always stored as UVW values even if only U and V are used much of the time.)
All you need to do is calculate the UVW values you want to use per point or per polynode and set a custom attribute. You can then specify that attribute in a texture shader or in the render tree.
Note that if you are using a custom ICE attribute as a texture projection, you cannot edit its values in the texture editor. To edit values manually, you must first apply a non-ICE texture projection and set its values with the ICE attribute. After that, any modifications you make in the texture editor are applied on top of the values set by ICE.
There are some factory compounds that set an attribute that can be used as a texture projection:
Camera projections require that the UVW values be treated as homogeneous coordinates. Homogeneous coordinates store values as (U, V, q) where q is the distance to the camera. To tell the renderer that a 3D vector attribute should be treated as homogeneous coordinates, you must define a Boolean attribute on the object using the same name as the 3D vector with the suffix "IsHomogeneous" appended and set it to 1 (True).
You can control other properties of the texture projection by setting per-object attributes based on the name of the attribute being used as a texture projection with a special suffix appended.
Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License