PropLine

PropLine Geometry PluginPropLine is a parametric spacing tool that allows you to distribute props along splines in your scene. In some ways it is similar to the Spacing Tool built into 3ds Max, but it offers far more control and is non-destructive. Installing PropLine adds a new geometry primitive to Max named PropLine.

User Interface

PropLineThe main settings for PropLine are in the Parameters Rollout. You can further control translations and rotations (including randomization of these) in the Transformations rollout.

Parameters

Active

This setting controls whether or not the PropLine object generates the prop geometry in the viewport. When off, the PropLine object appears as a cube.

Prop Distribution Method

This setting controls how the props are distributed along the splines.

  • Knot: A prop is placed at each knot (vertex) along the spline.
  • Interpolation: A prop is placed at each interpolated corner along the spline.
  • Spacing: A prop is placed at regular intervals determined by the Spacing value.
  • Size: A prop is placed along the path based on the dimensions of the props.
  • Divide: Place a specific number of props at even intervals along each spline. The number of props in this case is based on the Spacing value converted to an Integer.
Spacing

This setting is only active when the Prop Distribution Method is set to Spacing. It controls the distance between each prop.

Padding

This setting is only active when the Prop Distribution Method is set to Size. It controls extra spacing between each prop.

Prop Distribution Order

This menu controls the ordering of the props.

  • List Order: Props are used in the order they display in the Source Object list.
  • Random: Props are used randomly. Use the Seed value to change the random results.
  • Probability: Props are used randomly based on their relative probability value. By default all props have a probability of 1. You can add the PropLine custom attribute to it and set this to a different value. The higher the value, the more the prop will be used; the lower the value, the less the prop is used.
Allow Repeats

When off, tries to force the sequence of props to not repeat when using Random or Probability. Has no effect when using List Order distribution. Also is not honored if there are two or less props being used. This setting can work with, but is not effective with, Probability Distribution. Most suited for the Random distribution.

Seed

Sets the random generator seed.

Spline Bases

The group of buttons controls the splines that are used in the PropLine.

Source

This group of buttons control the Source Geometry (props) to be used in the PropLine and to control the per-prop transformation overrides.

Show Override Changes

By default, changes made in the per-prop transformations sub-rollout do not immediately propagate to the viewport display of PropLine. To see the changes made in the sub-rollout, click this button.

Display As Boxes

When on, the PropLine displays each prop as a box. This can help viewport performance if your props are very high density meshes.

Transformations

Allow Overrides

When on, the global transformation of a prop can be replaced with per-prop transformation settings.

Skip Probability

The odds that any particular prop point will be skipped and left empty. 0 = no prop skipping. 100 = all props are skipped.

Orientation

Choose the Axis that will Point towards the direction of the spline vectors. Default is X.

Flip

Point the prop in the opposite direction.

Upright

When on, the prop will default to use a X vector that is parallel with the World XY plane. This forces the prop to point upwards with default transformations.

Average Vector

When on, each prop's X axis is calculated based on the last and next prop. When off (default) each prop's X axis is calculated based on it's point and the next prop.

Translations

These spinners control the X/Y/Z offsets (positions) of the props. If the checkbox is unchecked, all props will offset by the same amount in each axis. If you check the checkbox, the second spinner for each axis activates to set a range. Now each prop will be randomly offset between the Min/Max values of the two spinners in that axis.

Rotations

These spinners control the X/Y/Z orientation (rotation) of the props. If the checkbox is unchecked, all props will rotate by the same amount in each axis. If you check the checkbox, the second spinner for each axis activates to set a range. Now each prop will be randomly rotated between the Min/Max values of the two spinners in that axis.

Get Transforms From ...

Press this button to pick another PropLine in the scene and get it's transformation settings.

Launch Manager

Launch the PropLine prop manager to override transformation settings on a per-prop basis..

Performance

The performance settings can greatly affect the viewport performance. If you need to keep PropLine objects Active in the scene, you may find that the performance options can increase the viewport display.

AutoUpdate

When on, the PropLine geometry updates whenever you change a setting or the underlying splines/geometry. When off, only updates when you click the Update button. When you are done manipulating PropLine, you should turn off AutoUpdate to increase performance in the scene.

Display As Boxes

When on, each prop will only be represented in the viewport as a box.

Use XRef Proxies

When on, the PropLine geometry will update to force XRef Geometry sources to use the Proxy geometry if the object has a proxy.

Limit Props

When on, props will abruptly end once this number has been exceeded. Default is 1024.

Min Prop Size

When on, the the minimum distance between two props is this value. The default is 4.

Wall Worm Connection

Tag as World Geometry

Set this PropLine to export as a collection of brushes in the VMF exporter.

Tag as Func Detail

Set this PropLine to export as a collection of func_detaul brush entities in the VMF exporter.

Tag as Sky

Set this PropLine to export as a 3D Skybox object.

Known Issues with PropLine

Below are some known issues when working with PropLine objects.

Moving Spline Vertices is Unpredictable

When moving the vertices of a control spline, you may find that the movement is unpredictable. A symptom is that the vertex moves much further it should when you transform it. The fix for this is to turn off Auto Update when editing the vertices of control splines that are used in a PropLine.

PropLine is Slow or Hangs Max

This issue is a problem whenever the PropLine is creating too much geometry. Causes can include high-poly source geometry; very small spacing values; very large numbers of splines controlling the PropLine.

Solutions to this problem vary depending on case-to-case. Using display as Boxes is one method of increasing performance. Look at the Performance options.

Creating New Objects in the Scene is Slow when PropLines are in Scene

This issue is caused because of the way PropLine objects are created and cause some event callbacks. The solution to this issue is to turn AutoUpdate off after the PropLine object is no longer being manipulated.

Changelog

Version 1.49

  • Added Scaling options to PropLine and PropLine Transformation Custom Attributes.

Version 1.48

  • Updated the orientation of the last prop spawned on a closed spline to point towards the first prop in the closed spline.
  • Added new transformation parameter called Point At First. When on, forces the last prop in a spline to point at the first prop whether the spline is closed or not.

Version 1.47

  • Added new setting Allow Repeat. When off, props will not repeat with Random or Probability distribution settings.

Version 1.46

  • Added new setting AutoUpdate. When off, the mesh is cached and not calculated when any setting is changed.
  • Added several new utilitiy functions to the PropLine Manager Floater.
  • Fixed bug with some combinations of Distribution type and shape objects other than Editable Spline Shapes.

Version 1.45

  • Updated they way the material is generated to fix problems with Grouped geometry and XRef geometry nodes.

Version 1.44

  • Minor performance optimization.
  • Updated the Enforce XRef Proxy setting to only turn on all proxies when enabled. When disabled, the user must manually change the proxy status of objects or to press the Disable XRef Proxy button in the performance rollout. This is to help reduce sever performance problems if some or all of the XRef objects are very high poly.

Version 1.43

  • Fixed viewport performance bug that caused Max to lag during the creation of objects after the PropLine was created.
  • Fixed a bug with materials when using XRef Objects.

Version 1.42

  • Fixed a bug that could crash PropLine and freeze the Max UI due to a dependency loop with some materials.
  • Fixed Instantiate function not properly skipping props that were skipped in the PropLine mesh.

Version 1.41

  • Fixed a bug in calculating the distribution distances.

Version 1.4

  • Added new Prop Distribution Method "divide". When on, places props at equal intervals along the path. Number of props is determined by the Spacing value (which is converted to an integer value when using divide distribution).
  • Updated PropLine Custom Attributes to display changes in the viewport immediately. Removed button to force display of prop CA changes. (Props with pre-existing CA need the CA updated by re-assigning a CA to the prop.)
  • Added support for Group props.
  • Added new parameter Skip Probability to PropLine and PropLine Custom Attributes. Defaults to 0. When above 0, there is a chance that a prop will be skipped at a location.
  • Added new transform setting Average Vector. When on, each prop will orient to a vector defined by the last and next prop locations. When off (default) the vector is between the current location and the next prop.
  • Added new transform setting for Snap to Grid. When on, each prop pivot is moved to the nearest grid intersection based on the grid spacing value.
  • Added Custom Attribute override for Average Vector.
  • Added Custom Attribute override for Upright.
  • Added Prop Manager floater.
  • Added button to generate new random seed value.
  • Fixed per-prop transform overrides losing randomness after a few props when transformation randomness is on.
  • Updated Spacing & Padding minimum to be set in a global config file. The default minimum is still 1.0 but you can now change this default.
  • Added new Performance Rollout.
  • Moved Display as Boxes from the main parameters rollout to the the Performance rollout.
  • Added new performance setting Limit Props. When on, the props generated in the PropLine mesh is limited to this value.
  • Added Min Prop Size parameter. When on, limits the minimum spacing between props when using the Size distribution method.
  • Added performance setting XRef Object Proxies. When on, forces all XRef Object nodes that have proxies to display the proxy object in the viewport.
  • Added Global Settings button in Utilities Rollout which launches a controller for setting some global settings that get stored in an INI file.
  • Fixed the placement of props when using the Interpolation spacing setting to match interpolation correctly.
  • Updated calculation of the probability of props along splines based on Material ID.
  • Fixed Prop Orientation to still point to the next prop location even if the next prop is skipped based on Material ID.
  • Fixed problem with erratic distribution when the distribution method was set to Size and padding randomization was on.

Version 1.3

  • Added new setting "Use Mat ID Distribution". When on, each prop can be set to obey distribution based on the rules of the spline's material IDs.
  • Added Rules to Custom Attribute of PropLine Props to limit object to specific material IDs. Default to use All material IDs, but if set to include/exclude material IDs, allows you to enter a comma-separated list of the IDs to use.
  • Added Randomize Spacing option when in Spacing distribution method.
  • Added support for spline bases that have been extruded or had geometry added to them.
  • Added several buttons to get parameters and settings from other PropLine objects in the scene.
  • Fixed the placement of props when using the Interpolation spacing setting to match interpolation correctly.
  • Added two macroscript functions: Activate All PropLine and Deactivate All PropLine. These commands must be assigned via Max's Customize User Interface.

Version 1.21

  • Fixed bug if any of the source geometry nodes do not have any mesh data.

Version 1.2

  • Added new Prop Distribution method: Probability. This mode will distribute each prop based on its relative probability attribute (added to the custom attribute definition for source nodes).
  • Added new parameters Padding and Padding Randomization that adds extra space between each prop when the Prop Distribution Method is set to spacing.
  • Added new transformation parameter Upright. When on, all props will use an initial X-axis vector from the spline that is transformed to be parallel with the World's XY plane. This is helpful when you need props to stand upright in the world Z axis regardless of the spline vector.
  • Added Probability property to the PropLine Transforms custom attribute.
  • Added sub-rollout to Propline Source Nodes section. When a node is selected in the list that has a PropLineTransform custom attribute, that node's transform rollout will populate the subrollout.
  • Added button Show Override Changes. Used to update the PropLine if any changes are made to the source node custom attributes in the source node attribute sub-rollout.
  • Updated the function for adding custom attributes to source nodes. Now the command panel returns to the modify tab and the current selection is remembered.
  • Moved the Allow Overrides setting to the Transformations rollout.
  • Swapped order of the Spline Base UI group and the Source Nodes UI Group because of the added custom attribute sub-rollout.

Version 1.1

  • Updated the Source Nodes list to allow duplicate nodes.
  • Added buttons to re-order Source Nodes.
  • Added new Distribution Method called Size which will offset each node by the dimensions of the object. The offset size to use is based on which size axis is selected.

Version 1.01

  • Updated the Instantiate function to apply tags to the geometry and to un-instance proxies so that they do not get the source proxies "exclude_vmf" setting.
  • Updated the Instantiate function to group brushes or details.

Version 1.0

  • Initial Release.