3dsMax 2019.1 has been release with many improved features.

Many new features has been added to Alembic/OSL/Fluid/Arnold. Python and Project got some improvement. Plus 94 fixes.

One of the item among “Bringing your ideas to life in 3ds Max 2019.1 Update” was “Attaching large amounts of meshes is up to 7 times faster”.

So, I decided to test if it is true. The enhancement was done for Collapse utility. I think 3dsMax dev choose to enhance this because this is the only attach which keeps explicit normals.

I test total 4 files. I open the file and attach all geometries.
The result is… drum roll…

05_TM_manyLowRes

Obj:5616 Verts:99,686 Faces: 165,505
2019 : 3.335s
2018 : 32.724
9.81 times faster

08_Static_Many
Obj:19913 Verts:2,264,540 Faces: 3,265,430
2019 : 11.2s
2018 : 2236s
199.35 times faster

bistro
Obj:2429 Verts:2,766,360 Faces: 3,850.480
2019 : 9.5s
2018 : 546s
57.23 times faster

EmeraldSquare
Obj:29596 Verts:9,065,430 Faces: 7,722,170
2019 : 274s
2018 : 19980s
72.95 times faster

It is actually far better than 7 times!

One of the hidden gem of the new 3dsMax 2019 feature is the Custom Scene File Data Streams. This allows uses attach custom strings to your max and access from outside of 3dsmax. It is not only eliminate the need of companion external file for such data but also opens up accesing of .max file related data to any program or language.

For more details, check the help.

To show the power of this feature, I made a sample implementation of this feature. csMergeBy script. It allows users to merge object from other .max file by Layer, SelectionSet, ObjectID and Material name.

Download CsMergeBy 1.0

There are 2 files in the zip file. The first one is csMergeBySave.ms which registers post save callback to save the scene data as xml and write to Custom Scene File Data Stream. You need to drop this into your startup script folder or one of plugins folder to run this script automatically everytime when you launch 3dsMax.
For exmaple, C:\Users\[username]\AppData\Local\Autodesk\3dsMax\2018 – 64bit\ENU\scripts\startup

This script would increase file saving a littlt bit. When I tested it, it took 0.1 sec for for 1,000 objects. BUT, I also have an extreme case of 29,769 objects which add 4.5 sec for saving. Considering the file saving itself would take some time, It was not noticable. But, I still want to give you heads up for the possible saving time increase.

The second file is csMergeBy.ms. This is actually a macro script. Just drag and drop this file into iewport. It will make csTools > csMergeBy action. This is the merge dialog.

How to use is simple.

  1. Select a max file which you want to merge from using the top button

2. Choose “Merge By” method from dropdownlist. You can use…
Layer – with hierarchy
Layer – no hierarchy
SelectionSet
ObjectID
Material name

3. Choose items in the left list. You can CTRL+click to select multiple items. CTRL+click also deselect item.

As you choose item in the left list. Preview object list will be updated.
By default, all objects in the preview will be selected. But, you can only select the objects you want.

If you have a lot of objects(1000+), it might take a while to update the object list. Then you cah turn off Preview object names chekbox to not to show the object list. Then all objects in the selected items will be merged.

4. Then press Merge.

5. All megered object will be in “JustMerged” selection set for your convinience.

While I was beta testing 3dsMax 2019, I made a few OSL maps. Nothing spectacular. Most of them are just “artist-friendly” pre-made setups to save some nodes.

Download OSL shader pack 1 or at http://UncleBobsShaders.com. Make sure to visit Uncle Bobs Shader Emporium for cool OSL shaders!

UVW > MatCapUV

This is a renderable version of my superClayMode script. Plug into the UVW slot of Bitmap Lookup.

Value > Color by Colorspace

You can conver to a vector value of other color space to RGB.

Math\Color > RGB to Other(Color)

You can convert a color from RGB to other color space. Output value is vector. after you process it, you can convert back to RGB with Color By Colorspace

Switchers > Random Index by Number/Color

It generates random integer index by number or color input. When you need to randomize something by Object ID, Materaal ID, Node Name and Node Handle, this map will be very handy. Of course you can also do the same thing by assembing a few other maps. I just made as one map for your convinience.

Math\Float > Sine wave function of frames

You can generate sine wave of time. It supports amplitude, period, phase value and square wave option. Check my sample animation. This map is very handy when you need to make some cyclic map animation.

!!! You DON”T need to connect Frame Number input. It already has float expression controller assigned. !!!

Scene > Normal

You can get normal value of pixel in various spaces.

Falloff

Falloff map OSL version. It supports Perpendicular/Parallel and Towards/Away.

BlendModel

Legacy Composite map OSL version. It supports all bklending mode in legacy Composite map. I was trying to support all Photoshop mode. But, I gave up on Vivid Light and Linear Light.

Here is a QC image that shows this map and legacy Composite map are producing the same result.

How to Install

1. Make “OSL” subfolder in any plugin folder
2. Unzip and copy *.osl files into the folder

A sample max file

Here is the shader tree for the animation. I used the distance from local center and random sin wave as the light intensity. No keyframes al all. The max file is included in the shader pack .zip file.

Alembic is a geometry cache format developed by Sony Imageworks and ILM. It is a very powerful format. It can handle animated transform and deformation(include topology changing animation). It can also have custom meta data as much as you want.

Alembic has been added to 3dsMax 2016 and developed continuously  since then. I’ll go over Alembic improvement of 3dsMax 2018 first and show what has been added for each previous versions.

But, before we jump on the improvement list.Allow me go over how 3dsMax implementation works first. 3dsMax Alembic works more like referencing system. Each object in Alembic file is imported as separate object which has two component, AlembicObject for geometry data and AlembicXform Controller for transform animation data. This allows users to edit anything after it is imported. You can apply any modifiers, edit geometry, change controller setup and delete any objects. Imported Alembic object is just like any other object. In a way, it almost like ObjectXref.

Other way of using alembic is treating the entire alembic object as one object like VRayProxy or Arnold Procedural object.This makes overall workflow simpler and easy to manage. But, you lose granular control. I think It is good to have both workflow inside of 3dsMax.The more choice is always better.

3dsMax 2019

Per object metadata export

3dsMax Alembic supported faceset(material ID) and per vertex arbirary channel from the beginning. But, it never had support for per object metadata. Now you can export per object meta data using Custom Attribute and some export options in Export dialog.

You can choose to export the following data from Alembic Export Option dialog.

  • Layer Name
  • Material Name
  • Object ID

Custom Attribute export supprts most data types like float, integer, string and boolean. It even support animated values.

BUT, Please keep in mid, Alembic format specification doesn’t have amy standard on this matter. Because 3dsMax write these data into Alembic file, it doesn’t mean that other DCC will magically read this data. User must figure out how to load this data in other DCC.

To know, how 3dsMax exporter stores these information, You can export a test Alembic file with HDF5 format and use the great tool called HDFView. This tool will show the entire structure of the Alembic file. Here is a sample screen grab.

As of now, the 3dsMax importer doesn’t support these data yet. I hope we would see the support for these meta data import soon.

 

UV/Extra Channel and FaceSet(MaterialID) name parsing

Since 3dsMax is rely on ID number for UV and Material ID. It was very challening to get consistent UV channel or maerial ID number when you import and update alembic file. At least, 3dsMax 2017 added a way to keeping uv channel and material ID number constsent between 3dsMax. Therefore, if you export from 3dsMax and import into 3dsMax, all uv channel IDs and material IDs are preseved. But, when you import an alembic from other DCC. You didn’t have any controls. It just came in the order of channel order inthe Alembic file.

Now alembic importer will check the faceset and extra channel name, and if the name is end with number, the number will be used as Material ID ot uv channel number. For example, if you name face group name as “group_7” in Houdini, the faces will get material id 7 when it is imported. THIS IS A SMPLE YET VERY IMPORTANT UPDATE!

Also when you export/import between 3dsMax, the data about the original uv channel and material ID is explicitly stored in the Alembic file instead of relying on naming convention. This makes the ID preservation between 3dsMax even more solid and allow the export the UV channel you set in 3dsMax. For eample, if you name your uv channel 2 as “the second UV“. the exported Alembic channel will have the name, “Max Map Channel the second UV

 

Option to choose what to export/Import

Now you can choose which channels to export and import. In the previous version, 3dsMax import/export everything it supported. The following image is the new import and export dialog.

Ont thing you need to know is that, there is a hidden ExtraChannels  Maxscript option for both import and export. What is ExtraChennels? For export, ExtraChannel means UV channel other than 1. For import, it is arbirary per vertex data other than UV. By default, it is on for both export and import.

This new options are also very important for troubleshooting. Alembic from a different DCC can easily have problematic data. At work, I found out that most of the crash while importing Alembic file turned out to be a bad data in the Alembic file(Especially normal and extra channel). Without this options, it was very hard to troubleshoot because you have to try to a data and export again iover and over again. Usually the normal and uv data caused the problem. Now with this option, I can just exclude some data to see whats causing problem. I can also decide not to import the problematic data instead od waiting for re-export.

Of course, this also allow to get better performance by removing unnecessary data.

Velocity Channel

Velocity channel in 3dsMax is a long story. It requires its own long post. In a nutshell, 3dsMax itself never has had the concept of velocity vertex channel at all. When you don’t even have the concept, it is abvious that the imported Alembic can not handle vertex velocity.

Finally 3dsMax dev added the vertex velocity channel support in the SDK. If the Alembic file has standard velocity(or v) channel, 3dsMax import the channel as vertex velocity channel. If you have been re-routing the v channel to extra channel. You don’t need to do that anymore.

But, this doesn’t mean that all renderers will magically start to see vertgex velocity channel. Each rednerer need to support the new velocity channel to utilize this data.

 

Vertex Color

Now you can export and import vertex color channel(uv chennel 0)

 

Subsampling

You can export Alembic file with subsampleing in the previous version of 3dsmax 2019. Butm the worklow was confusing. To export subsamples. You need to set 2 things.

  • Set Every Nth Frame less than 1.0. IF you set 0.5, you will get 2 subsamples per frame.
  • Then, you must be in tick mode. You need to set Time Display in Time Configuration dialog either FRAMETICKS ir MM:SS:TICKS

Now you dont need to turn on tick mode anymore. Also the Every Nth Frame option has been changed to Samples per Frame.

 

Option for Exporting Hidden Geo

In the previous version, 3dsMax Alembic Exporter export geometry data only for unhidden object. If your object is hidden, only transfom animator was exported. THis might make sense for some. But, it also make some users scratch their head for sure.

Now there is a Maxscript property to control this. In AlembicExport interface, .Hidden property controls this hehavior.

Here is a tip. You can utilize this behavior as a way to export only transform animation. If you want to export transform animation only without any geometry data. Turn off this option and hide all object and export.

 

Graceful warning/exit for import/export malfunction

Sometimes bad geometry causes crash when you export/import Alembic file.  3dsMax 2019 will pop-up an explanatory Alembic Export Malfunction message box and abort when the Alembic Export plug-in encounters an unexpected issue while exporting instead of crashing.

Generally 3dsMax 2019 handles geometry import a lot more stable than the previous versions. In many cases, 3dsmax importer will try to fix the problem and give you a best possible result. If Alembic library itself errors, 3dsMax will relay the error message.

Export Selected will grab only needed hierarchy.

Since alembic is designed to keep hierarchy, 3dsMax exporter is grabbing other necessary object when you Export Selected object. The problem in the previous version was that it is grabbing too much(the entire hierarchy tree). This is changed now. 3dsMax will grab only the immediate ancestors of selected object.

 

Better duplicated object name handling

If you have duplicated name object while exporingAlembic file, it can cause problems. In ideal world, user should check if they have the duplicated name objects before export. But, since that’s not ganna happen most time, 3dsMax will check the duplicated name and suffix nodel handle to make all object name unique.

 

Respect Maxscript #noPrompt option for duplicated name object handling for import

When an Alembic file is imported, you get a duplicated warning pop-up if there is already the same name object. When you use importFIle with #noPrompt option, this dialog will not pop up as it should be.

 

Alembic Container Object Icon

Alembic log shape icon insteaf of dummy for AlembicContainer object.

 

Remember dialog setting

The export and import will remmeber the last used settings.

 

Extra Channel UV Data Animation Fix

In the previous version, the Extra channel(UV 2+) animation was not imported if the channel has UV data(vertex data + face indice). It is fixed. Please do not confuse this with per vertex channel data which never has been a problem.

 

More Maxscript Exposure for AlembicImport

.FitTimeRange : bool : Read|Write
.SetStartTime : bool : Read|Write

 

Performance Mode Stabilixation

The Performance Mode in AlembicContainer has been stablized a lot. This feature is probably the most underrated feature of 3dsMax considering how poerful it is. I’ll mpost about this feature someday.

 

3dsMax 2018

 

Visibility Support

Visibility track support is  added including visibility animation.

 

.ShapeSuffixMaxscript Option for Maya

Our little precious Maya could not handle the geometry name from Alembic file properly. Therefore, 3dsMax dev had to add a solution for them. If you tuen on this option, yout geometry name will get “Shape” suffix.

 

3dsMax 2017

 

Preserving UV Channel and Material ID number

When you export and import an Alembic file between 3dsMax, the UV channel ID and Material ID number will be preserved.

 

Extra Channel Import Support integer, float, vector, color

3dsMax 2016 only supported color and vector.

 

Proper Deformation Export for Object with Spacewrap

In the previous version, 3dsMax exported the object with SpaceWarp in World coordinate. If the object is not at the root level, the object will get double transform since the deformation animation already include the animation.

 

Alembic Performance Mode for Any Object

Alembic Performance Mode cab be used for any 3dsMax geometry. In the previous version, only AlembicObject without any modifier was supported.

 

More Stable UV Loading

In the previous release, UV data loading was unstable. Sometimes UV data corrupt after user scrub time slider. User need to use Channel Info dialog to copy UV channel data and paste back to the same channel to lock the UV data right after they import thr Alembic file. This is fixed.

 

Full Maxscript Exposure for Alembic Export

All Alembic Export funcions are exposed to Maxscript.

 

Preserving Object Name

3dsMax 2016 suffix “_mesh” for geometry. Now object will be exported with unchanged name,

 

AlembicContainer Object as Dummy

 

——————————————————————————————-

OK,  that’s it. I hope it is helpful for you.

3dsMax 2019 has been released.

The most noticable feature is the OSL(Open Shading Language) map. You should watch Mads video to see what it can do. Obviously this is a god send for technical minded users. It is like MCG for maps. You can make anything. Your imagination is the limit.

But, what does it brings to the artist who doesn’t/can’t/doesn’t want to code?

3dsMzx 2019 is shipped with 101 OSL maps from bitmap loading to procedural noise, color correction and utilities. Thisbrings some interesting features and workflows. Let’s see what we can do with them.

Random By Index

You can randomize any vaule type that OSL supports by index number. For example, You can randomize gain value(float) or UVW offset(vector) or diffuse color. Anything!

Object property access

Even better, OSL map allows to access various object data such as Material ID, Object ID, Wire(frame) Color, Node Handle(a unique id per object), Node(Object) name and User properties(!). If you combine these maps with Rendom By Index map, you can randomize almost every map/material paramateres per object. Here is an exmaple. All object have the same material with single bitmap texture.

Switcher

Finally the switcher map has been arrived. This map allow you choose a map among the multiple children map. You have 1-of-10 and 1-of-5. But, you can cascade them to support more than 10.

Independent UVW control

It is like Coordinate rollout is a seperate map, and you can plugin the UVW into multiple maps. Yes, now you can instance UVW across multiple maps. Also you can also randomize UV by using the above maps. Do you want to distort UV? then apply a noise map to UVW map.

Randomized Bitmap

“Randomly place (and alpha blend) a set of bitmaps on top of something else”.
Just try it. So much fun!

Shuffling channel

You can easily shuffle channels around. Find Compoments(Color) map and connect from where you want get to where you want to put.

 .tx /.dpx format loading

OSL uses OIIO for image IO. Therefore, the image formats which supported by OIIO will be supported in OSL map. But, you can read .tx and .dpx directly.

Filename as a map

When you have a single file which is needed be used in multiple map. You can use Filename map and feed to the path to multiple Bitmap Lookup maps(OSL version of bitmap map).

Gamma checkbox in the map

You don’t need to use file dialog anymore for gamma settings. Gamma setting is in the paramaters rollout! It also has AutoGanna option which will set gamma value depends on the file format.

Samplerinfo

OSL gives you access to various scene data such as position/normal/uv. You can get this data in various space. You can use local object position or world normal vector as map. Do you want to render out UV as texture? Just plug UVW to diffuse color.

Math, Math, Math

You can do all kinds of math you want to do. Many math functions are exposed as maps. You don’t have to “code” for simple math operations. Do you want to have a black and white mask for your mountain? Let world position value and remap to 0-1. Simple.

Granular color correction

Of course, you can use any math maps to do whatever you want. But, 3dsMax 2019 also has 2 OSL maps you can use for color correction, Lift/Gamma/Gain and Tweak. This should cover all features of legacy Color Correction map.

Procedural map that renders exactly same across renderer

Many renderers support 3dsMax noise map. But, the result of the noise map could be different for the renderer which doesn’t use 3dsMax map api because they have own implementation of noise map. In this case, your rendered noise mapptern would not match with other portion of 3dsMax such as Displace modifier. If you use OSL procedurals, the render result would be exactly same regardless of renderers. This is HUGE. OSL allow to have a foundation of unified map workflow across renderers. Check out these renders. The left one is rendered with VRay. The right one is rendered with Arnold.

3dsMax 2019 come with new noise map with the follwing 6 types of new noise. perlin/uperlin/simplex/cell/hash/gabor

New pattern maps

It also has a few interesting new pattern maps.
Checker(3D), Candy, Mandelbrot, Revets, Digits

Unified and portable map tree

The biggest chanllenge of moving shader around between renderer is the complicated map tree. One incompatible map in the middle of shader tree will break the shader tree from that point. Even thiough there are enough matching maps. It is almost impossible to reuse shader tree and produce exactly the same result. With OSL, you can. As long as you stay in OSL, the result map tree will always be same just like procedurals.

Possibility of rendering on Linux

You already can convert mesh data to a renderer scene file format like vrscene or ass, rib file for rendering. But, the nature of 3dsMax renderer integretion always requires 3dsMax to evaulate map tree unless you only uses the renderer native maps. This is the main obstacle to render max scene on linux.  Now with OSL, the renderer scene file format could include all map tree in the file and render. It opens a posibility of rendering 3dsMax scene on Linux.

This is a new era for rendering in 3dsMax. Enjoy!

This MCG modifier allows you generate multiple camera projected UV with independant resolition per camera. It is essentially  a MCG version of CameraMapGemini.
3dsMax 2018+

 

Download MCG : Camera Map Multi

 

Compare to the built-in Camera Map modifier, Camera Map Mult provide the following additional features.

  • Multiple camera support up to 8 cameras
  • Resolution per camera
  • Animated camera support

How to use is very simple. Select a camera with Select Camera button. Then, set the resolution and the frame to project. If you just want to project from the current camera animation, turn on Animated. Then the Frame value will be lock to the current frame. The Frame value is animatable so you can have more control than just matching to the current frame. The last option to set is which UV channel you want to use. For your convinience, there are also Get resolution and Set resolution button to get/set reslution from Render Setup dialog.

I know it CemeraMapSemini had also a companion map. But, making a map plugin is beyond my capacbility.  But, who knows someday I might. Let’s cross fingers. 🙂

It is free as always.

A special thanks to Kelvin Zelt at Autodesk for helping me to solve the last piece of puzzle.

 

 

 

Download MaxFluidsPRTExportChannelSetup

3dsMax 2018.4 has been released today.
https://area.autodesk.com/blogs/the-3ds-max-blog/meet-3ds-max-2018-4/

One of the feature is the full BiFrost channel support for PRT export.
You can export all BiFrost channels even with custom channel names.

As of now, export channel setup is only exposed to Maxscript.
So, I made a UI for that.

You can turn on/off channels and rename channels.

Installation is simple.
Download the zip file and drag and drop to your viewport.
You can find the script in csTools > MaxFluidsPRTExportChannelSetup.
It is a macroscript so you can make button, menu or shortcut.
It will also show up in Global Search(X)

As always, it is free!

This is my second DataChannel modifier sample pack. If you have not checked my first sample pack. Please check my 3dsMax 2017.1 DataChannel modifier samples post.

I mainly focused on Maxscript operator samples for this pack. I also try some UI element samples from Clovis Gay‘s UI Toolkit.

Some of files are 2018 only becuase the file need the some of bug fixes which are included in 3dsMax 2018. If file name has 2017, it works for 2017/2018. If not, the file only works for 3dsmax 2018.

I also used Clone MCG for the some of the samples to keep everything procedural. The MCG is included in the following zip file. Please install before load the sample files.

This zip file has 10 max files.Download : 3dsMax DataChannel Modifier Sample Pack 2

ChangsooEun_DC2_MXS_animateByFaceID_A.max
ChangsooEun_DC2_MXS_animateByFaceID_B.max
ChangsooEun_DC2_MXS_ElementRandomizer_2017.max
ChangsooEun_DC2_MXS_randomFaceMatID.max
ChangsooEun_DC2_MXS_sine_2017.max
ChangsooEun_DC2_MXS_TextRevealing_2017.max
ChangsooEun_DC2_POS2UV2PO.max
ChangsooEun_DC2_UI_Levelmeter_2017.max
ChangsooEun_DC2_UI_RandomMove_2017.max
ChangsooEun_DC2_VolSelectByElement_2017.max

Have fun!

It takes a lot more time than I expected to make this MCG. Personally it was a great learning experience for mesh structures in 3dsMax. A big thanks to Kelvin and Martin at Autodesk for the new operators in 3dsMax 2018. Without the operators, it was impossible to make this.

———————————————————————————————————————

This MCG allows you to reorder vertex IDs using the proximity of the position to the vertex position of the reference object.

Download MCG : ReorderVertsByProximity

ReorderVertsByProximityYour model might look exactly same as other model. But, the internal data structure could have been changed because you export/imported the model or deleted some verts/faces and rebuilt it.

If that happens, you will have a problem when you try to use them as morph targets.

In 3dsMax or most DCC application, there is no way to “reorder” verts. What this MCG is actually doing is building a new mesh with the vertex IDs we wants.

This MCG provide 3 ways to find a matching vert.

  • Object space verts pos
  • World space verts pos
  • UV

If the pivot of both meshes are at the same place, you can use Object space verts pos. Then you don’t need to align object together. The MCG will use the position from the pivot point.

One thing you must remember is that you must ResetXform first if you adjusted the pivot of the mesh. It is because MCG returns the vertex position without offset transform applied.

If you used ResetXform or exported mesh as object when object was not at the origin, your pivot point would have been changed. In this case, you can align two meshes and use World space verts pos option.

Or… you can use UV to find a matching verts, if you have an UV information. This option is also useful for the case which you changed the shape of mesh.

The last option is Copy Topology. When this option is on, the MCG will try to match not only verts ID but also face ID and the verts indices for faces. You would need this option if you need to copy/paste UV from the fixed mesh to the original mesh. This is a little bit experimental feature. It will fail if there is a big different between the topology of two meshes.

Obviously this modifier is supposed to work with 2 meshes with same number of verts. But, I didn’t put the limitation to force that. If this MCG works as you wanted even though the number of verts are different, then good for you! If not, then that’s what it is.

Lastly, this MCG is not that fast especially with Copy Topology On. So, be patient. 😉

This MCG uses some of the new operator which is included in 2018. Therfore, it will only work for 3dsMax 2018+

3dsMax 2018 MCG has many fundamental core changes which make MCG easier to use/make for users. The MCG guru at 3dsMax dev team Martin has the introduction post of 3dsMax 2018 MCG on Area with awesome new sample packs. I’ll try to go over some of these changes here. Today let me talk about Easy Map / Live Types / Undo.

 

Easy Map

When you try to learn MCG, the first obstacle would be the understanding Map and Combine. Map/Combine is equivalent to for in other programming languages. It allows you to iterate a function through an array(or arrays).in 2018, Map operator actually renamed as For Each. Considering the most typical MCG task is doing something over a vertex/face array. This is probably the most important function in MCG world.

The problem was that how Map/Combine was presented in MCG editor was not that intuitive. You can not directly connect your input array to the connector of the function. You must leave the input connector open and draw the imaginary line in your mind to know which input goes where.

In 3dMax 2018 , you don’t need to use Map or Combine anymore for most cases. You can just directly connect input array to a function operator. Check out the following image. This is a simplified version of my ExtractDelta MCG modifier. I removed all error checking and stuff to make it easy/clear to see the core functions.

MCG_1_easyMap

What this modifier does is that, it read 2 objects and calculate the difference of vertex position between them and put that difference(delta) into the curent mesh.

Look at the calculate Detals. group. in 2017 graph. you need to use Combine to iterate over two vertex position arrays and subtract vectors from one array to another.

In 2017 graph(top). you need to use Combine to iterate over two vertex position arrays and subtract vectors from one array to another. The open connector of value1 is invisibly connected to the mesh vertices array of corrective shape. The open connector of value2 is invisibly connected to the mesh vertices array of original geometry.

in 2018 graph(bottom), you can see that you can just plug the two mesh vertice arrays into Subtract operator input.

The 2018 graph is more intuitive and a lot easier to understand what’s happening in the graph.

Next look at Add deltas to mesh group. After we got the deltas array, we want to multiply Amount input to the deltas and add the result to the vertex position of our current mesh.

In 2018, you can just directly plug delta array and Amount value to the Multiply Vector operator and plug the connection to Add operator. You don’t need to use Combine operator at all.

You can still use Map/Combine if you want to make your MCG backward compatible to the older version. If you use Easy Map method, your graph will be compatible with older version.

 

Live Type

Let me borrow the explanation from Martin’s blog.

One of the major challenges in previous versions of MCG was keeping track of all the types flowing through your nodes. If a problem crept up, you only knew about it when you tried to evaluate your graph, and that often meant doing some detective work based on an error message as your only clue.

In 2018, the types flowing through your nodes are updated as you wire them, so you know exactly where you’re going. If two types don’t match up, a red wire will indicate that the connection is incompatible or that the graph is incomplete.

So… what does this actually means in MCG graph? Let’s check out the above image again. If you see the output connector of Mesh Vertices operator and the input connector of Subtract operator in calculate Detals. group, 2017 graph connector label just shows as value(IArray). It doesn’t show what kinds of array this is. 2018 graph display the same thing as Array[vector3] to give more clear information. This labels will be dynamically updated as you update the connection. If you make a wrong connection,

Also If you make a wrong connection, for example trying to connect vector array and integer array for Add operator, the connection line color will be changed to red to show the input is wrong.

 

Undo

Finally you can undo your mistake in MCG editor! Ctrl+Z and Ctrl+Y.

OK. That’s al lto today.

« Older entries