Pages

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

3DKingdom

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.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 (
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 = i.center
)

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

Friday, December 18, 2009

whether tutorial-index.com is still alive?


Accidentally I stumbled on this site (tutorial-index.com) 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).

SOME EXAMPLES:

-- 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".

FOR EXAMPLE:

-- 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


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


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

WireFence


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:
http://www.scriptspot.com/3ds-max/wirefence

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 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:

Bus_Controller_01
--> Bus_Collider_01
-->Bus_Graphic_01

Bus_Controller_02
--> 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

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

For more read the original forum topic.