Constructing a Space Frame

Full disclosure: I’m a noob (got Blender about a week ago, have never done any CGI before, and only joined the forums this morning), so I apologize if this question has been asked before.

I’m in the process of making a starship, and a central component of the ship is the structural spine. The spine is going to be either an octet truss (example here)…

…or another type of space frame (I don’t know what this type is called).

Now, I realize that the truss is composed of a repeating pattern, and that to make it really long, I can make one segment (one of the octahedrons for the octet truss, for instance) and duplicate it as many times as needed. No, my problem is going to seem much, much sillier to you guys.

Both types of truss are composed of four long, parallel cylinders and a bunch of shorter ones that connect them to each other. Now, it was easy enough for me to make the four longer cylinders, and it was also easy to make the connectors that are perpendicular to the long ones (create a cylinder, rotate it 45 degrees on the y-axis and translate it into position), but many of the connectors are diagonal to the long cylinders, such as the connectors that define the octahedrons in the octet truss. That’s the embarrassing part.

I can’t figure out how to do the diagonal connectors.

I’ve tried rotating the would-be connector 45 degrees on the y-axis and then rotating it on the z-axis, but I found that when I did that, it was no longer in the right position on the y-axis, and fixing that meant it was no longer in the right position on the z-axis, and so on and so forth.

I thought maybe rotating it freehand would solve the problem, but that just left me flailing around like an idiot.

TL;DR, does anyone here know an easier way of making those diagonal connectors?

The method you use kinda depends on how closely you’re going to be looking at these trusses. For super high detail levels, you’ll probably want a dupligroup for each intersection. From your description, it sounds like you are duplicating objects multiple times. This makes sense if you want to add a high level of detail later, but if the shown level of detail is what you want, you’ll be much better off using a single object with an array modifier. I recommend the “curve” object, because you can dynamically change the level of detail and the truss member thickness.

It’s also fairly straightforward to connect nodes, so the diagonals are a breeze. Simply select two points, duplicate them (Shift-D), and then link them (F).
Here’s one I made as an example.
Truss.blend (77.2 KB)

Hope that helps! Let us know if you get stuck anywhere else. We were all newbs once.

Moved from “General Forums > Blender and CG Discussions” to “Support > Modeling”

So, just to make sure I understand that correctly, I create a mesh (cylinder or cube), apply the “array” modifier to get four of them, and then apply the “curve” modifier, presumably using a Besier circle, which will let me set up the four objects around the perimeter of the circle.

Unfortunately, I don’t think I follow what you mean about duplicating two points and then connecting them.

I just realized I wildly misinterpreted your use of the array modifier; you meant I should use it to copy the first object, not to array the cylinders around a circle.

The one thing I still don’t understand is how you got a curve labeled “cube” and how you got it that shape.

I actually may have come up with a workaround.

I used cubes instead of cylinders (scaled so they were long rectangles), cut a ton of loops into them, deleted key faces on each cube and used the “generate Face” tool to connect the edges of the void on one cube to the void on another.

After all of this, I used the array tool to duplicate the thing. I’ve attached the result, added to what I have of the ship so far (the cylinders of various sizes are the starship’s fuel tanks, and the disk at the back is a radiation shield; the fusion drive will eventually go behind it).

Odysseus.blend (956 KB)

Even after doing this, I’d love to know how you created your truss, since that allows for the individual components to be cubes, cylinders, or whatever I might want.

Use the skin modifier.


2017-10-23 Skin Mod.blend (297 KB)

I made one. dudecon probably used a similar process

Started with a mesh, separated the parts to their own objects, converted to curves. All edges are split from each other, then selected and separated to their own objects, converted to curves, and adjusted curve values.

ctrl+E: edge split, P: selection to separate, alt+C: curve to convert (object mode), ctrl+L: modifiers to copy modifiers from active to selected. Holding down alt changes values for multiple selected objects.

Wow! Thanks for all the suggestions, everyone! :slight_smile: