Instancing a random shape with a random start frame


Here I’m instancing a group of Arnold standin sequences, and giving each instance a different start frame. (Each standin sequence is an animated bulge on a cylinder.)
random shape w random offset
PS It works fine until you go past the last frame of the sequence, because looping or clamping the ShapeInstanceTime doesn’t seem to prevent SItoA from loading the non-existent ass file.

Diffuse rays


In the real world, indirect lighting comes from diffuse reflections: light reflecting off of nearby surfaces. In the rendered world, a camera ray hits a shading point on an object, and from that point diffuse rays are sent out to sample colors from surrounding objects.

Here’s my version of a typical diffuse ray diagram, done with a few vectors and Show Values in ICE.
Diffuse_Rays

Oops. Multiply scalar by scalar by array may crash Softimage


While building an ICE tree version of this parametric equation
parametric_equation_loxodrome
I discovered how to crash Softimage 2014 SP2 by doing a Show Values on the output of a Multiply node:
Multiply_crash
The key is that you have to set and then get the values later, and the array has to be the final term in the multiplication. Somehow this intuitively feels like something where things could wrong…

Here’s a clearer picture from Softimage 2014 SP1, which doesn’t stop working immediately:
Multiply_crash_2014sp1

I tested as far back as 2013 SP1, and they all crashed.

Screenshots of the week


Inverse distance weighting
by grahamef
inverse_distance_weighting

Maths problem
by David Barosin
weighted

Get closest location on group
by Alan Fregtman
ICE_example_GetClosestVertexColorFromGroup2

by Jack Kao
getclosestlocationongroup_temp

Mixed Contexts
by Vladimir Jankijevic
differentContexts_comp

Setting data on a particle based off data from another particle in the same cloud
by Leonard Koch
SeparatingStrandAndParticlesForAlan

Arnold Scene Viewer integrated in Softimage using Creation Platform
https://vimeo.com/70671257

Git for Softimage

GitForSoftimage

How to use the cached Face Robot animation on a head

Building your own Voronoi shattering effect with blackjack and hookers in Softimage part 2

ICE: Getting data from other frames


In ICE, you can’t get data from any arbitrary frame. You get whatever data comes though through your input ports for the current evaluation time. There’s no way (except for Get Data at Previous Frame) for you to read the scene graph at any other time than the time at which the ICE Tree operator is being evaluated.

A few related notes:

  • In a simulated ICE tree, you could cache values from previous frames and then access them during playback of the simulation.
  • With Get Action Source at Frame, you can get the value at a specific frame of an item stored in an animation source.
  • On a non-simulated ICE tree, you might be able to use an at_frame expression (hat tip: grahamef)
  • You might consider writing a custom ICE node that accesses values on other frames, but I don’t know that this such a good idea. According to the docs, that isn’t recommended for custom ICE nodes.

ICE: Building an array from an fcurve


Suppose you have an animated scalar value, and you want to store its values as you play through a simulation. And suppose you also want to keep a running total of all the values up to the current frame.

My first try used two arrays: one to store the values at each step through the simulation, and one to hold the running total.
FcurveArray1

Calculating the array sum at every step seems wasteful. So, here’s my second try at keeping a running total of the values from the fcurve. I use just one attribute and one array. The attribute was necessary because if I plugged Pop from Array directly into Add, I got nothing.
FcurveArray2