Sounds like it might work. Did you run the scripts? You will see what the curve does... If your suggestion does exactly the same thing then you're correct. :)
*written with my thumbs On Jan 15, 2016 3:05 AM, <pete...@skynet.be> wrote: > if I read this correctly – you’re just doing position – not orientation > right? > > it works in ICE like this: > > for a null path constrained on curve. > make an identical copy (null1 on curve1) > > [( null global pos – curve global pos ) multiply by –1 ] >> translation > port of an SRT to Matrix >> set curve1 global transform > > null1 stays put at the origin... > > I’m probably oversimplifying things? > *From:* Steven Caron <car...@gmail.com> > *Sent:* Thursday, January 14, 2016 8:56 PM > *To:* softimage@listproc.autodesk.com > *Subject:* Re: Object motion converted to path animation but normalized > atorigin? > > For those interested in following... > > here is two scripts, one to set up the scene so you can see the scenario > to start, and then another to normalize the motion per David's simpler > method. > > #python > #setup example scene > Application.SICreateCurve("crvlist", 3, 0) > Application.SIAddPointOnCurveAtEnd("crvlist", 486.895161434139, > 325.493002786473, 34.5570511051906, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 409.033597647559, > 271.688103800014, 29.5535480810531, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 85.4440658602002, > 300.987801267806, -66.6103573229066, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", -246.20762156975, > 272.753547344553, -147.807009721528, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", -497.571600133753, > 131.0495559517, -173.495355859157, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", -456.369852362362, > -4.26177417487577, -122.038908353107, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", -81.571345301959, > 14.3834878497712, -26.3265899671214, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 233.227806621437, > 145.965765570476, 19.5179940313196, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 553.247813449155, > 111.871572155872, 116.146231591289, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 537.167802185775, > -116.666068097906, 179.907658216995, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 228.873883716215, > -268.49177316504, 141.853471471277, False, 0, "") > Application.SIAddPointOnCurveAtEnd("crvlist", 124.433876714773, > -305.782297213815, 124.747175301071, False, 0, "") > Application.CreatePrim("Cone", "MeshSurface", "", "") > Application.SetValue("cone.cone.radius", 3, "") > Application.SetValue("cone.cone.height", 12, "") > Application.ApplyCns("Path", "cone", "crvlist", "") > Application.SaveKey("cone.kine.pathcns.perc", 1, "", "", "", "", "") > Application.SetValue("PlayControl.Current", 100, "") > Application.SetValue("PlayControl.Key", 100, "") > Application.SetValue("cone.kine.pathcns.perc", 100, "") > Application.SaveKey("cone.kine.pathcns.perc", 100, "", "", "", "", "") > Application.SetValue("cone.kine.pathcns.tangent", True, "") > Application.SetValue("cone.kine.pathcns.dirx", 0, "") > Application.SetValue("cone.kine.pathcns.diry", 0, "") > Application.SetValue("cone.kine.pathcns.dirz", 1, "") > Application.SetValue("cone.kine.pathcns.dirx", 0, "") > Application.SetValue("cone.kine.pathcns.diry", 1, "") > Application.SetValue("cone.kine.pathcns.dirz", 0, "") > Application.SetValue("cone.kine.pathcns.upvct_active", True, "") > > #python > #normalize and invert motion of path cns > Application.GetPrim("Null", "", "", "") > Application.SetValue("null.Name", "parent", "") > Application.Duplicate("parent", "", 2, 1, 1, 0, 0, 1, 0, 1, "", "", "", > "", "", "", "", "", "", "", 0) > Application.SetValue("parent1.Name", "child", "") > Application.CopyPaste("child", "", "parent", 1) > Application.SelectObj("parent", "", "") > Application.ApplyCns("Position", "parent", "cone", "") > Application.SelectObj("child", "", "") > Application.ApplyCns("Position", "child", "crvlist", "") > Application.PlotConstrainedTransformsToActions("child", "plot", 1, 100, 1, > 20, 3, False, 0.01, True, True, True, True, True) > Application.SelectObj("parent,child", "", "") > Application.RemoveAllCns("", "") > Application.SelectObj("crvlist", "", True) > Application.ApplyCns("Position", "crvlist", "child", "") > Application.SelectObj("parent", "", "") > Application.ResetTransform("", "siObj", "siTrn", "siXYZ") > > > On Thu, Jan 14, 2016 at 11:48 AM, Steven Caron <car...@gmail.com> wrote: > >> Not really, I have it working how I want now, I had come up with my own >> way but also David Barosin on the SItoA list (I accidentally posted there) >> gave me a simpler answer. Here is David's response... >> >> >>> If the plane is on a curve, a hierarchy of 2 nulls could do it. >>> The parent null is constrained to the plane. The child null is >>> constrained to the curve. Plot the child null's position. >>> Remove the constraints from both nulls. >>> Now constrain the curve to the child null and zero out the parent null's >>> SRT. >>> Hope that makes sense. >> >> >> >> >