Thursday, December 24, 2009
Wednesday, December 23, 2009
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 offer a very nice CG education section on him web site and of course he still update it.
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
Sunday, December 20, 2009
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)
d.transform = i.transform
d.pos = i.center
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 (
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 = i.center
P.S. -- Ultimately I decided to update the script and upload new version (0.2) at ScriptSpot.
Friday, December 18, 2009
-- 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
Tuesday, December 15, 2009
Sunday, December 13, 2009
Friday, December 11, 2009
Tuesday, December 8, 2009
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 TurboSquid.com (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
Tuesday, December 1, 2009
This is the forum topic into ScriptSpot.com (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:
...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
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.
Friday, November 27, 2009
Wednesday, November 25, 2009
Tuesday, November 24, 2009
Monday, November 23, 2009
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
Wednesday, November 18, 2009
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
Monday, November 16, 2009
Sunday, November 15, 2009
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!
Saturday, November 14, 2009
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
floorplane.pos.z = $.min.z -- easy Z align
floorplane.material = clay -- assign mtl to the plane
useEnvironmentmap = off -- turn off env.map
backgroundColor = white
renderers.current = Default_Scanline_Renderer()
max quick render
Friday, November 13, 2009
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.
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
Monday, November 9, 2009
(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
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.
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:
- How to render a spline or other 2d shapes
- How to make an object grow and deform along a path
- How to create a glow around objects in 3ds Max
- How to create a glow around a light in 3ds Max
- How to animate an object along a spline using Path Constraint
- Controlling the appearance of ProMaterials: Solid Glass material
Friday, November 6, 2009
Wednesday, November 4, 2009
Monday, November 2, 2009
Sunday, November 1, 2009
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
Thursday, October 29, 2009
Tuesday, October 27, 2009
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.
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
There is new URL's for 5 of main scripts which moved:
Step Pyramid: http://www.scriptspot.com/3ds-max/step-pyramid
Friday, October 23, 2009
Thursday, October 22, 2009
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 :/