Showing posts with label 3ds Max 2011. Show all posts
Showing posts with label 3ds Max 2011. Show all posts

2011-03-03

Issue in mia_envblur in 3ds Max

An issue has been found in the "mia_envblur" shader as it is integrated into 3ds Max. (Read more about mia_envblur here)



Autodesk has added a Phenomenon wrapping the shader, and it was just discovered there is a typo in the Phenomenon declaration, that causes one of the parameters to not actually function. The blur still works - but only with a fixed level. The checkbox for inheriting the blur from the Arch&Design material is non-functional!

You can easily fix this yourself by opening a file named "architectural_max.mi" which in the path: <3dsmax>\mentalimages\shaders_standard\mentalray\include.

Opening the file you can search for a line which reads like this:

"mia_material_blur" = interface "not m.mia_material_blur",

Edit this line to read:

"mia_material_blur" = interface "m.mia_material_blur",

...i.e. removing the "not ".

Now, all parameters of your environment blur (including inheriting blur from the Arch&Design material) should work!

Also, some people report issues with flickering in the reflections. This can be caused by two things:
  • Too low resolution in the Envblur shader. The "resolution" value need to be high enough to resolve details in the original environment map.
  • Intermittent interaction with the "blur" feature in 3ds max "Bitmap" shader. Turn down the blur in the Bitmap shader (in the "Coordinates" rollout) to lowest possible, which should resolve the problem.


/Z

2011-02-04

The Great Directory Migration - putting stuff in 3ds max 2011 (and newer)

I apologize that this blog post is way overdue.

What's this about?
All over the net (including this blog) you can find instructions in how to add various shaders to 3ds Max, by putting files in certain directories in the 3ds max directory structure, namely a "mentalray" directory (with various subdirectories) under your main 3ds max directory.

Nowdays, there are two things to watch out for:

GOTCHA #1: 64/32 Bitness


First is 32 vs 64 bit. In windows, programs on a 32 bit machine live under a directory that (on an english speaking computer) is called "C:\Program Files\" 

This is also true for 64 bit programs on a 64 bit computer.

However, for 32 bit programs on a 64 bit computer the directory is called "C:\Program Files (x86)\" which may throw you off.

GOTCHA #2: 3ds Max 2011 (and newer)


When Autodesk introduced the MetaSL framework in 3ds Max 2011 (which means that shaders are not necessarily mental ray shaders per se) having a subdirectory to your max directory called "mentalray" doesn't really make sense any more. But since these both are mental images technologies, having a directory called "mentalimages" does make sense.


The change was made such that instead of a single "mentalray" directory under which the three categories of shaders (standard, autoload and 3rdparty), there is now instead a "mentalimages" directory. The three categories exist under this directory, similar to before.

However, under those three directories, the distinction between "mentalray" and "MetaSL" shaders has been added.

Under those you find various other subdirectories - which under the "mentalray" subdirectory hence includes the good old friends the "include" and "shaders" directories.

Example:

To add an .mi file like for example the skinplus.mi (a mental ray "include" file) shader to be automatically loaded on startup, you want it in the "include" directory under the "autoload" category.

In 3ds Max 2010 (or older) this would have been:
  • C:\Program Files\Autodesk\3ds Max 2010\mentalray\shaders_autoload\include
In 3ds Max 2011 (and newer) this would instead be
  • C:\Program Files\Autodesk\3ds Max 2011\mentalimages\shaders_autoload\mentalray\include

Basically, the translation would be that
  • C:\Program Files\Autodesk\3ds Max 2010\mentalray\shaders_<category>\<dirname>
becomes
  • C:\Program Files\Autodesk\3ds Max 2011\mentalimages\shaders_<category>\mentalray\<dirname>

I hope this helps installing various shaders and other goodies in 3ds Max 2011 and beyond.

/Z

2010-08-23

More about MetaSL in 3ds Max 2011

Aloha again!

Sorry for not making a proper "post SIGGRAPH post", but I've been "post SIGGRAPH busy". And as always, me being Busy, means good things for you all.... in the future. :)



I've gotten a ton of questions about MetaSL in 3ds Max, and since the public beta mentioned in a previous post has now been discontinued (you can still use the 30 day trial if you like it will time out approximately the same time that the public beta would have timed out anyway), the interest in "what was the app actually doing and can I do it myself" has increased.

So let me explain the process 3ds Max uses to load/use a MetaSL shader:

Max uses configuration files located in the <3dsmax>\mentalimages\shaders_standard\MetaSL\Config directory to define how it works.


First there is a file in this directory named MaxMetaSLNodeTexmap.tbx. This file contains entries of which MetaSL shaders are shown in the MetaSL section in the Slate material editor.

By default, only a handful of shaders are actually in this file, but anyone can open up this file and add new entries for any of the standard MetaSL shaders that ship with max (and all the shaders in mental mill are included in this set).

So by adding a line like, for example


<palette_item type="node_class" node_class="generator_blend_ramp" image="conversion.bmp"/>


...will make the standard shader generator_blend_ramp visible in your Slate "MetaSL" toolbox! (NOTE: You must add it before the closing "<palette/>" line)



That's fine for "standard" shaders, but what about adding your OWN shader?

Well, when max is looking for a MetaSL shader name (technically, a MetaSL class name), it rummages through the file NodeToMsl_MappingTable.xml in that same directory.

This file contains entries similar to these:


<Item ClassName="Color_contrast" XMSLName="color_balance.xmsl"/>
<Item ClassName="Color_gamma" XMSLName="color_balance.xmsl"/>
<Item ClassName="Color_saturation" XMSLName="color_balance.xmsl"/>


This links a class name ("Color_contrast" for example) to a file that needs to be loaded to define that class name ("color_balance.xmsl" in that case).

If we further look into the file "color_balance.xmsl" (which lives in the <3dsmax>\mentalimages\shaders_standard\MetaSL\XMSL directory), we will find it consists only of this line:


<root>
<metasl_code file_name="color_balance.msl"/>
</root>


What we see is that this file simply loads the "color_balance.msl" file (which lives in the <3dsmax>\mentalimages\shaders_standard\MetaSL\MSL directory). Now this XMSL file could have defined a whole phenomena of it's own (of the desired class name), but in this case it didn't... it simply deffered to say "nah, to find that class, just load this MSL file, it will defined that class".

And if we were to open up "generator_blend_ramp.msl" we will find some shader code that indeed defines this shader.


So, to add our OWN shader, all we need to do are the following steps. Assume we have a simple shader that multiplies two colors, like this:
shader mul2colors {
  input:
    Color A;
    Color B;
  output:
    Color result;

  void main() {
    result = A * B;
  }
};

#1: We our shader code in a file in the <3dsmax>\mentalimages\shaders_standard\MetaSL\MSL directory in a file named multi_two_colors.MSL

#2: Create an XMSL file in the <3dsmax>\mentalimages\shaders_standard\MetaSL\MSL\mult_two_colors.xmsl that simply reffers to the MSL file, using the simple format above, e.g.

<root>
<metasl_code file_name="mult_two_colors.msl"/>
</root>


#3: Add an entry in the <3dsmax>\mentalimages\shaders_standard\MetaSL\Config\NodeToMSL_MappingTable.xml file for the new class, mapping the shader name ("mul2colors") to the .xmsl file name ("mult_two_colors.xmsl")

<Item ClassName="mul2color" XMSLName="mult_two_colors.xmsl"/>


#4: Finally, make it visible by adding it to the 3ds Max MetaSL Slate toolbox by adding a line to the <3dsmax>\mentalimages\shaders_standard\MetaSL\Config\MaxMetaSLNodeTexmap.tbx file (prior to the closing "<palette/>" line:
<palette_item type="node_class" node_class="mul2colors" image="conversion.bmp"/>

Note: The name of the bitmap isn't important since 3ds Max creates it's own bitmaps by actually running the shader w. it's default parameters to generate the toolbox icon.


Hope this makes sense?

ALSO, DO NOT FORGET that my FXPHD class is still running... we're in the week 5 "break week" currently. There is still time to sign up (FXPHD allows signups up until the 8:th class week). So be there, or be hexagonal! ;)


/Z