Hardware Design

Hardware designs allows the player to create a visual version of their hardware products, to make them more tangible.

To edit hardware designs, open the Mods window from the main menu and click on "Hardware design editor" button.

## Tutorial

Check out a video tutorial on how to create hardware designs here:

‎

## Hardware design construction

### Overall structure

A **hardware design** consists of a bunch of **Mesh objects**, each of which has a mesh with optional morph targets. The **hardware design** has one **Mesh object** as its base model, with **attachment points** on its faces to attach other **Mesh objects**.

The assembled hardware design should fit in a 2x2x2 cube centered around (0,0,0), i.e. stretching 1 unit out along each axis. To see if your object has the correct dimensions, check that it fits neatly on screen in the editor.

### Attachment points

An **attachment point** sits in the middle of a triangle of the base model's mesh, facing outward, i.e. perpendicular to the triangle's plane. **Attachment points** naturally move as the base mesh is morphed.

**Mesh objects** can be attached to an **attachment point** with some offset position and rotation.

**Mesh objects** do not need to be attached to a triangle that matches where it will sit on the object, but it should be attached to an **attachment point** that moves in the same way you want the **Mesh object** to move when the base model is morphed. For instance, if you have a airplane wing and you attach a motor, the attachment point doesn't need to be where the motor is attached, but rather a place on the wing that moves in the same direction you want the motor to move, when the wing is curled or stretched.

### Textures

All **Mesh objects** of a **hardware design** should map to 1 atlas texture. Each mesh can have sub atlasses within the main atlas texture, in a single line, e.g. a row or column of textures in your atlas that is used as an atlas for one of your mesh objects.

Textures work exactly the same as the standard furniture textures, which you can read about here.

You'll need 3 textures, of which the last 2 are optional.

1. texture maps each R, G and B channel to a primary, secondary and tertiary color the player chooses.

2. texture where the R, G and B channels map to Smoothness, Emission and Mask, where the mask controls whether the first texture maps to player colors or just render as-is.

3. texture is a normal map, where the alpha channel control metalness, 0% alpha is 100% metal.

## Editor

You can click and drag in the main view to rotate your model and use the scroll wheel to zoom.

### Main editor

File:HardwareEditor.png

1. Press this button to randomly generate a design to see if your setup is good. You can right click to go back.

2. These are all the Mesh objects your hardware design contains. You can click on them in this panel to see their morph targets and edit their UV atlas.

3. This panel allows you to change your base mesh's morph targets. This is useful to see if your attachment objects align properly when morphed.

4. This is a list of all your attachment points. Clicking "Move point" will allow you to change which triangle the attachment point is attached to and it fixes all mesh objects so their offset position and rotation stays the same.

5. Each attachment point has a list of Mesh objects that can attach to it, with individual offset position and rotations. The "Copy" button copies the offset and rotation offsets of the mesh object above it, which is useful for adding many mesh objects with the same origin.

6. Finally you can edit which colors the game will pick between when generating a random hardware design. The primary, secondary and tertiary color will be mapped to the R, G and B channels of your first texture, based on the Mask of the second texture. You can disable colors if you aren't using the channels to remove it from the UI when the player is picking a color. The player is not limited to the colors you have picked.

### Creating attachment points

File:HardwareEditorAttachments.png

When you are adding or moving an attachment point, you can see the individual triangles of your mesh and an arrow to show which triangle and which direction your attachment point will have.

### Attaching mesh objects

File:HardwareEditorOffsetting.png

When you add or move a mesh object from an attachment point, you'll get a standard transform gizmo, use the arrows to move the object along each axis or hold CTRL and use the circles to rotate your object along an axis.

### Mesh object editor

File:HardwareEditorMeshObjects.png

1. Each mesh object can have it's own sub atlas inside the main texture atlas. Just create each texture in a single line inside the main texture and use the X axis and Y axis offsets to control which direction your atlas is moving in and use the Count variable to control how many sub textures are in your atlas.

2. This display will show how your atlasses are mapped on the main texture, each UV will have a different color, here seen in red and then green.