<?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>Softimage Blog &#187; User Interface</title>
	<atom:link href="http://www.softimageblog.com/archives/category/user-interface/feed" rel="self" type="application/rss+xml" />
	<link>http://www.softimageblog.com</link>
	<description>People and thoughts behind Softimage in production...</description>
	<lastBuildDate>Mon, 21 Jun 2010 20:40:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Man Does Not Live By Keyboard Shortcuts Alone</title>
		<link>http://www.softimageblog.com/archives/208#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=man-does-not-live-by-keyboard-shortcuts-alone</link>
		<comments>http://www.softimageblog.com/archives/208#comments</comments>
		<pubDate>Tue, 08 May 2007 21:30:00 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/archives/208</guid>
		<description><![CDATA[Someone asked me if by having the Qwerty Interaction Model in XSI, XSI was beginning to loose its Design Philosophy.  I think the answer is no, XSI’s Design Philosophy is not which keyboard shortcuts you use.  The Design Philosophy are items such as workflows based on clusters, having all main features visible in [...]]]></description>
			<content:encoded><![CDATA[<p>Someone asked me if by having the Qwerty Interaction Model in XSI, XSI was beginning to loose its Design Philosophy.  I think the answer is no, XSI’s Design Philosophy is not which keyboard shortcuts you use.  The Design Philosophy are items such as workflows based on clusters, having all main features visible in the top-level menus, how picking sessions work, modeless inspectors, how the Scene Explorer shows you everything that’s going on, etc.  It isn’t whether manipulating the camera is on ‘Z’, &#8216;O&#8217;, &#8216;P&#8217;, or the Alt key.</p>
<p><a href="http://gizmodo.com/gadgets/awesome/the-keyboard-waffle-iron-257153.php"><img src="http://gizmodo.com/assets/resources/2007/05/waffleiron3.jpg" align="right" border="16" height="161" hspace="16" vspace="16" width="220" /></a></p>
<p>What we’re more comfortable with eventually ends up being what we’ve learned first.    In some cases XSI keys have been preserved in the Qwerty keymap.  For example, if you’re used to pressing ‘8’ to open the Scene Explorer, it’s available on Ctrl+8 in the Qwerty keymap.    The Model isn’t meant to fool anyone into thinking that they’re using M***, but it’s convenient for many users coming from M*** and M*x.  It’s also convenient for us because we can experiment with a few changes in there without affecting the majority of XSI.</p>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<p>Now that said, the Qwerty Interaction Model changes the current keyboard mapping AND a few user preferences.</p>
<p>The biggest thing is changing the keying method to ‘Key All Keyable’. Keyable parameters are a very good thing, but keying them is not on by default in XSI.  In this case, I’ll agree: focusing on keyable parameters instead of marked parameter and marking sets is an evolution of the Design Philosophy of XSI.  We are not doing this only for the purpose of the Qwerty Interaction Model.  Keyable Parameters are cool because they can help us simplify the user interface, for example by limiting the numbers of viewing filters.  And yep, we have decided to name these animation parameters the same name that another application is using.</p>
<p><strong>What Qwerty Interaction Model changes</strong> <em>(compared to the “Softimage|XSI” model)</em> :</p>
<p><!--[if !supportEmptyParas]--></p>
<p>Keymap is set to “Qwerty Keymap”</p>
<p>Save Key Command is set to &#8220;Key all keyable&#8221;</p>
<p><!--[if !supportEmptyParas]--></p>
<p>Camera Tool User Preferences</p>
<ul>
<li>Mouse Mapping is set to Alternate (orbit, pan, zoom)</li>
<li>Use Alt Key is set to On</li>
</ul>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<p>Transform Tool User Preferences</p>
<ul>
<li>“Click Outside Manipulator” is set to “Select Tool”</li>
<li>“Show Selected Manipuators only during interaction” is on</li>
<li>“Transform Hidden Objects” is on</li>
<li>“Modify Object Pivot” is on</li>
</ul>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<p>Selection Tool User Preferences</p>
<ul>
<li>“Click to Deselect” is on</li>
<li>Rectangle Select: “Surround Polygons” is off</li>
</ul>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<p>Display Options</p>
<ul>
<li>“Headlights” is on</li>
</ul>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<p>Animation Editor</p>
<ul>
<li>“Selected Mode” is on</li>
<li>“Prevent Movement on LMB” is on</li>
<li>“Translate on MMB” is on <em>(it’s also on in the XSI mode in 6.0)</em></li>
</ul>
<p><!--[if !supportEmptyParas]--> <!--[endif]--></p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=208&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/208/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Resetting The File Browser Settings</title>
		<link>http://www.softimageblog.com/archives/204#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=resetting-the-file-browser-settings</link>
		<comments>http://www.softimageblog.com/archives/204#comments</comments>
		<pubDate>Fri, 30 Mar 2007 20:33:47 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/archives/204</guid>
		<description><![CDATA[The settings for the File Browser you get when you select File -&#62; Open are stored in three different places in your Softimage user account folder.   (don&#8217;t shoot the messenger!)

 A binary file called DSModalBrowse .  It stores whether you are in List View mode or Thumbnail mode, the column settings for [...]]]></description>
			<content:encoded><![CDATA[<p>The settings for the File Browser you get when you select File -&gt; Open are stored in three different places <strong>in your Softimage user account folder</strong>.   <em>(don&#8217;t shoot the messenger!)</em></p>
<ol>
<li> A binary file called <strong>DSModalBrowse</strong> .  It stores whether you are in List View mode or Thumbnail mode, the column settings for <strong>List View mode</strong>, and the position of the splitter bar.  I&#8217;ve recommended user delete this file when the file browser crashes when opening.  The problem it fixes is that perhaps an image in the current folder is making the thumbnail display crash, and deleting the file reverts the browser to List View mode.  I haven&#8217;t heard of this problem in many years, however.</li>
<li>The binary file <strong>BrowserProperties</strong> store  the favorites you have added manually with the button at the top left of the dialog.  There is no real reason to delete this file.  If your list of projects in the File Browser has become too long, it is the text file <strong>default.xsiprojects</strong> that you need to edit.  Projects, addons, are not favorites.  Favorites are in the button that&#8217;s at the left of the dialog, and not the Path button on the right.</li>
<li> In the standard user preference text file, <strong>default.xsipref</strong>.  It stores the default position of the File Browser.  You need to delete these four lines if you are <strong>switching between single and dual monitor setup</strong>, and the File Browser is opening off screen.<br />
<code>xsiprivate_unclassified.DS_MODALBROWSER_B	= #INTE#891<br />
xsiprivate_unclassified.DS_MODALBROWSER_L	= #INTE#479<br />
xsiprivate_unclassified.DS_MODALBROWSER_R	= #INTE#1442<br />
xsiprivate_unclassified.DS_MODALBROWSER_T	= #INTE#345<br />
</code></li>
</ol>
<p>I apologize. :)</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=204&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/204/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>wxPython in XSI</title>
		<link>http://www.softimageblog.com/archives/138#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wxpython-in-xsi</link>
		<comments>http://www.softimageblog.com/archives/138#comments</comments>
		<pubDate>Thu, 11 Jan 2007 02:47:50 +0000</pubDate>
		<dc:creator>Aloys Baillet</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/archives/138</guid>
		<description><![CDATA[You’ll find here some nice discoveries I made trying to use wxPython inside XSI. For that I will assume that you, dear Reader, have some knowledge of Python and UIs…

Animal Logic is also kindly giving you an example XSI Plugin that should be a good starting point if you want to implement a wxPython interface in XSI.

I apologize in advance for the technical and boring stuff ahead… it’s the unfortunate price to pay to get nice and shiny UIs!]]></description>
			<content:encoded><![CDATA[<p>Hi, and Happy New Year!</p>
<p>It&#8217;s my first post in here, so I take the opportunity to thank Patrick for this great XSI site!</p>
<p>You&#8217;ll find here some nice discoveries I made trying to use wxPython inside XSI. For that I will assume that you, dear Reader, have some knowledge of Python and UIs&#8230;</p>
<p>Animal Logic is also kindly giving you an example XSI Plugin that should be a good starting point if you want to implement a wxPython interface in XSI.</p>
<p>I apologize in advance for the technical and boring stuff ahead&#8230; it&#8217;s the unfortunate price to pay to get nice and shiny UIs!</p>
<p>You can download the plugin <a href="/userContent/upload/2007/01/wxpythonxsiexplorer.zip">here</a>.</p>
<p><span id="more-138"></span><strong>But why would one do that, Custom Properties should be enough?</strong></p>
<p>Mainly, the absence of a Tree widget, the clunkiness of the Grid widget, the need for finer control on callbacks for complex UIs, the difficulty of having session-persistent UI (ones that don&#8217;t get trashed on a New Scene).</p>
<p>The main goal of being able to write wxPython UIs inside XSI is for pipeline tools. I would not try to do better than Softimage for animation controls for example. But when it comes to streamline your pipeline, having consistent UI across your applications will save a lot of development time and user frustration.</p>
<p><strong>Prerequisites</strong></p>
<ul>
<li>XSI version 5.11 or 6</li>
<li>WinXP 32 (win2k supported)</li>
<li><a href="http://www.python.org/download/">Python</a> (2.5 recommended, 2.4)</li>
<li><a href="https://sourceforge.net/projects/pywin32/">pywin32 210</a></li>
<li><a href="http://wxpython.org/download.php#binaries">wxPython</a> (2.8.0.1 recommended, older supported)</li>
</ul>
<p><strong>A look at the plugin!</strong></p>
<p>In the Python XSI plugin called wxPythonXSIExplorer.py I implemented a really crude XSI Selection Explorer. This is an highly useless tool, but it shows how this is possible to nicely interact with XSI using a set of basic wxPython widgets. Please consider the explorer itself as a proof-of-concept tool!</p>
<p><a title="wxPython in XSI" href="http://www.xsi-blog.com/userContent/upload/2007/01/wxpythonxsiexplorer.gif"><img width="600" alt="wxPython in XSI" src="http://www.xsi-blog.com/userContent/upload/2007/01/wxpythonxsiexplorer.gif" /></a></p>
<p>The interesting part of this plugin is the class called XSISubFrame. This is the class that implements all the gritty details described below, and I highly recommend you start your new wxPython XSI frame by looking at how I inherited from this class to create the XSIExplorerFrame. And how I use the XSISubFrame.create static factory method to create a new instance of the explorer.</p>
<p>I also implemented a SelectionChange event to detect the selection change in all the running instances of the wxPython XSI Explorer. Unfortunately there is no general hook for data change in XSI so if you move an object, the parameter value won&#8217;t update in our explorer.</p>
<p><strong>And now for the gritty details&#8230;</strong></p>
<p>The base trick to get a wxPython frame nicely displayed inside XSI, meaning on top of the XSI main window, but behind other XSI views when they have the focus, is to create the main frame as a child of the XSI top-level window. And for that we need to get its MS Window Handle.</p>
<p>The pywin32 package is here to help us: we can use it to list all the running windows and filter them by process ID, then pick the one which names begin with SOFTIMAGE. It sounds like a hack, but it&#8217;s just a small hack, believe me, MS Windows programming can get far more hacky than that!</p>
<p>The real magic happens when you use the AssociateHandle method on a dummy wxFrame so that wx believes that the XSI top level window is an actual wx window&#8230;</p>
<p>Then we just create our own sub frame using the wx.FRAME_FLOAT_ON_PARENT flag, which does what we want.</p>
<p>Then don&#8217;t forget to call DissociateHandle on your dummy frame, if not, XSI will not get some critical events anymore, like EVT_CLOSE, meaning you can&#8217;t close XSI anymore&#8230;</p>
<p>You will also need to do some cleanup when closing the wx window. The main problem is that wxWindow::Destroy does not destroy the top level window, it just waits for the<br />
wxApp to destroy it on it&#8217;s next event loop. But as we don&#8217;t have a wx loop running, we need to destroy the top window by hand using the win32gui module again.</p>
<p><strong>Some warnings!</strong></p>
<p>wxPython is great, but it can crash easily if you do something wrong. In XSI 6 where there is no standard output from Python displayed in the script logging window (as there is in 5), it&#8217;s better to handle all exceptions, and display them yourself, or you might miss some important message from wxPython that causes a crash in the app (see line 370 of the plugin).</p>
<p>This is Windows-Only stuff for now!</p>
<p>Fortunately for Windows users, the wxWindows framework uses standard MS Windows event loop, and wxPython integrates amazingly well inside XSI. I haven&#8217;t tried under Linux, but the big problem over there is that wxWindows is using GTK as its UI framework, and I don&#8217;t think MainWin and GTK will go very well together unless Softimage builds a version of wxMSW using their version of Mainwin and give it to us&#8230;</p>
<p>BTW, wxPython works well in Maya as well, using the still experimental <a href="http://cgkit.sourceforge.net/download.html">python for Maya</a> plugin from <a href="http://cgkit.sourceforge.net/">cgkit</a>, meaning that mixed pipeline could use the exact same UI in XSI and Maya!</p>
<p>Some native widgets have been &#8220;hacked&#8221; by Luc-Eric and his team to look better, the base TextCtrl is one of them. If you use it, its background will never refresh at all. I didn&#8217;t find an easy way of making it refresh. But you can get a nice text control by using the TE_RICH2 style, which has not been hacked. I provide a class called XSITextCtrl in my plugin that sets the style automatically as well as the background color.</p>
<p>Modality is a problem&#8230; The problem is that wx and XSI do not know well each other. If a wx dialog is shown modal, you can still work in XSI, and if a XSI dialog is shown modal (lik a new scene prompt), you can still do stuff in wx. And that could be really dangerous!</p>
<p>I worked around it by providing a custom showModalDialog method that disactivate the XSI top level window while the wx modal dialog is shown. And I implemented a EVT_ACTIVATE event to detect if there is a modal dialog running in XSI and I disable the content of the wx activated window until the top level window is activated.</p>
<p>This is not perfect, but it gives the right functionality!</p>
<p><strong>Conclusion</strong></p>
<p>This is surprisingly possible to seamlessly run wxPython UIs inside XSI!</p>
<p>I hope you will find some use to this and push Softimage to support this unknown feature, especially under Linux.</p>
<p>Have fun!</p>
<p>Aloys Baillet<br />
R&amp;D, Animal Logic</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=138&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/138/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>XSI 6&#8217;s Material Manager Up-Close!</title>
		<link>http://www.softimageblog.com/archives/126#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=xsi-6s-material-manager-up-close</link>
		<comments>http://www.softimageblog.com/archives/126#comments</comments>
		<pubDate>Sun, 10 Dec 2006 02:45:21 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=126</guid>
		<description><![CDATA[Let's take a look at XSI's new Material Manager.]]></description>
			<content:encoded><![CDATA[<p>XSI 4.0 introduced <strong>Material Libraries</strong>.</p>
<p>Material Libraries are not the list of material presets that Softimage ships with the software.  We call those Presets, and they are presently organized them into Shelves of type &#8220;Toolbar&#8221;.   (A shelf in XSI can contain a toolbar, a browser, or a Driven Shelf.)</p>
<p>Rather, Material Libraries are method for users to organize their own materials so they can reuse them, and maintain them centrally.  The first clients for this are in games, which is a very large segment of Softimage users.  In games, the material can be thought as an asset on its own that is distinct from the 3D objects. How many materials there are and how they are built has a significant impact, and the artist usually works with a defined set of guidelines.   This can be also true in other segments, but due to performance constraints, it has been critical in games to reuse and share materials as much as possible.  Materials could also need to be updated after the assets are have already begun using them.</p>
<p>Starting in XSI 4, when you applied a material to an object or a cluster, the material was first added as a source in the material library, and then added to the object as a secondary owner.  This allows one to have access to all the materials used in the scene from the library.  It also means that a material could now exist in scene without having been applied to an object or a group.</p>
<p>An XSI scene can use many material libraries, and the libraries can be &#8220;<strong>Referenced Libraries</strong>&#8221; which means that they are saved outside the scene, in a dotXSI file, and then modified externally without loading the scene.  In that case they are also locked, which prevents the user from modifying these referenced materials.</p>
<p>In XSI 4.2 we introduced a relational view <strong>Material Editor</strong>.  This view was created in collaboration with a large console game client in Japan, who eventually went on to develop an even more powerful, and a little hairy (imho!), version customized to their needs.  </p>
<p>This view really tries to &#8220;fake Shader Balls&#8221;, and there are some limitation with that you can do with relational view and VBScript, so the Material Editor view is usable, but clumsy and slow, and we did not actively promote this view&#8230;  In XSI 6.0 this view has moved to the SDK samples.  It has actually benifited a lot &#8220;for free&#8221; from the changes we made to the Driven Shelves, as all similar custom views will.</p>
<p><span id="more-126"></span><strong>But now in XSI 6 we have the slick new Material Manager.</strong></p>
<p><img src="/userContent/upload/MatManWhoUses2.jpg" alt="" align="right" hspace="10" vspace="5" /></p>
<p>The first thing the Material Manager does is show the materials in the scene organized by libraries.  In order to get this off the ground, we added Shader Balls to XSI, and gave a big boost to the views we called &#8220;<strong>Driven Shelves</strong>&#8220;.  These shelves, available since at least XSI 4.0, are views that show a list of icons for a given list of objects in the scene.  They are called &#8220;driven&#8221; because a script must drive their content, so they are only found in Relational Views like the old Material Editor and the examples in the XSI SDK for this feature.</p>
<p>In XSI 6.0 the Driven Shelves have been extended to automatically show a <strong>shader ball</strong> for objects that support them, and checkmarks and lock icon to indicate <strong>used, shared</strong>, and <strong>locked</strong> materials.  If the object has no user thumbnail assigned or a shader ball, the shelf now uses the same icon as Scene Explorer and the overall look has been enhanced.  </p>
<p>Object on a driven shelf now have the context menu from the Scene Explorer, drag and drop for multiple objects is now supported, and the selection workflow has been enhanced to be more like the views in Windows&#8217; explorer, including being able to <strong>type-in</strong> the first few letters of an object to select, and being able to <strong>rectangle select</strong> in empty areas.  A &#8220;<strong>list view</strong>&#8221; display mode has also been added, which shows the label to the left of the icon instead of underneath it.</p>
<p>In the screenshot for this article, you can see a shelf at the top with the material, and one at the bottom, in the new List View mode, which displays where this material is used in the scene.</p>
<p>The shelves in the Material Manager also have <strong>quick filter</strong> similar to iTunes, which allows you to type in a string and it filters the content of the shelf as you type.  This is a great way to quickly isolate materials or image clips by name, and you don&#8217;t have to use wildcards, although they are also supported.</p>
<p>The Material Manager was designed using large scenes, which were provided by game console clients, and we also looked at the custom solutions that the clients had created on their own using the Relational View services to see what were the problems they were trying to solve.   We also had a lot of feedback during development.</p>
<p>I worked on this project personally, looking to create an elegant and simple UI design, while giving access to all the power that was required, by expressing the problem through a set of simple verbs.  Basically, it&#8217;s about <strong>finding information quickly</strong> and making sense of a lot of data.</p>
<p>The view works from left-to-right, top-to-bottom.   (<em>should this be the reverse for our asian client?</em> :-D )</p>
<p>In the <strong>left pane</strong>, you have access to a <strong>Selection Explorer</strong> that shows you what you have selected in the scene, and what material it has.  We have added a <strong>new filter</strong> in the Scene Explorer that shows only objects, polygon clusters and their material, so you can quickly see materials at-a-glance without all the other nodes being in the way. With a click, or a drag and drop, you can assign a new material to part, or all, of that selection.   You will select objects in the 3D viewports or any other means that seems appropriate.</p>
<p>The Selection Explorer can show &#8220;Local Materials&#8221; or &#8220;Inherited Materials&#8221;.  These filters are also available in the full Scene Explorer.</p>
<p>The left pane also has the <strong>Image Clip Shelf</strong>, with thumbnails, can show All Image Clips, or only the ones that are Used, or <strong>Unused Image Clips</strong> in the scene.    Those filters can be used to quickly find and delete all unused image clips.</p>
<p>The Image Clip Shelf is useful on its own but also can be used to drag-and-drop into to the Render Tree, or even the Image Clip viewer.  The image clip shelf also features thumbnail size settings, list view mode, and again the iTunes-like filter to quickly find what you need.</p>
<p>You can quickly <strong>create a batch of image clips</strong> by drag and dropping images onto that shelf, or right into the 3D viewports.  (In previous versions, drag and dropping images into the viewport only created image sources, which would require another step to create an image clip.)  The Image Clip shelf will immediately show thumbnails for those new images.</p>
<p>At the top of the right side is the <strong>Material Shelf</strong>, which can show either &#8220;All Materials&#8221;, &#8220;Used Materials&#8221;, &#8220;Unused Materials&#8221; or show only the libraries and materials that are highlighted, for example by using the Highlight From Selection button, or when you select an object from the Scene Explorer.  </p>
<p>You can drag and drop shader balls to <strong>move materials</strong> between libraries.  Select one material and use the <strong>Render Tree</strong> or <strong>Texture Layer Editor</strong> below to edit the material.    There are buttons to <strong>duplicate</strong>, delete, highlight from selection, <strong>assign to selection</strong>, and launch an eyedropper tool in the viewport that can be used to highlight cluster materials on a selected model by moving the mouse on top of them.</p>
<p>Select one or many Materials in the shelf and the <strong>Image Clip tab</strong> will show all the clips used, and the &#8220;<strong>Who Uses</strong>&#8221; tab shows all the objects that use this or these materials.    The Who Uses tab understands groups, passes and partitions and will show them as the correct users and not, for example, all the objects inside that group.   It&#8217;s immediately obvious why driven shelves need to use the same font and icons as the Scene Explorer, and we hope in the future to have more graphical query tools like this.</p>
<p>If you click an object in either of these two tabs, it is selected in the scene so you could delete or group them,  for example.</p>
<p>I have no doubt that, in time, users will find all the cool workflow tricks that this view is capable of.  As scenes are getting bigger and more complex, we are working at creating cool &#038; slick new tools to get to your data faster without having to call on the local scripting guru for a custom solution.  The Material Manager is only the first step.</p>
<p>Enjoy,<br />
Luc-Eric<br />
Senior Principal Engineer/Team Lead<br />
Softimage User Interface</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=126&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/126/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>XSI User Preferences</title>
		<link>http://www.softimageblog.com/archives/121#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=darn-dirty-prefs</link>
		<comments>http://www.softimageblog.com/archives/121#comments</comments>
		<pubDate>Mon, 27 Nov 2006 19:26:53 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=121</guid>
		<description><![CDATA[Figuring out which user preference you have modified in XSI is much easier since the last few releases.
First and foremost, only the user preferences that are different from the factory defaults are saved.  This was partly done to allow overriding a user preference with a workgroup user preference file.
They are saved in your user [...]]]></description>
			<content:encoded><![CDATA[<p>Figuring out which user preference you have modified in XSI is much easier since the last few releases.</p>
<p>First and foremost, only the user preferences that are different from the factory defaults are saved.  This was partly done to allow overriding a user preference with a workgroup user preference file.</p>
<p>They are saved in your user account, which for historical reason is in c:\users in Windows, in a file called <em>default.xsipref</em>.  This is an ASCII file you can open and edit in Notepad.</p>
<p>One window that&#8217;s often overlooked is the grid control that is displayed when you open the User Preference window.   You can sort by columns;  if you click twice on the last column, all the user preferences you have modified will be grouped at the top.</p>
<p>One trick that very few people know about is that you can right-click on a user preference family and choose &#8220;Restore Default&#8221; to reset that group to the factory defaults.</p>
<p>This is a real life-saver if you have been playing around with the Scene Colors and now you don&#8217;t know how to put it back.    Resetting them this way will only change back the Scene Colors and will not change anything else.</p>
<p>Pretty much everything that is remembered from session to session is saved in that user preference file.  One exception are the settings for the file browser dialog.  These settings are saved in a binary file in your user account called &#8220;DSModalBrowser&#8221; and include the size and position on screen of the file browser and  list view or thumbnail mode setting (but not the thumbnails themselves).</p>
<p>If you switch between a dual monitor and single monitor and the file dialog is offscreen, or the file browser crashes in thumbnail mode, simply delete this &#8220;DSModalBrowser&#8221; file to reset it to the default settings.</p>
<p><img src="/userContent/upload/userpref2.gif" alt="" hspace="10" vspace="5" /></p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=121&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/121/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Custom Object Model</title>
		<link>http://www.softimageblog.com/archives/117#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=custom-object-model</link>
		<comments>http://www.softimageblog.com/archives/117#comments</comments>
		<pubDate>Tue, 10 Oct 2006 00:18:24 +0000</pubDate>
		<dc:creator>Bernard Lebel</dc:creator>
				<category><![CDATA[Programming / Scripting]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=117</guid>
		<description><![CDATA[This article discusses some aspects of object model programming and also serves as a tutorial to design your own code to look and behave like the XSI Object Model. I will talk about Python, classic classes, operator overloading, and code design. I will re-implement at a part of the XSI Object Model in Python.]]></description>
			<content:encoded><![CDATA[<p><strong>ABSTRACT</strong></p>
<p>This article discusses some aspects of object model programming and also serves as a tutorial to design your own code to look and behave like the XSI Object Model. I will talk about Python, classic classes, operator overloading, and code design. I will re-implement at a part of the XSI Object Model in Python.</p>
<p><strong>INTRODUCTION</strong></p>
<p>For some time I wondered how exactly is the XSI Object Model working under the hood. More precisely, I was not interested in the details of the C++ implementation, but rather how I could design my own code and data structures in Python so I could &#8220;navigate&#8221; these data structures the same way I navigate the XSI OM. For example, I wanted the ability to do the same thing as <code>Object.Properties("Property Name").Parameters("Parameter Name").Value</code>, but with my own data structures instead of XSI&#8217;s.</p>
<p><span id="more-117"></span>The only problem is that I didn&#8217;t really have a need for this, it was merely curiosity. I was thinking &#8220;maybe some day&#8230;&#8221;. But recently, while working on a rather large scripting project, I ran into a wall. I felt that it could be the right time to experiment with the idea. I have this library of scripts that use a significant amount of constants from the same file. Over time, that file had become a huge mess: highly fragmented, disorganized, very long. Thus, hard to maintain. Beyond a major overhaul, I wanted to hide all the data (many lists and dictionaries) and have a really simple, clear and clean way to access it.</p>
<p>After a bit experimentation, I have found some ways to accomplish this, which I shall present in this article. Keep in mind this is by no mean an exhaustive study, I don&#8217;t intend to present the guide to replicate all the features and behaviors of the XSI Object Model.</p>
<p><strong>WHY PROGRAMMING OBJECT MODEL</strong></p>
<p>The decision to implement the object model in my code is entirely personal. In my experimentation, my goals were simplicity, clarity and readability, nothing else. These goals were driven by a need to organize and sanitize a part of my script libraries. As of this writing I have not made any measurement of memory and resource usage as well as performance.</p>
<p><strong>1. DISCUSSION: DATA VS INTERFACE</strong></p>
<p>Very early in the experimentation process I realized that the XSI Object Model is in fact only a user-friendly programming interface. However, I started with the assumption that the XSI scene and the data it holds was some sort of giant data structure that was organized exactly as the Object Model hierarchy.</p>
<p>If you look at some old XSI SDK documentation (like in XSI 3.5), the object model hierarchy is presented with diagrams made of red blocks. From such diagrams, one could be led to believe that each object, each part of that hierarchy, is actually holding fractions of the data of the scene. Also, the fact that the Object Model closely resembles how the scene data is structured in the Explorer view can only strengthen this belief.</p>
<p>It turned out that the exact structure of the data, when navigated through the Object Model, is highly irrelevant for the user. It could be arrays, dictionaries/hash tables, strings, classes and instances, whatever. The only thing that matters is to have structured data, and preferably consistently structured. From that point, one can build an object model interface to read and write this data.</p>
<p>But this is the XSI Object Model. In the XSI SDK, the &#8220;raw&#8221; data structures are hidden from the user. From scripting, you either use commands or the Object Model to work with it. But now I&#8217;m creating my own Object Model, with the data structures behind it, and I decide how the two work together.</p>
<p>In fact, designing the data structures would be the first thing to do. I see two main designs for data structures:</p>
<p><strong>Data as member of classes</strong><br />
This design is one of the principles of object-oriented programming. Data and operations are both members of the classes they relate to. Methods that read or write the class data don&#8217;t need to lookup other name spaces than their own local scope. Each class has its own predefined data. We can talk of an homogeneous design.</p>
<p><strong>Separate data</strong><br />
This design goes against the previous one. Here, the data-structures are kept completely separate from the classes. The programmer defines &#8220;rules&#8221; for the class and its methods so that they read and write data at the right location. We can talk of an heterogeneous design.</p>
<p>In the project I have worked on and will discuss later, I chose the second design rather than the first one. The reason is that I wanted all the data to be consolidated in one place (the top of the file). Because it is not scattered across many classes and without any class decorations, I can look at it quickly. It also allows classes to be kept compact, which enables me to look at these quickly. In this particular case, I find this design clearer and easier to maintain.</p>
<p>So how are the data structures designed exactly? Are they lists, tuples, dictionaries, or else? In my case, I used a combination of lists and dictionaries. In fact, for every dictionary there is a list. Dictionaries hold the values, and lists are there to sort the dictionaries (in Python, unfortunately, a dictionary cannot be arbitrarily sorted).</p>
<p>Now that I have talked about the data structures, let&#8217;s talk about the interface.</p>
<p>Since the data is completely separate from the interface (the classes), and that this data is exposed through dictionaries and lists, why bother at all with making an interface? Isn&#8217;t using &#8220;traditional&#8221; means of reading dictionaries and lists sufficient?</p>
<p>Indeed, using typical dictionary lookups and list indexing is perfectly acceptable:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> dGRANULES<span style="color: black;">&#91;</span><span style="color: #483d8b;">'vertexcolor'</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'clusterchannels'</span><span style="color: black;">&#93;</span></pre></td></tr></table></div>

<p>or, through iteration:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">for</span> sGranuleType <span style="color: #ff7700;font-weight:bold;">in</span> dGRANULES:
    <span style="color: #ff7700;font-weight:bold;">print</span> sGranuleType
    <span style="color: #ff7700;font-weight:bold;">for</span> sClusterPropChannel <span style="color: #ff7700;font-weight:bold;">in</span> dGRANULES<span style="color: black;">&#91;</span>sGranuleType<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'clusterchannels'</span><span style="color: black;">&#93;</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> sClusterPropChannel</pre></td></tr></table></div>

<p>There is nothing wrong this this. However it may become convoluted with deeply nested dictionaries and lists. For example, one of my classes has this somewhat deep data structure that causes the code using using it to look like this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #008000;">self</span>.<span style="color: black;">dClusterProperties</span><span style="color: black;">&#91;</span>sPropertyType<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>oObject.<span style="color: black;">fullname</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: black;">add</span><span style="color: black;">&#40;</span>oProperty<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>At this point, readability and clarity are starting to take a hit. Such a line of code is subject to misinterpretation. In other words, scripting errors, even for me. The data structure must be strongly documented (a data graph is hardly avoidable), and the coder can spend considerable time reading that graph. Such a graph might look like this:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #483d8b;">&quot;&quot;&quot;
dictionary
    { cluster type (string) :
        property-file map (dictionary) {
            parent3dobject.fullname (string) : [
                XSICollection( cluster props ),
                asset internal ID
            ]
            parent3dobject.fullname (string) : [
                XSICollection( cluster props ),
                asset internal ID
            ]
            ...
        }
    }
&quot;&quot;&quot;</span></pre></td></tr></table></div>

<p>(I don&#8217;t recommend using such documentation ethics, this is just the kind of doc string I put in my code to help me program fairly any deep/complex data structures)</p>
<p>Also, maintaining scripts that access that kind of deep data structure with traditional means can prove problematic if the data structure design is modified.</p>
<p>Ideally, getting back to the first example, something like this could be preferable:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">print</span> data.<span style="color: black;">granules</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'vertexcolor'</span><span style="color: black;">&#41;</span>.<span style="color: black;">clusterchannels</span></pre></td></tr></table></div>

<p>or, through iteration:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">for</span> oGranule <span style="color: #ff7700;font-weight:bold;">in</span> data.<span style="color: black;">granules</span>:
    <span style="color: #ff7700;font-weight:bold;">for</span> sClusterPropChannel <span style="color: #ff7700;font-weight:bold;">in</span> oGranule.<span style="color: black;">clusterchannels</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> sClusterPropChannel</pre></td></tr></table></div>

<p>Not especially shorter, but a lot clearer. Such style may prove useful in the context of deep data structures, as in the second example:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #008000;">self</span>.<span style="color: black;">clusterproperties</span><span style="color: black;">&#40;</span>sPropertyType<span style="color: black;">&#41;</span>.<span style="color: black;">objectnames</span><span style="color: black;">&#40;</span>oObject.<span style="color: black;">fullname</span><span style="color: black;">&#41;</span>.<span style="color: black;">properties</span>.<span style="color: black;">add</span><span style="color: black;">&#40;</span>oProperty<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Again, not significantly shorter, but a lot easier to read, understand, and maintain. The big advantage is that while the programmer makes modifications to the underlying data structures, the top-level interface can hide those changes. Of course it&#8217;s not always as easy as it sound, but it least it gives the programmer more chances.</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=117&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/117/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing a Phenomenon for Softimage XSI and Mental Ray</title>
		<link>http://www.softimageblog.com/archives/105#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=writing-a-phenomenon-for-softimage-xsi-and-mental-ray</link>
		<comments>http://www.softimageblog.com/archives/105#comments</comments>
		<pubDate>Sun, 02 Jul 2006 13:00:38 +0000</pubDate>
		<dc:creator>Stefano Jannuzzo</dc:creator>
				<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Programming / Scripting]]></category>
		<category><![CDATA[Rendering]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=105</guid>
		<description><![CDATA[Have you ever used Apple&#8217;s Shake? Have you ever built macros with Shake? Have you ever wished you could create macros in XSI&#8217;s Render Tree?
Well you can, these are called Phenomenon. A Phenomenon is group of shaders exposed to the users as a single entity. You can hide or show, as you see fit, any [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever used Apple&#8217;s Shake? Have you ever built macros with Shake? Have you ever wished you could create macros in XSI&#8217;s Render Tree?</p>
<p>Well you can, these are called Phenomenon. A Phenomenon is group of shaders exposed to the users as a single entity. You can hide or show, as you see fit, any parameter of the enclosed shaders making a Phenomenon a very powerful tool for sharing shader recipes or building tools for larger productions.</p>
<p>The advantages are:</p>
<ol>
<li>Have a more compact and readable rendertree.</li>
<li>Allow for only a set of significant parameters to be tuned by the artist.</li>
</ol>
<p>Let&#8217;s see how it is possible to make up a phenomenon starting from a basic rendertree.</p>
<p><span id="more-105"></span><strong>The Goal</strong></p>
<p>The following network returns red if the x coordinate of the point is lower than 1, blue elsewhere. The picture should be quite self-explanatory:</p>
<p><a href="/userContent/sjannuzzo/phenomenon/Pheno0.jpg"><img src="/userContent/sjannuzzo/phenomenon/Pheno0.jpg" alt="Initial Shader Tree" width="610" /></a></p>
<p>In this case study we want to make a new node enclosing the four primary shaders of the tree, and exposing only three parameters: the two colors and the &#8220;threshold&#8221; value.</p>
<p><strong>Creating Our SPDL</strong></p>
<p>We need to create a spdl file, which will be later registered.</p>
<p>For those who want a bit of a primer, a SPDL file is a file that defines how XSI will display a certain PPG or Shader. Check the <a href="http://softimage.wiki.avid.com/index.php/SPDL">wiki page on SPDL</a> for more info.</p>
<p>The first part of the file contains a header and the declaration of the parameters we want to expose. All the guids must be <a href="/archives/104">randomly generated</a>, except the one identifing the output (color) parameter.</p>
<p><!-- google_ad_section_start(weight=ignore) --></p>
<pre>SPDL
Version = "2.0.0.0";
Reference = "{19671971-1008-0000-8410-6A45FDB990DD}";
PropertySet "PhenoTest_params"
{
    Parameter "out" output
    {
        title = "PhenoTest";
        guid = "{4C6879FF-7EC8-11D0-8E3B-00A0C90640EC}";
        type = color;
    }
    Parameter "threshold" input
    {
        guid  = "{19671971-1008-0002-8410-6A45FDB990DD}";
        type  = scalar;
        value = 1.0;
        texturable = on;
    }
    Parameter "color1" input
    {
        guid = "{19671971-1010-0001-8410-6A45FDB990DD}";
        type = color;
        value = 1.0 0.0 0.0 1.0;
        texturable = on;
    }
    Parameter "color2" input
    {
        guid = "{19671971-1011-0001-8410-6A45FDB990DD}";
        type = color;
        value = 0.0 0.0 1.0 1.0;
        texturable = on;
    }
}</pre>
<p><!-- google_ad_section_end --></p>
<p>The bottom part is also quite standard. It just defines the parameter&#8217;s defaults and their position in the layout.</p>
<p><!-- google_ad_section_start(weight=ignore) --></p>
<pre>BEGIN "{24810490-56FF-11d2-BF23-00A0C982CE5D}"

Defaults
{
    threshold
    {
        Name = "Threshold";
        UIRange = -10.0 to 10.0 by 0.01;
    }
    color1
    {
        Name = "Color 1";
        UIType = "rgba",4;
        Commands = "{F5C75F11-2F05-11d3-AA95-00AA0068D2C0}";
    }
    color2
    {
        Name = "Color 2";
        UIType = "rgba",4;
        Commands = "{F5C75F11-2F05-11d3-AA95-00AA0068D2C0}";
    }
}

Layout "Default"
{
    Name;
    threshold;
    color1;
    color2;
}

Logic
{
}
END</pre>
<p><!-- google_ad_section_end --></p>
<p>What interests us is the middle section, where you hardcode the connections between shaders. This is, in essence, the part of the SPDL where you create your mini Render Tree.</p>
<p><!-- google_ad_section_start(weight=ignore) --></p>
<pre>MetaShader "PhenoTest_declare"
{
    Name = "PhenoTest";
    Type = texture;
    Renderer "mental ray"
    {
        Name = "PhenoTest";

        BeginText

        Node "vector_state"      = guid "{BDE291C7-077A-11D2-8A1A-00A0C9892542}";
        Node "vector_2_scalar"   = guid "{A4F08C3F-AA3A-11D2-AFD4-00A024191B9D}";
        Node "scalar_math_logic" = guid "{4D9E6800-AC2F-11D3-AE56-00A0C96E63E1}";
        Node "boolean_switch"    = guid "{85C16046-BCFA-11D1-90E9-0000F804EB21}";

        Connection "vector_state::mode"	    = value 2;

        Connection "vector_2_scalar::input"     = "vector_state";
        Connection "vector_2_scalar::component" = value 0;

        Connection "scalar_math_logic::input1"  = "vector_2_scalar";
        Connection "scalar_math_logic::input2"  = interface "threshold";
        Connection "scalar_math_logic::op"      = value 2;

        Connection "boolean_switch::input1"     = interface "color1";
        Connection "boolean_switch::input2"     = interface "color2";
        Connection "boolean_switch::switch"     = "scalar_math_logic";

        Connection root                         = "boolean_switch";

        EndText
    }
}</pre>
<p><!-- google_ad_section_end --></p>
<p>Aching for more details? Read on&#8230;</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=105&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/105/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Softimage .pic Codec for QuickTime</title>
		<link>http://www.softimageblog.com/archives/101#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=softimage-pic-codec-for-quicktime</link>
		<comments>http://www.softimageblog.com/archives/101#comments</comments>
		<pubDate>Tue, 20 Jun 2006 21:05:08 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=101</guid>
		<description><![CDATA[Updated November 2009 for Quicktime 7 and Vista 64-bit
I have written a codec which allows QuickTime to read .pic files.
A few people have manually associated .pic files with the XSI flipbook or another viewer, but most people have them associated with the QuickTime Picture Viewer by default.
Installing this will not change your current file associations, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Updated November 2009 for Quicktime 7 and Vista 64-bit</strong></p>
<p>I have written a codec which allows QuickTime to read .pic files.</p>
<p>A few people have manually associated .pic files with the XSI flipbook or another viewer, but most people have them associated with the QuickTime Picture Viewer by default.</p>
<p>Installing this will not change your current file associations, but will allow the Picture Viewer to view .pic files when you double-click them instead of being greeted with an &#8221;Unknown Format&#8221; error, caused by QuickTime thinking these are Apple PICT file.<br />
It&#8217;s not necessary to have Softimage installed on the machine, this is completely self-contained</p>
<p><strong>Content of the Package</strong></p>
<ul>
<li>SoftimagePic.qtr</li>
<li>SoftimagePic.qtx</li>
<li>QuicktimeTestPic.pic</li>
<li>Install.bat</li>
</ul>
<p>Double-click Install.bat, which will copy the three other files to %ProgramFiles%\QuickTime\QTComponent, and will launch the Picture Viewer on QuicktimeTestPic.pic to verify the installation.<br />
On Windows Vista and up with UAC, don&#8217;t forget to use <strong>Run As Administrator</strong> for the batch file, otherwise it won&#8217;t be able to copy the files.</p>
<p>I am not aware of any installation problem, but if somehow QuickTime isn&#8217;t finding the codec try to log out and back on to restart it.</p>
<p>Batch file hackers might be interested in seeing how I got the batch file to work from UNC drives, which isn&#8217;t supported by cmd.exe, or testing if the command prompt is 32-bit or 64-bit.</p>
<p><a title="SoftimagePicCodecWIN1_2.zip" href="/userContent/upload/2009/11/softimagepiccodecwin1_2.zip">SoftimagePicCodecWIN1_2.zip (69k)</a></p>
<p><strong>Preliminary OS X Version</strong></p>
<p>Here is a Universal Binary port of this codec for OS X 10.4 (Tiger).</p>
<p>It will allow the QuickTime Player and other QuickTime-enabled apps to load Softimage .pic files. Unfortunately, this will not work in Preview or Finder previews as they by-pass QuickTime for .pic files and use an undocumented Core Image image mechanism instead. It is best to re-associate .pic files with the QuickTime player instead of Preview to allow easy double-click viewing of images. Please read the instructions contained in the installer.</p>
<p>The file contains a disk image with an installer which simply copies the component to /Library/QuickTime. A restart of the system is necessary at this time for the component to be detected.</p>
<p><a href="http://pages.infinit.net/lucer/SoftimagePicOSX.zip">SoftimagePicOSX.zip (128k)</a></p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=101&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/101/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Keys on the Timeline can be Manipulated&#8230;</title>
		<link>http://www.softimageblog.com/archives/87#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=keys-on-the-timeline-can-be-manipulated</link>
		<comments>http://www.softimageblog.com/archives/87#comments</comments>
		<pubDate>Tue, 21 Feb 2006 19:35:39 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=87</guid>
		<description><![CDATA[Something funny&#8217;&#8217;s come up since XSI 5.0.   It seems a good part of users  do not know that the key bars that apear on the timeline when you start animating can be manipulated.   This could be for example users who are not familiar with Maya and therefore not expecting to [...]]]></description>
			<content:encoded><![CDATA[<p>Something funny&#8217;&#8217;s come up since XSI 5.0.   It seems a good part of users  do not know that the key bars that apear on the timeline when you start animating can be manipulated.   This could be for example users who are not familiar with Maya and therefore not expecting to be able to move these keys.  Just in case this can help a few people, here&#8217;&#8217;s how it works:</p>
<ol>
<li> Shift+Click and drag to create a region around the keys on the timeline </li>
<li>Shift+Double Click to select a single frame</li>
<li>Hold Middle mouse button and drag that region to move keys</li>
<li>Ctrl+Drag on that region to copy keys </li>
<li>Middle Click on the extremities of the region to scale keys</li>
<li>There are some more timeline options in the right mouse click menu</li>
<li>You can view an audio wave in the timeline if you have an audio clip in the scene.</li>
</ol>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=87&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/87/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>UI : Which XSI is your XSI &#8211; and is it the right one?</title>
		<link>http://www.softimageblog.com/archives/86#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ui-which-xsi-is-your-xsi-and-is-it-the-right-one</link>
		<comments>http://www.softimageblog.com/archives/86#comments</comments>
		<pubDate>Tue, 21 Feb 2006 04:29:47 +0000</pubDate>
		<dc:creator>Luc-Eric</dc:creator>
				<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.xsi-blog.com/?p=86</guid>
		<description><![CDATA[In XSI 5.0 we did something new by introducing a new interaction model.  If you launch Modo or Motion Builder, one of the first things you get to choose is the interaction model.  In the case of Motion Builder, it&#8217;&#8217;s a choice between Motion Builder, 3DS Max, Maya or XSI keymaps.  In [...]]]></description>
			<content:encoded><![CDATA[<p>In XSI 5.0 we did something new by introducing a new interaction model.  If you launch Modo or Motion Builder, one of the first things you get to choose is the interaction model.  In the case of Motion Builder, it&#8217;&#8217;s a choice between Motion Builder, 3DS Max, Maya or XSI keymaps.  In XSI 5.0, you get to choose between variations of Softimage, and a &#8216;QWERTY&#8217; keymap, which we all understand to be Maya.  <strong>Is this a new era of software developers admitting defeat?</strong><br />
<span id="more-86"></span><br />
Let&#8217;s delay the answer to that question for now and look at a less interesting one first.</p>
<p>In a recent XSI 5.0 introductory book, I&#8217;ve read something that goes like this: &#8216;Users of &#8216;the other program&#8217; may turn on an option called &#8216;Transform Manipulators&#8217; in the MCP['.]&#8216;.  That comment raises an interesting question&#8217;  The question is, who are the users coming to XSI and where did they come from?  The book had noted that manipulators are &#8217;slightly miss-named&#8217; because they&#8217;re visual indicators and aren&#8217;t really used to manipulate (which is true only if they&#8217;re turned off).  It is also recommended to turn off sticky keys, setting Nil Tool as the default tool, and Softimage|3D Selection model.</p>
<p>These suggestions are ok, but these are the settings used for people coming from Softimage|3D, and they are not the default and recommended options in XSI.  Which leads to another question: What exactly do the people who make XSI want to you to use, and how is the application actually tested and designed?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>First thing, everyone who uses software gets used to them and do not want to change unless they absolutely have to.  For software developers, you&#8217;ll have people who still use Emacs or vi even when there are better editors out there.  But the vast majority of people do move on as the tools move on, and it isn&#8217;t clear that one is actually more productive than the other. It all seems to be about muscle memory and personal habits.</p>
<p>In the world of 3D it&#8217;s in my opinion a little worse.  The main reason is that the main tasks have been completely different between applications.  In a text editor, once you start typing text everything is the same as in every other applications; it&#8217;s the auxiliary tasks that change, like searching, copy/pasting, saving files, those that take a small percentage of the time.  The major tasks seem to be different between 3D applications.</p>
<p>However, the language isn&#8217;t actually that much different between 3D applications as it first appears.  The application that sticks like a sore thumb, here, is Softimage|3D.  Softimage 3D is the only application that you&#8217;ll likely encounter on your computer where you need to hold down space bar and click to select something.  Why that is, and what were the benefits to that, the original designers are not here to tell us.  It might have simply been easy to program &#8216; that&#8217;s the reason behind too many user interface items people have gotten use to.  (Seriously, at least the &#8220;edlin.exe&#8221; guy can&#8221;t have had a good reason.)</p>
<p>I remember years ago before Avid acquired Softimage, we were looking at Media Composer and couldn&#8217;t understand why you couldn&#8217;t click a clip on the timeline and drag it to another location.  That&#8217;s just the way it was, and some users were freaked out that you could &#8216;mistakenly&#8217; move clips on the DS timeline with your mouse.  That&#8217;s just the way these people were trained.</p>
<p>Now, when we designed Sumatra/XSI we designed it looking at the present and future, not backward.  It was blissfully obvious then as it is now that anything you see on-screen, you should be able to click and move it.</p>
<p>When you introduce a backward muscle-memory patch such as the &#8216;nil tool&#8217;, i.e. a tool that does nothing when you click in the 3D view port, you&#8217;re satisfying an immediate transition need at the expense of the global interaction flow of the application, and the experience for users without that muscle memory.</p>
<p>One thing to keep in mind that in Softimage|3D, EVERYTHING required you to hold down a key and EVERYTHING worked the same.  In the function curve editor, for example, you needed to hold down M to move keys.  You couldn&#8217;t just click and move a key.  Everything was very consistent.</p>
<p>XSI however, was designed with modern user interface elements and concepts.  This includes standard controls like edit boxes, list views, the tree view in the Scene Explorer. Most of the muscle memory from Softimage|3D are incompatible with modern applications controls, however this does not bother old time users because they are used to dealing with inconsistent  interactions as they switch between applications.  New users should not be subjected to this.</p>
<p>Maya was also designed as a modern application, Alias have had a strong user interface design group and Max of course has been designed as a true Windows app (after years of dreadful DOS user interface).</p>
<p>The question at the top was: are developers admitting defeat when we are offering keymaps for users by other applications.  The answer is:  <strong>No.  3D applications are converging toward the same workflows  and manipulations.</strong>  These basic tasks isn&#8221;t where XSI will shine, it&#8217;&#8217;s in the more advanced stuff that it will.</p>
<p>We don&#8217;t really care if you use &#8216;S&#8217; or &#8216;ALT&#8217; to navigate your camera, or &#8216;W&#8217; or &#8216;V&#8217; to activate transforms, it ends up being the same.  Past that, into the actual organization of the software, we do not intend to imitate other applications, because we believe that our organization does provide significant benefit, and it&#8217;&#8217;s our identify.  Using the Z key over ALT, however, we don&#8217;t really care.  The only issue is that the tutorials are harder to follow.</p>
<p>All applications are converging.  However, Softimage 3D is quite a bit outside that convergence line, so if you&#8217;re using the compatibility switches we put in, you&#8217;re not really using the XSI we are building.  The best thing you can do is use it with the default, and tell us what are the problems with these tools.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Manipulators are interesting issues on their own.  XSI does not have manipulators to please Maya or Max users; it has them because we strongly believe that this is the future of human interface.  It was in the Sumatra/XSI plans from day zero.</p>
<p>They have been around for about 15 years now, first in research and now all applications use them at one level or another. We&#8217;re designing our application around manipulators and are an active part of the collective research the industry is doing about them.  Each application brings the concept and workflow a little further.</p>
<p>On the other hand, the Softimage 3D interaction has nowhere to go, and nowhere to grow.  It&#8217;s based on having 3 mouse buttons, with one button for each axis, plus a series of settings on a separate panel to control its various settings.  It&#8217;s a done deal.</p>
<p>Our philosophy about manipulators is simple and the same as other tools.  If they don&#8217;t do the job in some cases then we need to fix them, not hide them.  In the future we will likely be more aggressive about this.</p>
<p>If for every new user interface element we add to XSI, we have a switch to revert it back to the way the application was in 1995, then XSI will never go forward.   Some great feedback we get now days are from people who have given up on Softimage, or have always been with another application, and are coming to us with a fresh look at what we are doing.  They&#8217;ll ask, why is this? For example, why can&#8217;t you select keys directly in the DopeSheet?  Sometime we must say, it&#8217;s because it was that way in Softimage|3D.   It doesn&#8221;t necessarily bother the old timers.</p>
<p>Already in XSI 5.0, we made a very bold move.  We changed the default Move Point tool!  The M key, which has worked the same since 1994, was changed into the Tweak tool.  We&#8217;ve also unitified the &#8216;S&#8217; key for navigation in the various views.  Sometime this broke an habit, but we think the trouble is worth finally having consistency; it&#8217;&#8217;s for the greater good.</p>
<p>So does that mean that XSI will be abandoning its legacy?  No.  The Softimage 3D keys and workflows in XSI that are there &#8216; there are already serious holes if you expect the app to work like Softimage|3D &#8216; will continue to work, but fewer and fewer people are going to care about them.</p>
<p>It will happen naturally; the goal is not to remove tools, but rather to offer something that is worth dropping the old habits.  For example, the Tweak Tool is worth it.  And manipulators?  Well, supporting not using manipulators for the basic S, R, T is trivial, and we will never remove this ability.  However, we do want to create more and better manipulators and make users switch to them because they are worth the trouble of changing the habit.  Obviously we need to continue to work with users for this.</p>
<p>Already, most of Softimage|3D is gone, only some broken memories remain.  In the first year of XSI, people complained that we were using Windows menu and they were not like the ones in Softimage|3D.  Recently, people have complained that we do not use exactly the standard Windows menus&#8217;  time change.</p>
<p>In future releases, in addition to doing the obvious and looking at new things, we will also continue to move forward in traditionnal tool areas like the Dopesheet, the Schematic, and more.</p>
<p>We are not going to stand still.  Some applications may need a total rewrite to move forward, but we&#8217;ve built XSI to move be able to grow for many years to come.</p>
<img src="http://www.softimageblog.com/?ak_action=api_record_view&id=86&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.softimageblog.com/archives/86/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
