# From Concept Prototyping to Production in a Creative Studio

1. Mood Board and Visual References
2. Concept Prototyping
3. Production

# Technical Bits Volume visualizer in Houdini SDF information from the Surface Floater Set the collusion pos to zero in the demo to see the results
`int closePts[] = pcfind_radius(0, "P", "pscale", 0.2, v@P, @pscale + 0.02, 2);float restitution = 0.5;if (len(closePts) > 1) {  int closePt = closePts;  vector closePos = point(0, "P", closePt);  float closePScale = point(0, "pscale", closePt);  float closeMass = point(0, "mass", closePt);  vector closeVel = point(0, "v", closePt);    // https://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and-handling    // get the mtd  vector delta = @P - closePos;  float d = length(delta);  // minimum translation distance to push balls apart after intersecting  vector mtd = delta * (((@pscale + closePScale)-d)/d);// resolve intersection --  // inverse mass quantities  float im1 = 1 / @mass;   float im2 = 1 / closeMass;// push-pull them apart based off their mass  @P += mtd * (im1 / (im1 + im2));  closePos = closePos - (mtd * (im2 / (im1 + im2)));  setpointattrib (0, "P", closePt, closePos);// impact speed  vector v = @v - closeVel;  float vn = dot(v, normalize(mtd));// sphere intersecting but moving away from each other already  if (vn > 0.0f) return;// collision impulse  float i = (-(1.0 + restitution) * vn) / (im1 + im2);  vector impulse = mtd * i;// change in momentum  @v += impulse * im1 * 0.5;  setpointattrib (0, "v", closePt, closeVel - impulse * im2 * 0.5);  }`

# Tips 