<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: IK Solvers &amp;amp; Maxscript - Assuming Preferred Angles? in 3ds Max Animation and Rigging Forum</title>
    <link>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8645209#M4282</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3124619"&gt;@TheTrueKaiser&lt;/a&gt;,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I agree, documentation is not clear on the subject.&lt;/P&gt;
&lt;P&gt;I currently do not have Max 2011 installed but I have 2012.&lt;/P&gt;
&lt;P&gt;I tried below with success in 2012.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you give a try to :&lt;/P&gt;
&lt;PRE&gt;showinterface IKChainControl.IKChainActions()&lt;/PRE&gt;
&lt;P&gt;It should print:&lt;/P&gt;
&lt;PRE&gt;Interface: IKChainActions
Properties:
Methods:
&amp;lt;boolean&amp;gt;snap() -- Action Interface
&amp;lt;boolean&amp;gt;ikSnap() -- Action Interface
&amp;lt;boolean&amp;gt;fkSnap() -- Action Interface
&amp;lt;boolean&amp;gt;toggleEnabled() -- Action Interface
&amp;lt;boolean&amp;gt;setPrefAngles() -- Action Interface
&amp;lt;boolean&amp;gt;assumePrefAngles() -- Action Interface&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the IKChain object selected, you should be able to use :&lt;/P&gt;
&lt;PRE&gt;IKChainControl.IKChainActions.setPrefAngles()
IKChainControl.IKChainActions.assumePrefAngles()&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Let me know if this helps or not,&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;</description>
    <pubDate>Fri, 08 Mar 2019 11:45:06 GMT</pubDate>
    <dc:creator>ads_royje</dc:creator>
    <dc:date>2019-03-08T11:45:06Z</dc:date>
    <item>
      <title>IK Solvers &amp; Maxscript - Assuming Preferred Angles?</title>
      <link>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8644198#M4281</link>
      <description>&lt;P&gt;Hello, everyone! I hope you are all doing well!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've got a pretty simple question that has been causing me endless frustration: How do I apply the "Assume Preferred Angles" control programmatically?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As a primer, I have been making tools in Maxscript for roughly 6 years now, so I am no stranger to the language or the documentation!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Full disclosure, I am using 3dsMax 2011 64-bit on Windows 7.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is a full discourse of what all I have uncovered myself:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Firstly, I am creating an IK solver in this way:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;solver = iksys.ikchain oThigh oFoot "IKLimb"&lt;/PRE&gt;
&lt;P&gt;Pretty straightforward, all is well and good. I further go on to apply the VHTarget of the solver's controller:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;solver.controller.vhtarget = kneeDummy&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And this is where my problem arises. Doing so causes the leg to rotate slightly, which I don't want. When applying the IK chain manually, through Animation -&amp;gt; IK Solvers -&amp;gt; IK Limb Solver, this is resolved easily: hit the "Assume Preferred Angles" button, and the leg snaps back to its original rotations, while still behaving correctly with the IK solving. Great!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I can not, for the&amp;nbsp;&lt;STRONG&gt;life&amp;nbsp;&lt;/STRONG&gt;of me, figure out how to apply this programmatically.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the first thing I did was address the documentation for the IKChainControl class. Here, the documentation states there is a function named "assumePrefAngles()". Now, I'm no rocket scientist, but my intuition suggests to me that the "assumePrefAngles()" method is probably what the "Assume Preferred Angles" button uses, and so I want to give it a try!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So I just casually call this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;solver.controller.assumePrefAngles()&lt;/PRE&gt;
&lt;P&gt;And... it errors.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;"-- Unknown property: "assumePrefAngles" in Controller:IKChainControl"&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Well, okay, that's not a huge deal. The documentation says that it is in part of the Action interface. Using the MAXListener to call&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterfaces solver.controller&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yields the same information. Specifically, it yields this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterfaces solver.controller
  Interface: Action
   Properties:
   Methods:
    &amp;lt;boolean&amp;gt;snap()  -- Action Interface
    &amp;lt;boolean&amp;gt;ikSnap()  -- Action Interface
    &amp;lt;boolean&amp;gt;fkSnap()  -- Action Interface
    &amp;lt;boolean&amp;gt;toggleEnabled()  -- Action Interface
    &amp;lt;boolean&amp;gt;setPrefAngles()  -- Action Interface
    &amp;lt;boolean&amp;gt;assumePrefAngles()  -- Action Interface
   Actions:
    Category: IK_Chain_Actions; Action: IK_Chain_Snap_Action; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Chain_IK_Snap; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Chain_FK_Snap; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Solver_Toggle; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: Set_Pref_Angles; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: Assume_Pref_Angles; Shortcut: -- none defined --
OK&lt;/PRE&gt;
&lt;P&gt;Now, I will be the first to admit I don't know what this "Category: IK_Chain_Actions" malarky means, but that doesn't distract me.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I know from experience that the&amp;nbsp;&lt;STRONG&gt;IKSys&amp;nbsp;&lt;/STRONG&gt;Interface is called in the form of&amp;nbsp;&lt;STRONG&gt;IKSys.&amp;lt;method&amp;gt;&amp;nbsp;&lt;/STRONG&gt;. In fact, I can peek at the entire IKSys interface with&amp;nbsp;&lt;STRONG&gt;showinterface:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterface IKSys
  Interface: IKSys
   Properties:
   Methods:
    &amp;lt;node&amp;gt;ikChain &amp;lt;node&amp;gt;startJoint &amp;lt;node&amp;gt;endJoint &amp;lt;string&amp;gt;solver
    &amp;lt;integer&amp;gt;solverCount()
    &amp;lt;TSTR by value&amp;gt;solverName &amp;lt;integer&amp;gt;solverIndex
    &amp;lt;TSTR by value&amp;gt;solverUIName &amp;lt;integer&amp;gt;solverIndex
    &amp;lt;void&amp;gt;suspendLinkNotify()
    &amp;lt;void&amp;gt;resumeLinkNotify()
    &amp;lt;bool&amp;gt;isLinkNotifySuspended()
   Actions:
OK
&lt;/PRE&gt;
&lt;P&gt;And we clearly see the "ikChain" control listed, beneath the "Interface: IKSys" line. We know for a fact that "iksys.ikchain" works, because I am using it to create the IK chain in the first place.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So then intuition suggests to me that to call the assumePrefAngles() method, that is inside the Action interface, that I need to call it via&amp;nbsp;&lt;STRONG&gt;Action.assumePrefAngles()&lt;/STRONG&gt;. So I do that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;"-- Unknown property: "assumePrefAngles" in undefined"&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Well that's unfortunate. I'll just peek at the Action interface, which I know exists because showinterfaces solver.controller dumps the interface for me. So I run&amp;nbsp;&lt;STRONG&gt;showinterface Action.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;"-- No ""showInterface"" function for undefined"&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Oookay... Let's just see what Action itself is, by simplying running&amp;nbsp;&lt;STRONG&gt;Action&amp;nbsp;&lt;/STRONG&gt;in the MAXListener...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"Action&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&lt;STRONG&gt;undefined&lt;/STRONG&gt;"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Oh. Well, that explains a lot.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But, unfortunately, it&amp;nbsp;&lt;STRONG&gt;doesn't&amp;nbsp;&lt;/STRONG&gt;explain how I'm supposed to actually call the assumePrefAngles() method. I have scoured the Internet for the past 90 minutes, and I simply cannot find any information on this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've exhausted all of my resources but one: all of you find ladies and gentlemen here at the forums. I am hoping that, if no one is able to yield the golden answer, then I can at least be pointed in a new direction in my hunt for this elusive knowledge.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you all very much for taking the time to read this post and consider my plight! I look forward to hearing any thoughts or suggestions you fine people may have!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Mar 2019 22:12:23 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8644198#M4281</guid>
      <dc:creator>TheTrueKaiser</dc:creator>
      <dc:date>2019-03-07T22:12:23Z</dc:date>
    </item>
    <item>
      <title>Re: IK Solvers &amp; Maxscript - Assuming Preferred Angles?</title>
      <link>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8645209#M4282</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3124619"&gt;@TheTrueKaiser&lt;/a&gt;,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I agree, documentation is not clear on the subject.&lt;/P&gt;
&lt;P&gt;I currently do not have Max 2011 installed but I have 2012.&lt;/P&gt;
&lt;P&gt;I tried below with success in 2012.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you give a try to :&lt;/P&gt;
&lt;PRE&gt;showinterface IKChainControl.IKChainActions()&lt;/PRE&gt;
&lt;P&gt;It should print:&lt;/P&gt;
&lt;PRE&gt;Interface: IKChainActions
Properties:
Methods:
&amp;lt;boolean&amp;gt;snap() -- Action Interface
&amp;lt;boolean&amp;gt;ikSnap() -- Action Interface
&amp;lt;boolean&amp;gt;fkSnap() -- Action Interface
&amp;lt;boolean&amp;gt;toggleEnabled() -- Action Interface
&amp;lt;boolean&amp;gt;setPrefAngles() -- Action Interface
&amp;lt;boolean&amp;gt;assumePrefAngles() -- Action Interface&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the IKChain object selected, you should be able to use :&lt;/P&gt;
&lt;PRE&gt;IKChainControl.IKChainActions.setPrefAngles()
IKChainControl.IKChainActions.assumePrefAngles()&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Let me know if this helps or not,&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;</description>
      <pubDate>Fri, 08 Mar 2019 11:45:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8645209#M4282</guid>
      <dc:creator>ads_royje</dc:creator>
      <dc:date>2019-03-08T11:45:06Z</dc:date>
    </item>
    <item>
      <title>Re: IK Solvers &amp; Maxscript - Assuming Preferred Angles?</title>
      <link>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8646647#M4283</link>
      <description>&lt;P&gt;Hey Royje!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It seems like the interfaces might have changed between 2011 and 2012, because unfortunately, running&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterface IKChainControl.IKChainActions()&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On a fresh session of 3dsMax, with nothing created or selected, returns the following error:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterface IKChainControl.IKChainActions()
&lt;EM&gt;&lt;STRONG&gt;-- Unknown property: "IKChainActions" in IKChainControl&lt;/STRONG&gt;&lt;/EM&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;HOWEVER!&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If I probe&amp;nbsp;&lt;STRONG&gt;IKChainControl.snap&amp;nbsp;&lt;/STRONG&gt;directly, just to see if it exists, it returns that it is, indeed, a function. This is one of the functions listed in the interface when I tap the IKChainControl interface. Similarly, assumePrefAngles returns as existing here as well:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;showinterfaces IKChainControl
  Interface: Action
   Properties:
   Methods:
    &amp;lt;boolean&amp;gt;snap()  -- Action Interface
    &amp;lt;boolean&amp;gt;ikSnap()  -- Action Interface
    &amp;lt;boolean&amp;gt;fkSnap()  -- Action Interface
    &amp;lt;boolean&amp;gt;toggleEnabled()  -- Action Interface
    &amp;lt;boolean&amp;gt;setPrefAngles()  -- Action Interface
    &amp;lt;boolean&amp;gt;assumePrefAngles()  -- Action Interface
   Actions:
    Category: IK_Chain_Actions; Action: IK_Chain_Snap_Action; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Chain_IK_Snap; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Chain_FK_Snap; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: IK_Solver_Toggle; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: Set_Pref_Angles; Shortcut: -- none defined --
    Category: IK_Chain_Actions; Action: Assume_Pref_Angles; Shortcut: -- none defined --
OK
IKChainControl.snap
snap()
IKChainControl.assumePrefAngles
assumePrefAngles()
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This indeed got me onto the right track!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The following block of code correctly assumes the preferred angles, and resolves the problem that I've been trying to resolve:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;		select ikEffector
		IKChainControl.assumePrefAngles()
		deselect ikEffector&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There is, however, a minor caveat: If this code is called in the same chunk that creates the IK Chain, EG:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;		-- Create the IK chain
		ikEffector = iksys.ikchain oThigh oFoot "IKLimb"
		ikEffector.controller.vhtarget = kneedummy
		
		-- Assume preferred angles, to stop the leg snapping when the VHTarget is set
		deselect selection
		select ikEffector
		IKChainControl.assumePrefAngles()
		deselect ikEffector&lt;/PRE&gt;
&lt;P&gt;Then the operation appears to go too fast - the "assumePrefAngles()" won't have any effect, and the leg will rotate incorrectly, just as before. If I wait until the function creating the ikEffector returns, and&amp;nbsp;&lt;STRONG&gt;then&amp;nbsp;&lt;/STRONG&gt;call the assumePrefAngles() chunk in the MAXListener, it works correctly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I know this is beyond the purview of this question, but I figure I might as well ask for posterity:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Is there a way to make Maxscript wait for a method to complete, before executing the next instruction? In this case, I suspect waiting for the&amp;nbsp;&lt;STRONG&gt;iksys.ikchain&amp;nbsp;&lt;/STRONG&gt;control to fully complete would resolve this issue.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would separately love to have the ability to wait for&amp;nbsp;&lt;STRONG&gt;Skinwrap&amp;nbsp;&lt;/STRONG&gt;to complete - I have tools that utilize it, and I had to break the automation up into separate buttons the user manually presses, because otherwise the script runs too fast, and executes instructions before the Skinwrap completes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Mar 2019 20:55:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8646647#M4283</guid>
      <dc:creator>TheTrueKaiser</dc:creator>
      <dc:date>2019-03-08T20:55:00Z</dc:date>
    </item>
    <item>
      <title>Re: IK Solvers &amp; Maxscript - Assuming Preferred Angles?</title>
      <link>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8650119#M4284</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3124619"&gt;@TheTrueKaiser&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I installed 2011 to be able to try too.&lt;/P&gt;
&lt;P&gt;As you figured out already, indeed, in 2011 the interface is different then 2012 and forward.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am glad to read this helped you get unblocked anyway! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With a little mxs code, I was not able to reproduce an issue with some mxs race condition.&lt;BR /&gt;&lt;BR /&gt;Usually, when maxscript runs too fast for Max, I use ForceCompleteRedraw() and that helps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 11 Mar 2019 15:20:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/3ds-max-animation-and-rigging/ik-solvers-amp-maxscript-assuming-preferred-angles/m-p/8650119#M4284</guid>
      <dc:creator>ads_royje</dc:creator>
      <dc:date>2019-03-11T15:20:49Z</dc:date>
    </item>
  </channel>
</rss>

