Main Content

Build International Space Station (ISS) 3D Asset Using Primitive Shapes

R2026b
Since R2026b

This example shows how to construct a hierarchical 3D model of the International Space Station (ISS) using primitive shapes such as cylinders, cones, and boxes, and organize it within a scene graph.

Building complex 3D assets from primitive shapes provides detailed models for virtual simulation and engineering analysis. This approach uses programmatic geometry construction, where you define each component using parametric primitives, apply spatial transformations to position them, assign physically-based materials for realistic appearance, and assemble them into a hierarchical scene graph. The scene graph preserves logical groupings, making the resulting asset easy to inspect, modify, and export to standard 3D file formats such as GLB.

The ISS is one of the most complex engineering structures ever built, comprising pressurized modules, an integrated truss structure, articulated solar arrays, thermal radiators, robotic arms, and numerous external payloads. Accurate 3D representations of such structures are essential for orbital mechanics simulations, proximity operation planning, and crew training scenarios. This example models the ISS as 12 subsystems comprising 668 parts, and handles the complexity by building one representative module in full detail to teach the workflow, and then delegating the remaining subsystems to helper functions that repeat the same pattern at scale.

In this example, you:

  • Define the ISS configuration parameters such as dimensions, colors, and joint angles.

  • Create primitive shapes representing the Destiny U.S. Laboratory module using cylinders, cones, and boxes.

  • Apply spatial transformations to orient and position each component in 3D space.

  • Assign physically-based materials to control the appearance of each part.

  • Assemble the parts into a hierarchical scene graph with named nodes.

  • Build the remaining 11 ISS subsystems using helper functions.

  • Visualize the assembled station from multiple viewpoints with labeled parts.

  • Export the complete hierarchical scene to a GLB file.

Define ISS Configuration

Before constructing the modules, you must have a centralized set of parameters that ensures all subsystems align correctly, such as, module radii must match docking ports, truss segments must span the correct distances, and colors must be consistent across the entire station.

Define the configuration of the ISS by using the helperISSConfig helper function. The helper function returns three structures:

  • dim — Module dimensions and world positions, returned as a structure. Units are in meters.

  • color — Color palette for all ISS surfaces, returned as a structure. Each field is a 1-by-3 RGB triple in the range [0, 1].

  • cfg — Joint angles for articulated components such as solar array rotary joints and arm segments, returned as a structure. Units are in degrees.

[dim,color,cfg] = helperISSConfig;

Build Destiny Module

The Destiny U.S. Laboratory module consists of these components: a long cylindrical hull, forward and aft end cones, and a small Earth-facing window box. This example models these components using primitive 3D shapes. Each ISS module is a physical object with specific dimensions, orientation, and surface appearance. To model a module, you must create its geometry, orient it correctly in 3D space, position it at the right location, and apply a material that represents its real-world surface.

The main pressurized volume of the Destiny module contains a hull. The hull is a 2.15 meter radius, 8.5 meter long cylinder approximated with 32 circumferential sections to balance visual fidelity against polygon count.

Display the radius and length of the hull Destiny module.

disp([dim.destinyRad dim.destinyLen]) % Destiny module's radius and length, in meters
    2.1500    8.5000

Create a hull cylinder by using the helperCreatePrimitiveShape helper function. This function uses the primitive type, module radius, module length, and number of sections to create a cylinder. The returned Mesh object destinyHull represents the hull geometry of the cylinder.

destinyHull = helperCreatePrimitiveShape("cylinder",dim.destinyRad,dim.destinyLen,sections=32);

Visualize the mesh by using the patch object function.

figure
subplot(1,2,1)
patch(destinyHull)
subplot(1,2,2)
patch(destinyHull,EdgeColor="k")

The generated cylinder is aligned along the Z-axis.

Rotate it 90 degrees about the Y-axis to lay it along the X-axis by using the rotate object function and display the mesh.

rotate(destinyHull,[0 deg2rad(90) 0])
figure
patch(destinyHull)

Translate position of the cylinder to the world position of the Destiny module by using the translate object function and display the mesh.

translate(destinyHull,[dim.destinyX 0 0])
figure
patch(destinyHull)

Display the color of the Destiny module in RGB.

disp(color.moduleShell) % Module RGB color, off-white aluminum tint
    0.8200    0.8200    0.7800

Assign a physically-based material to control how the surface responds to light.

Create a material by using the Material object. A MetallicFactor of 0 indicates dielectric or non-metal and a RoughnessFactor of 0.5 results a soft, glossy diffuse look appropriate for painted panels.

destinyMat = asset3d.Material(BaseColorFactor=color.moduleShell,MetallicFactor=0,RoughnessFactor=0.5);

Assign the material to the hull mesh and display the mesh.

destinyHull.Material = destinyMat;
figure
patch(destinyHull)

Build the forward end cone which is a shorter, narrower cylinder that caps Destiny's forward berthing port.

destinyConeFwd = helperCreatePrimitiveShape("cylinder",dim.destinyRad*0.85,0.5,sections=24);

Apply rotation, translation, specify hull material, and display the mesh.

rotate(destinyConeFwd,[0 pi/2 0])
translate(destinyConeFwd,[dim.destinyX + dim.destinyLen/2 + 0.25 0 0])
destinyConeFwd.Material = destinyMat;
figure
patch(destinyConeFwd)

Mirror the forward cone on Destiny's aft berthing port to build the aft end cone.

destinyConeAft = helperCreatePrimitiveShape("cylinder",dim.destinyRad*0.85,0.5,sections=24);
destinyConeAft.rotate([0 pi/2 0]).translate([dim.destinyX - dim.destinyLen/2 - 0.25 0 0])
destinyConeAft.Material = destinyMat;
figure
patch(destinyConeAft)

Similarly, build the nadir-facing science window which is a small box representing the Earth-observation viewport mounted below the hull.

Translate it to the nadir surface and assign a distinct window material.

destinyWindow = helperCreatePrimitiveShape("box",[0.5 0.5 0.15]);
translate(destinyWindow,[dim.destinyX 0 -(dim.destinyRad + 0.08)])
destinyWindow.Material = asset3d.Material(BaseColorFactor=color.window,MetallicFactor=0,RoughnessFactor=0.5);
figure
patch(destinyWindow)

Add Parts to Scene

Individual meshes must be organized into a logical hierarchy so that related parts can be grouped, transformed together, and exported as a structured asset rather than a flat list of triangles. Create a new scene by using the Scene object with BaseFrame set to "ISS" as the root node name. Add the Destiny module meshes to the scene by using the addMesh object function. Set the hull as the "Destiny" group node and attach the cones and window as children under it.

issScene = asset3d.Scene(BaseFrame="ISS");
addMesh(issScene,destinyHull,NodeName="Destiny")
addMesh(issScene,destinyConeFwd,NodeName="Destiny Cone Fwd",ParentNodeName="Destiny")
addMesh(issScene,destinyConeAft,NodeName="Destiny Cone Aft",ParentNodeName="Destiny")
addMesh(issScene,destinyWindow,NodeName="Destiny Window",ParentNodeName="Destiny")

Visualize Assembled Module

Before scaling up to the full station, verify that parts are correctly positioned, oriented, and colored.

Visualize the four-part Destiny module.

Also, display its exploded view by setting Explode to true. This translates each part outward from the scene centroid for inspection without modifying the scene. Set ShowLabels to true to annotate each part with its scene-graph node name.

figure(Name="Destiny module",Position=[100 100 1400 600])
subplot(1,2,1)
patch(issScene)
axis equal
grid on
view(3)
camlight
xlabel("X")
ylabel("Y")
zlabel("Z")
title("Destiny US Laboratory")
subplot(1,2,2)
patch(issScene,Explode=true,ShowLabels=true)
axis equal
grid on
view(3)
camlight
xlabel("X")
ylabel("Y")
zlabel("Z")
title("Destiny - Exploded View")

Build Remaining Subsystems

Building the remaining 11 subsystems and their parts one-by-one in the main script would be impractical. The same create-transform-material-attach workflow demonstrated for Destiny module applies to all other subsystems. Create and assemble the remaining subsystems by using the helperBuildISSSubsystems helper function. The helper function builds pressurized modules, truss, power, thermal, robotics, and external payload systems, and attaches each component to the scene. It returns the updated scene issScene and mesh issMesh. The mesh issMesh represents the full ISS model flattened into a single Mesh object for fast static previews. Use "Destiny" as the existingGroups argument since that module already exists in the scene.

existingGroups = "Destiny";
[issScene,issMesh] = helperBuildISSSubsystems(issScene,dim,color,cfg,existingGroups);

Inspect Scene Hierarchy

The scene contains hundreds of parts. Verify that each part is attached to the intended parent node. Print the scene graph as a tree by using the dispGraph object function. In the tree graph, each top-level node represents a subsystem, and a children represent individual parts.

dispGraph(issScene)
ISS
    ├── Destiny [Mesh: 128 faces]
    │   ├── Destiny Cone Fwd [Mesh: 96 faces]
    │   ├── Destiny Cone Aft [Mesh: 96 faces]
    │   └── Destiny Window [Mesh: 12 faces]
    ├── Zarya [Mesh: 128 faces]
    │   ├── Zarya Cone Fwd [Mesh: 96 faces]
    │   ├── Zarya Cone Aft [Mesh: 96 faces]
    │   ├── Zarya Nadir Port [Mesh: 1280 faces]
    │   ├── Zarya Solar Panel Port [Mesh: 12 faces]
    │   ├── Zarya Solar Strut Port [Mesh: 12 faces]
    │   ├── Zarya Solar Panel Stbd [Mesh: 12 faces]
    │   └── Zarya Solar Strut Stbd [Mesh: 12 faces]
    ├── Zvezda [Mesh: 128 faces]
    │   ├── Zvezda Working Compartment [Mesh: 112 faces]
    │   ├── Zvezda Transfer Compartment [Mesh: 96 faces]
    │   ├── Zvezda Engine Nozzle Port [Mesh: 64 faces]
    │   ├── Zvezda Engine Nozzle Stbd [Mesh: 64 faces]
    │   ├── Zvezda Solar Panel Port [Mesh: 12 faces]
    │   ├── Zvezda Solar Strut1 Port [Mesh: 12 faces]
    │   ├── Zvezda Solar Strut2 Port [Mesh: 12 faces]
    │   ├── Zvezda Solar Panel Stbd [Mesh: 12 faces]
    │   ├── Zvezda Solar Strut1 Stbd [Mesh: 12 faces]
    │   ├── Zvezda Solar Strut2 Stbd [Mesh: 12 faces]
    │   ├── Zvezda Zenith Port [Mesh: 64 faces]
    │   └── Zvezda Nadir Port [Mesh: 64 faces]
    ├── Unity [Mesh: 128 faces]
    │   ├── Unity CBM Port Fwd [Mesh: 80 faces]
    │   ├── Unity CBM Port Aft [Mesh: 80 faces]
    │   ├── Unity CBM Port Stbd [Mesh: 80 faces]
    │   ├── Unity CBM Port Port [Mesh: 80 faces]
    │   ├── Unity CBM Port Zenith [Mesh: 80 faces]
    │   └── Unity CBM Port Nadir [Mesh: 80 faces]
    ├── Harmony [Mesh: 128 faces]
    │   ├── Harmony Port Fwd [Mesh: 80 faces]
    │   ├── Harmony Port Stbd [Mesh: 80 faces]
    │   ├── Harmony Port Port [Mesh: 80 faces]
    │   ├── Harmony Port Zenith [Mesh: 80 faces]
    │   └── Harmony Port Nadir [Mesh: 80 faces]
    ├── Columbus [Mesh: 112 faces]
    │   ├── Columbus Cone Fwd [Mesh: 80 faces]
    │   └── Columbus Cone Aft [Mesh: 80 faces]
    ├── Kibo [Mesh: 128 faces]
    │   ├── Kibo Cone Fwd [Mesh: 96 faces]
    │   ├── Kibo Cone Aft [Mesh: 96 faces]
    │   ├── Kibo ELM-PS Hull [Mesh: 96 faces]
    │   ├── Kibo Exposed Facility [Mesh: 12 faces]
    │   ├── Kibo EF Strut Port [Mesh: 12 faces]
    │   ├── Kibo EF Strut Stbd [Mesh: 12 faces]
    │   ├── Kibo RMS Base [Mesh: 48 faces]
    │   └── Kibo RMS Boom [Mesh: 40 faces]
    ├── Tranquility [Mesh: 128 faces]
    │   ├── Tranquility Port Fwd [Mesh: 80 faces]
    │   ├── Tranquility Port Aft [Mesh: 80 faces]
    │   ├── Tranquility Port Stbd [Mesh: 80 faces]
    │   ├── Tranquility Port Port [Mesh: 80 faces]
    │   ├── Tranquility Port Zenith [Mesh: 80 faces]
    │   └── Tranquility Port Nadir [Mesh: 80 faces]
    ├── Cupola [Mesh: 5120 faces]
    │   ├── Cupola Base Ring [Mesh: 96 faces]
    │   ├── Cupola Window 1 [Mesh: 12 faces]
    │   ├── Cupola Window 2 [Mesh: 12 faces]
    │   ├── Cupola Window 3 [Mesh: 12 faces]
    │   ├── Cupola Window 4 [Mesh: 12 faces]
    │   ├── Cupola Window 5 [Mesh: 12 faces]
    │   ├── Cupola Window 6 [Mesh: 12 faces]
    │   └── Cupola Top Window [Mesh: 64 faces]
    ├── Rassvet [Mesh: 80 faces]
    ├── Poisk [Mesh: 80 faces]
    ├── Nauka [Mesh: 112 faces]
    │   ├── Nauka Solar Panel Port [Mesh: 12 faces]
    │   ├── Nauka Solar Strut Port [Mesh: 12 faces]
    │   ├── Nauka Solar Panel Stbd [Mesh: 12 faces]
    │   ├── Nauka Solar Strut Stbd [Mesh: 12 faces]
    │   └── Nauka Radiator [Mesh: 12 faces]
    ├── Adapters [Mesh: 80 faces]
    │   ├── PMA-2 [Mesh: 80 faces]
    │   ├── IDA-2 [Mesh: 80 faces]
    │   ├── PMA-3 [Mesh: 80 faces]
    │   └── IDA-3 [Mesh: 80 faces]
    ├── EVA_Handrails [Mesh: 12 faces]
    │   ├── Destiny Handrail Nadir [Mesh: 12 faces]
    │   ├── Destiny Handrail Stbd [Mesh: 12 faces]
    │   ├── Destiny Handrail Port [Mesh: 12 faces]
    │   ├── Harmony Handrail Zenith [Mesh: 12 faces]
    │   ├── Harmony Handrail Nadir [Mesh: 12 faces]
    │   ├── Harmony Handrail Stbd [Mesh: 12 faces]
    │   ├── Harmony Handrail Port [Mesh: 12 faces]
    │   ├── Unity Handrail Zenith [Mesh: 12 faces]
    │   ├── Unity Handrail Nadir [Mesh: 12 faces]
    │   ├── Unity Handrail Stbd [Mesh: 12 faces]
    │   ├── Unity Handrail Port [Mesh: 12 faces]
    │   ├── Zarya Handrail Zenith [Mesh: 12 faces]
    │   ├── Zarya Handrail Nadir [Mesh: 12 faces]
    │   ├── Zarya Handrail Stbd [Mesh: 12 faces]
    │   └── Zarya Handrail Port [Mesh: 12 faces]
    ├── ITS_S0 [Mesh: 32 faces]
    │   ├── ITS_S0 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_S0 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_S0 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_S0 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S0 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S0 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S0 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S0 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S0 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S0 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S0 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S0 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S0 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S0 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S0 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S0 Port VBatten 2 [Mesh: 24 faces]
    │   └── ITS_S0 Stbd VBatten 2 [Mesh: 24 faces]
    ├── ITS_S1 [Mesh: 32 faces]
    │   ├── ITS_S1 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_S1 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_S1 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_S1 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S1 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S1 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S1 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S1 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S1 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S1 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S1 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S1 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S1 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S1 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S1 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S1 Port VBatten 2 [Mesh: 24 faces]
    │   └── ITS_S1 Stbd VBatten 2 [Mesh: 24 faces]
    ├── ITS_P1 [Mesh: 32 faces]
    │   ├── ITS_P1 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_P1 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_P1 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_P1 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P1 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P1 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P1 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P1 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P1 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P1 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P1 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P1 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P1 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P1 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P1 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P1 Port VBatten 2 [Mesh: 24 faces]
    │   └── ITS_P1 Stbd VBatten 2 [Mesh: 24 faces]
    ├── ITS_S3S4 [Mesh: 32 faces]
    │   ├── ITS_S3S4 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_S3S4 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_S3S4 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_S3S4 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port Brace 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd Brace 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port Brace 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd Brace 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port Brace 5 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd Brace 5 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Stbd VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Top Batten 5 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Bot Batten 5 [Mesh: 24 faces]
    │   ├── ITS_S3S4 Port VBatten 5 [Mesh: 24 faces]
    │   └── ITS_S3S4 Stbd VBatten 5 [Mesh: 24 faces]
    ├── ITS_P3P4 [Mesh: 32 faces]
    │   ├── ITS_P3P4 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_P3P4 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_P3P4 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_P3P4 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port Brace 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd Brace 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port Brace 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd Brace 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port Brace 5 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd Brace 5 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Stbd VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Top Batten 5 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Bot Batten 5 [Mesh: 24 faces]
    │   ├── ITS_P3P4 Port VBatten 5 [Mesh: 24 faces]
    │   └── ITS_P3P4 Stbd VBatten 5 [Mesh: 24 faces]
    ├── ITS_S5 [Mesh: 32 faces]
    │   ├── ITS_S5 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_S5 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_S5 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_S5 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S5 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S5 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S5 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S5 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S5 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S5 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S5 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S5 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S5 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S5 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S5 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S5 Port VBatten 1 [Mesh: 24 faces]
    │   └── ITS_S5 Stbd VBatten 1 [Mesh: 24 faces]
    ├── ITS_P5 [Mesh: 32 faces]
    │   ├── ITS_P5 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_P5 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_P5 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_P5 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P5 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P5 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P5 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P5 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P5 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P5 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P5 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P5 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P5 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P5 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P5 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P5 Port VBatten 1 [Mesh: 24 faces]
    │   └── ITS_P5 Stbd VBatten 1 [Mesh: 24 faces]
    ├── ITS_S6 [Mesh: 32 faces]
    │   ├── ITS_S6 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_S6 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_S6 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_S6 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_S6 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_S6 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_S6 Port Brace 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd Brace 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_S6 Port Brace 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd Brace 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_S6 Top Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_S6 Port Brace 5 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd Brace 5 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Stbd VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_S6 Top Batten 5 [Mesh: 24 faces]
    │   ├── ITS_S6 Bot Batten 5 [Mesh: 24 faces]
    │   ├── ITS_S6 Port VBatten 5 [Mesh: 24 faces]
    │   └── ITS_S6 Stbd VBatten 5 [Mesh: 24 faces]
    ├── ITS_P6 [Mesh: 32 faces]
    │   ├── ITS_P6 Longeron BotStbd [Mesh: 32 faces]
    │   ├── ITS_P6 Longeron TopPort [Mesh: 32 faces]
    │   ├── ITS_P6 Longeron BotPort [Mesh: 32 faces]
    │   ├── ITS_P6 Top Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 1-A [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 1-B [Mesh: 24 faces]
    │   ├── ITS_P6 Port Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd Brace 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 2-A [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 2-B [Mesh: 24 faces]
    │   ├── ITS_P6 Port Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd Brace 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 3-A [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 3-B [Mesh: 24 faces]
    │   ├── ITS_P6 Port Brace 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd Brace 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 4-A [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 4-B [Mesh: 24 faces]
    │   ├── ITS_P6 Port Brace 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd Brace 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_P6 Top Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 5-A [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Brace 5-B [Mesh: 24 faces]
    │   ├── ITS_P6 Port Brace 5 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd Brace 5 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 0 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd VBatten 0 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd VBatten 1 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd VBatten 2 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd VBatten 3 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Stbd VBatten 4 [Mesh: 24 faces]
    │   ├── ITS_P6 Top Batten 5 [Mesh: 24 faces]
    │   ├── ITS_P6 Bot Batten 5 [Mesh: 24 faces]
    │   ├── ITS_P6 Port VBatten 5 [Mesh: 24 faces]
    │   └── ITS_P6 Stbd VBatten 5 [Mesh: 24 faces]
    ├── ITS_Z1 [Mesh: 40 faces]
    │   ├── Z1 Strut Stbd [Mesh: 40 faces]
    │   └── Z1 Cross Brace [Mesh: 24 faces]
    ├── SARJ [Mesh: 128 faces]
    │   ├── S SARJ Ring [Mesh: 128 faces]
    │   ├── P SARJ [Mesh: 128 faces]
    │   └── P SARJ Ring [Mesh: 128 faces]
    ├── SAW_S6_Outboard [Mesh: 64 faces]
    │   ├── Mast Zenith S6-Outboard [Mesh: 40 faces]
    │   ├── SAW Zenith S6-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Outboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Outboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir S6-Outboard [Mesh: 40 faces]
    │   ├── SAW Nadir S6-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Outboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N S6-Outboard-5 [Mesh: 12 faces]
    ├── SAW_S6_Inboard [Mesh: 64 faces]
    │   ├── Mast Zenith S6-Inboard [Mesh: 40 faces]
    │   ├── SAW Zenith S6-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Inboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z S6-Inboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir S6-Inboard [Mesh: 40 faces]
    │   ├── SAW Nadir S6-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N S6-Inboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N S6-Inboard-5 [Mesh: 12 faces]
    ├── SAW_S4_Outboard [Mesh: 64 faces]
    │   ├── Mast Zenith S4-Outboard [Mesh: 40 faces]
    │   ├── SAW Zenith S4-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Outboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Outboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir S4-Outboard [Mesh: 40 faces]
    │   ├── SAW Nadir S4-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Outboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N S4-Outboard-5 [Mesh: 12 faces]
    ├── SAW_S4_Inboard [Mesh: 64 faces]
    │   ├── Mast Zenith S4-Inboard [Mesh: 40 faces]
    │   ├── SAW Zenith S4-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Inboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z S4-Inboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir S4-Inboard [Mesh: 40 faces]
    │   ├── SAW Nadir S4-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N S4-Inboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N S4-Inboard-5 [Mesh: 12 faces]
    ├── SAW_P4_Outboard [Mesh: 64 faces]
    │   ├── Mast Zenith P4-Outboard [Mesh: 40 faces]
    │   ├── SAW Zenith P4-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Outboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Outboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir P4-Outboard [Mesh: 40 faces]
    │   ├── SAW Nadir P4-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Outboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N P4-Outboard-5 [Mesh: 12 faces]
    ├── SAW_P4_Inboard [Mesh: 64 faces]
    │   ├── Mast Zenith P4-Inboard [Mesh: 40 faces]
    │   ├── SAW Zenith P4-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Inboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z P4-Inboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir P4-Inboard [Mesh: 40 faces]
    │   ├── SAW Nadir P4-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N P4-Inboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N P4-Inboard-5 [Mesh: 12 faces]
    ├── SAW_P6_Outboard [Mesh: 64 faces]
    │   ├── Mast Zenith P6-Outboard [Mesh: 40 faces]
    │   ├── SAW Zenith P6-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Outboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Outboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir P6-Outboard [Mesh: 40 faces]
    │   ├── SAW Nadir P6-Outboard [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Outboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Outboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Outboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Outboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N P6-Outboard-5 [Mesh: 12 faces]
    ├── SAW_P6_Inboard [Mesh: 64 faces]
    │   ├── Mast Zenith P6-Inboard [Mesh: 40 faces]
    │   ├── SAW Zenith P6-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Inboard-4 [Mesh: 12 faces]
    │   ├── SAW Grid Z P6-Inboard-5 [Mesh: 12 faces]
    │   ├── Mast Nadir P6-Inboard [Mesh: 40 faces]
    │   ├── SAW Nadir P6-Inboard [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Inboard-1 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Inboard-2 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Inboard-3 [Mesh: 12 faces]
    │   ├── SAW Grid N P6-Inboard-4 [Mesh: 12 faces]
    │   └── SAW Grid N P6-Inboard-5 [Mesh: 12 faces]
    ├── Thermal_Radiators [Mesh: 12 faces]
    │   ├── S1 Rad 1 Mast [Mesh: 32 faces]
    │   ├── S1 Rad 1 Hinge [Mesh: 48 faces]
    │   ├── S1 Rad 2 [Mesh: 12 faces]
    │   ├── S1 Rad 2 Mast [Mesh: 32 faces]
    │   ├── S1 Rad 2 Hinge [Mesh: 48 faces]
    │   ├── S1 Rad 3 [Mesh: 12 faces]
    │   ├── S1 Rad 3 Mast [Mesh: 32 faces]
    │   ├── S1 Rad 3 Hinge [Mesh: 48 faces]
    │   ├── P1 Rad 1 [Mesh: 12 faces]
    │   ├── P1 Rad 1 Mast [Mesh: 32 faces]
    │   ├── P1 Rad 1 Hinge [Mesh: 48 faces]
    │   ├── P1 Rad 2 [Mesh: 12 faces]
    │   ├── P1 Rad 2 Mast [Mesh: 32 faces]
    │   ├── P1 Rad 2 Hinge [Mesh: 48 faces]
    │   ├── P1 Rad 3 [Mesh: 12 faces]
    │   ├── P1 Rad 3 Mast [Mesh: 32 faces]
    │   └── P1 Rad 3 Hinge [Mesh: 48 faces]
    ├── Canadarm2 [Mesh: 12 faces]
    │   ├── Mobile Base System [Mesh: 12 faces]
    │   ├── Canadarm Shoulder Joint [Mesh: 80 faces]
    │   ├── Canadarm Shoulder Yaw Motor [Mesh: 64 faces]
    │   ├── Canadarm Boom 1 [Mesh: 48 faces]
    │   ├── Canadarm Elbow Joint [Mesh: 72 faces]
    │   ├── Canadarm Elbow Camera [Mesh: 12 faces]
    │   ├── Canadarm Boom 2 [Mesh: 48 faces]
    │   ├── Canadarm Wrist Joint [Mesh: 72 faces]
    │   ├── Canadarm LEE-A [Mesh: 64 faces]
    │   ├── Canadarm LEE-A Ring [Mesh: 64 faces]
    │   ├── Canadarm LEE-B [Mesh: 64 faces]
    │   └── Canadarm LEE-B Ring [Mesh: 64 faces]
    ├── External_Payloads [Mesh: 64 faces]
    │   ├── S1 Ammonia Tank 2 [Mesh: 64 faces]
    │   ├── P1 Ammonia Tank [Mesh: 64 faces]
    │   ├── P1 Ammonia Tank 2 [Mesh: 64 faces]
    │   ├── S4 Battery 1 [Mesh: 12 faces]
    │   ├── S4 Battery 2 [Mesh: 12 faces]
    │   ├── S4 Battery 3 [Mesh: 12 faces]
    │   ├── P4 Battery 1 [Mesh: 12 faces]
    │   ├── P4 Battery 2 [Mesh: 12 faces]
    │   ├── P4 Battery 3 [Mesh: 12 faces]
    │   ├── S6 Battery 1 [Mesh: 12 faces]
    │   ├── S6 Battery 2 [Mesh: 12 faces]
    │   ├── P6 Battery 1 [Mesh: 12 faces]
    │   ├── P6 Battery 2 [Mesh: 12 faces]
    │   ├── ESP-2 [Mesh: 12 faces]
    │   ├── ESP-3 [Mesh: 12 faces]
    │   ├── ELC-1 [Mesh: 12 faces]
    │   ├── ELC-2 [Mesh: 12 faces]
    │   ├── ELC-3 [Mesh: 12 faces]
    │   ├── ELC-4 [Mesh: 12 faces]
    │   ├── AMS-02 [Mesh: 96 faces]
    │   ├── AMS-02 Support [Mesh: 12 faces]
    │   ├── BEAM Module [Mesh: 80 faces]
    │   ├── Bishop Airlock [Mesh: 64 faces]
    │   └── Bartolomeo Platform [Mesh: 12 faces]
    ├── Communications [Mesh: 64 faces]
    │   ├── S-Band Mast Zenith [Mesh: 32 faces]
    │   ├── S-Band Antenna Nadir [Mesh: 64 faces]
    │   ├── S-Band Mast Nadir [Mesh: 32 faces]
    │   ├── Ku-Band Dish [Mesh: 1280 faces]
    │   ├── Ku-Band Boom [Mesh: 32 faces]
    │   ├── Ku-Band Feed [Mesh: 40 faces]
    │   ├── GPS Antenna 1 [Mesh: 48 faces]
    │   ├── GPS Mast 1 [Mesh: 24 faces]
    │   ├── GPS Antenna 2 [Mesh: 48 faces]
    │   ├── GPS Mast 2 [Mesh: 24 faces]
    │   ├── GPS Antenna 3 [Mesh: 48 faces]
    │   ├── GPS Mast 3 [Mesh: 24 faces]
    │   ├── GPS Antenna 4 [Mesh: 48 faces]
    │   ├── GPS Mast 4 [Mesh: 24 faces]
    │   ├── UHF Antenna 1 [Mesh: 24 faces]
    │   └── UHF Antenna 2 [Mesh: 24 faces]
    ├── Docking_Targets [Mesh: 12 faces]
    │   ├── IDA-2 Target Ring [Mesh: 64 faces]
    │   ├── IDA-3 Target [Mesh: 12 faces]
    │   ├── IDA-3 Target Ring [Mesh: 64 faces]
    │   ├── Zvezda Aft Target [Mesh: 12 faces]
    │   ├── Zvezda Aft Target Ring [Mesh: 64 faces]
    │   ├── Nauka Nadir Target [Mesh: 12 faces]
    │   └── Nauka Nadir Target Ring [Mesh: 64 faces]
    ├── Surface_Details [Mesh: 12 faces]
    │   ├── Destiny Exp Rack 2 [Mesh: 12 faces]
    │   ├── Destiny Exp Rack 3 [Mesh: 12 faces]
    │   ├── Destiny Exp Rack 4 [Mesh: 12 faces]
    │   ├── Zarya Thermal Blanket 1 [Mesh: 12 faces]
    │   ├── Zarya Thermal Blanket 2 [Mesh: 12 faces]
    │   ├── Zarya Thermal Blanket 3 [Mesh: 12 faces]
    │   ├── Zarya Thermal Blanket 4 [Mesh: 12 faces]
    │   ├── Zarya Thermal Blanket 5 [Mesh: 12 faces]
    │   └── Zvezda Docking Probe [Mesh: 40 faces]
    └── Utility_Lines [Mesh: 32 faces]
        ├── Loop B Ammonia Line [Mesh: 32 faces]
        ├── S1 Pump Module [Mesh: 12 faces]
        ├── P1 Pump Module [Mesh: 12 faces]
        ├── Power Cable 1 [Mesh: 24 faces]
        ├── Power Cable 2 [Mesh: 24 faces]
        └── Power Cable 3 [Mesh: 24 faces]

Visualize the assembled scene in an interactive 3D viewer by using the dispGraph object function.

show(issScene,Background=[0.1 0.12 0.18])

Interactive 3D view of the assembled ISS scene

Visualize ISS Scene

A single perspective can hide alignment errors or missing parts. Inspect the model from six standardized orthographic angles by using the helperShowISSOrthographicViews helper function.

helperShowISSOrthographicViews(issMesh)

Annotate the major modules such as truss segments, solar arrays, arm segments, and radiators by using the helperShowISSPartNames helper function.

helperShowISSPartNames(issMesh,dim)

Export to File

To use the constructed asset in downstream applications such as simulation engines, you must export it to a standard 3D file format.

Save the hierarchical scene to a GLB file by using the asset3d.write function. The GLB format preserves the scene-graph hierarchy, materials, and node names in a single binary file.

outputDir = fullfile(pwd,"meshes");
if ~isfolder(outputDir)
    mkdir(outputDir)
end
glbPath = fullfile(outputDir,"iss_station.glb");
asset3d.write(issScene,glbPath)

Summary

In this example, you constructed a hierarchical 3D asset of the International Space Station using primitive shapes. You created basic geometries, applied transformations to position them within a scene, organized them into a scene graph, and exported the assembled model to a 3D file format. You can use this workflow for building other complex assets, such as vehicles, drones, and buildings.

References

  • NASA, International Space Station Overview. https://www.nasa.gov/international-space-station/space-station-overview/

  • NASA, Reference Guide to the International Space Station (Utilization Edition). https://www.nasa.gov/wp-content/uploads/2015/09/np-2015-05-022-jsc-iss-guide-2015-update-111015-508c.pdf

See Also

Objects

Functions

Topics