|
Hi Adrian,
You can really easily achieve that effet with the PushOp connected to a ProximityMap in Caching enabled, and in Keep Maximum mode (in order to "write" on the weightmap). Here's the script that will build this for you:
CreatePrim("Grid", "MeshSurface", null, null); SetValue("grid.grid.ulength", 16, null); SetValue("grid.grid.vlength", 16, null); SetValue("grid.polymsh.geom.subdivu
", 64, null); SetValue("grid.polymsh.geom.subdivv", 64, null); GetPrim("Null", null, null, null); Translate(null, 0, 0, 10, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0);
SaveKey("null.kine.local.posx,null.kine.local.posy,null.kine.local.posz", 1, null, null); SetValue("PlayControl.Out", 40, null); SetValue("PlayControl.Current", 40, null); Translate(null, 0, 0, -10, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0);
SaveKey("null.kine.local.posx,null.kine.local.posy,null.kine.local.posz", 40, null, null); SetValue("PlayControl.Key", 1, null); SetValue("PlayControl.Current", 1, null); SelectObj("grid", null, true);
SetDisplayMode("Camera", "shaded"); lmWeightMapTools_lmProximityMapApplyCmd(); SetValue("grid.polymsh.cls.WeightMapCls.ProximityWeightMap_ProximityMap.Far", 2, null); SetValue("
grid.polymsh.cls.WeightMapCls.ProximityWeightMap_ProximityMap.OpMode", 2, null); SetValue("grid.polymsh.cls.WeightMapCls.ProximityWeightMap_ProximityMap.ProcessingMode", 1, null); SelectObj("null", null, true);
lmWeightMapTools_lmProximityMapAddConnexionCmd("grid.polymsh.cls.WeightMapCls.ProximityWeightMap_ProximityMap", "null"); SelectObj("grid", null, null); ApplyOp("Push", "grid", 3, siPersistentOperation, null, 0);
ConnectOperatorParameter("grid.polymsh.pushop.ampl", "grid.polymsh.cls.WeightMapCls.ProximityWeightMap"); SetValue("grid.polymsh.pushop.ampl", 0.5, null); PlayForwardsFromStart();
One important thing is that if you inspect the operator stack of the grid, you'll see the lmProximityMapOp output port underneith the PushOp: this output port doens't output anything, it just allows you to tell the operator where to read the geometry from in order to compute the proximity map. If you move it on top of the PushOp you'll create a cycle and nothing will work anymore!
Hope this helps,
Aloys
On 3/3/06, Adrian L <liquidlight@cwjamaica.com> wrote:
Thank you very much Luc, I think this is
just what we need! Am I right in thinking that we can achieve our "poke"
effect by combining the proximitymap tool with a null and a push operator? Cant
wait to try it out.
Thanks again.
Adrian L.
-- Aloys Baillet - XSI Technical Director Character Dpt - Animal Logic --
|