<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>darkvertex.com &#187; tools</title> <atom:link href="http://darkvertex.com/wp/category/softimage/tools/feed/" rel="self" type="application/rss+xml" /><link>http://darkvertex.com/wp</link> <description>Bringing CG to life, one rig at a time...</description> <lastBuildDate>Tue, 24 Aug 2010 04:17:36 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <atom:link rel='hub' href='http://darkvertex.com/wp/?pushpress=hub'/> <item><title>Softimage: RefModel Deltas&#8217; Hygiene in Production</title><link>http://darkvertex.com/wp/2010/02/21/clean-softimage-deltas/</link> <comments>http://darkvertex.com/wp/2010/02/21/clean-softimage-deltas/#comments</comments> <pubDate>Sun, 21 Feb 2010 20:38:27 +0000</pubDate> <dc:creator>Alan</dc:creator> <category><![CDATA[softimage]]></category> <category><![CDATA[tools]]></category> <category><![CDATA[script]]></category> <category><![CDATA[tips]]></category> <category><![CDATA[tool]]></category><guid isPermaLink="false">http://darkvertex.com/wp/?p=185</guid> <description><![CDATA[I used to think refmodels were buggy, annoying and out to get me. After some exploration, they exhibit a couple patterns of fixable issues. Let&#8217;s bring them to light, shall we? Here&#8217;s some of my observations with them in the context of artists animating a referenced rig in production: StoredExpressions doesn&#8217;t always store expressions. They [...]]]></description> <content:encoded><![CDATA[<p>I used to think refmodels were buggy, annoying and out to get me. After some exploration, they exhibit a couple patterns of fixable issues. Let&#8217;s bring them to light, shall we?</p><p>Here&#8217;s some of my observations with them in the context of artists animating a referenced rig in production:<br /> <span id="more-185"></span></p><ul><li><strong>StoredExpressions</strong> doesn&#8217;t always store expressions. They actually show up in StoredPositions almost every time you touch something with an expression. They often also break / stop evaluating when this happens. (They often get stored even when you disable storing of expressions in your Delta, but it&#8217;s hard to repro.)<br /> &nbsp;</li><li><strong>StoredPositions</strong> remembers transforms by the mere act of selecting and having translate/rotate/scale tool active. While not exactly a bug, it easily causes problems if you edit centers later on, because the transforms get remembered and so it causes a wacky offset.<br /> Stuff can exist in both StoredPositions and StoredFCurves but it shouldn&#8217;t. If it&#8217;s keyed/animated, keys take priority, which means you got redundant junk in StoredPositions. XSI won&#8217;t remove the StoredPositions entry when setting a key (which makes a StoredFCurves entry.)<br /> &nbsp;</li><li><strong>StoredPositions</strong> will (from time to time) remember changes to a referenced material&#8217;s parameters. This combines with the annoyance of updating a material later and having old values mysteriously enforced on it because they were in StoredPositions and shared the same names. (Maybe a better name is &#8220;StoredValues&#8221;, since it stores more than <em>positions</em>.)<br /> &nbsp;</li><li>Generally rigs don&#8217;t come preanimated so there&#8217;s no point for &#8220;<strong>StoredRemoveAnimations</strong>&#8221; to exist. It gets created whenever you remove keys from something in the rig.<br /> &nbsp;</li><li><strong>StoredConstraints</strong> remembers constraint relations by explicit naming. Sometimes these don&#8217;t update when the objects name changes, and sometimes they do.<br /> So say if you constrain an arm of the referenced character rig to a null you just made, THEN rename the null, there&#8217;s a very high chance when you save and reopen the constraint won&#8217;t be connected, since it will be expecting the original null name. The good news is you can open the Delta in an Explorer, doubleclick the StoredConstraints subproperty and rename the object names in each row to whatever are the correct ones.<br /> &nbsp;</li><li>Whenever you edit contents of a Delta by hand and want to see the updated result, you must rightclick on the referenced model in an Explorer and &#8220;<em>Update Referenced Model</em>.&#8221;<br /> &nbsp;</li><li>You need a Delta per model&#8230; and in the case of having a rig with one or more models inside it, this rule still applies.<br /> &nbsp;</li><li>Just because a Delta sits below a model that doesn&#8217;t necessarily mean that is the model it&#8217;s working on. It&#8217;s actually working on whatever its &#8220;Target&#8221; parameter specifies.<br /> &nbsp;</li><li>If &#8220;<em>Record</em>&#8221; isn&#8217;t <strong>ON</strong> (in the Delta&#8217;s PPG) before you make changes, they don&#8217;t get saved. End of story. &#8212; Turning it on after doing changes won&#8217;t save your ass. (Good thing it&#8217;s on by default, eh?)<br /> &nbsp;</li><li>If you have a convoluted/complex rig that crashes when you do &#8220;<em>Update Reference Model</em>&#8221; or when simply offloading, but works fine otherwise&#8230; if you need to update the refmodel path, you can do this without opening your scene by editing the relevant scntoc file and then when you open your scene it&#8217;ll be path you wanted. <img src='http://darkvertex.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br /> &nbsp;</li><li>When you duplicate a material from a referenced model, it duplicates fine EXCEPT for the image clips/sources, which stay referenced and when you reopen the scene, they will have dissapeared.<br /> &nbsp;</li><li>Using <strong>Animation Layers</strong> with referenced models is <s><strong>not to be trusted</strong>.</s> [*<strong>update</strong>*: Steven Caron from Blur Studios has noted that as of Soft 2010 SP1, animation layers work fine with referenced models. Beware if you are using a previous version.]<br /> If you use them, always open the scene you just saved in a new XSI without closing the first one so you can check that when it opens all the animation is still there and works properly. (I haven&#8217;t confirmed, but I believe I read on the mailing list that you can collapse animation layers before you save and then it&#8217;s okay.)<br /> &nbsp;</li><li>Someone on the Softimage mailing list mentioned once that only the first Delta for a particular model remembers Mixer stuff like actionclips and such, regardless of what you set. Good to bare in mind.</li></ul><p>At work I made two relatively simple scripts that help us with refmodel woes. I&#8217;d like to share them with you:</p><p>&nbsp;</p><hr /> <strong>&#8220;Import Referenced Rig&#8221;:</strong><br /> If you do File-&gt;Import-&gt;Referenced Model and begin working without doing anything, it&#8217;s set to remember *anything* and *everything*. It&#8217;ll break in no time.</p><p>This really simple script imports a refmodel, make a fresh empty delta for it (and extra Deltas for any models in it) and sets these defaults automatically:</p><ul><li>Static Pos and Other Parameters ON</li><li>FCurves ON</li><li>Expressions OFF</li><li>Constraints ON</li><li>Animation Mixer ON</li><li>Group Relations ON<br /> (this stores partitions relationships so it&#8217;s very important!)</li><li>Model Instances OFF<br /> (could be left ON if you need it)</li><li>External Connections ON<br /> (this remembers stuff like constraining something in the refmodel to an external object)</li><li>New Properties OFF</li><li>Clusters OFF</li><li>Cluster Properties OFF</li><li>Operators OFF</li></ul><p>then in Mixer Modifications:</p><ul><li>Animation ON</li><li>Shapes OFF</li><li>Audio ON</li><li>Cache ON</li></ul><p>These are the ideal settings for using a referenced model to move/animate it, put it in partitions/groups/layers and render.</p><p><a href="http://wpfiles.darkvertex.com/wp/wp-content/uploads/2010/02/AF_ImportRefModelForAnimation.py">Download the <strong><em>AF_ImportRefModelForAnimation.py</em></strong> Python script here.</a> Make it into a button or incorporate it into your workflow tools if you have any.</p><p>&nbsp;</p><hr /><p><strong>&#8220;Clean Delta&#8221;:</strong><br /> It deletes stuff from a Delta that shouldn&#8217;t be there if you just wanted to animate and render a referenced rig or model. See the code for more specifics.</p><p><a href="http://wpfiles.darkvertex.com/wp/wp-content/uploads/2010/02/AF_DeltaCleaner.py">Download the <strong><em>AF_DeltaCleaner.py</em></strong> Python script here</a> and run it from a button with refmodels selected. I&#8217;ve left plenty of code comments to make sense of what it does. I urge you to read them.</p><hr /> &nbsp;</p><p>I hope these scripts assist you in having a more pleasant experience with referenced models. They&#8217;re actually quite wonderful after you learn their quirks.</p><p>If anyone has anything else to say about deltas, modifications, suggestions, code improvements, constructive critique, cheese and monkeys, etc. please leave a comment. Thank you. <img src='http://darkvertex.com/wp/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://darkvertex.com/wp/2010/02/21/clean-softimage-deltas/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Softimage: Automatic Symmetry Mapping Template</title><link>http://darkvertex.com/wp/2010/01/18/auto-symmetry-mapping-template/</link> <comments>http://darkvertex.com/wp/2010/01/18/auto-symmetry-mapping-template/#comments</comments> <pubDate>Mon, 18 Jan 2010 20:41:16 +0000</pubDate> <dc:creator>Alan</dc:creator> <category><![CDATA[softimage]]></category> <category><![CDATA[tools]]></category> <category><![CDATA[script]]></category> <category><![CDATA[tool]]></category><guid isPermaLink="false">http://darkvertex.com/wp/?p=151</guid> <description><![CDATA[If you do rigging in Softimage you probably know when trying to Mirror Weights it only pays attention to the last created Symmetry Mapping Template for that model. There&#8217;s no interface to append to or join mapping templates. It gets annoying having to recreate them and verify that Soft guessed all the correct symmetrical equivalents, [...]]]></description> <content:encoded><![CDATA[<p>If you do rigging in Softimage you probably know when trying to <em>Mirror Weights</em> it only pays attention to the last created Symmetry Mapping Template for that model. There&#8217;s no interface to append to or join mapping templates. It gets annoying having to recreate them and verify that Soft guessed all the correct symmetrical equivalents, so&#8230;</p><p><span id="more-151"></span><br /> The following Python script iterates through your selected enveloped objects, creates SymmetryMaps if one doesn&#8217;t exist, and then goes through their envelope deformers and appends them to the SymmetryMappingTemplate for that model based on the naming convention of prefixing &#8220;L_&#8221; for left-side and &#8220;R_&#8221; for right-side objects.</p><p>It assumes the following: (and maybe in the future I&#8217;ll make the code smarter&#8230;)<br /> - Your selected objects all have envelopes.<br /> - Your left-side objects begin with &#8220;L_&#8221; and the right-side with &#8220;R_&#8221;.<br /> - All your selected objects belong to the same Model.<br /> - That you don&#8217;t have more than one SymmetryMappingTemplate under your model. (It will append to the first one found under the model, and create one if one isn&#8217;t found.) I recommend not having one to start with.</p><p>Make yourself a button with this:</p><div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">xsi = Application
lm = xsi.<span style="color: black;">LogMessage</span>
<span style="color: #ff7700;font-weight:bold;">from</span> win32com.<span style="color: black;">client</span> <span style="color: #ff7700;font-weight:bold;">import</span> constants <span style="color: #ff7700;font-weight:bold;">as</span> c
<span style="color: #ff7700;font-weight:bold;">import</span> win32com.<span style="color: black;">client</span>
&nbsp;
objects = win32com.<span style="color: black;">client</span>.<span style="color: black;">Dispatch</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;XSI.Collection&quot;</span> <span style="color: black;">&#41;</span>
objects.<span style="color: black;">AddItems</span><span style="color: black;">&#40;</span>xsi.<span style="color: black;">Selection</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Iterate through selection</span>
<span style="color: #ff7700;font-weight:bold;">for</span> envObj <span style="color: #ff7700;font-weight:bold;">in</span> objects:
	lm<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Iterating through: &quot;</span>+envObj.<span style="color: black;">FullName</span>, c.<span style="color: black;">siVerbose</span> <span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># Create a SymmetryMappingTemplate if needed.</span>
	oSymmetryMapTemplate = xsi.<span style="color: black;">Dictionary</span>.<span style="color: black;">GetObject</span><span style="color: black;">&#40;</span> envObj.<span style="color: black;">Model</span>.<span style="color: black;">Name</span>+<span style="color: #483d8b;">&quot;.SymmetryMappingTemplate&quot;</span>, <span style="color: #008000;">False</span> <span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> oSymmetryMapTemplate:
		oSymmetryMapTemplate = xsi.<span style="color: black;">CreateSymmetryMappingTemplate</span><span style="color: black;">&#40;</span>envObj, <span style="color: #008000;">False</span>, <span style="color: #ff4500;">0</span>, <span style="color: #008000;">False</span><span style="color: black;">&#41;</span>
		lm<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Symmetry Mapping Template not found; created one.&quot;</span>, c.<span style="color: black;">siVerbose</span> <span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
&nbsp;
	<span style="color: #808080; font-style: italic;"># Create a SymmetryMap if it doesn't exist.</span>
	sMapCls = envObj.<span style="color: black;">ActivePrimitive</span>.<span style="color: black;">Geometry</span>.<span style="color: black;">Clusters</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SymmetryMapCls&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
	found = <span style="color: #008000;">False</span>
	<span style="color: #ff7700;font-weight:bold;">if</span> sMapCls:
		sMap_props = sMapCls.<span style="color: black;">LocalProperties</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> eachProp <span style="color: #ff7700;font-weight:bold;">in</span> sMap_props:
			<span style="color: #ff7700;font-weight:bold;">if</span> eachProp.<span style="color: black;">Type</span> == <span style="color: #483d8b;">&quot;map&quot;</span> <span style="color: #ff7700;font-weight:bold;">and</span> <span style="color: #ff7700;font-weight:bold;">not</span> found:
				sMap = eachProp
				found = <span style="color: #008000;">True</span>
				lm<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Found SymmetryMap: &quot;</span>+sMap.<span style="color: black;">FullName</span>, c.<span style="color: black;">siVerbose</span> <span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> found:
		lm<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;SymmetryMap not found; created one.&quot;</span>, c.<span style="color: black;">siVerbose</span> <span style="color: black;">&#41;</span>
		<span style="color: #808080; font-style: italic;">#sMap = xsi.CreateSymmetryMap(&quot;&quot;, envObj, &quot;Symmetry_Map&quot;)(0)</span>
		sMap = xsi.<span style="color: black;">CreateSymmetryMap</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span>, envObj, <span style="color: #483d8b;">&quot;&quot;</span>, <span style="color: #483d8b;">&quot;&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
&nbsp;
	<span style="color: #808080; font-style: italic;"># Add envelope deformers to template by name:</span>
	i = xsi.<span style="color: black;">GetNumMappingRules</span><span style="color: black;">&#40;</span> oSymmetryMapTemplate <span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span>
	oppositeNaming = <span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;L_&quot;</span>:<span style="color: #483d8b;">&quot;R_&quot;</span>, <span style="color: #483d8b;">&quot;R_&quot;</span>:<span style="color: #483d8b;">&quot;L_&quot;</span><span style="color: black;">&#125;</span>
	envelope = envObj.<span style="color: black;">Envelopes</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
	deformers = envelope.<span style="color: black;">Deformers</span>
	<span style="color: #ff7700;font-weight:bold;">for</span> eachDef <span style="color: #ff7700;font-weight:bold;">in</span> deformers:
		name_A = eachDef.<span style="color: black;">Name</span>
&nbsp;
		<span style="color: #ff7700;font-weight:bold;">if</span> name_A<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span> <span style="color: #ff7700;font-weight:bold;">in</span> oppositeNaming.<span style="color: black;">keys</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
			name_B = name_A.<span style="color: black;">replace</span><span style="color: black;">&#40;</span>name_A<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span>, oppositeNaming.<span style="color: black;">get</span><span style="color: black;">&#40;</span>name_A<span style="color: black;">&#91;</span>:<span style="color: #ff4500;">2</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
			xsi.<span style="color: black;">AddMappingRule</span><span style="color: black;">&#40;</span> oSymmetryMapTemplate, name_A, name_B, i<span style="color: black;">&#41;</span>
			lm<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Adding Mapping Rule #&quot;</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot;: &quot;</span>+name_A+<span style="color: #483d8b;">&quot; &lt;--&gt; &quot;</span>+name_B, c.<span style="color: black;">siVerbose</span> <span style="color: black;">&#41;</span>
			i += <span style="color: #ff4500;">1</span>
&nbsp;
xsi.<span style="color: black;">SelectObj</span><span style="color: black;">&#40;</span>objects<span style="color: black;">&#41;</span></pre></div></div><p>I might update the code in the future to support multiple models and check if an entry in the template has been added already, but for now this above will have to do.</p><p>Hope it&#8217;s useful to somebody! <img src='http://darkvertex.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://darkvertex.com/wp/2010/01/18/auto-symmetry-mapping-template/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Softimage: A Self-Contained CurveLength Operator</title><link>http://darkvertex.com/wp/2009/12/17/selfcontained-curvelength-operator/</link> <comments>http://darkvertex.com/wp/2009/12/17/selfcontained-curvelength-operator/#comments</comments> <pubDate>Thu, 17 Dec 2009 22:26:04 +0000</pubDate> <dc:creator>Alan</dc:creator> <category><![CDATA[softimage]]></category> <category><![CDATA[tools]]></category> <category><![CDATA[script]]></category> <category><![CDATA[tool]]></category><guid isPermaLink="false">http://darkvertex.com/wp/?p=96</guid> <description><![CDATA[Sometimes you need to know the length of a curve for some setups; for a while I sometimes used an addon called jsCurveLength. However, the way it&#8217;s designed relies on the existance of the addon to evaluate. Without it, your rig is broken. I&#8217;ve made a version which is self-contained, so when you export your [...]]]></description> <content:encoded><![CDATA[<p>Sometimes you need to know the length of a curve for some setups; for a while I sometimes used an addon called <a href="http://www.xsibase.com/forum/index.php?board=11;action=display;threadid=35052">jsCurveLength</a>.</p><p>However, the way it&#8217;s designed relies on the existance of the addon to evaluate. Without it, your rig is broken. I&#8217;ve made a version which is self-contained, so when you export your rig you don&#8217;t need to tell people to install any addon.<span id="more-96"></span></p><p>Select your curve(s) and run this code from either a button or the <em>Script Editor</em>. Here&#8217;s the JavaScript:</p><div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Self-Contained CurveLength Op -- http://darkvertex.com/</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> CurveLengthOp_Update<span style="color: #009900;">&#40;</span> In_UpdateContext<span style="color: #339933;">,</span> Out<span style="color: #339933;">,</span> Incrvlist <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	Out.<span style="color: #660066;">Value</span> <span style="color: #339933;">=</span> Incrvlist.<span style="color: #660066;">Value</span>.<span style="color: #660066;">Geometry</span>.<span style="color: #660066;">Curves</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">Length</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> ApplyCurveLengthProp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	oEnum <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Enumerator<span style="color: #009900;">&#40;</span> Application.<span style="color: #660066;">Selection</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">;!</span>oEnum.<span style="color: #660066;">atEnd</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>oEnum.<span style="color: #660066;">moveNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> sel <span style="color: #339933;">=</span> oEnum.<span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>sel.<span style="color: #660066;">Type</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;crvlist&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> oProp <span style="color: #339933;">=</span> sel.<span style="color: #660066;">AddProperty</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;Custom_parameter_list&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;CurveLength&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003366; font-weight: bold;">var</span> p <span style="color: #339933;">=</span> oProp.<span style="color: #660066;">AddParameter2</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;CurveLength&quot;</span><span style="color: #339933;">,</span>siDouble<span style="color: #339933;">,</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">8000</span><span style="color: #339933;">,</span><span style="color: #CC0000;">8000</span><span style="color: #339933;">,-</span><span style="color: #CC0000;">8000</span><span style="color: #339933;">,</span><span style="color: #CC0000;">8000</span><span style="color: #339933;">,</span>siClassifUnknown<span style="color: #339933;">,</span>siPersistable <span style="color: #339933;">|</span> siAnimatable<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Length&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003366; font-weight: bold;">var</span> crvList <span style="color: #339933;">=</span> sel.<span style="color: #660066;">ActivePrimitive</span><span style="color: #339933;">;</span>
			<span style="color: #003366; font-weight: bold;">var</span> newOp <span style="color: #339933;">=</span> AddScriptedOp<span style="color: #009900;">&#40;</span> p<span style="color: #339933;">,</span> CurveLengthOp_Update.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> crvList<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;CurveLengthOp&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;JScript&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			newOp.<span style="color: #660066;">Debug</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
			newOp.<span style="color: #660066;">AlwaysEvaluate</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			newOp.<span style="color: #660066;">Connect</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			LogMessage<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Added CurveLengthOp to: &quot;</span><span style="color: #339933;">+</span>sel.<span style="color: #660066;">FullName</span><span style="color: #339933;">,</span> siVerbose<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
ApplyCurveLengthProp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>]]></content:encoded> <wfw:commentRss>http://darkvertex.com/wp/2009/12/17/selfcontained-curvelength-operator/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Tool: XSI Docs Self-Translation Patch</title><link>http://darkvertex.com/wp/2009/01/23/xsi-docs-self-translator/</link> <comments>http://darkvertex.com/wp/2009/01/23/xsi-docs-self-translator/#comments</comments> <pubDate>Fri, 23 Jan 2009 18:30:22 +0000</pubDate> <dc:creator>Alan</dc:creator> <category><![CDATA[softimage]]></category> <category><![CDATA[tools]]></category> <category><![CDATA[script]]></category> <category><![CDATA[tool]]></category><guid isPermaLink="false">http://darkvertex.com/wp/?p=7</guid> <description><![CDATA[34 languages supported! [CLICK TO SEE DEMO VIDEO] FILES: 1. First get the html XSI Docs (xsidocs.zip) here&#160;[mirror], extract it somewhere, 2. DOWNLOAD PATCHER SCRIPT [v1.1] (VBScript), run it and follow on-screen instructions. FORUM THREADS: [xsibase] [xsiforum.com] [softimage.ru] WHAT IT DOES: Inserts a &#60;script&#62; tag into every htm file in the docs folder so that [...]]]></description> <content:encoded><![CDATA[<p><strong>34 languages supported!</strong><br /> <a rel="shadowbox[Mixed];width=640;height=498" href="http://s3.darkvertex.com/tools/xsidocs_translator/spanishdemo.swf"><br /> [<strong>CLICK TO SEE DEMO VIDEO</strong>]<br /> <img src="http://s3.darkvertex.com/tools/xsidocs_translator/thumb.jpg" alt="Click to play video" /></a><br /> <span id="more-7"></span><br /> <strong>FILES</strong>:<br /> 1. First get the html XSI Docs (xsidocs.zip) <a href="http://softimage.wiki.avid.com/xsidocs/xsidocs.zip">here</a>&nbsp;[<a href="http://cdn.darkvertex.com/tools/xsidocs_translator/xsidocs.zip">mirror</a>], extract it somewhere,<br /> 2. <a href="http://s3.darkvertex.com/tools/xsidocs_translator/1.1/xsidocs_translator_patch.zip">DOWNLOAD PATCHER SCRIPT [<em>v1.1</em>]</a> (VBScript), run it and follow on-screen instructions.</p><p> <strong>FORUM THREADS</strong>: [<a href="http://www.xsibase.com/forum/index.php?board=29;action=display;threadid=38669">xsibase</a>] [<a href="http://www.xsiforum.com/forum/index.php/topic,6486.0.html">xsiforum.com</a>] [<a href="http://softimage.ru/forums/?showtopic=5310">softimage.ru</a>]</p><p><strong>WHAT IT DOES</strong>:<br /> Inserts a &lt;script&gt; tag into every htm file in the docs folder so that when you click on any paragraph, it will be <em>automagically translated</em> to your chosen native language. (The video above shows a Spanish demo.) Language is set when you run the patching script.</p> ]]></content:encoded> <wfw:commentRss>http://darkvertex.com/wp/2009/01/23/xsi-docs-self-translator/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>