Shape Correction Limitation / Bug? 2005-04-06 - By Adam Sale
Back heres what you need to do.. In SHape modeling mode Store shape Key on mesh or on cluster (default shape) this saves your cluster shape combiner in the shape model stack In Animation mode Set Envelope on Deformers In Secondary Shape modeling mode you already have a cluster shape combiner at the lower shape modeling mode.. all you do here is author move points in the stack, and store the shape while in this mode.. All of the shapes are still managed by the cluster shape combiner in the shape modeling stack...
after the shape is stored, you can drop the shape clip (the 2nd one) onto a track and drive it with expressions,scripts links or scripted operators.
The envelope op needs to be above the cluster shape combiner and they need to be in different construction mode stacks..
Adam -- -- Original Message -- -- From: Jabbar Raisani To: XSI@(protected) Sent: Wednesday, April 06, 2005 6:37 PM Subject: Shape Correction Limitation / Bug?
Hello,
I am trying to do some shape correction on an object after is has been animated. Essentially I want the shape correction to happen after the Envelope Operator. If I switch to Secondary Shape Modeling mode and move points to make my correction everything works great. Now I want to save that correction out as a shape that is applied after the envelope op. I can't seem to find a way to get this type of functionality. If I use Save Shape Key, the mesh looks the same on the frame that the save shape key was applied, but not on all of the other frames. I have also tried moving the Envelope Operator underneath the Cluster Shape Combiner, but this gives me a different shape that isn't the one that I want.
At the bottom of this email is a script that will recreate the situation I am referring to.
Any Suggestions. Thanks in advance,
-Jabbar
NewScene(null, null);
CreatePrim("Sphere", "MeshSurface", null, null);
Create2DSkeleton(0, -4.0240106737179, 2.11615939152983, 0, 4.66715683959918, -1.45631506687308, 0, 90, 0, 4, null, null);
ActivateObjectSelTool(null);
ActivateObjectSelTool(null);
DeselectAll();
SelectObj("sphere", null, true);
SetValue("Context.constructionmode", 2, null);
ApplyFlexEnv("sphere;bone,eff", false, 2);
ActivateVertexSelTool(null);
ActivateVertexSelTool(null);
SelectGeometryComponents("sphere.pnt[14,15,21,22,28,29]");
Translate(null, 1.77524985665421, 0, 0, siRelative, siGlobal, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 2);
Undo();
Translate(null, -1.35337857256848E-16, 3.75417294953933, 2.21030793829245, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 2);
ActivateObjectSelTool(null);
ActivateObjectSelTool(null);
SelectObj("bone", null, true);
Undo();
Undo();
Undo();
SetValue("Context.constructionmode", 3, null);
Translate(null, -1.33764161242234E-16, 3.98559456971641, 2.18460668319603, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 3);
ActivateObjectSelTool(null);
ActivateObjectSelTool(null);
SelectObj("sphere", null, true);
SelectObj("bone", null, true);
Rotate(null, 0, 0, 66.6621366768366, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 3);
Undo();
SaveKey("bone.kine.local.rotx,bone.kine.local.roty,bone.kine.local.rotz", 1, null, null);
SetValue("PlayControl.Current", 100, null);
Rotate(null, 0, 0, -41.982738824779, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 3);
SaveKey("bone.kine.local.rotx,bone.kine.local.roty,bone.kine.local.rotz", 100 , null, null);
SelectObj("sphere", null, null);
SetValue("PlayControl.Key", 100, null);
SetValue("PlayControl.Current", 100, null);
Duplicate("sphere", null, 2, 1, 1, 0, 0, 1, 0, 0, null, null, null, null, null, null, null, null, null, null, 0);
Duplicate("sphere1", null, 2, 1, 1, 0, 0, 1, 0, 0, null, null, null, null, null, null, null, null, null, null, 0);
SelectObj("sphere1", null, null);
SelectObj("sphere.polymsh", null, null);
//ERROR : Object doesn't support this property or method - [line 59]
SelectObj("sphere", null, null);
SetValue("sphere.Name", "No_Shapes", null);
SetValue("No_Shapes.Name", "No_Shape_Correction", null);
SelectObj("sphere1", null, null);
SetValue("sphere1.Name", "Shape_Correction", null);
SaveShapeKey("Shape_Correction", null, null, 100, null, null, null, null, siShapeLocalReferenceMode);
SetValue("PlayControl.Key", 8, null);
SetValue("PlayControl.Current", 8, null);
SelectObj("sphere2", null, null);
SelectObj("Shape_Correction", null, null);
SetValue("Shape_Correction.Name", "Shape_Correction_EnvOp_After_ClsShapComb", null);
SelectObj("sphere2", null, null);
SaveShapeKey("sphere2", null, null, 8, null, null, null, null, siShapeLocalReferenceMode);
SelectObj("sphere2.polymsh.envelopop", null, null);
CopyPaste("sphere2.polymsh.envelopop", null, "sphere2.polymsh.modelingmarker" , 1);
SelectObj("sphere2", null, null);
SelectObj("Shape_Correction_EnvOp_After_ClsShapComb", null, null);
SetValue("Shape_Correction_EnvOp_After_ClsShapComb.Name", "Shape_Correction _EnvOp_After_ClsShapComb", null);
SelectObj("sphere2", null, null);
SetValue("sphere2.Name", "Shape_Correction_EnvOp_Before_ClsShapComb", null);
ActivateObjectSelTool(null);
ActivateObjectSelTool(null);
DeselectAll();
MakeLocal("Shape_Correction_EnvOp_Before_ClsShapComb.display", siNodePropagation);
SetValue("Shape_Correction_EnvOp_Before_ClsShapComb.display.wirecol", 15, null);
MakeLocal("No_Shape_Correction.display", siNodePropagation);
SetValue("No_Shape_Correction.display.wirecol", 242, null);
MakeLocal("Shape_Correction_EnvOp_After_ClsShapComb.display", siNodePropagation);
SetValue("Shape_Correction_EnvOp_After_ClsShapComb.display.wirecol", 656, null);
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=iso-8859 (See http://iso-8859.ora-code.com)-1"> <META content="MSHTML 6.00.2800.1491" name=GENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=#ffffff> <DIV><FONT face=Arial size=2>heres what you need to do..</FONT></DIV> <DIV><FONT face=Arial size=2>In SHape modeling mode</FONT></DIV> <DIV><FONT face=Arial size=2> Store shape Key on mesh or on cluster (default shape)</FONT></DIV> <DIV><FONT face=Arial size=2> this saves your cluster shape combiner in the shape model stack</FONT></DIV> <DIV><FONT face=Arial size=2>In Animation mode</FONT></DIV> <DIV><FONT face=Arial size=2> Set Envelope on Deformers</FONT></DIV> <DIV><FONT face=Arial size=2>In Secondary Shape modeling mode</FONT></DIV> <DIV><FONT face=Arial size=2> you already have a cluster shape combiner at the lower shape modeling mode..</FONT></DIV> <DIV><FONT face=Arial size=2>all you do here is author move points in the stack , and store the shape while in this mode..</FONT></DIV> <DIV><FONT face=Arial size=2>All of the shapes are still managed by the cluster shape combiner in the shape modeling stack...</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>after the shape is stored, you can drop the shape clip (the 2nd one) onto a track and drive it with expressions,scripts links or scripted operators. </FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>The envelope op needs to be above the cluster shape combiner and they need to be in different construction mode stacks.. </FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>Adam</FONT></DIV> <BLOCKQUOTE dir=ltr style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px"> <DIV style="FONT: 10pt arial">-- -- Original Message -- -- </DIV> <DIV style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> <A title=jabbar@(protected) href="mailto:jabbar@(protected)">Jabbar Raisani</A> </DIV> <DIV style="FONT: 10pt arial"><B>To:</B> <A title=XSI@(protected) href="mailto:XSI@(protected)">XSI@(protected)</A> </DIV> <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, April 06, 2005 6:37 PM</DIV> <DIV style="FONT: 10pt arial"><B>Subject:</B> Shape Correction Limitation / Bug?</DIV> <DIV><BR></DIV> <DIV><FONT face=Arial size=2>Hello,</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>I am trying to do some shape correction on an object after is has been animated.</FONT></DIV> <DIV><FONT face=Arial size=2>Essentially I want the shape correction to happen after the Envelope Operator.</FONT></DIV> <DIV><FONT face=Arial size=2>If I switch to Secondary Shape Modeling mode and move points to make my correction</FONT></DIV> <DIV><FONT face=Arial size=2>everything works great. Now I want to save that correction out as a shape that is applied</FONT></DIV> <DIV><FONT face=Arial size=2>after the envelope op. I can't seem to find a way to get this type of functionality. If I use</FONT></DIV> <DIV><FONT face=Arial size=2>Save Shape Key, the mesh looks the same on the frame that the save shape key was</FONT></DIV> <DIV><FONT face=Arial size=2>applied, but not on all of the </FONT><FONT face=Arial size=2>other frames. I have also tried moving the Envelope Operator </FONT></DIV> <DIV><FONT face=Arial size=2>underneath the </FONT><FONT face=Arial size=2>Cluster Shape Combiner, but this gives me a different shape that isn't the</FONT></DIV> <DIV><FONT face=Arial size=2>one that I want.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>At the bottom of this email is a script that will recreate the situation I am referring to.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>Any Suggestions. Thanks in advance,</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>-Jabbar</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT size=2> <P>NewScene(null, null);</P> <P>CreatePrim("Sphere", "MeshSurface", null, null);</P> <P>Create2DSkeleton(0, -4.0240106737179, 2.11615939152983, 0, 4.66715683959918, -1.45631506687308, 0, 90, 0, 4, null, null);</P> <P>ActivateObjectSelTool(null);</P> <P>ActivateObjectSelTool(null);</P> <P>DeselectAll();</P> <P>SelectObj("sphere", null, true);</P> <P>SetValue("Context.constructionmode", 2, null);</P> <P>ApplyFlexEnv("sphere;bone,eff", false, 2);</P> <P>ActivateVertexSelTool(null);</P> <P>ActivateVertexSelTool(null);</P> <P>SelectGeometryComponents("sphere.pnt[14,15,21,22,28,29]");</P> <P>Translate(null, 1.77524985665421, 0, 0, siRelative, siGlobal, siObj, siXYZ , null, null, null, null, null, null, null, null, null, 2);</P> <P>Undo();</P> <P>Translate(null, -1.35337857256848E-16, 3.75417294953933, 2.21030793829245, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 2);</P> <P>ActivateObjectSelTool(null);</P> <P>ActivateObjectSelTool(null);</P> <P>SelectObj("bone", null, true);</P> <P>Undo();</P> <P>Undo();</P> <P>Undo();</P> <P>SetValue("Context.constructionmode", 3, null);</P> <P>Translate(null, -1.33764161242234E-16, 3.98559456971641, 2.18460668319603, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 3);</P> <P>ActivateObjectSelTool(null);</P> <P>ActivateObjectSelTool(null);</P> <P>SelectObj("sphere", null, true);</P> <P>SelectObj("bone", null, true);</P> <P>Rotate(null, 0, 0, 66.6621366768366, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 3);</P> <P>Undo();</P> <P>SaveKey("bone.kine.local.rotx,bone.kine.local.roty,bone.kine.local.rotz", 1, null, null);</P> <P>SetValue("PlayControl.Current", 100, null);</P> <P>Rotate(null, 0, 0, -41.982738824779, siRelative, siLocal, siObj, siXYZ, null, true, null, null, null, null, null, 3);</P> <P>SaveKey("bone.kine.local.rotx,bone.kine.local.roty,bone.kine.local.rotz", 100, null, null);</P> <P>SelectObj("sphere", null, null);</P> <P>SetValue("PlayControl.Key", 100, null);</P> <P>SetValue("PlayControl.Current", 100, null);</P> <P>Duplicate("sphere", null, 2, 1, 1, 0, 0, 1, 0, 0, null, null, null, null, null, null, null, null, null, null, 0);</P> <P>Duplicate("sphere1", null, 2, 1, 1, 0, 0, 1, 0, 0, null, null, null, null, null, null, null, null, null, null, 0);</P> <P>SelectObj("sphere1", null, null);</P> <P>SelectObj("sphere.polymsh", null, null);</P> <P>//ERROR : Object doesn't support this property or method - [line 59]</P> <P>SelectObj("sphere", null, null);</P> <P>SetValue("sphere.Name", "No_Shapes", null);</P> <P>SetValue("No_Shapes.Name", "No_Shape_Correction", null);</P> <P>SelectObj("sphere1", null, null);</P> <P>SetValue("sphere1.Name", "Shape_Correction", null);</P> <P>SaveShapeKey("Shape_Correction", null, null, 100, null, null, null, null, siShapeLocalReferenceMode);</P> <P>SetValue("PlayControl.Key", 8, null);</P> <P>SetValue("PlayControl.Current", 8, null);</P> <P>SelectObj("sphere2", null, null);</P> <P>SelectObj("Shape_Correction", null, null);</P> <P>SetValue("Shape_Correction.Name", "Shape_Correction_EnvOp_After_ClsShapComb", null);</P> <P>SelectObj("sphere2", null, null);</P> <P>SaveShapeKey("sphere2", null, null, 8, null, null, null, null, siShapeLocalReferenceMode);</P> <P>SelectObj("sphere2.polymsh.envelopop", null, null);</P> <P>CopyPaste("sphere2.polymsh.envelopop", null, "sphere2.polymsh.modelingmarker", 1);</P> <P>SelectObj("sphere2", null, null);</P> <P>SelectObj("Shape_Correction_EnvOp_After_ClsShapComb", null, null);</P> <P>SetValue("Shape_Correction_EnvOp_After_ClsShapComb.Name", "Shape_Correction_EnvOp_After_ClsShapComb", null);</P> <P>SelectObj("sphere2", null, null);</P> <P>SetValue("sphere2.Name", "Shape_Correction_EnvOp_Before_ClsShapComb", null);</P> <P>ActivateObjectSelTool(null);</P> <P>ActivateObjectSelTool(null);</P> <P>DeselectAll();</P> <P>MakeLocal("Shape_Correction_EnvOp_Before_ClsShapComb.display", siNodePropagation);</P> <P>SetValue("Shape_Correction_EnvOp_Before_ClsShapComb.display.wirecol", 15, null);</P> <P>MakeLocal("No_Shape_Correction.display", siNodePropagation);</P> <P>SetValue("No_Shape_Correction.display.wirecol", 242, null);</P> <P>MakeLocal("Shape_Correction_EnvOp_After_ClsShapComb.display", siNodePropagation);</P> <P>SetValue("Shape_Correction_EnvOp_After_ClsShapComb.display.wirecol", 656, null);</P></FONT></DIV></BLOCKQUOTE></BODY></HTML>
|
|