Personal Projects

Function Libraries

MAXScript struct wrapping the Edit Poly methods using the familiar signatures of the polyop methods.
MAXScript Modifiers

MAXScript modfier

An inset-by-SG type modifier that works similar to Chamfer modifier when set to zero tension.

However, the max chamfer modifier is highly topology dependent and doesn't work well with diagonal and unconnected edges. This modifier fixes that behavior.

Polycount thread: Inset Chamfer

MAXScript modifier

A curve-controlled scripted sweep modifier. Both the Interpolation and Profile animation rollout UI items are not to be used yet and mostly work as placeholders for future options.

In its current state, it's more of a proof of concept than anything else.

MAXScript modifier

Randomize elements the easy way. Element Data is cached for faster viewport update.

MAXScript modifier

Instead of morphing between two nodes, this modifier allows you to morph between a state of the model before adding one or multiple modifiers and after that (provided that they don't change the object's topology).
MAXScript Mesh Primitives

MAXScript primitive

Involute spur gear primitive, complete with tooth undercut and all-quad topology.

Unencrypted and fully open for further hacking.

MAXScript primitive

Another all-quad primitive, created with TurboSmooth in mind so it has an additional Outline parameter to tighten the edge loops. The flange neck is optional, reducing its thickness to zero effectively gets rid of it.

MAXScript primitive

All-quad cylinder primitive with hemispherical capping option.

MAXScript primitive

A primitive for spiral ductwork, screw threads, flexible metal tubes, circular ramps etc.

No smoothing groups are assigned, for smoother look either use Smooth modifier or add points to the spline profile.

It's also possible to pick a path to follow (especially useful for hoses and piping).


MAXScript primitive

Hexagon pattern primitive. The size of individual hexagons is driven by a texture map.

Map colors can be saved to vertex color channel to create a hexagonal pattern.


MAXScript primitive

Simple regular grid, wire mesh primitive.

MAXScript primitive

Similar to Patch Grids with Point helpers used as handles.

You can animate the handles or use wire paramaters. Instead of linking use constraints.

MAXScript primitive

Creates surface defined by four splines that form a closed loop.

Interactive mesh update possible when modifying the splines.

MAXScript primitive

Simple fibonacci sphere primitive (poles are not capped).
MAXScript Spline Primitives

MXS spline primitive

Made as a control object for rigging.

MXS spline primitive

Parametric spline usable as a pulley belt path or a bicycle chain distribution base.

MXS spline primitive

Procedural guilloché pattern.

MXS spline primitive

Just like the regular helix only with four bezier handles per turn (or more if you would like - you can control that with the Steps spinner) instead of 40 corner-points of the default Helix shape.
MCG Modfiers, Primitives and Compounds

MCG modfier

Inset mesh polygon groups by their smoothing groups, which helps to keep flat surfaces flat smoothed when chamfered instead of the usual mess.

Due to limitations of the current MCG nodes, it also splits the smoothing group edge borders.

MCG modifier

Extrude, outline and inset polygons, optionally without capping.

Doesn't work on Teapot because of its two-point faces (i.e. faces that only have two vertices, yet still have three edges).

Includes all the compunds it depends on and two example modifiers (InsetExtrudeModifier and InsetBySelectionVal).

Loops from Surface

MCG primitive

Simple example of growing loops from open-ended surface. As such, it only looks for the first border and expands from there. Here it is shown on Cylinder with caps removed (default Advanced Sweep output would also work).

MCG compound

Random point distribution (non-uniform).

Face size is taken into account, bigger faces may have multiple points while smaller faces none at all.
Randomize Elements

MCG modifier

Randomize mesh elements, with the possibility to specify an upnode (a reference system for all the transformations).

That means that XYZ rotation are then parallel with the object's axes, same with translation and scale.
Custom MCG Dialogs

Ever wanted a pop-up dialog for your MCG graph? Now you can have it and work with scene objects just by connecting nodes. The sample file randomizes the position of selected objects given custom limits.

As this is a MCG utility, you don't get viewport redraw and undo support by default.
Other Scripts
Border Fill

Fills a border with quads.

Selects the newly created faces (in case you want to do an inset afterwards) and verts (in case you want to relax them).

Polycount thread: Border Fill

3ds Max Ideas topic if you want something like this in max by default: Add a method to cap with quad topology
InstantMeshes bridge

A bridge from 3ds max to instant meshes.

Without leaving max interface, it exports, remeshes and imports the remeshed object back based on the parameters in the dialog.
HalftoneLines script

Create gradient ramp which goes from thin lines to thick.

The gradient can then be mapped for example to a Falloff map (Shadow/Light falloff pictured)
AdobePalette loader

Simple loader for adobe .ase palettes.

This Post needs Your Comment!


Just wanted to thanks you for your scripts, gratz ^^

Return to top