10 votes
Date Updated: 
Author Name: 
Shawn Olson

CorVex is a scripted geometry plugin for 3ds Max aimed at quickly building game level layout and walls. It offers convenient planar mapping controls for geometry that is controlled by spline bases.


I developed this plugin after years of working with both Hammer and 3ds Max. One of the challenges for new 3ds Max users coming from Hammer is texturing objects with planar mapping (as is always done in Hammer) because most primitive objects in Max always normalize the UV by Face; applying UVW Modifiers is sometimes tedious. CorVex geometry has built-in planar mapping parameters.

I was also inspired, in part, by how convenient it is to build levels with floor plans (like in Maple 3D's Convexity, now retired). While CorVex is not designed to work exactly like the floor plans in Convexity, it is similar where the sections of a map are outlined by splines and filled in with CorVex geometry or outlined with walls. Benefits include all the advanced planar UVW controls and realtime display of wall settings and mapping changes.

Additional Info: 

The Wall Worm VMF Exporter will automatically export CorVex objects as world geometry for the Source Game Engine (without having to tag the objects as world geometry).


Version 1.83

  • Fixed UV bug in Wall Mode when the Bottom UV Method is set to From Side and the Top UV Method is set to Global.

Version 1.82

  • Added Material ID stack selection. Allows sending faces with specific material IDs up the modifier stack.

Version 1.81

  • Added Presets Rollout. Allows you to save CorVex nodes as presets to reuse in later scenes.

Version 1.79

  • Added new function to the CorVex Utility Floater to break selected vertices in a spline and close it.

Version 1.78

  • Fixed a rare bug where some kinds of splines could cause Corvex to generate this error: "-- Runtime error: Mesh TVFace index out of range".

Version 1.77

  • Fixed bug with Wall Mode using Interpolation on closed splines where the end pieces of the wall were not properly closed.
  • Fixed bug on Block Mode with interpolation on closed splines where the sides were not lining up with the interpolation of the spline.
  • Added a sanitizer to fix a potential MAXScript error due to a fringe case of rounding errors in Max and a pathInterp() call to a value over 1.0.

Version 1.76

  • Minor performance optimization.

Version 1.75

  • Added support for Material ID from spline on interpolated splines.
  • Fixed bug in the Material ID settings where the Lock IDs was ignored for any part of the object that had a Material ID by Spline setting turned on.

Version 1.74

  • Fixed Normals on Wall Mode when the height is negative.
  • Fixed UVS on top/bottom of Wall Mode when height is negative.
  • Fixed a bug in Wall Mode when UVs set to Normalized.
  • Minor Code Optimization.

Version 1.73

  • Fixed triangulation on Wall ends when the wall height/width are negative or Flip Normal is on.

Version 1.71-172

  • Fixed a bug where the function acos() would return a value of (-1.#IND) for angles between blocks in Wall Mode, causing some elements of the wall to be corrupt.
  • Fixed a bug introduced recently where some spline types could crash CorVex.

Version 1.69

  • Fixed bug in Wall Mode where last wall block would have poor triangulation.

Version 1.68

  • Added checkbox to force all vertices to snap to the grid.
  • Fixed bug where last side in each block would get incorrect material ID when using Material From Spline. Bug did not affect wall mode.
  • Fixed bug where the first side of a block CorVex would use the Side 1 Material ID even when Lock IDs was on. Now the first side of block mode honors the Lock IDs setting. Bug did not affect wall mode.

Version 1.67

  • Added new parameter Force Convex Polygons. When on, all four-sided polygons are retriangulated if they are not convex.
  • Added new parameter Edge Threshold. Controls the threshold at which polygons are broken with visible edges into separate polygons.

Version 1.66

  • Added new Rollout labelled Wall Worm Connection. Handles tags for Wall Worm's VMF exporter.
  • Moved the "Export as World Geometry" check box to the Wall Worm Connection rollout.
  • Added new parameter: Tag As Func Detail. Used with Wall Worm's VMF exporter.
  • Added new parameter: Tag As Sky. Used with Wall Worm's VMF exporter.
  • Added New Stack Selection option for Concave Polygons. Selects Polygons that should be re-triangulated.

Version 1.65

  • Added function to collapse all control splines into a single spline. Function in CorVex modify tab under the Base Splines list and in the CorVex Utility Floater. Click for no welding; right-click to weld.
  • Added button to create a Point Helper at each knot of selected splines in CorVex Utility Floater. Click for points at knots; right-click for points at interpolated knots.

Version 1.64

  • Fixed a bug when using the Material ID from Spline setting on a Block CorVex where the spline was not closed.
  • Fixed the Material IDs to honor the Lock All IDs setting mixed with Material ID from Spline.

Version 1.63

  • Added new setting Reset Step Per Spline. This setting is used with the Step and Slope Increments. When enabled, each spline (and each subspline if in Wall Mode) will reset to the initial height. When off, the increment always continues from the last height of the last subspline.
  • Added another Top/Bottom UV Scale option: Use Side UV Scale. This forces the top scale to match the sides and is the new default value for the UV Scale method.
  • Added support for XREF Materials in the functions to get bitmap dimensions.
  • Fixed the Get Properties from CorVex function to collect some properties that were missing.
  • Fixed bug in the Side 1 Material ID setting in Wall Mode. It now applies to hidden sides of walls as it worked in earlier versions of CorVex.

Version 1.62

  • Added new property Increment Type. Now the height of each wall element or each block mode block can be incremented. Possible settings are None (all tops equal height), Step (where each element has a flat top) or Slope (where each element's height transitions from the highest point of the last element to the lowest height of the next). None and Step work in all modes. Slope only works in Wall Mode.
  • Added new property Increment Amount that determines how much higher one block is than the last.
  • Added new Top/Bottom height/width parameters for the top/bottom UV calculations. This allows the top and bottom UVs to have as granular control as the side UVs.
  • Added new utilities to generate new splines from sections of a CorVex object.
  • Fixed a bug in the Pick Material functions added in 1.6. The material picker was failing if the current material on the current CorVex object wasn't a MultiMaterial.
  • Fixed bug in mapping coordinates when the Match Height was set to true and the current height of the CorVex object is 0. Now the mapping calculations will check to make sure that the Mapping Height value will always be non-zero.
  • Fixed bug with some Wall CorVex objects where elements would get incorrect division angles between elements.

Version 1.61

  • Fixed a bug in the Pick Material functions added in 1.6. The material picker was failing if the closest hit node did not have a mesh property.

Version 1.6

  • Added buttons to Material ID rollout to get materials from objects in the scene.
  • Fixed up some of the UI logic to disable/enable Material ID checkboxes, buttons and spinners based on current settings.

Version 1.59

  • Added new Parameter to Flip Normal. This will flip the normals on the object.
  • Added new Reference System controls to the CorVex Utility floater. This allows you to set the Reference System for generated splines. At the moment, this feature is experimental and not documented.
  • Fixed bug where last side of a Block CorVex section derived from a closed spline would not get correct Material ID when using the Material ID from spline setting.
  • Changed labels of U/V Scale spinners to use the word Tile rather than Scale.

Version 1.58

  • Fixed bug opening scenes with CorVex objects created before version 1.5.
  • Minor optimization.
  • Updated the Get Settings From Corvex function to acquire properties added after version 1.5.

Version 1.57

  • Added new UV parameter "Distance Offsets". When on each spline's U will be offset by the distance from the last point of the last spline in world space.
  • Added several new Material ID parameters that allow you to use the Spline's Material ID to control the material ID of segments in a CorVex Object.
  • Updated the Random ID function to work correctly with the second side of a wall in Wall Mode.

Version 1.56

  • Added new UV parameter "Reset U Per Spline". When on (default), each spline in the spline base list resets the U to 0. When off, uses that last U offset from the previous spline.

Version 1.55

  • Fixed bug in Wall Mode where the first side of a wall could sometime have the incorrect Material ID on half of the Polygon.

Version 1.54

  • Added Wall option Separate Each Segment. When on (default) uses the current method of capping each segment of the wall with hidden sides (faces). This is best when you need to export to a game engine and need separate blocks (or need a concave collision hull). When off, the hidden faces are never made.
  • Added Wall option Weld Verts. This option is only available when the Separate Each Segment is disabled. When on, there is only one element per sub-spline when collapsed to editable poly. When off, each segment of the spline becomes a sub-element when collapsed to editable poly.

Version 1.53

  • Updated MultiMaterial functions to always make 6 sub-materials (even in block mode).
  • Updated MultiMaterial function to name the multimaterial using the CorVex node name.
  • Added new Spline Pairs to CorVex option called Single Floor. This setting defaults to on. When on, floors created with the CorVex utility are all part of a single CorVex node even if using multiple pairs of splines. When off, the tool will generate one CorVex per each spline pair.
  • Updated Spline Pairs to CorVex to detect some spline order problems. This will not solve all problems but will solve some.
  • New splines generated with the Spline Pairs to CorVex function now get names based off of this string: CorVexFloorPlan.
  • Updated spline base list double-click and right-click functions to un-hide the selected spline if hidden.

Version 1.52

  • Forced complete redraw after pressing the UV buttons to align Left, Top and Bottom. Previously, the UV change was not displayed until the viewport changed or another parameter was changed.

Version 1.51

  • Fixed bug when a shape in the Base Splines has an Edit Spline modifier applied.
  • Added the Successive function to the CorVex utility floater.
  • Added tooltips to the CorVex utility floater.
  • Added Side Method "Side 1 Flow (Block Mode)".

Version 1.5

  • Added support for all shapes (not just Line and Editable Spline shapes).
  • Added Interpolate Splines checkbox. When on, all splines in spline base list use the spline's interpolation. When off, line and editable splines only use knots.
  • Added Utility Floater with several utility functions. Functions include converting spline pairs to floors, ceilings and walls all at once as well as a UI for assigning an arbitrary list of splines to an arbitrary list of CorVex objects all at once. Documentation on these not yet available.
  • Added Spline Base double-click function to select in the viewport the object double-clicked in the Spline Base list. This differs from the right-click function because it does not go into vertex sub-element mode and does not preset the action to Create Line.
  • Faces for Top/Bottom are now swapped when there is a negative height, for more expected results pertaining to material IDs and stack selection spinners.

Version 1.44

  • Fixed bug with Normalize UV in Wall Mode.

Version 1.43

  • Fixed Top/Bottom UV bugs with various combinations of Vector From and Coordsys settings and the Vector From node's transform. Some Top/Bottom UVs on existing CorVex objects may change after applying this update. Simultaneously released Wall Worm 1.98 with accommodations for this updated CorVex version.
  • Bake to Geometry function now bakes the correct top/bottom UVs when using the CorVex UV coord system.

Version 1.42

  • Fixed bug when right-clicking a spline in the Spline Base list that is a reference or instance of another spline.

Version 1.41

  • Fixed a bug with some splines.
  • Checker maps in generated multimaterial now have relevant names.
  • Fixed some bugs when in Create Mode of command panel and press the Add New Spline button or the Create Multi Material button before node is added to scene.

Version 1.4

  • Added Stack Selection rollout. Offers various sections to send to the modifier stack including the following face selection checkboxes for all CorVex objects: Sides, Tops, Bottom. And for Wall Mode Corvex objects: Open Ends, Wall Side 2 and Hidden Sides.
  • Create Multi Material button now adds default Checker Maps to visualize the UVs.

Version 1.39

  • Added new parameter for the Offset Vector. Previously, the offset was always set to use the direction of the Spline's local Z axis in world space. Now you can choose to use World Z, Corvex Z or Spline Z. The default is now World Z, so if you have an existing CorVex that used the spline's orientation for the offset vector, change this parameter in the main parameter rollout.
  • Added ability to use negative Open Wall End angles.
  • Added button to swap values between start and end angles.
  • Fixed UVW bug on tops/bottoms that happened on closed walls with negative height, negative wall width and certain spline orientations.
  • Fixed UVW of tops/bottoms when using a vector not aligned to the World.
  • Fixed UVW on ends of open walls with negative height.
  • Updated the top/bottom UVW to be compatible with the Wall Worm VMF Exporter regardless of the CorVex UV coordinate system.

Version 1.38

  • Fixed some UVW bugs.

Version 1.37

  • Added control for Bottom UV Method to separate from that used on Top/Bottom of walls.
  • Added control for top/bottom UV to control the coordinate system used for top/bottom global coordinates. See Known Issues when using the CorVex coordinate system for Top/Bottom.
  • Fixed bug in CorVex geometry getting offset when the pivot of the CorVex is moved. Simultaneously updated Wall Worm VMF Exporter to accommodate the same scenario. See Known Issues if using the Corvex as the Top/Bottom coordinate system.

Version 1.36

  • Fixed UVW on top/bottom to work even with negative height and negative wall widths in Wall Mode.

Version 1.35

  • Added Start and End Angles for open walls (made from non-closed splines).
  • Added button to reset Open End Angles to 90 degrees.
  • Updated the Bottom UVs to match the UVs of tops when using the From Side option of Wall Top Method.
  • Added new Side Method for Walls to set UV of Second Side of walls to line up with the first side. The flow from one side to top to bottom will align if you set the Side Method to Wall Match Both Sides.
  • Updated UI to disable the T/B Rotation spinner if the Wall Top Method is set to From Side.

Version 1.31

  • Fixed cutter object list not displaying cutter objects.

Version 1.3 (See Known Issues if Upgrading)

  • Added Wall Mode and Wall Width values.
  • Removed step spinner.
  • Separated CorVex parameters into the following parameter blocks: Parameters, UV Controls, Material IDs and Cutters.
  • Added Wall UV Tops selection for how to UV the top of walls. Default uses a global world space. The alternate method is to use the same UV as the first side of the wall block.
  • Added Bake to Geometry button. When pressed, creates an Editable Poly snapshot of the CorVex object and hides the CorVex. If the Export as World Geometry is on, deactivates it and tags the clone to export.
  • Added Material ID controls for wall ends and wall side 2.
  • Added button to get spline bases from another CorVex.
  • Added button to get properties from another CorVex.
  • Added button to generate a multimaterial for the CorVex object.
  • Added UV Side Method called Reset Each Face.
  • Fixed Bug where SplineShape() objects were not used in mesh generation, even though they worked in 1.0.

Version 1.2

  • Negative Height now creates geoemtry with normals in the correct direction.
  • Added new checkbox called Export as World Geometry. Used with the Wall Worm VMF Exporter.
  • Added Spline Base button to Delete spline.
  • Added Spline Base button to select all splines.
  • New Spline pivots now align to CorVex position.
  • Exposed the cutter objects in the UI. You can now set objects in the scene as cutting objects. See Known Issues in docs as the cutter objects are experimental at this point.

Version 1.1

  • Fixed some problems with the UVs on the top/bottom faces
  • Added function to lock the map height/width aspect ratio
  • Added ability to control UV scale and offset of the top/bottom independently of the sides.
  • Simultaneously updated Wall Worm's VMF Exporter to fix a bug when exporting some CorVex objects.
Version Requirement: 
3ds Max 2010+
Video URL: 


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
lightcube's picture

Wow... Thanks

Thanks David, Richard and Joris. Your comments are very kind. Joris... I think I'm going to print your comment and hang it on my office wall!


Shawn Olson

Developer of Wall Worm

JorisCeoen's picture

Source mapping made easier beyond Hammer

An amazing tool I've been using for a long time by now. For Source Mappers, Wall Worm is your bible and Corvex is an unforgettable chapter of the holy book!

If you haven't grabbed it yet, do it now!

JorisCeoen - Organist, Level Designer, Youtube

Richardleehudson's picture

I just saw this in the Wall

I just saw this in the Wall Worm menus and decided to give it a try finally. Where was this when I first started my map? Awesome tool, man!

David Schirtzinger's picture

And Wall Worm does it again?

Another excellent tool. Quick and easy to use and fills a need I didn't even no I had. Thanks so much for another great addition to the WWMT line up.

- D

lightcube's picture

Thank you for the compliment.

Thank you for the compliment. I'm very proud of the tool and use it daily. Feel free to share any ideas for improvement.


Shawn Olson

Developer of Wall Worm

rezoloot's picture


A great script well thought out and easy to use.

Great work

lightcube's picture

Thank you. These kind of

Thank you. These kind of remarks mean a lot to me.


Shawn Olson

Developer of Wall Worm

razer1's picture

Yet again another great tool

Yet again another great tool by shawn! While wallworm keeps bringing out these awesome tools and addons for the gaming community sometimes they become unnoticed, from 7 years of testing and messing with modeling and games I have used wallworm all the way!

Well done!

lightcube's picture

Thanks Kostadin... yes I've

Thanks Kostadin... yes I've started building some scripted plugins that suit some of my needs instead of just scripts/macroscripts :)


Shawn Olson

Developer of Wall Worm

miauu's picture


Hi, Shawn!
Finally you wrote a script that creates sort of box primitives, but with arbitrary count of corners. Congratulations. :)
Excellent job.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.