Maxscript Tools


Data Collection

This data collector is constructed to work with mesh data in 3ds Max. It is constructed on a voxel driven framework to look at discrete steps in space and read / write information from an external file. I wrote the external format to be read by excel.

Recursive sub-voxelization is also a supported feature for collecting at a higher precision without causing large bottle necks in performance. The information stored may also be parsed in batches with other documents. This allows the user to build robust outputs without ever needing to send a redraw command to the viewport. 


Vertex Agnostic Morph Targets

This tool allows for a method of storing attributes to an uncompressed texture, whether geometric or abstract. For example, an animation of a water volume being displaced due to an object being dropped into it. In this circumstance, the tool would run a data collection and gather information about the sequence of the simulation (ie: the largest bounds of the simulation, the largest frame in memory, the most vertices in a single frame, etc.).


Based on these collections, a cloud of triangles would be created. The number of triangles would be dependent on the data collection previously executed. Vertex uvw coordinates would then be modified per triangle to run sequentially at precise locations that correlate to the texture being generated. A texture would then be created with a pixel stride of 3 by default (symbolizing a single vertex). The pixels would store information such as position, normal, binormal, velocity, etc.


Vector Relations

The vector relations tool was created to store information in vertex color regarding vector relationships. These relationships could be internal or external to the target geometry.


A few applications of this tool:

  • Represent how a fluid would move along the surface

  • Represent how particle accumulation could take place based on slope 

  • Represent surface correction for animating domain

  • Represent velocity 

  • Represent displacement vectors

  • Represent secondary normal vectors


Sub Surface Approximation

The approach method behind this tool is geared towards a single material medium with consistent density. It runs an operation per vertex and writes the output to vertex color / texture. 

General Method of SSS:

  • Raycast along inverted normal

  • Check for collision

  • On positive collision detection return distance traveled

  • Collect all distances

  • Normalize range from min to max distance

  • Guassian blur result over 5 iterations


Light Caster

The light caster tool is built upon the idea of non shadow casting light entities being used to produce values derived from lighting operations. These values are then written out in a number of formats or consumed by other entities for further modification. 

A few applications of this tool:

  • Using attenuation properties to build animation maps

  • Using bounce to create accumulation maps

  • Using overlap between multiple lights to bake debug maps

  • Using light id's to build mesh influence tags


Alembic Converter

This tool was created as a gateway to engines that did not support alembic directly.

The pipeline and tool were constructed in a manner to follow these core steps:

  • Consume alembic cache

  • Run data collection loop

  • Export new frame data such as (memory, sim-time, largest frame footprint, etc.)

  • Build new frame mesh from alembic cache

  • Run extra operations based on user choices (uvw generation, frame bookmarks, frame reduction, etc.)

  • Build frame id and store in variety of formats

  • Packaging final content for export


Pixel to Voxel

This tool was designed to read 3D texture slice planes and reconstruct them in 3ds max as voxel meshes. These meshes could be depicted as any preset object. These voxel clouds could then be further iterated upon in max or exported to an additional stage in the pipeline. If the object was passed on, it would be consumed by zbrush dynamesh which would allow for the resurfacing of the cloud. 

Some use cases for this tool and pipeline:

  • Digital holographics

  • Organic growth

  • Fungi

  • Bacterial structures

  • Complex pattern generation


Slope to Flow

The idea behind the construction of this tool was to build a method for calculating different types of flow features based on topology. The flow fields could be for dynamic, static, or sliced use. Dynamic use refers to a field that will produce the ability to have continual motion. Static use refers to the slope of the object being recorded with no modification. Sliced refers to a segment of time where net forces acted upon the surface and were recorded based on their interaction.

Some use cases for this tool:

  • Flowing water

  • Shifting sands

  • Snow drifts

  • Weather accumulation

  • Absence surface volumes


Holographic Generation

An entire suite of tools built to empower the user to create complex and dynamic mesh data for real time holographics. Suite supports both particle and object solutions. 

Tool Types:

  • Automation and propagation

  • Pattern generation

  • Data storage and manipulation

Some uses for this tool suite:

  • Holographics and UI design

  • Mechanical detailing

  • Abstract modeling

  • Illustration


Volumetric Slice to Texture

The idea behind this tool was to calculate the average depth from a given point on a 2d slice in a 3d space. Accuracy was difficult with the method I implemented. I am currently working in free time on a small program that calculates these slices based on EDT (euclidean distance transform). 

General Method: Constrained Raycast Search

  • Cast 4 - 8 ray(s) in a given radius over ( x ) angles and ( m ) lengths

  • Return all distances or NULL based on collision detection

  • Return shortest distance

  • Run operation for every ( unit ) in discrete space to match pixel resolution

  • Run storage and baking operations 

  • Write a distance texture for consumption in next pipeline


Spline Attributes

The spline attributes tool was designed to read / write data to vertex attributes and textures from spline collections. A variety of shape objects were supported in max. Both preset shapes and generated were able to be used statically.


Supported attributes such as:

  • Spline length

  • Virtual knot position and id

  • Direction vectors

  • Tangents and binormals

Some uses for this tool:

  • Progression animation through a medium

  • Topology adjustment via "soft selection"

  • Attribute recording and debugging


Populate Tools

The populate tools suite was a more brute force method of propagating objects based on predefined rule sets. These could be distance, angle, surface, or attribute driven. Assignments could be made based on certain object characteristics such as their: name, object type, predefined id, vertex density, etc.

Some uses for this tool:

  • Unifying export settings

  • Strictly defined modeling propagation 

  • Building debug attributes

  • Modifying class based parameters

  • Changing hierarchical structures