Steel Rope Visualisation

I produced this render for a local design agency as a test.  It’s a heavy duty steel rope used in industry.

The image uses CAD data directly from the rope manufacturer.  This was provided to me in the form of a PDF document.  Extracting the data and fixing it up for the render was a time-consuming process, but necessary in order to ensure accuracy.

The structure itself is what I would call a ‘composite twist’ in the respect that each bank of wires is twisted, then the entire bunch is twisted again.  Do to this manually would have taken a long time, so I semi-automated the process by writing a bit of MaxScript.  I haven’t written any MaxScript before, however I’m currently learning LUA to write games/apps – which isn’t a million miles away.

Applying the twist to all selected objects in one go didn’t work.  For whatever reason, the center of the twist gizmo drifted away sending the cable off in an odd direction.  What I needed to do, was select each object in turn and apply the twist on each.

The routine below stores all the selected object names in an array.  It then deselects everything, then selects and twists each bank of wires.  Feel free to hack away at this code for your own use!


— set up variables
persistent global global_array = #()
counter = 1

— scan through selected objects and store the names
for i in $ do — set up loop, to scan through all selected objects
print (“selected ” + (i as string) + ” counter = ” + (counter as string)) — show the variables
global_array[counter] = — store each object name in the global_array[x] variable array
counter = counter + 1 — increment the counter

— scan through stored names to show what has been stored
for i = 1 to (counter-1) do — scan through stored list
print (“stored ” + (global_array[i] as string))

clearSelection() — deselect all the objects before applying Twist to each one in turn

— scan through stored list, selecting each object and applying the twist modifier
for i = 1 to (counter-1) do
print (“Selecting and applying modifier to ” + (global_array[i] as string))

toSelect = getnodebyname (global_array[i] as string)
select toSelect  — select the object

modPanel.addModToSelection(twist angle:300) — add the modifier to each object

clearSelection() — deselect object now that it has had Twist added

I’m not sure if this is particularly well written, but it worked!

Probably the hardest thing to do in this render, was get the metal material to look correct.  In the end the material is 50% reflective (so you can see reflections of the environment – blurred) and diffuse lit with blue and white opposing lights.  I also had to get the tilt just right so that the cable end design was as clear as possible.  Finally, I adjusted the levels in Photoshop to get a good level of contrast.


Steel Rope Visualisation

  • Categories →
  • 3D Visualisation
Back to top