PropLine 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.
The main settings for PropLine are in the Parameters Rollout. You can further control translations and rotations (including randomization of these) in the Transformations rollout.
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.
* Knot, Spacing, Size and Divide only work on Line/Editable Spline shapes. All other shapes can only use Interpolation. When set to anything other than interpolation, those splines that don't support the current method will use interpolation instead.
This setting is only active when the Prop Distribution Method is set to Spacing. It controls the distance between each prop.
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.
Sets the random generator seed.
- Spline Bases
The group of buttons controls the splines that are used in the PropLine.
This group of buttons control the Source Geometry (props) to be used in the PropLine and to control the per-prop transformation overrides.
- 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.
Choose the Axis that will Point towards the direction of the spline vectors. Default is X.
Point the prop in the opposite direction.
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.
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.
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..
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.
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.
- Source Model Display
This drop-down lets you select the prefered LOD level of props of the WallWormMDL class. This setting is only relative to that geometry class which comes with Wall Worm and Wall Worm Pro. The available modes are Lowest LOD (lowest resolution model), Per Node (use the WallWormMDL node's current LOD setting) and Collision Hull (the hull of the model if present, otherwise lowest LOD).
- Display As Boxes
When on, each prop will only be represented in the viewport as a box.
- Use Node's Box Mode
When on, each prop be displayed as a box based on the node's own Display As Box object property (or it's layer's Display As Box setting if the node is using Display By Layer). Note that this function has a refresh issue such that changes to object/layer Box Mode settings won't take affect in the PropLine until the PropLine has been deselected and then reselected.
- 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.
Sometimes the PropLine Turns Black
This bug is a problem with recomputing the mesh normals. If you experience this problem, the easiest solution is to add an Edit Normals modifier onto the PropLine.
Moving Group Node's Pivot Can Crash Max
Using Max's Affect Pivot Only and Transforming a Group Node's Pivot when that Group Node is a prop in a PropLine can crash 3ds Max. At this time, do not use Affect Pivot Only on a group node that is part of a PropLine.
- Added new parameter for Divide amount. The divide amount was previously shared with the Spacing amount and caused problems.
- Added support for CorVexSpline.
- Added better support for BorderSpline, allowing usage of more than just Knot mode and one sub-spline.
- Added new option Align to World. When on, the props are aligned to the world orientation.
- Updated the Create PropLine from Selection Macro to automatically apply an Edit Normals modifier to the PropLine node if one of the added props is a WallWormMDL node.
- Updated Prop Manager to detect props from a PropLine node if that node had modifiers.
- Optimized loading of Meshes.
- Fixed bug loading some meshes.
- Fixed incorrect offsets when using some kinds of nodes (like WallWormMDL nodes withough models tied to them).
- Updated internal Wall Worm classification for being tracked by the latest Wall Worm scene manager.
- Fixed bug in setting to Box mode.
- Fixed bug when using WallWormMDL nodes and the Source Model Display was set to Per Node.
- Optimizations to improve performance. Best performance increase found in 3ds Max 2018.4+.
- Fixed the Uniform Scale not working when using Randomization of scale.
- Fixed some bugs in UI when pressing buttons after deleting source splines or source models.
- Added support for Scaling props with the Instantiate function.
- Fixed transform of WallWormMDL nodes in source list.
- Fixed Display as Boxes and Use Node's Box Mode.
- Fixed Max freezing for a long time and creating an exception one some source nodes. Note this fix does not yet apply to source nodes that are part of a Group.
- Added New display mode for Use Node's Box Mode. Will respect the individual prop box mode or layer box mode setting.
- Added new global setting to use Subtitute Modifiers on source objects that are over a threshhold vertex count.
- Added new button in utilities rollout to add Substitute Modifiers on source nodes not using substitute modifiers.
- Added Instantiate All MacroScript.
- Added Source Model Display Mode for WallWormMDL geometry class.
- Added Scaling options to PropLine and PropLine Transformation Custom Attributes.
- 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.
- Added new setting Allow Repeat. When off, props will not repeat with Random or Probability distribution settings.
- 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.
- Updated they way the material is generated to fix problems with Grouped geometry and XRef geometry nodes.
- 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.
- 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.
- 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.
- Fixed a bug in calculating the distribution distances.
- 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.
- 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.
- Fixed bug if any of the source geometry nodes do not have any mesh data.
- 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.
- 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.
- 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.
- Initial Release.