<?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>duber's blog &#187; 3ds Max</title>
	<atom:link href="http://blog.duber.cz/category/3ds-max/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.duber.cz</link>
	<description>the official duber studio™ blog</description>
	<lastBuildDate>Thu, 22 Jul 2010 15:53:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Deadline, the render manager of choice.</title>
		<link>http://blog.duber.cz/3ds-max/deadline-the-render-manager-of-choice</link>
		<comments>http://blog.duber.cz/3ds-max/deadline-the-render-manager-of-choice#comments</comments>
		<pubDate>Sun, 28 Mar 2010 20:11:03 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[Advanced]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[deadline]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[render]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/?p=492</guid>
		<description><![CDATA[
I&#8217;ll elaborate on this topic some more later, but I thought I&#8217;d let you know that I&#8217;ve successfully deployed, configured and tested Prime Focus&#8217; Deadline&#174;, the render manager of choice for duber studio.  
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.duber.cz/wp-content/uploads/deadline_jobs.png" rel="lightbox[492]"><img src="http://blog.duber.cz/wp-content/uploads/deadline_jobs.thumbnail.png" alt="Deadline&reg; Render Manager" title="Deadline&reg; Render Manager" width="560" height="230" class="aligncenter size-thumbnail wp-image-493" /></a></p>
<p>I&#8217;ll elaborate on this topic some more later, but I thought I&#8217;d let you know that I&#8217;ve successfully deployed, configured and tested <a href="http://software.primefocusworld.com/software/products/deadline/overview/">Prime Focus&#8217; Deadline&reg;</a>, the render manager of choice for <a href="http://www.duber.cz">duber studio</a>. <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/deadline-the-render-manager-of-choice/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>duberPython features demonstration!</title>
		<link>http://blog.duber.cz/3ds-max/duberpython-features-demonstration</link>
		<comments>http://blog.duber.cz/3ds-max/duberpython-features-demonstration#comments</comments>
		<pubDate>Thu, 04 Mar 2010 15:16:28 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[maxscript]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/?p=457</guid>
		<description><![CDATA[
I&#8217;m trhilled to be able to finally showcase, at least, some of our very own Python implementation into 3ds Max!
First off, our primary reason for writing our own, proprietary, Python connection to 3ds Max is Tactic by Southpaw Technology. An awesome asset management system entirely written in Python that I decided to invest in and [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/duberpython_banner.png' alt='duberPython banner' /></p>
<p>I&#8217;m trhilled to be able to finally showcase, at least, some of our very own Python implementation into 3ds Max!</p>
<p>First off, our primary reason for writing our own, proprietary, Python connection to 3ds Max is <a href="http://southpawtech.com/tactic.html">Tactic by Southpaw Technology</a>. An awesome asset management system entirely written in Python that I decided to invest in and integrate our tools and software packages into. Another reason for this connection, later came up, was the need for writing much more complex scripts with complex GUIs, since, as you probably know, a few functional lines of code are hardly enough in a modern, efficient, VFX production of today. <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The heart of our Python integration is <a href="http://www.microsoft.com/NET/">dotNET from Microsoft</a>. I can&#8217;t express myself enough how much I appretiate this framework! The brain of our Python integration is <a href="http://www.ironpython.net/">IronPython</a>. Also a product from Microsoft, completely open source and free, which are two very important aspects for any pipeline tool in any production facility of any size. Not the price as much as the availability of the software. And with IronPython and Microsoft, I am certain that this piece of software will be around for years!</p>
<p><span id="more-457"></span></p>
<p>So, what have we done?</p>
<ul>
<li>We&#8217;ve developed a bridge that connects MAXScript and Python via dotNET.</li>
<li>The bridge converts most of native Python and MAXScript data types to and from one another.</li>
<li>We&#8217;ve implemented several, custom, methods in Python that allow us to directly communicate with 3ds Max via MAXScript.</li>
<li>We&#8217;ve also implemented error reporting so that when an error is thrown in Python, it&#8217;ll return the exception in MAXScript for debuging.</li>
<li>Everything is based on dotNET and written in C#.</li>
<li>The best part? Our Python bridge is completely platform and 3ds Max version independent!</li>
</ul>
<p>Let me talk about the custom Python methods first. We&#8217;ve incorporated a class called <strong>mxsCon</strong>, that stores several methods for direct communication with 3ds Max as well as a variable<br />
that stores passed arguments from MAXScript to Python for greater flexibility, especially when executing short code snippets.</p>
<p>The initial design meant to provide a way of directly running Python code from within MAXScript. However, with more complex tools needed nowdays, this proved to be insufficient and thus we&#8217;ve developed a way of executing more complex Python scripts written externally using IronPython. This works perfectly well if you plan on using 3ds Max&#8217;s interpreter and just want to pass values around MAXScript and Python. This is perfectly efficitent and enough for writing really complex tools based on Python. In our case, it&#8217;s the connection to Tactic.</p>
<p>However, later, it occured to me that since we have most of the hard work done, why not bring everything over to the Python side. Since Python is such a great and powerful language, why bother with MAXScript! So we developed another method for executing MAXScript code directly within Python scripts and have the result, evaluated in MAXScript, be passed back to Python. IronPython that is. Since all the value conversions had already been done, this proved to be an extremely powerful and efficient way of writing very complex tools, now even, with very complex GUIs. Since everything is based on dotNET, we can utilise IronPython and some of the IDEs available for super quick GUI development. I used <a href="http://www.icsharpcode.net/OpenSource/SD/">SharpDevelop</a>, an open source IDE for writing dotNET applications, for all my GUI and code stuff. Then I just hook up MAXScript commands that I pass Python values to in order to perform some actions in 3ds Max, like opening a file from our server stored in Tactic. Or, create objects and list them in a ListView. Or even write a direct 3ds Max &#8211; Maya translator! Why not? <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyways, here are the methods and their purpose in 3ds Max:</p>
<ul>
<li>Python.run( &#60;string&#62; ) &#8212; will execute a Python script wrapped in double quotes (effectively a string).</li>
</ul>
<p>Example:</p>
<pre>
Python.run
(
	"import sys
	mxsCon.setResult( sys.version )"
)
</pre>
<p></br><br />
In this case, Python.run() will return whatever the mxsCon.setResult() will pass to it (more on that later).</p>
<ul>
<li>Python.runFromFile( &#60;string&#62; ) [ args:#() ] &#8212; will execute a Python script stored in an external file and alternatively pass it custom arguments.</li>
</ul>
<p>Example:</p>
<pre>
Python.runFromFile @"C:\myPythonScript.py" args:#( 10., true, #(1,2,3), "some string" )
</pre>
<p></br><br />
In Python, you&#8217;ll have to catch the passed arguments in order to use them, however the conversion of the data types will be done automatically for you.</p>
<ul>
<li>Python.inspect( &#60;data type&#62; ) &#8212; this method will inspect what data type you passed to it and how it will convert it to Python.</li>
<li>Python.getError() &#8212; this method returns the last unhandled exception in Python code.</li>
<li>Python.setVerbosity( &#60;int&#62; ) &#8212; allows you to set the level of verbosity for error reporting.</li>
<li>Python.getVerbosity() &#8212; retreives the level of verbosity you currently use.</li>
<li>Python.resetPy() &#8212; a very useful method for resetting our bridge residing in memory in case you&#8217;ve changed something radical in the source code etc&#8230;</li>
</ul>
<p>And here are the custom methods developed in C# for IronPython use in the scripts. These only exist when run via our Pythoner.dll module. If you run the Python scripts without Pythoner, you&#8217;ll have to handle their lack of presence. I&#8217;ve done this via a custom class that I import in the scripts I use. This is extremely flexible since when I run the code outside of 3ds Max, I can still use its functionality without having to deal with error handlers all over the place.</p>
<ul>
<li>mxsCon.setResult( &#60;data&#62; ) # this method will return whatever it encapsulates directly to 3ds Max as well as in Python should you need to work with it later in the script.</li>
</ul>
<p>Example:</p>
<pre>
import math

def myFunc( arg ):
	sum = arg + 100.
	return mxsCon.setResult( [arg, sum] )

if __name__ == '&#60;module&#62;':
	myFunc( math.pi )
</pre>
<p></br><br />
The myFunc function will not only return a List of whatever you pass to it as well as the result of addition, but it&#8217;ll also pass this List directly to MAXScript for later use in 3ds Max.</p>
<ul>
<li>mxsCon.getResult() # this method will only return the last value stored in memory using the .setResult() method. Useful for later usage in Python.</li>
<li>mxsCon.convert( &#60;data&#62; ) # this method will convert the input data types from Python to MAXScript compatible data types, but will return then wrapped as a string. This<br />
may be useful for other usage reasons. I used it for debugging or printing values in Python in MAXScript format.</li>
<li>mxsCon.execute( &#60;data&#62; ) # here&#8217;s where the magic happens. This method is quite complex. It not only evaluates whatever is passed to it in a String format, but it&#8217;ll also wait for the result from MAXScript and return it within Python. Another, very cool, feature of this method is similar to String formatting capabilities known from Python.</li>
</ul>
<p>Some examples of the mxsCon.execute() method:</p>
<pre>
# assume here's a ton of complex Python code that invokes this method
returnedVal = mxsCon.execute( r'Box()' )
# will create a box in 3ds Max and return OK (converted to True) back to Python.

returnedVal = mxsCon.execute( r'getDir {0}', r'#scripts' )</pre>
<p>The .execute method will first evaluate its input into a single string,<br />
in this case: r&#8217;getDir #scripts&#8217;, in a similar fashion the .format method works in Python.<br />
Then it&#8217;ll execute the command in MAXScript and retun its output back to Python.<br />
The output, in this case, will be a string: &#8216;C:\Program Files\Autodesk\3ds Max 2009\scripts&#8217;</p>
<p><a href="http://blog.duber.cz/wp-content/gallery/vids/pythoner_demo/pythoner_demo.html"><img src="http://blog.duber.cz/wp-content/uploads/pythoner_sharpdevelop_demo.png" alt="duberPython Features Demo" title="duberPython Features Demo" width="560" height="350" class="aligncenter size-full wp-image-468" /></a></p>
<p>But, enought with the talk, see it for yourself in action in this short Windows.Forms demo. (clicking the image will take you to the video)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/duberpython-features-demonstration/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>A pretty thorough review of the 3DATS Advanced to Expert book</title>
		<link>http://blog.duber.cz/misc/a-pretty-thorough-review-of-the-3dats-advanced-to-expert-book</link>
		<comments>http://blog.duber.cz/misc/a-pretty-thorough-review-of-the-3dats-advanced-to-expert-book#comments</comments>
		<pubDate>Mon, 22 Feb 2010 18:47:48 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[miscellaneous]]></category>
		<category><![CDATA[opinions]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/?p=452</guid>
		<description><![CDATA[
If you still haven&#8217;t bought the book yet, DO IT NOW!  
Or at least, do it after you&#8217;ve read this thorough review of the book.
I can&#8217;t resist to quote what the reviewer is saying about my chapter, of which I&#8217;m quite proud, obviously.  
The advanced unwrapping chapter I found very useful as unwrapping [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.duber.cz/wp-content/uploads/3ds_max_2010_advanced_to_expert_banner1.jpg" rel="lightbox[452]"><img src="http://blog.duber.cz/wp-content/uploads/3ds_max_2010_advanced_to_expert_banner1.jpg" alt="3ds_max_2010_advanced_to_expert_banner" title="3ds_max_2010_advanced_to_expert_banner" width="560" height="202" class="alignnone size-full wp-image-453" /></a></p>
<p>If you still haven&#8217;t bought <a href="http://3dats.com/expert_book/">the book</a> yet, <a href="http://3dats.com/expert_book/">DO IT NOW</a>! <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Or at least, do it after you&#8217;ve read this thorough review of the book.</p>
<p>I can&#8217;t resist to quote what the reviewer is saying about my chapter, of which I&#8217;m quite proud, obviously. <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<blockquote><p>The advanced unwrapping chapter I found very useful as unwrapping is not my strongest skill in Max. By the way, none of the authors are shy about suggesting outside plugins and stand alone utilities if they think they will do the job better or at least faster than Max. In this Chapter 4 Lukas Dubeda suggested a small separate program for UV layouts that I downloaded to try myself. It does seem to be quite capable at getting the job done. The following sums up this section pretty well:</p>
<p>&#8230;</p>
<p>That “…just scratching the surface” seems to be the sentiment of many of the experts in this book. Believe me that they are all making some pretty deep scratches, providing us with an in-depth look at their chapter’s topic.</p></blockquote>
<p>Anyways, <a href="http://www.3dsny.com/mug_news/new_item020110_001.html">here&#8217;s the full review</a> for those still undecided.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/misc/a-pretty-thorough-review-of-the-3dats-advanced-to-expert-book/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3ds Max 2010, Advanced to Expert book &#8211; short review!</title>
		<link>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-short-review</link>
		<comments>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-short-review#comments</comments>
		<pubDate>Tue, 15 Dec 2009 18:37:55 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[miscellaneous]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[3das]]></category>
		<category><![CDATA[3dats]]></category>
		<category><![CDATA[3ds]]></category>
		<category><![CDATA[Advanced]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[evermotion]]></category>
		<category><![CDATA[evermotion.org]]></category>
		<category><![CDATA[expert]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[overview]]></category>
		<category><![CDATA[short]]></category>
		<category><![CDATA[to]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-short-overview</guid>
		<description><![CDATA[
Evermotion.org published a nice, short, overview of the 3ds Max 2010 Advanced To Expert book I participated in writing. Here&#8217;s what they have to say about my chapter:
The fourth chapter reveals us advanced techniques of unwrapping 3d models. We are taught how to handle both organic and non-organic objects using such features as multiple UVW [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/3ds_max_2010_advanced_to_expert_banner.jpg' alt='3ds_max_2010_advanced_to_expert_banner.jpg' /></p>
<p><a href="http://www.evermotion.org/tutorials/show/7948/-3ds-max-2010-architectural-visualization-advanced-to-expert-review">Evermotion.org</a> published a nice, short, overview of the <a href="http://3dats.com/expert_book/">3ds Max 2010 Advanced To Expert book</a> I participated in writing. Here&#8217;s what they have to say about my chapter:</p>
<blockquote><p>The fourth chapter reveals us advanced techniques of unwrapping 3d models. We are taught how to handle both organic and non-organic objects using such features as multiple UVW spaces and pelt mapping. Keeping in mind the fact that 3ds Max does not provide us with powerful enough unwrapping tools, the author introduces us other interesting solutions &#8211; UVLayout, Unwrella and other, less known programs and plug-ins. Moreover we are instructed how to generate normal maps inside 3ds Max 2010 using texture baking. Again .max files from the CD become more than useful.</p></blockquote>
<p>Definitely <a href="http://3dats.com/expert_book/">go check the book out</a>, it&#8217;s really a brilliant piece of work put together by top-class artists in the field and as such will be an invaluable asset in everyone&#8217;s tools arsenal. <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-short-review/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>duberPython is coming to life!</title>
		<link>http://blog.duber.cz/3ds-max/duberpython-is-coming-to-life</link>
		<comments>http://blog.duber.cz/3ds-max/duberpython-is-coming-to-life#comments</comments>
		<pubDate>Thu, 10 Dec 2009 23:59:03 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[maxscript]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[duber]]></category>
		<category><![CDATA[duberpython]]></category>
		<category><![CDATA[independent]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[pythonier]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/3ds-max/duberpython-is-coming-to-life</guid>
		<description><![CDATA[
I am very excited to present a very early development results for our own Python implementation in 3ds Max.
First a bit of an intro. At duber, I&#8217;ve setup everything around Python, the most versatile and powerful language I&#8217;ve ever seen. I felt in love with Python so much that it even influenced my decision to [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/duberpython_banner.png' alt='duberPython banner' /></p>
<p>I am very excited to present a very early development results for our own Python implementation in 3ds Max.</p>
<p>First a bit of an intro. At duber, I&#8217;ve setup everything around <a href="http://www.python.org">Python</a>, the most versatile and powerful language I&#8217;ve ever seen. <a href="http://blog.duber.cz/3ds-max/im-loving-python">I felt in love with Python</a> so much that it even influenced my decision to leave <a href="http://eyeonline.com/Web/EyeonWeb/Products/fusion6/fusion6.aspx">Fusion</a> (my favourite compositing app) and dive into <a href="http://www.thefoundry.co.uk/pkg_overview.aspx?ui=CBC2593A-2C9F-4EF9-84BE-C198B0171453">Nuke</a> (my, now, most favourite compositing app). I even invested in a commercial data and asset management system, <a href="http://southpawtech.com/tactic.html">Tactic</a>, that is entirely written in Python. I run tons of custom Python scripts to tie together programs such as Tactic, Nuke, <a href="http://www.iridas.com/framecycler/">FrameCycler</a>, Photoshop etc&#8230; etc&#8230; But the last missing piece to the entire pipeline puzzle was 3ds Max.</p>
<p><span id="more-319"></span></p>
<p>There were initiatives to bring Python into Max, both from <a href="http://area.autodesk.com/blogs/chris/my_first_forays_into_net_and_ironpython_from_maxscript">Autodesk</a> and from <a href="http://forums.cgsociety.org/showthread.php?f=98&#038;t=816475">3rd party developers</a>. The problem is, none of those are final, open-source, nor fully functional.</p>
<p>What I need with Max, at least for now, is to be able to communicate with the Python tools running at my studio. I need Max to be able to communicate with Tactic. I need it to communicate with FrameCycler. And I need it to communicate with Nuke. Since I have most of the tiny scripts up and running that provide this communication layer, the last bit missing was Max being able to execute Python scripts and catch Python&#8217;s outputs.</p>
<p>We&#8217;ve achieved this with IronPython and a bit of C# magic.</p>
<p>Even though IronPython is different from CPython (the regular distro), it provides some additional functionality and mainly, it communicates flawlessly with dotNET. Another area that Max is well tied to. So this made for a perfect match! All we needed was a layer, a bridge of some sort, that&#8217;d make IronPython play nice with Max and vice versa. What we have right now is a very early Alpha build, very simple, elegant and light, that does just that! Maybe, if Autodesk doesn&#8217;t do it for us, we might extend this functionality beyond a simple communication layer and might actually make Python scripts command 3ds Max, so that we will be able to create objects, modify them, manipulate with the scene etc&#8230; etc&#8230; all directly via Python&#8217;s code. But for now, all I need is a two way communication tunnel that bridges the gap between MAXscript and Python. So far, we can run directly Python commands/scripts from within MAXScript code and we can run Python script files stored on the HDD and return results in MAXScript.</p>
<p>Here&#8217;s a sample of what we have right now:</p>
<p><img src='http://blog.duber.cz/wp-content/uploads/runpython.png' alt='Python scripts running directly from MXS' /></p>
<p><img src='http://blog.duber.cz/wp-content/uploads/runpython_str.png' alt='Python scripts running directly from MXS' /></p>
<p><img src='http://blog.duber.cz/wp-content/uploads/runpythonfile.png' alt='Python scripts running from a file inside of MXS' /></p>
<p>We&#8217;re working on proper data type wrapping right now. So far, we&#8217;ve got INTEGER, FLOAT and STRING types as well as DOUBLE type (naturally) being properly translated between MAXScript and Python. Hopefully I&#8217;ll have all the various data types being correctly translated to and from MAXScript and Python by the end of the week.</p>
<p>Also, the beauty of it is that it&#8217;s based on dotNET code and it was compiled independent on CPU architecture, which means it runs as fast and fine on both x86 machines and versions of Max as on x64 platforms. The other huge benefit is it is independent of 3ds Max entirely. It only requires dotNET Framework 3.5+ and IronPython libraries, but doesn&#8217;t require a recompile if I need it running under Max 9, 2008, 2009, 2010 or any other future versions of Max!</p>
<p>It is obviously not as robust or complex as <a href="http://forums.cgsociety.org/showthread.php?f=98&#038;t=816475">Blur&#8217;s latest Python plugin</a>, but thanks to that, it&#8217;s very versatile and flexible, which is great! <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/duberpython-is-coming-to-life/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An interesting concept behind Structs in MAXScript</title>
		<link>http://blog.duber.cz/3ds-max/an-interesting-concept-behind-structs-in-maxscript</link>
		<comments>http://blog.duber.cz/3ds-max/an-interesting-concept-behind-structs-in-maxscript#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:05:54 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[maxscript]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[instantiation]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[methods]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[referencing]]></category>
		<category><![CDATA[special]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[structs]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/3ds-max/an-interesting-concept-behind-structs-in-maxscript</guid>
		<description><![CDATA[I bumped into this issue of referencing values inside of Structs, which is a very elegant solution to using variables across your code, while avoiding global declarations. The issue was pretty much that I wasn&#8217;t aware of the implementation design of Structs in MAXscript.
Basically, Structs are these overly simplified custom classes know from such languages [...]]]></description>
			<content:encoded><![CDATA[<p>I bumped into this issue of referencing values inside of Structs, which is a very elegant solution to using variables across your code, while avoiding global declarations. The issue was pretty much that I wasn&#8217;t aware of the implementation design of Structs in MAXscript.</p>
<p>Basically, Structs are these overly simplified custom classes know from such languages as Python (to which I&#8217;ll try to compare these). However, Structs are really so simple that they don&#8217;t even implement such functionality as inheritance (a pitty by the way), or more advanced functionality known from Python. Structs, rather than classes, could be called <em>groups</em>. That&#8217;s what I&#8217;ve been using them for mainly. I grouped a bunch of functions and called them via a standard attribute reference paradigm.</p>
<p><span id="more-318"></span></p>
<p>Here&#8217;s a super simple Struct encapsulating a function that prints &#8220;HELLO WORLD&#8221;:</p>
<pre>
<code>struct tstStruct
(
	fn printHello =
	(
		print "HELLO WORLD"
	)
)</code>
</pre>
<p>You can then call the function via it&#8217;s <em>parent</em>, the struct, like this:<br />
<code>tstStruct.printHello()</code></p>
<p>A very convenient method for grouping tons of functions together and not messing around with namespaces or any other, possibly existing, names in your MAXScript session. However, after I read the article on avoiding using global variables at all times, over at <a href="http://tech-artists.org/wiki/Rollout_and_Struct_Pairs">tech-artists.org</a>, I discovered new possibilities and immediately started writing much cleaner and more elegant complex scripts! However, since I&#8217;m used to classes from Python and I&#8217;ve never used variables inside Structs, I bumped into a problem I didn&#8217;t know about. When you declare a struct with a variable in it, the variable isn&#8217;t immediately accessible from the outside of the Struct, you have to, sort of, initialize the variable at first. This is what I did wrong:</p>
<pre>
<code>struct tstStruct
(
	myVar = 0.,

	fn printHello =
	(
		print "HELLO WORLD"
	)
)</code>
</pre>
<p>I simply assumed that the variable is there and I can access and modify it at will. But I was wrong. You see, accessing the variable myVar right after the Struct&#8217;s declaration will throw this error:</p>
<pre>
<code>-- Unknown property: "myVar" in #Struct:tstStruct(
  myVar:&#60;data&#62;,
  printHello:&#60;fn&#62;)</code>
</pre>
<p>What I didn&#8217;t know was that I had to initialize the variables in the Struct in order to be able to access them. The problem was that Structs don&#8217;t provide special methods (functions) for such things as Python does, for example. So I couldn&#8217;t use something like the __init__ function. I fired up the MAXScript reference and read that in order to initialize the variables, I have to assign the Struct to a new object and explicitly assign to the variables, which is highly inconvenient, by the way. Anyways, here&#8217;s how to do it:</p>
<pre>
<code>struct tstStruct
(
	myVar = 0.,

	fn printHello =
	(
		print "HELLO WORLD"
	)
)

clsInst = tstStruct myVar:0.</code>
</pre>
<p>At that moment, you have to call the clsInst object in order to access all the functions and all the explicitly declared variables:</p>
<pre><code>clsInst.myVar; clsInst.printHello()</code>
</pre>
<p>Now it works as it should and I can use the variable inside the Struct to assign to and read from in my scripts, which is a very good practice as I&#8217;ve learned <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Let&#8217;s see how it&#8217;s done in Python. Python&#8217;s classes are the real deal, they support such advanced features as inheritance, multiple inheritance even, and also provide a much, much broader functionality, such as special methods. However, there is a bit of similarity between MAXScript&#8217;s Structs and Python&#8217;s Classes. Let&#8217;s see:</p>
<pre class="brush: py">
<code>class tstClass:
	myVar = 0.

	def __init__(self):
		self.testVal = 10.

	def printHello(self):
		print "HELLO WORLD"</code>
</pre>
<p>The simple code example above declared a new Class object named tstClass. The Class itself contains a variable object, myVar, a mandatory __init__ method and a custom function, printHello, similar in functionality to the MAXScript counterpart. However, the similar behavior of the Class and the Struct is in that when I call the Class directly and ask for its myVar variable, I get a value of 0.0, which is correct, since I haven&#8217;t initialized the Class object yet and thus the __init__ method wasn&#8217;t executed. The similarity is in that the Class wasn&#8217;t initialized, but I can still access the variable myVar without Python throwing an error. Which was what I assumed from MAXScript at first.</p>
<p>However, as soon as I initialize the Class by assigning the object to a new variable, I execute the __init__ method and thus overwrite the myVar variable with a value of 10.0. By calling this code snippet:</p>
<pre class="brush: py">
<code>instCls = testClass()

print testClass.testVal
print instCls.testVal</code>
</pre>
<p>I get this output:</p>
<pre class="brush: py">
<code>0.0
10.0</code>
</pre>
<p>Meaning that the myVar value called upon uninitialized Class is still the default 0.0, but as soon as the Class gets initialized, the variable gets assigned a value of 10.0 in the __init__ special method.</p>
<p>Unfortunately MAXScript doesn&#8217;t utilize special methods for its Structs, thus the initialization is a bit cumbersome and unintuitive, also quite inconvenient when having tons of variables in the Structs. Same goes for the <em>self</em> special object that references objects inside the Class, which is very handy.</p>
<p><strong>EDIT</strong>: As Mathieson pointed out in the comments below, you don&#8217;t need to explicitly call the variables when instantiating the Struct. All that really is needed is to instantiate the Struct properly for the inicialization process to take place and then you can access all the variables within the Struct. Thanks again to Mathieson for pointing that out!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/an-interesting-concept-behind-structs-in-maxscript/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Python in 3ds Max &#8211; FINALLY POSSIBLE!</title>
		<link>http://blog.duber.cz/3ds-max/python-in-3ds-max-finally-possible</link>
		<comments>http://blog.duber.cz/3ds-max/python-in-3ds-max-finally-possible#comments</comments>
		<pubDate>Sun, 25 Oct 2009 20:14:30 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[maxscript]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[accessible]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[blurpython]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[execute]]></category>
		<category><![CDATA[from]]></category>
		<category><![CDATA[in]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[PyQt]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[run]]></category>
		<category><![CDATA[tactic]]></category>
		<category><![CDATA[trolltech]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/3ds-max/python-in-3ds-max-finally-possible</guid>
		<description><![CDATA[
Yes! Once again, Blur studio showed how it&#8217;s supposed to be done.
They&#8217;ve released, or allowed their Eric Hulser to release, an updated version of their blurPython modules for 32bit and 64bit 3ds Max versions from Max 9 all the way up to 2009! And not only that. They&#8217;ve also provided libs and modules for tying [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/blurpython_banner.png' alt='blurPython Banner' /></p>
<p>Yes! Once again, <a href="http://www.blur.com">Blur studio</a> showed how it&#8217;s supposed to be done.</p>
<p>They&#8217;ve released, or allowed their Eric Hulser to release, an updated version of their <a href="http://forums.cgsociety.org/showthread.php?f=98&#038;t=816475">blurPython modules for 32bit and 64bit 3ds Max</a> versions from Max 9 all the way up to 2009! And not only that. They&#8217;ve also provided libs and modules for tying up Python, 3ds Max and Qt together! This is massive news as I&#8217;ve been trying to get Python (concretely IronPython) work in 3ds Max but I&#8217;ve been constantly hitting road blocks until I finally bumped into Blur&#8217;s updated blurPython.</p>
<p><span id="more-286"></span></p>
<p>The problem with IronPython would be the .NET classes that are required in order to embed IronPython inside 3ds Max. Since I don&#8217;t know C# at all, I&#8217;m not able to write custom wrappers to use in this combination, unfortunately. Another issue would be incompatibility with other programs that already run Python natively, such as Nuke or Maya, that I want to tie together under one managed pipeline environment in my studio. IronPython is a Microsoft opensource project that brings Python programming to .NET or vice-versa, which is great on many levels and I was really excited on bringing this to Max, since Max is already pretty tied in with .NET and I thought this might have been the best and easiest solution.</p>
<p>Well, nevermind, I&#8217;ll leave that part on Autodesk, if they ever decide to bring Python to Max. But for now, I&#8217;ll be happily enjoying Blur&#8217;s blurPython effort with Qt, which I was about to learn anyways (I bought a <a href="http://www.amazon.com/Programming-Python-Prentice-Software-Development/dp/0132354187/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1256498711&#038;sr=8-1">Rapid GUI Programming with Python and Qt</a> book a while back, but haven&#8217;t gotten to reading it yet).</p>
<p>After a few minutes fiddling with Python 2.6, Qt and a bunch of modules required in order to make blurPython run under Max, I&#8217;ve finally managed to get Python code executed and working correctly in Max!</p>
<p><a href='http://blog.duber.cz/wp-content/uploads/blurpython_max.png' title='blurPython running in Max internally' rel="lightbox[286]"><img src='http://blog.duber.cz/wp-content/uploads/blurpython_max.thumbnail.png' alt='blurPython running in Max internally' /></a></p>
<p>And with a bit of help from <a href="http://www.mackevision.de/index.html">Thorsten Kaufmann</a>, I also managed to get Python code up and running from an external editor, which is very useful! Although I use SciTe, which got implemented as a MAXScript Pro Editor in Max 2008, I believe, I can&#8217;t get lexer and other language syntax up and running in it since it&#8217;s heavily modified and fit for MAXScript only, which sucks. So I use SciTe externally for Python and simply run the code from there to show up in Max.</p>
<p><a href='http://blog.duber.cz/wp-content/uploads/blurpython_external.png' title='blurPython running in Max from external editor' rel="lightbox[286]"><img src='http://blog.duber.cz/wp-content/uploads/blurpython_external.thumbnail.png' alt='blurPython running in Max from external editor' /></a></p>
<p>The only drawback of this is the fact that we&#8217;ll be 100% dependant on Blur for maintainig these plugins and modules. Well, modules won&#8217;t be an issue, these are open-source, but the parts that are closed-source are inaccessible to other programmers. So, whatever Blur decides to do with their plugins, we&#8217;ll have to go their way. Which is a bit problematic for a studio to rely their entire 3ds Max pipline on this (like mine). But we&#8217;ll see, maybe Autodesk will acquire or at least somehow officially support Blur&#8217;s efforts. Maybe Blur will decide to release the package as an open-source project to the public, or perhaps as a commercial package? If not, we&#8217;ll still be dependant on on thing or another, but this might prove to be either a huge win or a huge loss situation. The pros are, thankfully, huge for me, at least. So I&#8217;ll take the risk and adopt blurPython in my pipeline, since I need it for accessing <a href="http://southpawtech.com/">Tactic</a> projects and SObjects from within Max.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/python-in-3ds-max-finally-possible/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3ds Max 2010, Advanced to Expert book &#8211; arrived!</title>
		<link>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-arrived</link>
		<comments>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-arrived#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:50:26 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[miscellaneous]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[3das]]></category>
		<category><![CDATA[3dats]]></category>
		<category><![CDATA[3ds]]></category>
		<category><![CDATA[Advanced]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[architectural]]></category>
		<category><![CDATA[beautiful]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[expert]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[shipping]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[vis]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[VIZ]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-arrived</guid>
		<description><![CDATA[
The 3ds Max 2010, Advanced to Expert book is finally shipping! And I already got my bunch!


At first sight, the book is a monster! 20 chapters, all approximately 30 pages each, plus the gallery and some additional info. I&#8217;d say the book has about 700 pages (the pages don&#8217;t have numbers, only each chapter has [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/3ds_max_2010_advanced_to_expert_banner.jpg' alt='3ds_max_2010_advanced_to_expert_banner.jpg' /></p>
<p><a href="http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-sent-to-printer">The 3ds Max 2010, Advanced to Expert book</a> is finally shipping! And I already got my bunch!</p>
<p><span id="more-229"></span></p>
<p><a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_01.jpg' title='adv_exp_book_01.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_01.thumbnail.jpg' alt='adv_exp_book_01.jpg' /></a></p>
<p>At first sight, the book is a monster! 20 chapters, all approximately 30 pages each, plus the gallery and some additional info. I&#8217;d say the book has about 700 pages (the pages don&#8217;t have numbers, only each chapter has its own set)!</p>
<p><a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_02.jpg' title='adv_exp_book_02.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_02.thumbnail.jpg' alt='adv_exp_book_02.jpg' /></a></p>
<p><a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_03.jpg' title='adv_exp_book_03.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_03.thumbnail.jpg' alt='adv_exp_book_03.jpg' /></a></p>
<p>The book is beautiful, printed on a very high quality paper, in full color, at high res. But what&#8217;s most important is the information it conceals. Simply brilliant!</p>
<p><a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_04.jpg' title='adv_exp_book_04.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_04.thumbnail.jpg' alt='adv_exp_book_04.jpg' /></a></p>
<p><a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_05.jpg' title='adv_exp_book_05.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_05.thumbnail.jpg' alt='adv_exp_book_05.jpg' /></a></p>
<p>I couldn&#8217;t have resisted the shameless self-promo <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br />
<a href='http://blog.duber.cz/wp-content/uploads/adv_exp_book_06.jpg' title='adv_exp_book_06.jpg' rel="lightbox[229]"><img src='http://blog.duber.cz/wp-content/uploads/adv_exp_book_06.thumbnail.jpg' alt='adv_exp_book_06.jpg' /></a></p>
<p>Definitely <a href="http://3dats.com/expert_book/">go preorder the book</a>, if you haven&#8217;t done so, as it&#8217;s really worth every cent!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-arrived/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autodesk announces their 2010 product line</title>
		<link>http://blog.duber.cz/3ds-max/autodesk-announces-their-2010-product-line</link>
		<comments>http://blog.duber.cz/3ds-max/autodesk-announces-their-2010-product-line#comments</comments>
		<pubDate>Tue, 04 Aug 2009 02:43:27 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[Maya]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[3ds]]></category>
		<category><![CDATA[announce]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[Autodesk]]></category>
		<category><![CDATA[composite]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[match]]></category>
		<category><![CDATA[matchmover]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[mover]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[siggraph]]></category>
		<category><![CDATA[Softimage]]></category>
		<category><![CDATA[suite]]></category>
		<category><![CDATA[suites]]></category>
		<category><![CDATA[toxik]]></category>
		<category><![CDATA[tracking]]></category>
		<category><![CDATA[XSI]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/3ds-max/autodesk-announces-their-2010-product-line</guid>
		<description><![CDATA[Following the announcement, Autodesk revealed the 2010 product line.
Hands down, the updates are really not about new big features at all, this time. Well, maybe except for Maya 2010, which&#8217;ll, for the first time in years, come in one version only, just Maya 2010, no Unlimited or Complete (which was confusing anyways) and will include [...]]]></description>
			<content:encoded><![CDATA[<p>Following <a href="http://area.autodesk.com/blogs/cory/maya_and_motionbuilder_2010_announcement">the announcement</a>, Autodesk revealed the 2010 product line.</p>
<p>Hands down, the updates are really not about new big features at all, this time. Well, maybe except for <a href="http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&#038;id=13583239#channels_What%27s%20New">Maya 2010</a>, which&#8217;ll, for the first time in years, come in one version only, just Maya 2010, no Unlimited or Complete (which was confusing anyways) and will include Toxik (altough called Maya Composite) and MatchMover.</p>
<p>I still haven&#8217;t seen any presentations of these new features, but I&#8217;m really looking forward to that. Even though I really dislike the idea of having Toxik inside of Maya by default. I never liked that compositor, always felt very &#8220;Flame-ish&#8221; and therefore &#8220;odd&#8221; to me, being used to Fusion or Nuke. But still, I&#8217;ll save my judgement after I see a demo.</p>
<p>Autodesk also announced a <a href="http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&#038;id=13567426">3ds Max 2010 SP1</a> release, which is always good<del datetime="2009-08-04T13:32:15+00:00">, if it wasn&#8217;t for &#8220;subscribtion customers only&#8221;, which is, in my opinion, bullshit!</del></p>
<p>Then <a href="http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&#038;id=13571400">Softimage 2010</a> with some minor additions and bugfixes. Notably f-curve editor really needed that sweet touch and Scintilla, which I really felt in love with after it was included in 3ds Max, is also a very nice additon.</p>
<p>They&#8217;ve also announced <a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&#038;id=13420613">digital production Suites</a>, which seem to be a great idea, possibly taken from Adobe, that you&#8217;ll be able to buy a bundle of <a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&#038;id=13441435">3ds Max/Maya, Motion Builder</a>, or even <a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&#038;id=13420613">3ds Max/Maya, Motion Builder, Mudbox</a>. If the prices are &#8220;reasonable&#8221;, I&#8217;m sold!</p>
<p>As I&#8217;ve said, I&#8217;ll wait for tomorrow&#8217;s demos to pass my judgement on these new releases, so, stay tuned&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/3ds-max/autodesk-announces-their-2010-product-line/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>3ds Max 2010, Advanced to Expert book &#8211; sent to printer</title>
		<link>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-sent-to-printer</link>
		<comments>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-sent-to-printer#comments</comments>
		<pubDate>Sat, 18 Jul 2009 18:39:05 +0000</pubDate>
		<dc:creator>loocas</dc:creator>
				<category><![CDATA[3ds Max]]></category>
		<category><![CDATA[miscellaneous]]></category>
		<category><![CDATA[opinions]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[3das]]></category>
		<category><![CDATA[3dats]]></category>
		<category><![CDATA[3ds]]></category>
		<category><![CDATA[Advanced]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[architectural]]></category>
		<category><![CDATA[authors]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[best]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[chapters]]></category>
		<category><![CDATA[deal]]></category>
		<category><![CDATA[expert]]></category>
		<category><![CDATA[great]]></category>
		<category><![CDATA[Max]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[sent]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[vis]]></category>
		<category><![CDATA[visualisation]]></category>
		<category><![CDATA[VIZ]]></category>

		<guid isPermaLink="false">http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-sent-to-printer</guid>
		<description><![CDATA[
I received a word, that the 3ds Max 2010, Advanced to Expert book, I&#8217;ve contributed to (1 chapter + a tech. review of the MAXScript Chapter), had been sent to the printer and thus is on schedule to be ready for shipment in August! This is great news and I&#8217;m really looking forward to the [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.duber.cz/wp-content/uploads/3dats_banner.png' alt='3dats_banner' /></p>
<p>I received a word, that the <a href="http://3dats.com/expert_book/">3ds Max 2010, Advanced to Expert book</a>, <a href="http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book">I&#8217;ve contributed to</a> (1 chapter + a tech. review of the MAXScript Chapter), had been sent to the printer and thus is on schedule to be ready for shipment in August! This is great news and I&#8217;m really looking forward to the publication (I&#8217;ll receive a copy of the book, which is awesome <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>If you&#8217;re still hesitant to preorder, 3DATS has put up a few pages from each of the beefed-up chapters for your viewing pleasure, go see them on <a href="http://3dats.com/expert_book/">the book&#8217;s page</a>.</p>
<p>But if you want to stay on my blog <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> here are the direct links for you:</p>
<p><a href="http://3dats.com/images/adv_expert_3ds_Max_front_matter.pdf">The full table of contents in PDF</a><br />
<a href="http://3dats.com/images/adv_expert_3ds_Max_book_sample.pdf">The sample pages from all of the 20 chapters, also in a PDF</a></p>
<p>I very highly recommend this book for any advanced (not limited to 3ds Max) user, from what I&#8217;ve seen, it&#8217;s a massive publication full of the juiciest information on the subject. If I didn&#8217;t receive a complimentary copy of the book, I&#8217;d have preordered one as well as there are some chapters I&#8217;m particularly looking forward to read (Color Management, Compositing, Managing Large-scale Projects and pretty much the entire sixth part of the book).</p>
<p>For only $99.90 USD + Shipping, this is a bargain! Coz&#8217; remember, education is the only thing nobody can take away from you <img src='http://blog.duber.cz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-212"></span></p>
<p><a href="http://3dats.com/expert_book/"><img src='http://blog.duber.cz/wp-content/uploads/3ds_max_2010_advanced_to_expert_cover.jpg' alt='3ds Max 2010, Advanced to Expert book cover' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.duber.cz/misc/3ds-max-2010-advanced-to-expert-book-sent-to-printer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
