Thursday, December 24, 2009

Happy Holidays!

I wish you happy holidays!

Wednesday, December 23, 2009

Sound Alarm

I recently wrote a script for a friend. The idea was simply count-down counter which to play sound when the time expires. The script required VLC media player. Maybe it's beneficial to someone else so I decided to upload the script to my site. You can find it at the bottom of my scripts page.

Tuesday, December 22, 2009

Neil Blevins lessons

Neil Blevins offer a very nice CG education section on him web site and of course he still update it.

Neil's Quote:
Life is about learning, from your own experiences and from helpful people along the way. Everything from a 3d tip to larger topics such as composition and color theory, this is my area to give back to the graphics community.

While several lessons deal directly with 3ds Max, I've tried to keep discussions as software unspecific as possible, so you won't have to be a Max user to get something from these lessons.

Monday, December 21, 2009


3DK (3DKingdom) is another tutorials site for omnifarious software (including 3ds Max). Well... immediately makes a bad impression that no tutorials sub-categories (differentiation at least in software would be good) and the site search does not work.

Sunday, December 20, 2009

Translated Bounding Box 2

I recently wrote script named Translated Bounding Box which works fine on 3ds Max 2008 and higher. It's based on nodeGetBoundingBox() function (new in 3ds Max 2008). The function also available for previous Max versions through AVG (Avguard Extensions), but Dave ask me how to do this without AVG in 3ds max 9, so I wrote this cheat procedure snippet code. Maybe is not the best solution but I hope this help :)
for i in selection do (
c = snapshot i
c.transform = matrix3 1
d = dummy boxsize:(c.max - c.min)
delete c
d.transform = i.transform
d.pos =

I think the "trick" is clear. I create a temp copy and reset it transform to can assign correct size to the dummy, and finaly align dummy to the original object. Well, maybe is good to optimize the code by turns undo off for temp object :)
for i in selection do (
local c
with undo off ( c = snapshot i )
c.transform = matrix3 1
d = dummy boxsize:(c.max - c.min)
with undo off ( delete c )
d.transform = i.transform
d.pos =

P.S. -- Ultimately I decided to update the script and upload new version (0.2) at ScriptSpot.

Friday, December 18, 2009

whether is still alive?

Accidentally I stumbled on this site ( and I noticed that I can't open any tutorial link there. Hmm, don't like fishing site but more seems to be hacked. Did I missed something or the site is really just an empty shell?

Include/Exclude in FOR loops via WHERE

Here I'll focus on a specific MAXScript usage. It's about WHERE which looks like IF but can be used only in FOR loops and its very handy to filter out items from collections (for example - to exlude objects from selection).


-- collect objects which has "height" property
objs = for o in objects where \
hasProperty o "height" collect o

-- collect Multimaterials from scene
MMats = for m in sceneMaterials where \
classOf m == Multimaterial collect m

-- filter array and collect integer values to a new array
oldArray = #("a", 12, "b", 3.5, 7)
newArray = for i in oldArray where \
classOf i == integer collect i

--> #(12, 7)

Using WHERE in FOR loop is not something hard, its a logic play only, we just need to choose correct expression check suitable for your concrete case.

Into MAXScript Reference search for "TargetObject" and you'll find a good examples for how to filter the TargetObject out using "where".


-- old and bad style coding (SLOW):
for o in Lights do
try(o.rgb = random black white)catch()
-- Optimized code:
for o in Lights where classOf o != TargetObject do
o.rgb = random black white

So, shortly to say, we can filter our collection checking its items by class, categories or property, and this can be done tidiness and faster using WHERE.

MORE EXAMPLES (forum topics):
Basic script example
How to filter out shapes only in selection.

Collecting Photometric lights
Collect in array all photometric lights that are selected.

Remove specific type of object from scene
Delete all PF_Source in the scene.

Select objects with 0 vertices
How to exclude (delete or deselect) objects with 0 vertices (helpers objects).

Wednesday, December 16, 2009

Particle Flow Dispersion Effect

In this tutorial (by anonymous author) is shown dispersion effect made using Particle Flow and Gradient Ramp map.

Animating the Depth of Field

Read the tutorial here.

Tuesday, December 15, 2009


MaxRealms is a resource site for free 3ds Max tutorials, models and other staffs.

Sunday, December 13, 2009

Discreet 3ds max Tutorials

Discreet 3ds max Tutorials is an section at Designer Today for tutorials which is compatable with all 3ds max versions.

Friday, December 11, 2009


MeshMixer is an free experimental 3D modeling tool developed by Ryan Schmidt. The goal of MeshMixer is to make it dead easy to compose new 3D models from existing meshes.

Sound interesting, I'll give it a try :)

Tuesday, December 8, 2009

Water Wall

Ramy Hanna post 2 example methods to simulate water wall.

How to recover settings from a corrupted 3dsmax.ini file

This is an old trick about how to recover settings from a corrupted 3dsmax.ini file. The new info here is the directory location of 3dsmax.ini and old3dsmax.ini files that changed in recent Max versions (9 - 2010). Read official Autodesk tip here.

Monday, December 7, 2009


Create easy WireFence shape (Editable Spline).

8 months ago I was working on a scene in which I needed wire fence. I searched the net for a tutorial on the matter and found nothing. Then I searched the net for any 3d model and I was left very disappointed. Only image based fakes or meshes which seem terribly Viewed from near. My idea was to make it via editable splines. They are more flexible and take realy short calculation time in rendering process. To quit is not an option :) so I made the effort and I made it myself. I up my hand-made model in (Product ID: 455926) just for test and the results really surprised me - about 36500 downloads for 8 months! Naturally, to do this model manually each time a is quite annoying and time consuming, so to got a time saver I wrote this script. I thought of extend it before publishing it, but this can't happen soon. I use it often and its tested enough :)

As usual script can be found at ScriptSpot:

Wednesday, December 2, 2009

The Blueprints

Maybe everyone has heard about this site :)
Now I have seen and tutorial section there.

Tuesday, December 1, 2009

Linking relative objects

This is the forum topic into (relevant to MaxScript) where the question is -- How to link the objects in the group to the objects in the other groups by their numerical suffix, ie for example:

--> Bus_Collider_01

--> Bus_Collider_02
--> Bus_Graphic_02

...and so on.

There is an example code:
-- collect 'em
g1 = $Bus_Controller_* as array
g2 = $Bus_Collider_* as array
g3 = $Bus_Graphic_* as array

for i=1 to g1.count do g2[i].parent = g3[i].parent = g1[i]

For more read the original forum topic.

Sunday, November 29, 2009

Modifiers Switch

Turn On/Off in Renderer or Views, all or selected modifiers by class.

Super short description, I know :) Well, this is my last MaxScript.
Example usage you can watch in the video.
More details and download the script here.


Interesting geometry plugin to generate ocean wave suface, which is free as well :) but available for 3ds Max 6 and Max 9 (32 and 64 bit) only.

Friday, November 27, 2009

Computer Graphics Fundamentals

GuerrillaCG is a brand new website, dedicated to helping you learn computer graphics (or CG) for free. Our fundamental videos help to demystify the concepts of CG so you can start creating right away. We also have great information on other websites, tutorials, software and products.

Wednesday, November 25, 2009

Feather simulations

A tutorial on feather simulation with Max hair system by Juan Gea.
Scene and video included.

Tuesday, November 24, 2009

Modeling and Rigging Quad Bike

Very brief explanation ("making-of" style) in this tutorial by Ali Ismail.

Monday, November 23, 2009

The Digital Architect

The Digital Architect is a Scott Onstott personal web site who offers video tips and tricks (only a few of them is about 3ds Max).

Saturday, November 21, 2009


Honeycomb is a scripted geometry plug-in who create shape object (editable spline). Thanks to Steve Curley for the base idea!

Honeycomb is a level 1 plug-in, ie appears in the user interface as a new class but does not allow instances of itself in the scene, that means it's has not storable parameters. Examples of this type currently in 3ds Max are RingArray. So, this type of plug-ins can also be installed but not necessarily. You can run the script from anywhere then needed.

Some simple demo animation (Slide and Bend modifiers) using this script I show in the video below.

Friday, November 20, 2009

Sphere Array

Sphere Array is my WIP (work in progress) scripted tool for quick scattering setup. It make array of objects (as Copy, Reference or Instance) around selected source object. I include scale variation options for a arbitrariness. The video below show some quick "hair" setup.

Wednesday, November 18, 2009

Linked XForm Modifier

Quick video tutorial for beginners dedicated to Object–Space Modifiers: Linked XForm Modifier.

The Linked XForm modifier, links the transforms for any object (or sub-object selection) with a control object. You can command the control object's motion, rotation, and/or scale transforms that passed onto the object.

The Linked XForm modifier is ideal choice for animating sub-object selection.

Tuesday, November 17, 2009

Converting Hair and Fur to mesh objects

Want to know how to convert hair and fur to geometry in 3ds Max.

Watch this video (mp4 - 15729Kb)

Monday, November 16, 2009

Anatomical references

Interactive illustrations of the human muscular system by Rey Bustos.

Cloth Simulation Series

Fran Davis start a series of tutorials about Max Cloth modifier in him blog.

Sunday, November 15, 2009

Using Splines to Quickly Create Highly Complex Geometry

Using Splines to Quickly Create Highly Complex Geometry
by Laurens Corijn

In this video tutorial by professional 3ds Max artist Laurens Corijn, you will learn the ins and outs of using splines to easily create extremely complex geometry in 3ds Max. Over 5 different methods are explored, with examples on how you can apply these techniques to your own projects too. Even if you're an experienced user, you won't want to miss out on this, as some of these methods are not very well known!

Model a High-Poly Roof Hatch

Model a High-Poly Roof Hatch
by Chris Tate

"In this 2 hour long beginner level tutorial, we will explore in detail the entire process of building a high-poly roof hatch in 3ds Max."

Saturday, November 14, 2009

Low Poly Character Series

Ben Mathis is a CG artist working in the game industry.
Just don't miss him free video (Low Poly Character Series) and pdf tutorials.

Quick Clay Render

Quick Clay Render is a MaxScript by Liam Davis (him first script) to help you render your scene as a 'clay' style image, leaving the scene materials and all your render settings intact.

"Only downside - The actual render speed of using skylights isnt great..."

Well, there is more slow down thinks in the code (snaphot to mesh for example). The author (Liam Davis) accept suggestions on how to improve it, so I post what I have in my maind.

-- Quick Clay Render
with undo on
  geo = for g in geometry collect g -- collect geometry
  sha = for s in shapes collect s -- shapes as well
  join geo sha -- join shapes
  clay = standardMaterial diffuse:white shaderType:1
  geo.material = clay -- assign mtl at Once (without loop)
  sun = Skylight castShadows: true enabled: true
  floorplane = plane lengthsegs:1 widthsegs:1 length:10000 width:10000
  select geo
  floorplane.pos.z = $.min.z -- easy Z align
  floorplane.material = clay -- assign mtl to the plane
  useEnvironmentmap = off -- turn off
  backgroundColor = white
  renderers.current = Default_Scanline_Renderer()
  max quick render
max undo
-- end

Friday, November 13, 2009

Grab Hierarchy

Grab Hierarchy is a script to selecting whole heirarchy by picking one belonging object. Similar to Sergo's Pick Hierarchy script but simplified code.

How to use: Use CTRL & ALT keys to add/remove objects to/from current selection. Right mouse click to stop picking mode. Optionaly you can install the script as macros (read a comment in the file).

More details and download here.

Quick Mask v.1.1

Another minor update caused by suggestion in the Scriptspot forum.
Added copies a bitmap to the clipboard (AVG extensions needed for Max version < 2008)

More details as usual here.

Tuesday, November 10, 2009

3D Lessons

3DLessons is a large assembly site for free 3d tutorials including 3ds Max.

Monday, November 9, 2009

Random Material

A new forum topic "Random material to random object script" started at ScriptSpot about applying random materials to objects through MaxScript. Read more here.

Select Vertex Cross-section

Select Vertex Cross-section is actual update on my script with old name "Select Vertex Loop". Saving settings is a new feature which was requested in ScriptSpot forum. More details and download here.

Sprite Buffer v.1.1

Another update of my Sprite Buffer
(an utility to compare frames like as into Maya).

New AutoAppend function (to easily render animated sprite sequences) was local, now fixed. Also added checkbutton to turn on/off AutoAppend.

More details and download the script here

Sunday, November 8, 2009

Revealing models over time

Louis Marcoux has posted some cool video tutorials for animators on his blog showing various techniques for revealing models over time (using animated gradient masks, Pro-Booleans, PFlow, Loft, Reactor & Maxscript).

Reveal with Masks
In this video, you'll see how to use materials and animated gradient masks to make object draw themselves on the screen.

Reveal with Pro-Booleans
Here, you'll see how to use Pro-Booleans to animate subtractions on objects to make them appear on screen. With Pro-Booleans, UV Maps and materials are preserved on cut surfaces which allows very interesting cut effects as the objects reveal.

Reveal with Loft Objects
Loft objects have deformations curves that can be animated. In this video, you'll see how to animate the loft curves to make them draw progressively on the screen.

Reveal with Reactor and Time Distortion
In this video, you'll see how to cut an object in fragments, simulate their breaking in Reactor and reverse the animation to make the objects construct themselves for their debris.

Reveal with Pflow
See how particles can attach themselves to objects when they find them. If the particles are flying around and then stick to hidden object, the objects start to appear. By mixing visibility with particles, you can create very cool effects of object appearing from flying dust.

Reveal with Max Script - Part 1 : Offset
First part of a series of script techniques that will end with animated objects all falling into their final position with a simple button click. This video covers the basics of moving objects with Max Script.

Reveal with Max Script - Part 2 : Rotation
This one covers local rotation with Max Script.

Reveal with Max Script - Part 3 : Animation
This one covers the basics of animation keyframing with Max Script.

Reveal with Max Script - Part 4 : Visibility
This one shows how to animate visibility with Max Script.

Reveal with Max Script - Part 5 : User Interface
This one shows how to build an interface for the animation tool that we have developed in the previous videos.

Reveal with Max Script - Part 6 : Ordering Objects in Arrays
This one is an extra scripting technique where you can learn how to reorder elements in an array based on certain conditions. It will be helpful to animate blocks of objects based on their relative position.

Fake or Foto?

Interesting test. Take a reality check...

Autodesk Support Tutorials

In Knowledge Base section of Autodesk 3ds Max Services & Support was added a few short video tutorials, but on very very beginners level and they are quite incomplete.

Here is the list:

Friday, November 6, 2009

Attach Mesh by Material 1.2

An light update on my maxscript Attach Mesh by Material. Recently I was asked via email to make the script compatible for 3ds Max 9. It works with versions below 2008 through AVG extensions, but why not... the trick is simple -- just to replace function appendIfUnique() (which was added in Max 2008) with function findItem() , so I upload new version (1.2). Enjoy

Wednesday, November 4, 2009

TraptCG tutorials

I have hard and busy weeks, so maybe I'll slow down update on the blog for a while. But there is what I found --

TraptCG is a free on line video tutorial site offers video tutorials for 3ds Max.

Monday, November 2, 2009

Tutorial Hero

Tutorial Hero is another tutorial's source which include large section for 3ds Max.

Sunday, November 1, 2009

Xoliul Viewport Shader

Full title:
Create Beautiful Realtime Renders Using the Xoliul Viewport Shader in 3ds Max

In this video tutorial, specifically made for game artists working with 3DS Max, Laurens Corijn will show you how to use his ever popular Xoliul viewport shader to display your work in realtime, and also how to set up fancy viewport effects such as shadows and SSAO. Apart from being a more correct way to display your videogame art than standard software rendering, this method is also much faster to set up and get your work looking good.

You can download a copy of the shader from Laurens' website at:

Saturday, October 31, 2009

Football Ball Maker

After many modeling tutorials about how to make football ball, today come MaxScript to do this in secs.

Thursday, October 29, 2009

Rolling Dice

A very simple "How To" tutorial for beginners
to quick modeling dice and animate it in reactor.

Tuesday, October 27, 2009

Go With The Flow

Go With The Flow is the section of Boboland web site which provides some additional tutorials related to the Particle Flow Extension for 3ds max 5.1 and MAXScript. These examples are in a format similar to the "How To" and Particle Flow examples found in the MAXScript Online Help and might be included in future versions of the Online Help.

I recommend Borislav's PF tutorials for everyone who want to learn Particle Flow in depth.

Sprite Buffer update

I was wrote a script (Sprite Buffer) by user request to add in 3ds Max frame buffer feature similar to existing in Maya. I don't plan to extend or update this script, but today David Svantner send me him modified version of my script which add Autoappend function using postRenderFrame callbacks to can easily render animated sprite sequences. I attached it right now as is to be available for downloads, but when i've got more free time will modify it to work with checkButton instead of popup dialog for convenience with turn on/off Autoappend.

Links: Forum post My version Modified version

Sunday, October 25, 2009

Links changes

Maybe there is nothing to worry about last ScriptSpot maintenance changes. Accidentally the admin start moving my scripts first. Let's hope it's true. For now I'll slow down my contribution out there.

There is new URL's for 5 of main scripts which moved:
Step Pyramid:

Friday, October 23, 2009

Upside down

This making-of by Mathias Koehler is intended for intermediate users. In page 5 tutorial refer to a script called ''MousePlanter'' written by Roger Hyde. It allows you to paint objects on the surface of others in a very intuitive way. The downloads link out there is dead, so here I found it.

Anatomy References for Artists is a source for human anatomy references for 3D and traditional artists. is another good source site for free 3d models (.3ds, .max).

Thursday, October 22, 2009

Future City

Modeling tutorial with good rated stats, which requered Greeble plug-in. At least important notes added: "There will be millions of polygons and dozens of lights to render. I’m using 4-core Intel processor with 4GB of RAM and my 3DS Max crashed several times before I made the entire scene and managed to render it."

Conclusion - nothing "awesome" here, waste of time :/