Menu Close

SuperClayMode v1.1

superclaymode

 

Download : SuperClayMode

 

Some background information about the new viewport override

3dsMax 2017 introduced the new viewport material override. As you cans see from viewport menu, there are three override modes.

viewportmaterialoverride

UV Checker

This mode uses self illuminated Standard material with UV Checker map.
This material is defined by uvchecker_override_material.ms script.
This files is in [maxroot]\scripts\Startup\ folder.
Usually C:\Autodesk\3ds Max 2017\scripts\Startup\uvchecker_override_material.ms
In that file, you can see the script is using [maxroot]\maps\uvwunwrap\UV_Checker.png.
Therefore, if you want to change the texture of the default UV Checker, you can 1)edit startup script or 2)replace the default bitmat file.

Fast Shader

This a specially designed build-in shader for faster viewport display. “Performance” mode preset is using this shader overide.

Rendering Setting

This is a mode for custom override shader.
You can use any material for viewport override by using this maxscript.

nitrousgraphicsmanager.OverrideRenderSettingMtl = yourMaterial

SuperClayMode is a script which mimics built-in clay mode with custom matcap texture by utilzing this Rendering Setting mode.

This script makes a ShaderFX shader with matcap uv on the fly and assign the material as override material and turn on Rendering Setting mode. It is designed as a toggle mode. Therefore, you should make button or assign shortcut for this script.

If you want to know more about matcap. Check the following links.

http://wiki.unity3d.com/index.php/MatCap

https://pixologic.com/zbrush/downloadcenter/library/

This script doesn’t contain any matcap material. You can easily search google for texture.

How to use
  1. Unzip the downloaded file
  2. Just drag and drop to viewport.
  3. Go to Customize User Interface. You will see SuperClayMode in csTools category.
  4. Make button or assign to shortcut.
  5. Run script while pressing SHIFT. It should open matcap file selection dialog.
  6. Choose a matcap texture.
  7. Toggle the button/shortcut.

When you assign matcap texture, it stores the file path in plufcfg. You don’t need to assign texture every session.

MCG : Tubo shape object

Download MCG : Tubo spline object

This MCG shape allows you generate smoothly connected spline between two objects with sagging option.  You can animate start/end object. Tubo will dynamically connect two objects while trying to keep the overall length of spline.

tubo_UIThe core engine of this MCG is hermite interpolation. This is an way to interpolate between two point using the position and vector of each point. MCG provide Hermite node by default. So I just needed to make an way to defined those 4 numbers.

Using this MCG is very easy. Just create this MCG(Create panel > Shapes > Max Creation Graph > Tubo). Then assign start and end object. Num of Vertices will determine how many verts will be created.

This MCG will try to keep overall length same. But, it doesn’t have any mathematical function to ensure the same length. Most of time, it will look OK. But, if you are seeing too much of length change, you can animate Length value to compensate.

You can choose which axis would be the direction of tube. Check Flip checkbox if you want flip the axis. You can also offset the start/end point with Start Offset/End Offset. If you check Create Offset Segment. the segment between original point and offset point will be created.

If you increase Start Tension/End Tension value, the spline from the point will look more rigid. This value is actually the multiplier for incoming/outgoing vector for hermite interpolation.

If you want to add sagging effect, increase Sag Amount value. I originally tried to use caterary curve. But, it didn’t look good since our spline is not free hang. So I used built-in affect region function which you use for soft selection control. That’s why there are Bubble/Pinch values. Even though I expose this parameters, I don’t recommend to change

By default, the sagging direction is set to world -Z. But, you can use any direction by using Gravity Ref. Object.

 

MCG : oneMesh object

Download MCG : oneMesh

This MCG object let you combine multiple object as one mesh while keeping animated transformation and deformation.

oneMmesh_UIYou have two methods to choose the object to combine. I’ll call it, Source Objects.

The first method is selecting Source Obj Tree Root. If you choose an object, all descendant of selected objects will be used as source objects. You can have non-mesh object in the hierarchy. The MCG will filter out non mesh automatically.

!!! This methods doesn’t support deforming mesh !!!

The second method is manually selecting objects by Add Item/Remove Selected button.

You can use both methods at the same time. Any object chose by either methods will be used.

Another feature of this MCG is that you can define local space origin and orientation with Local Space Ref.Obj. What? I know it sounds confusing. Let me explain.

If you don’t choose any object as Local Space Ref.Obj, the position of this MCG object becomes the world origin for combined object, and the orientation of this MCG object will defined the world axis of combined object. Therefore, If you make this MCG object at world origin without any orientation, the combined object will be exactly overlapped with source objects. If you transform this MCG object, the combined object will be offset as much as this MCG transform.

But, if you choose an object as Local Space Ref.Obj, the transform of the object will defined the origin position and axis orientation. In the vimeo video, you can see what happens if you choose the point helper which is projected from Bip001 object to ground as Local Space Ref.Obj, The combined mesh animation is happening around the helper object.

The last option is Use Src Obj Tree Rool. If you check this checkbox, the object which is used for Source Obj Tree Root will be used as Local Space Ref.Obj, too.

csWorkPlane 1.52

This is a collection of macro script relate to construction plane. It started as an implementation of Modo’s work plane. It includes the following four scripts.

Download csWorkPlane 1.52

 

1.52 UpdatecsWorkPlaneUI

First of all, Special thanks to Fausto De Martini for all great feedback.

LockWorkPlaneToView

It is similar to LockWorkPlaneToOrigin except this aligns construction plane to view.

Place Grid

autoAutogrid renamed as Place Grid

csWorkPlaneUI

a small floating dialog for csWorkPlane funtions. It is dockable. To undock, just rightclick any button.

 

PlaceGrid(autoAutogrid)

It allow you create a grid object. After the grid is made, the grid will be automatically activated, and all transform coordinates will be set to Grid.

The core functionality of this script has been in 3ds Max for long time. AutoGrid, Grid object, Grid coordinate. I just make more streamlined workflow.

If you want to go back to the default coordinate, Run this script again while pressing SHIFT.

LockWorkPlaneToOrigin

If you turn on this mode, the plane which face to camera will automatically become the construction plane.

If you want to go back to the default coordinate, Run this script again while pressing SHIFT.

AlignWorkplaneToFaceSelection

1) Select an object

2) Select face(s)

3)Run this script.

This script will make a grid object at the center of face and activate it. The ZAxis will be aligned to face normal.”

RemoveWorkPlane

Turn off workplane by deleting the workplane from the scene. It is same as SHIFT+LockWorkPlaneToOrigin

 

How to install

1) Unzip!

2) Just drag and drop csWorkPlane_1_52.ms into viewport.

3) Make button or shortcut.  This script will show up in “csTools” category.

 

MCG : QuadScatter 1.5

quadScatter15teapot

QuadScatter MCG modifier is updated to 1.5 with 2 new functions.

Download : QuadScatter 1.5

A lot of peoples seems to think QuadScatter as just fancy “Greeble”. But, it does more than that. You can make wire fence, woven fabric, brick walls, bullet belts and etc. The newly added option will be useful for those things.

Follow Normal – this option will use original vertex normal when this MCG deforms object. If you want to weld togrther the cloned objects, turn on this option.

Place Guide ID – You can defined which portion of mesh would be aligned to quad. If you turn off this option, the bounding box of the source objects will confom to quad. Therefore, the entire object will be always inside of quad. If you need to have certain parts at the outside of quad, use this option. The faces which has defined ID will be use as guide to conform to quad.

Delete Place Guide – if you don’t need to keep the guide faces, turn on this option.

Original QuadScatter post.

MCG : QuadScatter

FFmpeg plugin for 3ds Max 2015-2017(mp4/dpx decoder)

3ds Max magician Qinming released a free FFmpeg reader plugin for 2015-2017.

Basically you can read any image/video that FFmpeg supports directly in 3ds Max as background or map. For example, mp4, dpx and jpeg2000. Yes, finally you can read dpx!

More importantly, 2016 and 2017 version supports image cache option. You can play image sequence in real time. I tested with HD(1920×1080) resolution dpx sequence on my PC, i7-2600K with GTX 960. When cache was off, I got 6.4fps. When cache is on. I got 31.2fps!

Josef Wienerroither posted a great demo video on YouTube. Must visit!

Qinming included a detailed readme file.Therefore, I would not repeat how to install and things here.

Here is a few important things to remember.

Only FFVideo Plugin supports image cache. If you want to cache image sequence. You have to use IFL2 format. IFL2 is exactly same as IFL. Qinming just uses this extension to show a different setup dialog.

IFL2 also give us a very important benefit. IFL2 allow user read other natively supported format like jpg through this plugin. Why is this important? Let’s say you want to cache jpg sequence for your background. 3ds Max will try to read jpg using native jpg reader/writer. If you remove the jpg reader/writer bmi, you can make this plugin load jpg, But then you can’t write jpg since this plugin only read image files. So… if you want cache jpg sequence. just make IFL2 of jpg image sequence. Then this plugin will be used to read the jpg sequence instead of max native jpg reader.

The easiest way to make IFL2 file would be just making IFL as usual with Sequence checkbox and rename it.

sequence

Set Display Performance resolution same as image size. If you put smaller number, 3ds Max will try to rescale image which slows down play back.

displayperformanceapture

If you turn on Gamma in 2016, the playback will be slower. 2017 is OK. The Gamma problem is fixed in 2017 by Qinming.

FFmpeg plugin for 3ds Max 2015/2016:
Link1: https://www.dropbox.com/s/zqwymzuoz…eg2015.rar?dl=0
Link2: http://7xt4sg.com2.z0.glb.clouddn.com/ffmpeg2015.rar
FFmpeg plugin for 3ds Max 2017:
Link1: https://www.dropbox.com/s/kpc7vjvx6…eg2017.rar?dl=0
Link2: http://7xt4sg.com2.z0.glb.clouddn.com/ffmpeg2017.rar
This plugin requires FFmpeg 2.8.6 LGPL library, download from here:
Link1(Official):https://ffmpeg.zeranoe.com/builds/w…pl3.0-opencl.7z
Link2:http://7xt4sg.com2.z0.glb.clouddn.c…pl3.0-opencl.7z

3ds Max 2017 – Fastest 3ds Max Ever

In 3ds Max 2017, there are a lot of performance improvements in may area.
I think It is the fastest 3ds Max ever.

  • Viewport is faster than ever in many cases. Selecting and manipulating sub-object is also a lot faster.
  • UV Editor is totally rebuilt with DirectX which is a lot faster and can handle bigger mesh.
  • TrackView also perform better and stable.
  • Now you can use alembic performance mode for any object and have an option for force cache.
  • Many unnecessary evaluation problem is fixed. For example, if object is hidden/frozen/display as box, the applied material would not be evaluated.

Here is some benchmarks numbers to show how much 3ds Max is faster than the previous versions.

 2012201420162017
Deforming Mesh6.932.045.495.3
HiRes Transform Anim25.017.920.027.7
Static Many Object3.83.93.714.8
Production Scene1.03.13.25.1

All numbers are fps. The fps number is measured by script. It is not from viewport statistics.

Deforming Mesh

This scene has 4 point cached characters.
4objs / 142k verts / 283k Faces.
Thanks to the brand new GPU mesh builder in 2017, 2017 is 1,300% faster than 2012.

HiRes Transform Animation

This scene has an animated hires rigged rigid mesh robot.
800 obj / 9.1mil verts / 18mil faces.

Many Static Objects

I made a 10+ buildings with Building Generator script. It has more than 20,000 low-res statics objects.
20,000 obj / 2.2mil verts / 3.2mil faces
You can see 400% performance improvement

Production Scene

One of sample scene file from Blur which is included in Brandon Young’s DVD.
Four point cached hires character and baked transforms.
106 obj / 407k verts / 791k faces
You can see 500% performance improvement compare to 2012.

MCG : QuadScatter

Download MCG : QuadScatter

quadScatter

QuadScatterUIThis MCG modifier allow you scatter object on quad polygons.

“Quad polygon” is determined by QuadThreshold value. For each polygon, this MCG will remove the vertex if the angle between two edges of the vertex is small than QuadThreshold value(degree). After that, if a polygon has 4 vertices, that is “quad polygon” to use.

As you can see in UI, this MCG has 3 set of the same controls. You can use 3 different source objects for each  Material ID. IF you need more, you can apply this MCG multiple times. OR.. you can modify this MCG and add more sets which is actually not that hard to do.

When you assign object, if the object has any descendants, this MCG will choose the one of them randomly. If you want to change the randomness, change the Seed number.

Delete Original Faces will decide what to do with quad polygon. If your scattered object is cover quad entirely, you can use this checkbox to delete the original faces.

Rotate allow you rotate the scattered object. You can only rotate 90x degree. 1 = 90, 2 = 180, 3 = 270. If you check Random, this MCG will rotate scattered object randomly.

You can also adjust height with Height spinner. 1.0 means original height. If you want to randomize height, use Var. spinner. This is an offset value. So… if your Height is 3 and Var. is 1, you will get height between 2(3-1) ~ 4(3+1).

By default, the height/width ratio of scattered object is preserved. This means the height of each scattered object will be different. If you want to make all scattered object’s height. Turn on Constant Height.

The last option, Dir.Guide UV is the UV channel ID which is used for determining scttered object direction. IF you turn on this option, U direction will be used to guide X axis of the scattered object.

This MCG is still WIP. I haven’t done any optimization, and I have a few more features to add.

I hope you enjoy it!

 

For the scatter source, check this Greeble Packs from Wayne Joes (jedilaw)

In the video, I used pacl2.

scifi3d.com/details.asp?intGenreID=11&intCatID=52&key=644

 

3ds Max 2016 SP3 MCG performance improvement

Today Autodesk released 3ds Max 2016 SP3.

This SP also brings us two big MCG performance improvement.

  • Mesh related MCG oerformance is 300%-800% better.
    Here is a small benchmark number in fps.
    Thanks to Denis, I have cloneOnVerts maxscript vertion, too.
    The maxscript version runs at 4.4fps
 2016SP3%VertsFaces
LimitedPush.max1.123.43306.292,708185,408
cloneOnVerts.max1.207.03585.8153,458296,512
extractDeltas.max5.2218.43353.330,60360,000
spherify.max1.705.43319.860,002120,000
twist.max1.806.56363.960,002120,000
voxelizer.max1.303.73288.164,00096,000

 

  • MCG now only evaluates the graph when there is a change.
    This bug fix bring a big performance boost for static MCGs.
    My MatID_Swap modifier test on 120, 000 faces runs at 91.2fps instead of 1.8fps.

 

** I found a error for cloneOnVerts and corrected it.

MCG: Trajectory Constraint Rotation Controller

Download MCG: Trajectory Constraint Rotation Controller

TrajectoryConstraintUITrajectory Constraint causes an object’s orientation to follow the trajectory(velocity vector) of a target object. For example. when you animate a car, the rotation of car would be defined my the direction of car movement.

Many of you probably know how to rig this with Script Controller and Look At Constraint. I just took the idea and implemented as MCG.

How to use this constraint is simple. Just assign as an rotation controller and pick Motion Target object.

When you assign Motion Target, this MCG will ask you if you want also constraint position to the Motion Target. You will probably need to say yes unless somehow you only need to have orientation.

This MCG also shows a good example of a benefit/advantage of MCG. This MCG is actually just a modified version of the new MCG_LookAt Constraint. I just replaced multi target list with a pick button and added a simple velocity calculation from Motion Target nodes. I did not need to reinvent all the parameter for upload. MCG allows you to easily modify/enhance someone’s MCG for your need. This is a big benefit.

One thing you need to know is that when you assign Motion Target node MCG will do the following things.
1) Assign Motion Target node as upnode
2) Turn off World from Upnode Settings
3) Set Upload Control as Axis Alignment.
4) Source Axis and Axis Aligned to Upnode as Z

What is does is letting you define up axis with the Z axis of Motion Target node.
Usually users uses just World Z as up axis. But, this can cause problem(flipping) when your object is moving vertically very close to World Z axis. To prevent flipping, you need to manage up ax, and I think this option is the best for that.

But, if you need to use other setting, then you can always change later.