14 entries in 2005

RenderWanger

Save and load render presets

Saturday, December 24th, 2005

This MAXScript entry has not yet been completed…
(more…)

Macro Lister

Scans all installed macros by category, and creates a dockable tree-view

Monday, October 24th, 2005

Macro Lister lists all installed macros in a tree-view, by category. Double-clicking an entry will run the macro.

Interface

Macro Lister can be docked on the left or right sides of the screen by dragging.

Download and Installation

Download and run Macro Lister 0.5.ms from 3dsmax.

It will create the macroscript in the correct directory for your max version, then you can add the script to a toolbar by going to:

  • Customize > Customize User Interface…
  • and looking under the MAX Script Tools category for MacroLister.

ActiveX Inspector

Lists all ActiveX controls, and lets you interactively test their methods and properties

Wednesday, September 21st, 2005

This MAXScript entry has not yet been completed…
(more…)

HTML Help Template

An HTML template for a good-looking help system for your scripts

Tuesday, September 13th, 2005

This MAXScript entry has not yet been completed…
(more…)

Flash UI Examples

Character select, graphing and joystick control examples of using Flash as a rich interface to 3dsmax

Tuesday, August 30th, 2005

Flash has always allowed the use of Active X controls in its interface rollouts, and by using Flash’s FS Commands, you can allow interaction in the Flash interface to affect 3dsmax, and 3dsmax interaction to feedback to Flash. It’s a really easy way to build rich interfaces within 3dsmax without getting into C++ plugins.

The following demos were all completed from 2002 to 2005 using Flash 4, and its quite basic (by today’s standards) scripting language. I can’t even remember if it was called ActionScript then, or was just Flash.

Anyway. Needless to say, if you want to do funky Flash interaction these days you should be looking at .net inside 3dsmax and ActionScript 2 / 3 in Flash using ExternalInterface to provide the communication between the two.

Now for the demos…

Axis Control Demo

This demo basically demonstrates a frame-loop running inside Flash that allows you to drag a joystick-like button to control the animation of a selected object in 3dsmax.

It’s really interesting to see an object react in realtime in the max viewport, and you can set animation mode on, then play the timeline to record the movement as well.

Graphing Demo

This demo shows 2-way communication. The demo maxscript animates a ball, then sends the coordinates to Flash. You can also click the radio buttons to show another view in Flash, and in Flash, click the animation key indicators to start the 3dsmax timeline playing from that point.

It’s interesting to compare the actual trajectory in the max viewports with the Flash app. With a little more thought I’m sure some cool stuff could be achieved with this, especially now (late 2009) as we now have proper 3D in Flash.

Character UI Demo

Probably the most useful demo of the three, this demo is simply to demonstrate how you could build a custom interface within Flash, then use it to select elements in your scene without having to muck about with selection sets, or the scene explorer. In the real world it would probably be written more flexibly, i.e. with XML files and not hard-coding the element names, but you get the idea.

Note: the demo below is actually interactive.

Download and installation

You can download the demo files here, and start poking around both the 3dsmax and Flash scripts to see how they work.

In 3dsmax you MUST edit the path to the swf file in each of the scripts before you run them, or else they simply won’t work, or you will get errors.

Lastly – as I said at the top, this would certainly NOT be the way to do it today! But it’s interesting to think that this sort of thing could be done 7 years ago. Did anyone take advantage of it? Not to my knowledge which is a real shame I think.

If I was still a 3dsmax TD today, I imagine I would be doing this sort of stuff all the time!

Enjoy.

Set and get paths

Assign default paths to both scene and MAXScript directories

Monday, July 18th, 2005

This MAXScript entry has not yet been completed…
(more…)

HTML Interface

A set of functions that allow you to run any MaxScript command from a rollout's ActiveX HTML control

Sunday, June 26th, 2005

MaxHtml provides methods to run max commands from an ActiveX HTML page. Also, provides simple methods to write back to the page.

Example uses:

  • Run MaxScript commands as part of a help system
  • Build a custom UI using HTML / JavaScript

It’s form is a struct (function library) in conjunction with a JavaScript library. It is designed for programmers to use within their scripts.

Demo UI

Functions

This is just a base set of functions. I may add more at some point.

parseUrl Parse and run the max command from the web page
addMaxLink Add a MaxScript link to the web page
addHtmlLink Add a normal HTML link to the web page
setBgColor Set the background color of the page to the max UI color

Implementation

HTML

3dsMax

  • Include maxHtml.ms in your MaxScript
  • Set up the ActiveX browser control to display your html page
  • Use the control’s BeforeNavigate2 event to intercept the links in the web page
  • Pass the url along to the maxHtml struct like so: maxHtml.parseUrl url

Explore the demo to see how things work. Be sure to change the path in the top of the demo.ms file to point to towards the html demo file!

Download

Download MaxHtml.zip

Z-buffer to boxes

Visualize the z-buffer of an image using boxes

Thursday, June 16th, 2005

This MAXScript entry has not yet been completed…
(more…)

VMS Tidy

Re-arranges and beautifies Visual MaxScript output

Thursday, May 19th, 2005

What VMS Tidy is

VMS Tidy reorders the lines of code that Visual MaxScript creates, so that the linear order of the lines matches the visual order of the controls. It also has options for renumbering and renaming controls.

This makes for much quicker prototyping of tools as you can just jump in and start throwing UI elements around without worrying about:

  • Visual relationships between UI elements and code
  • Relationships between groups and contained controls
  • Out-of order lines of code
  • Whitespace between blocks of code
  • Code indentation

VMS Tidy lets you concentrate on the task of designing functional user interfaces within Visual MaxScript before tidying and re-ordering it’s output to match the visuals.

Tidy modes

In the screenshot below, some sample code has been pasted into the editor window – as you can see, it’s all out of order, jumbled up, and none of the controls have been named (eg spn4, rdo2, chk4).

You can use one of the 3 VMS Tidy modes to tidy up the code:

  1. Layout Only – In this screen, the layout has been tidied with the “layout only” option. VMS Tidy has reordered and indented the code to make it more readable.
  2. Re-number -In this screen, the controls have also been re-numbered using the “re-number” option. Controls that were previously named are renumbered in consecutive order, eg spn1, spn2, spn3.
  3. Re-name – In this screen, the controls have actually been re-named, using the “re-name” option. Note how the controls are now named , eg spnArms, btnObject, sld1.Naming options can be edited from the <strong>Options</strong> dialog.</li> </ol> <h3>Results</h3> <p>Once the code has been tidied, it behaves exactly the same as before. Here is the result of the above code after clicking the <strong>Test</strong> button.</p> <p><img src="/resources/maxscript/For%20Scripters/VMS%20Tidy/VMS_Tidy_sample_rollout.gif" class="no-border"></p> <h3>Workflow</h3> <p>The process of working with VMS Tidy is this:</p> <ol> <li>Use Visual Max Script to design an your user interface</li> <li>Copy the code to the VMS editor window</li> <li>Click the “Go!” button to tidy the code</li> <li>Copy, re-<strong>Edit</strong> or <strong>Test</strong> the code</li> </ol> <h3>Options</h3> <p>You can change the options for renaming and restructuring from the options option of the Tidy dropdown.</p> <p><img src="/resources/maxscript/For%20Scripters/VMS%20Tidy/VMS_Tidy_options.gif" class="no-border"></p> <h3>What VMS Tidy isn’t</h3> <p>VMS Tidy is not a visual code designer, or a replacement for the Visual MaxScript Editor.</p> <h3>Known issues</h3> <p>Nested groups are currently not supported. Sorry.</p> <h3>Download and Installation</h3> <p>Download and extract VMS Tidy.zip, then run the main <strong>VMS Tidy</strong> script from 3dsmax to create the VMS Tidy dialog.</p> </div> <div class="postmetadata"> Posted in <a href="/code/category/development/maxscript/for-scripters/" title="View all posts in For Scripters" rel="category tag">For Scripters</a>, <a href="/code/category/development/maxscript/" title="View all posts in MaxScript" rel="category tag">MaxScript</a> | No Comments » </div> </div> <div class="post"> <h2 id="post-118">Twist Profile</h2> <p class="intro">Apply a curve-defined twist to any geometry</p> <h4>Friday, April 22nd, 2005</h4> <div class="entry"> <p>This MAXScript entry has not yet been completed…<br> (more…)</p> </div> <div class="postmetadata"> Posted in <a href="/code/category/development/maxscript/" title="View all posts in MaxScript" rel="category tag">MaxScript</a>, <a href="/code/category/development/maxscript/modelling/" title="View all posts in Modelling" rel="category tag">Modelling</a> | No Comments » </div> </div> <div class="navigation nav-bot"> <div class="alignleft"></div> <div class="alignright"> Next Entries » </div> <div style="clear:both; font-size:0px;"></div> </div> </div> <div id="sidebar"> <ul style="margin:0px;"> <li> </li> <li style="float:none;line-height:0px"> </li> <li> <li class="pagenav"> <h3>Pages</h3> <ul> <li class="page_item page-item-4"> <a href="/code" title="Development Index (by category)">Development Index (by category)</a> </li> <li class="page_item page-item-153"> Development Posts (by date) </li> <li class="page_item page-item-195"> Form Creator </li> <li class="page_item page-item-196"> Comment Headings </li> </ul> </li> <li> <h3>Dave's stuff</h3> <ul> <li> <a href="http://www.davestewart.co.uk">My portfolio</a> </li> <li> </li> </ul> </li> <li> <h3>Categories</h3> <ul> <li class="cat-item cat-item-3"> <a href="/code/category/development/" title="View all posts filed under Development">Development</a> (71) <ul class="children"> <li class="cat-item cat-item-35"> <a href="/code/category/development/after-effects/" title="View all posts filed under After Effects">After Effects</a> (1) </li> <li class="cat-item cat-item-30"> <a href="/code/category/development/flash/" title="View all posts filed under Flash">Flash</a> (3) <ul class="children"> <li class="cat-item cat-item-8"> <a href="/code/category/development/flash/actionscript/" title="View all posts filed under ActionScript">ActionScript</a> (3) </li> </ul> </li> <li class="cat-item cat-item-14"> <a href="/code/category/development/html/" title="View all posts filed under HTML">HTML</a> (3) </li> <li class="cat-item cat-item-5"> <a href="/code/category/development/javascript/" title="View all posts filed under JavaScript">JavaScript</a> (6) <ul class="children"> <li class="cat-item cat-item-15"> <a href="/code/category/development/javascript/jquery/" title="View all posts filed under jQuery">jQuery</a> (5) </li> </ul> </li> <li class="cat-item cat-item-7"> <a href="/code/category/development/maxscript/" title="View all posts filed under MaxScript">MaxScript</a> (54) <ul class="children"> <li class="cat-item cat-item-16"> <a href="/code/category/development/maxscript/maxscript-animation/" title="View all posts filed under Animation">Animation</a> (8) </li> <li class="cat-item cat-item-19"> <a href="/code/category/development/maxscript/cameras/" title="View all posts filed under Cameras">Cameras</a> (4) </li> <li class="cat-item cat-item-23"> <a href="/code/category/development/maxscript/for-scripters/" title="View all posts filed under For Scripters">For Scripters</a> (7) </li> <li class="cat-item cat-item-27"> <a href="/code/category/development/maxscript/fun/" title="View all posts filed under Fun">Fun</a> (4) </li> <li class="cat-item cat-item-28"> <a href="/code/category/development/maxscript/functions/" title="View all posts filed under Functions">Functions</a> (3) </li> <li class="cat-item cat-item-24"> <a href="/code/category/development/maxscript/materials/" title="View all posts filed under Materials">Materials</a> (5) </li> <li class="cat-item cat-item-21"> <a href="/code/category/development/maxscript/modelling/" title="View all posts filed under Modelling">Modelling</a> (4) </li> <li class="cat-item cat-item-17"> <a href="/code/category/development/maxscript/particles/" title="View all posts filed under Particles">Particles</a> (1) </li> <li class="cat-item cat-item-18"> <a href="/code/category/development/maxscript/rendering/" title="View all posts filed under Rendering">Rendering</a> (3) </li> <li class="cat-item cat-item-34"> <a href="/code/category/development/maxscript/text/" title="View all posts filed under Text">Text</a> (3) </li> <li class="cat-item cat-item-26"> <a href="/code/category/development/maxscript/tools/" title="View all posts filed under Tools">Tools</a> (3) </li> <li class="cat-item cat-item-22"> <a href="/code/category/development/maxscript/ui-design/" title="View all posts filed under UI Design">UI Design</a> (7) </li> <li class="cat-item cat-item-25"> <a href="/code/category/development/maxscript/widgets/" title="View all posts filed under Widgets">Widgets</a> (5) </li> <li class="cat-item cat-item-20"> <a href="/code/category/development/maxscript/workflow/" title="View all posts filed under Workflow">Workflow</a> (7) </li> </ul> </li> <li class="cat-item cat-item-12"> <a href="/code/category/development/php/" title="View all posts filed under PHP">PHP</a> (6) <ul class="children"> <li class="cat-item cat-item-38"> <a href="/code/category/development/php/kohana/" title="View all posts filed under Kohana">Kohana</a> (3) </li> <li class="cat-item cat-item-29"> <a href="/code/category/development/php/wordpress/" title="View all posts filed under Wordpress">Wordpress</a> (1) </li> </ul> </li> <li class="cat-item cat-item-31"> <a href="/code/category/development/vba/" title="View all posts filed under VBA">VBA</a> (2) </li> <li class="cat-item cat-item-13"> <a href="/code/category/development/xml/" title="View all posts filed under XML">XML</a> (1) </li> </ul> </li> <li class="cat-item cat-item-32"> <a href="/code/category/freelance/" title="View all posts filed under Freelance">Freelance</a> (8) <ul class="children"> <li class="cat-item cat-item-33"> <a href="/code/category/freelance/quoting/" title="View all posts filed under Quoting">Quoting</a> (8) </li> </ul> </li> <li class="cat-item cat-item-40"> <a href="/code/category/misc/" title="View all posts filed under Misc">Misc</a> (3) <ul class="children"> <li class="cat-item cat-item-41"> <a href="/code/category/misc/tips/" title="View all posts filed under Tips">Tips</a> (3) </li> </ul> </li> </ul> </li> <li> <h3>Calendar</h3> <ul> <li> <table id="wp-calendar" summary="Calendar"> <caption> November 2010 </caption> <thead> <tr> <th abbr="Monday" scope="col" title="Monday">M</th> <th abbr="Tuesday" scope="col" title="Tuesday">T</th> <th abbr="Wednesday" scope="col" title="Wednesday">W</th> <th abbr="Thursday" scope="col" title="Thursday">T</th> <th abbr="Friday" scope="col" title="Friday">F</th> <th abbr="Saturday" scope="col" title="Saturday">S</th> <th abbr="Sunday" scope="col" title="Sunday">S</th> </tr> </thead> <tfoot> <tr> <td abbr="October" colspan="3" id="prev"> <a href="/code/2010/10/" title="View posts for October 2010">« Oct</a> </td> <td class="pad"> </td> <td colspan="3" id="next" class="pad"> </td> </tr> </tfoot> <tbody> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>7</td> </tr> <tr> <td>8</td> <td>9</td> <td id="today">10</td> <td>11</td> <td>12</td> <td>13</td> <td>14</td> </tr> <tr> <td>15</td> <td>16</td> <td>17</td> <td>18</td> <td>19</td> <td>20</td> <td>21</td> </tr> <tr> <td>22</td> <td>23</td> <td>24</td> <td>25</td> <td>26</td> <td>27</td> <td>28</td> </tr> <tr> <td>29</td> <td>30</td> <td class="pad" colspan="5"> </td> </tr> </tbody> </table> </li> </ul> </li> <li> <h3>Archives</h3> <ul> <li> <a href="/code/2010/" title="2010">2010</a> </li> <li> <a href="/code/2009/" title="2009">2009</a> </li> <li> <a href="/code/2008/" title="2008">2008</a> </li> <li> <a href="/code/2007/" title="2007">2007</a> </li> <li> <a href="/code/2006/" title="2006">2006</a> </li> <li> <a href="/code/2005/" title="2005">2005</a> </li> <li> <a href="/code/2004/" title="2004">2004</a> </li> <li> <a href="/code/2003/" title="2003">2003</a> </li> <li> <a href="/code/2002/" title="2002">2002</a> </li> <li> <a href="/code/2001/" title="2001">2001</a> </li> </ul> </li> <li id="linkcat-11" class="linkcat"> <h3>Forums</h3> <ul> <li> <a href="http://www.actionscript.org/forums/">ActionScript.org</a> </li> <li> <a href="http://www.aenhancers.com/" title="Expressions, Scripts & Presets for After Effects">AEnhancers</a> </li> <li> <a href="http://forums.cgsociety.org/forumdisplay.php?f=98">CG Talk MaxScript</a> </li> </ul> </li> <li> <h3>Meta</h3> <ul> <li> Log in </li> </ul> </li> </ul> </div> <div id="footer"> <div style="padding:10px;"> <p>Keyframes and Code is the blog of <a href="http://www.davestewart.co.uk">Dave Stewart</a> | and . 19 queries. 0.468 seconds.</p> </div> </div> </div> </body> </html>