Automation Wiki
Advertisement

Step 1 - Tools Setup

What you will need:

UE4 Editor (free download from Epic Games)

A 3d modeling package (Only 3ds Max 2012 or newer is officially supported)

Automation Workshop Tools (from Steam)

Installing UE4

You will need to download and install UE4 Editor 4.17.2 From Epic Games, To do this grab the Launcher from here: https://www.unrealengine.com/download

Do not install UE4 Editor to Program Files. install the editor to somewhere like c:\UE4\UE_4xx or similar.

Installing Automation Workshop Tools

Within Steam Go to Library > Tools, and download the Automation - Car Company Tycoon Workshop Tools, this contains the mod project for Automation.

IF your Steam Library is within Program files. It is recommended to copy AutomationGame project to another folder.

Once installed, you can open the AutomationGame project with UE4 Editor.

Installing 3ds Max Car Body Tools Script

In Windows Explorer, go to steamapps\common\Automation_SDK\MaxScripts

Copy car_body_unwrap.ms into your Program Files\Autodesk\3ds Max 2013\Scripts\Startup folder

Importing Car Body Materials into your 3ds Max Scene

In Windows Explorer, go to steamapps\common\Automation_SDK\MaxMaterials

Copy CarBodyMaterials.mat into your \Program Files\Autodesk\3ds Max 2013\materiallibraries folder

Go into the material editor in 3ds max the press the G key, or the Materials Menu > Get Material

From there you should be able to drag CarMaterials and UV Test onto some of the blank grey spheres in the material editor window (You'll likely need to do this last step every time you launch a new 3ds max scene)

Step 2 - Create a half car mesh

Build half of the car in 3ds max. (Other packages might work in theory, but we have no scripts/tools for them, and no idea how to do anything in them, so can offer no support)

I won't detail specifically how to build a car mesh here, or how to use 3ds max in general to model with, as that's much better covered by many other tutorials online.

Automation cars should be created as a half, and then mirrored once complete, to ensure symmetry and minimise the amount of work required to tweak them.

The tail must be facing north, while the front is facing south.

Specifications

  • Approx 8000 - 15000 triangles (for half. Triangle count not hugely important for performance, but too many triangles are hard to deform nicely)
  • Panel/door seams modeled into car
  • Entire car is one object. But does not need to be one ELEMENT
  • No Mirrors, grilles, lights, badges, vents, doorhandles, aerials, fuelcaps etc.
  • Quad structure as much as possible (avoid triangles wherever you can, they shade and deform poorly)
  • Front of car faces towards the -Y axis
  • Car roughly centred on 0 in the Y axis (front to back)
  • Bottom edge of car roughly sitting on 0 in Z axis, car sticking upwards into +Z
  • Remember that X axis in 3ds max = Forwards/backwards whereas the Z axis = Up/Down. This is not true in all 3d packages.
  • All vertices in the centre of the car (where it's cut in half) should be EXACTLY on 0 in the X axis
  • We usually build car halves on the -X side of the X axis, although this isn't critical.
  • Shell of car is single sided, and does not have backfaces. It is made double sided by materials in UE4
  • Smoothing groups are important to define which polygons blend smoothly together, and which ones have a hard edge. Read the 3ds max documentation on Smoothing Groups
Topview2
SideView2
Triangles

Triangles are best avoided

3dview


Step 3 - Create Body Boxes etc.

BodyBoxes

Automation uses various mesh objects to help calculate various aspects of the car, or to help the fixture system work correctly.

  • 1: Cabin Bounds box. Used to determine cabin volume and interior weight. Must be tallest in the middle, tapering to each end. Only measured by it's bounding box, not it's total volume.
  • 2: Lower Bounds box. As per cabin, but for the overall lower body of the car. Has a lot of impact on weight.
  • 3: Cargo Box: determines cargo volume. Put it in the boot/rear hatch area, roughly filling where cargo would go.
  • |4: Driver Head Position: Currently not used, but may be required for future features. Put where the drivers head goes.
  • 5: Bonnet Cam Postiion: but may be required for future features. Put where a bonnet camera would go.
  • 6: Lip Placement strip: Used for placing lips/sideskirts/exhausts. Just a flat strip of polygons running around the lower edge of the car body.
  • 7: Front Bounds: (Not Shown) Determines the cargo space at the front of the car for rear engine vehicles.

These boxes should be part of the same mesh as the car.

TIP: When you have created your boxes you may wish to delete their polygons on the Zero X axis. This will assist with the welding process later on.

BodyBoxes2

This should give you a good idea of where to place each box

BodyBoxes3

Side view of body box placement

Notes for Cabin and Lower bounds boxes:

These boxes are measured by the volume of the BOUNDING BOX, not the volume of the mesh itself. The reason they are tapered is so that, for example, changing the height of the back of the roofline doesn't make a huge difference to the cabin volume (as it would if the box was box shaped)

Also note that you'll need to make the boxes of a size that accurately represents the volume of the car, note in the above picture that the orange cabin bounds box stops well before the front of the windscreen, this is because the windscreen has a steep slope on it, and if the box went all the way to the front of the car it would make for a much larger amount of cabin space than is realistically available. The same can be seen with the body box stopping before the front of the (very tapered) nose, and the cargo box that doesn't go all the way to the back of the sloped boot.

So always think about the bounding box of these boxes, and if it accurately represents the overall volume correctly.

Step 4 - Apply materials

Importing car body materials to 3ds max

You'll need to import the "CarBodyMaterials.Mat" material library included with the modding tools into your 3ds max.

What are all these materials?!

Automation uses a set of placeholder materials applied in 3ds Max using a "Multi/Sub-Object" material, and material IDs.

On import to UE4 these will be replaced with the correct materials and inform the game what various areas of the car are used for and what materials they require.

If you look in the Material Editor at the "Car Materials" Multisub material, you'll see the following material IDs

  • 1 - Bonnet: Defines where you can set bonnet colour.
  • 2 - Bumper_Front: Defines where you can set front bumper colour.
  • 3 - Bumper_Rear: Defines where you can set rear bumper colour.
  • 4 - Chrome: Used to force an object to be Chrome.
  • 5 - Paint: Primary Paint colour. Every panel other than the bonnet and bumpers will likely use this. Changes with main car paint colour adjustments ingame.
  • 6 - Paint_Two_Tone: For areas that should use the secondary paint colour. Will default to primary paint colour otherwise.
  • 7 - Plastic: Used to force an object to be Plastic.
  • 8 - Reflective_Mirror: No longer used, but kept for legacy compatability.
  • 9 - Soft_Top: for Soft Top convertible roof, or any other cloth parts.
  • 10 - Trim: For objects that change with Trim material in game.
  • 11 - Window_Pillar: For objects that change with the window pillar material in game (distinct from the window trim).
  • 12 - Window_Trim: For objects that change with Window Trim material in game.
  • 13 - Windows: Opaque window glass.
  • 14 - Wing_Mirror_Trim: No longer used, but kept for legacy compatability.
  • 15 - BonnetCam: Defines where a bonnet camera would go. Not yet used for anything.
  • 16 - CabinBounds: Defines the size of the cabin.
  • 17 - CargoBounds: Defines the size of the cargo area.
  • 18 - DriverCam: Defines where a driver camera would go. Not yet used for anything.
  • 19 - FrontBounds: Defines the size of the front cargo area on rear engine bodies.
  • 20: LipPlacement: Invisible material for the skirt around the bottom of the car, used for stamping lips and exhausts.
  • 21: LowerBounds: Defines the size/volume of the main body of the car below the window line.

Applying material

ApplyMat

To apply the materials, Select your car mesh then:

1 Open the Material Editor,

2 Select the "Car Materials" material.

3 Press the apply to selection button.

Set Material IDs

SetID

To set material IDs

1: Select the polygons you wish to set Material ID for

2: Use the Set ID spinner in the Edit Poly on your car to choose a material ID for those polygons.

3: Repeat until all IDs are set.

Tip: You can use the "Select ID" button and spinner to select all polygons with a specific ID assigned to them

Selection Tips:

SelectionTools2

1: Element mode lets you select all polygons that are part of a contiguous mesh. This can be useful for bumpers/bonnets etc if you've modelled them as separate parts.

2: Ignore backfacing stops you accidently selecting a polygon from it's back side, useful to avoid selecting things through the other side of the car.

3: By Angle allows you to select all polygons that are within a certain angle of each other. This is good for selecting large flat areas, or a specific side of the car etc. Experiment with the angle number to get the selection you want.

Step 5 - Skin deformation to bones

Skinning is the system used to allow the player to drag around and deform the car body in Automation. It's done via weighting specific vertices to various "Bones" that are a representation of what the player is dragging in game when deforming the body.

It is also probably the single most confusing step of car creation in Automation, as it done in a way that doesn't have a great deal in common with any other widely used game art proccess.

It uses the same tools (the Skin modifier) as skinning a character in 3ds max, so referring to some tutorials around character skinning may give you useful insights into the toolset, but the way we actually use it is quite unique.

Basic Skinning Theory

Bones

Spoopy skeleton.  This is how you'd expect bones to look in a character

Bones: A bone is usually an object in the skeleton of a character used to define the animation of that character. Rather than manually moving every vertex of a character to animate it, you just move and rotate the appropriate bone, and the skin will determine which verts need to move. Bones are usually attached to each other in a hierarchy, so that if you rotate a leg bone, the foot bone will move with it, and the toe bones will follow the foot etc.

In Automation the bones are still used to define which part of the skin moves, but are mostly non-hierarchical, just floating in space around the car without any connection to each other.

Weights

Skin weight colours. The top row of verts is skinned to a value of 1, (Red) descending towards 0 (grey) as you go lower down the model

Vertex Weights: Every vertex on a skinned model has a skin weight to each and every bone. This will be a number from 0 - 1 defining how much that vertex follows the movement of a specific bone.

A vertex weighted 1 to a bone will exactly follow that bone's movement, a weight of .5 will move half as far as the bone, and a weight of 0 won't follow the bone at all.

The way we use Skinning (with "Normalize" set to on) only allows a bone to have a total weight of 1 between all the bones it's skinned to. For example a vertex could have a weight of .5 to bone1 and .5 to bone2. But if you set it to .6 on bone1, then bone2 would have to drop to .4 to maintain a total weight of one

3ds max displays vertex weights in the viewport as a series of colours, denoting how heavily skinned that vertex is to the bone you have selected.

SkinningDeform

This is how the vertices move when the bone they're skinned to is moved to the right,

Setting up bones for car skinning

You can use basically any object you like as a bone, but my prefered way of doing it is to use a "Dummy" object. As it won't get in the way of viewing the car, shows links to confirm it's correctly bound to the root bone, and can't be accidently made visible in game.

DummyBones

You'll need to create a bone near the centre of the car called "Bone Root" this is required to act as the parent, as the skeleton needs to have some form of hierarchy to import correctly. All other bones will be linked to this bone.

Note: It is ESSENTIAL that the bone root is named "Bone Root", otherwise the script will not run!

The other bones you create are up to you, and vary depending on the shape of the car and which parts can be deformed attractively, but almost every car will have bones for

  • Wheelarch flares
  • Windscreen rake/top angle
  • Rear window angle
  • Boot/rear length or angle

There is no real limit to how many bones you can have, but each vertex can only be skinned to 4 different bones, and it can be very difficult ingame to select and deform an area that's skinned to more than 2 bones.

Bones should be created floating near the part of the car they deform. Their location isn't important to how they function ingame, but having them placed correctly makes it much easier to understand what each bone is for in 3ds Max

Once you've created the bones, you'll need to link them to the root bone. Do this by selecting all the bones EXCEPT FOR THE BONE ROOT, then clicking the "Select and Link" button in the top left (has a picture of a chain on it), then clicking and dragging from one of the bones to the root bones.. If all has worked well you should see links between the dummies in the viewport, as per the above screenshot.

Note that you do not need to create bones for anything on the opposite side of the car (e.g wheelarches) as they will automatically be mirrored when you mirror the car body.

BoneLayout2

Applying Skin and Adding Bones

1: Add a "Skin" modifier to the modifier stack of your car body mesh

SkinMod

2: From the Parameters section of the Skin Modifier, Press "Add Bones"

AddBones

3: Select all the bones from the list, and press Select to add them to the skin. (You can use the filters to make sure you're only getting helper objects like dummies in the list)

SelectBones

Weighting the skin

Now comes the complex bit. Weighting skins is a difficult and creative proccess that's almost like remodeling the car into different shapes, but with only skin weights to do it with.

Wheelarches are often the easiest place to start on a new model and a good way to start is to move a bone a reasonably large distance in the direction you want it to move (say 30 - 50cm) and then start weighting to that bone's new position.

Once you've moved the bone, go back to the car mesh and press "Edit envelopes" and tick "Vertices" under the parameters section of the skin modifier, to get into the correct mode to edit vert weights.

EditVertsModes

While you're in "Edit Envelopes" mode, click on the little grey stick inside the bone you wish to edit weights for

SelectBoneLink

Make sure the "Rigid" box is unticked, and the "Normalize" box is ticked.

Select some vertices, and by clicking and dragging upwards on the arrows next to "Abs Effect" set some weighting to the bone.

As you set the weight higher, the selected vertices will move closer to the position you've moved the bone to.

If you need finer adjustment of the weighting, hold Alt while you're dragging.

Remember the higher you set the weight, the faster that bit of car will move with mouse input, and the less weighting will be available to assign to other bones. This isn't too important on wheel arches, but can be on other parts of the car which share more bones.

Note: If your "Abs Effect" values are jumping to 1.0 when you modify them: enter "Edit Envelopes" mode, select the bone root, select all vertices, and then assign the "Abs Effect" to 1.0. This will correct the issue.

Weight1

Once you've done the ring of verts around the wheel arch, just start working inwards, applying lower values to the verts further from the wheel until you get a pleasing wheel arch shape.

Effectively what you're doing here is using the weighting to remodel the car into the shape you want it to be at the furthest extremes of bone movement. If you can make it the correct shape with the bone moved, and with the bone back in it's normal position, everything in between should take care of itself, and any bone position in between should look good.

MoveBone2

Windscreens are also a good place to learn to skin, as you can basically move the windscreen bone forwards, and then try your best to use skin weights to make an almost vertical windscreen. If you can get that working correctly, then you should have a bone that lets you smoothly change the angle of the windscreen

MoveWindscreenBone2

Skinning Tips

  • Look carefully for any strange deformations in panels when moving your bones, it's very important that panels remain as smooth as possible when deforming, as reflections will very obviously show any kinks.
  • Test out what happens if you move two nearby bones at the same time, sometimes two bones movement combined can cause strange polygon overlaps, though this can often be avoided with careful skinning and a smooth falloff of weights between the two bones.
  • Don't try and make too many different skinned areas, 10 - 12 is a sensible maximum, and try and avoid more than one bone effecting the exact same area (some overlap is okay though)
  • Sometimes you'll have to make mesh changes to make your car deform nicely in an area. Mesh/edge flow is very important to getting good deformation. If you need to edit a mesh that's already somewhat skinned without ruining your entire skin (only some of it!) you can follow the Skin Save/Reload process *TO BE WRITTEN*
  • Don't forget that any weighting you give a vertex to a bone will be taken from another bone to keep a total weight of 1. This can get very confusing and cause you to chase your own tail a bit. You have been warned!

Step 6 - UV Unwrap

UV unwrapping is the process of unfolding the mesh onto a flat 2d plane that describes which pixel of a texture is applied to which bit of the mesh.

Think of it like taking a completed papercraft model of a car and unfolding it back to a flat sheet

In most games, UV mapping is typically important for how the actual visible textures on objects , but in Automation, it's mostly important for how the fixture system works.

When you stamp a fixture, such as a headlight, grille, door handle onto the car, it projects a hole into the alpha (transparency) channel texture in the shape of the fixture.

For the holes to be projected correctly, you must Unwrap the car as one complete piece without cutting any polygons apart, moving anything around too much etc, otherwise the holes would project across multiple parts of the car and give you holes in unwanted places.

The UV unwrap must also give a fairly even amount of texture space to each area of the car, as any low resolution areas will cause jagged holes around the outside of fixtures when stamped on.

Luckily we have some automated tools to do most of this for you, but it's still helpful to understand what the tools are doing.

Step 0 (optional): To help understand what the UV unwrap is doing, and make sure it's working correctly, you may wish to apply the "UVTESTING" material (Checker map 20 x 20 tiling. Create me)

Step 1: From the "Car Body Export Helper" utility (located on the utilities tab, with the hammer icon, in the top right of 3ds max), press the "Unwrap Car Body" button

UVUnwrap Note1

Note: If you don't see this menu, go to utilities, then click on "MAXScript", which will bring up the "Car Body Export Helper" option, then click on the name.

Unwrap

The UV unwrap should now be complete, and with the UVTESTING map applied, the result should look something like this

Checker

Note for finished bodies:

If you've finished your body and have it running in game but whenever you add fixtures it looks like this:

WeirdFixtures

You need to follow these steps to fix the UV Maps:

WeirdStep1

Step 1

  1. WeirdStep3

    Step 3

    WeirdStep4

    Step 4

    Start off with your un-mirrored, but complete body.
  2. Apply the UV Test material and unwrap your body (which at this point is only half) with the "Car Body Export Helper Tool".
  3. Add the "Unwrap UVW" modifier. Under the "Channel" panel, navigate to the "Map Channel" box and change the "1" to "2".
  4. There should be a pop up, click "Move".
  5. Now move your "Unwrap UVW" modifier so that it sits below the "Skin" modifier.
  6. Select your car object and mirror it using the "Car Body Export Helper Tool". After mirroring you will notice that your "Unwrap UVW" modifier has disappeared.
  7. In conclusion: unwrap the body and apply the "Unwrap UVW" modifier. Change the "Map Channel" to "2" and then click "Move". After which you will move the "Unwrap UVW" modifier below the "Skin" modifier.
  8. You can now follow the export steps to re-export!
WeirdStep5

Step 5

Step 7 - Mirror Half Body

Now it's time to mirror the car body so it's not just half a car!

Before you do this, it's recommended you do as much as possible to make sure that your skining is working the way you want it, and there aren't any changes you want to make to the mesh.

You can always just delete half the car, and go back to editing the half if you need to make further changes, but it's a bit of a pain, and every time you re-mirror it you tend to have at least 10mins or so worth of little problems to fix. Ideally everything should be perfect on the half first, to save you time.

Also, now is a good time to make REALLY sure that every vertex on the centre line of the car is actually on EXACTLY 0 in the X axis, or else mirroring won't work right.

Besides that, mirroring is simple, from the car body export tools utility, just press "Mirror Car Body"

Mirror

Step 8 - Fix all the things you just broke mirroring the car body

Check wheel arch bones have their opposite counterparts created

Wheel arch bones require an opposite bone. This is to allow the game to morph the wheel arch on the other side of the body in and equal, but opposite direction to that which you have moved. (The same can apply to any other bone that moves along the X-axis. e.g. a running board morph). When the mirror script is run, it determines which bones require an opposite by checking all the vertices on the zero X axis for each bone. If none of these vertices have a weight value then the script will create an opposite bone.

If, after running the script, your double sided body does not have the expected opposite bones, then you will need to go back to your original half body and check that none of the vertices for that bone on the Zero X Axis has any weight applied to it. Remember that zero weighted bones still count as having a value and you should use the "remove Zero Weights" button in 3dsmax.

One method to check for weights on the zero X axis is as follows.

  1. Ensure that all vertices of your mesh are visible
  2. Select all the vertices along the zero x-axis
    Centre verts
  3. Open the weight table (found in the weight properties rollout).
  4. Set the weight table view to selected vertices.
  5. Scroll down the list of weight for the bones in question, any weighted verts should be easy to spot as there should not be any. these can be zeroed by right clicking the weight value. (You may want to make note of any weight values for other bones (exc. bone root) on that vertex, as these may alter as a result of the above and you will want to correct them.
    Weight table view
  6. Once all erroneous weights have been zeroed, use the remove zero weights button.

These steps should ensure your opposite bone is created when the mirror script is run again.

Ensure other bones do not have opposite bones when not required

In some cases your body may have bones that are purposely designed to morph vertices on the outside of the body that are not intended to move along the X axis. E.g. The "Hofmeister Kink" found on the 10sSedan02 series of bodies. The mirror script may create an unwanted opposite bone for these.

This can be avoided by temporarily weighting a vertex on the zero X axis to the bone in question. Ideally pick a vertex that is weighted only to the root bone so as not disturb the weights of other bones. Once the mirror script has been run you can remove the temporary weight applied to that vertex.

Check both halves of the body are welded together

The mirror body script should weld both halves of your body together, however for "reasons" this does not always occur. This can be seen by your body having an unexpected crease or seam down the centre and also when you drag select those vertices on the centreline you will have double the expected number.

A failed weld can be easily corrected by selecting all the vertices on the centreline and clicking the selected button under the weld section.

Once you have welded the two halves together, perform a visual check to ensure that no unintentional welds have taken place. e.g. top and bottom vertices on a window frames. If this happens, undo your weld command and select the centreline vertices in smaller chunks and avoid selecting the verticies in question at the same time.

Check skin for distortion along the centreline vertices

When two skinned vertices are welded together, either automatically via the script or manually, 3dsmax will attempt to combine the weights of both the old vertices into one. Unfortunately it's not very good at it and many of the welded vertices on the centreline end up with odd weights. This results in a distorted skin (see below).

Distorted Skin

To correct the distortion you will need to check and correct the centreline vertices. The most methodical way is to start from one end of the body and work your way to the other end as follows:

  1. Expand the skin modifier and select Envelope.
  2. Open the weight table and set to selected vertices.
  3. Select the central 3 vertices at one end of the body and view the weight values in the table.
  4. Where the mesh is distorted you will usually see one vertex in the weight table that's the odd one out.
    Weight table
  5. Amend the values of this vertex to match those either side of it. (For vertices with more than 2 bones you may need to untick normalize to stop max from altering your amendments - remember to re-enable it once completed).
  6. Repeat the above steps working along the body till you reach the other end of the body.

Check the same UVW mapping exist on all 3 channels

To Check the maps

  1. Under the utilities tab click on the more... button
  2. Select "Channel Info" from the list and click OK
  3. Click the newly appeared Channel Info Button and review the map channel info
Channel inf

The bottom 3 lines of the above screenshot represent the 3 uvw maps. In this case the maps are identical, as they should be. If however there is a mis-match between the three maps (this can be either nill data or just different numbers of verts) then they will need to be be corrected. If your body does not have 3 maps then see here.

In most cases Map:1 is the correct one. One method of correcting the maps is as follows

To Correct the maps

  1. in the channel info box select the line representing the correct map
  2. select copy
  3. select one of the incorrect lines
  4. select paste
  5. repeat for the other map if also incorrect
  6. close the channel info box and click on the modifier stack tab
  7. move the "UVW Mapping paste" modifier(s) to between the skin and the mesh
  8. collapse the modifiers into the mesh

Step 9 - Export Car Body to .FBX file

This step is easy!

1: Select the car body, then go to File > Export > Export Selected

2: Save the FBX file somewhere. It won't actually be distributed with the mod when complete, but name it well, and put it somewhere in a properly named folder, where it'll never need to be moved or renamed (if you move it, UE4 will get confused if you try and reimport)

3: Make sure your export settings look like this image.

FBX settings

Step 10 - Import car body to Unreal

Now it's time to bring all your hard work into Unreal Engine.

1: Launch the Epic Games Launcher

2: From the Library Tab, launch Unreal Engine version 4.17.2. This is not the most recent version of the engine so you may need specifically download it.

3: If the Automation Mod Tools project is listed in the project browser, double click to launch it.

3a: If the Automation Mod Tools project is not listed in the project browser, press "Browse" in the bottom right corner, and navigate to the .uproject file included with the mod tools (Usually located in your Steamapps\Common\Automation_SDK\AutomationGame)

3b: If you've never used Unreal Engine before, now is a great time to watch this introduction to UE4 playlist from Epic. It's for a fairly old version, but most of it still applies

4: Press the "Create Mod" button in the top bar of UE Editor

CreateMOd

5: Press "New Body Variant"

6: Fill out the Mod Name field, and the Author, Description etc. fields.

CreateModDetails

7: Press "Create Mod"

8: Open a content browser window

9: From the "View Options" menu in the bottom right of the content browser, tick "Show Plugin Content"

Show Plugin Content

You should now have a blueprint object for your car, in a folder named with whatever you called your mod.

This blueprint is basically the container for all the information for your car, specifying what meshes it uses, what it's called, what it's chassis settings are etc.

You should rename it to Nameofyourmesh_BodyEditor

Blueprint

10: Go into the "Nameofyourmod > Cars > Meshes" folder

11: Drag your exported .FBX file from windows explorer into the Content Browser

12: Make sure the import settings match the below, the press "Import All"

  • Import Meshes in Bone Hierarchy: OFF
  • Import Materials: OFF
  • Import Textures: OFF
  • Material Search Location: All Assets
ImportSettings1
ImportSettings2

You should now have a Skeletal Mesh (Pink Icon) a Physics Asset (Yellow/Brownish Icon) and a Skeleton (Light Blue Icon)

CarAssets

Step 11- Check materials are correct in Unreal

Double click on the Skeletal Mesh for your car, you should then see a screen like this

Skeletal Mesh Asset

All you need to do here is go through the list of materials on the left and make sure that the correct materials are on the correct parts of the car.

Note: The proper 'Window' material to use is the red one pictured above, the black material does not render correctly in BeamNG.Drive exports.

You can use the "Highlight" and "Isolate" buttons to either make a material glow, or hide any part of the mesh that doesn't have that material on it.

SUPER IMPORTANT: To check the invisible materials, you might need to change them to something visible (like Paint) and then back again, just to make sure CabinBounds etc. are assigned to the right boxes. DO NOT FORGET TO CHECK THIS. If these materials are wrong, you may end up with cars with very strange weights, huge cargo volumes, strange centres of gravity etc, and it's very easy to not notice it's happened unless you check the materials!

Once you've checked everything and are happy with it, press Save in the top left corner of the mesh viewer.

Note: If your Skeletal Mesh turns out like this:

FlippedNormals
FlipNormalMenu

You need to flip your normals in 3DS Max.

  1. Go into 3DS Max and select your mesh. Then, select all of it's polygons.
  2. With all of the mesh's polygons selected (they should all be red), scroll down to "Surface Properties" and under "Normals" click "Flip".
  3. Re-export your model and re-import to Unreal.

Step 12 - Set Car & Chassis data

1: Go back to the Blueprint file for your car, in the Blueprints>BodyEditors folder and double click to open it.

2 : Under "Public", there should be a space to select a Skeletal Mesh

SetCarMesh

Using the dropdown menu, search for your skeletal mesh by name, and choose it from the list. Alternitively, if you highlight it in a content browser window, you can then press the left facing arrow button under the dropdown to assigned the highlighted object to that slot.

AssignedMesh

3: Press save, and close the window.

4: From File menu in the top left, select Open Level, then search for and open "CarBodyEditScene"

5: Drop down the menu next to the Play button, and change it into "Simulate" mode (You should only need to do this once, and it'll turn the Play button into a Simulate button)

Simulate

6: Press Simulate

7:From the World Outliner in the top left, select BP_Car_Builder_Editor

BpCarBuilder

8: In the Body Editor Class drop down in the Blutility section of the Details Panel, select the Body Editor for your car

Note the engine position, front suspension and rear suspension dropdowns. These let you choose which suspension and engine position is loaded in the viewport when you're setting up your car. (useful for making sure some suspension types don't stick out the top of the car etc. They have no effect on anything ingame.

SelectBody

9. Select your car builder from the World Outliner, and start filling in settings. You'll want to set Wheelbase first, otherwise nothing else will make sense.

SelectBod2y

Car Body Settings

  • Seat Options: This is an array of possible seat counts. Press + to add another slot. Please be careful to only put in seat options that can actually realistically fit in your car body.
  • Front Suspension to Disable/Rear Suspension to Disable: Arrays of Suspension to disallow on this car. Commonly used to prevent MacPherson strut towers from poking out of low sports cars
  • Is Softtop Convert: Tick if this is a softtop, Applies appropriate stat modifiers. Is Hardtop Convert: Tick if this is a hardtop convertible, Applies appropriate stat modifiers.
  • Cargo Subtracts: Subtract cargo volume from the cabin volume? Tick this on cars where the CargoBox overlaps the CabinBounds (e.g Wagons, Vans, Hatchbacks) but NOT on Sedans, Pickups etc.
  • Is Release Ready: Car will not load if not ticked. For Developer Use. Variant Body Type: Used for car body filters, and to ensure AI picks correct car bodies to use etc. This is important to get right! Year: Year car becomes available, remember that you need to make the body available at some years before you expect the car to actually be released ingame Doors: How many doors? Remember hatchbacks count as 5 doors. Lots of stats based on this.

Vertical Position

  • Default Suspension Height: Used to set the default position of the ride height slider. Makes sure that supercars start off set low, SUVs set high etc. Height Offset: Moves the car model up and down as compared to the chassis/wheels etc. This should usually be set so that with appropriate sized tyres, and Default Suspension Height set to 0, that the wheels are nearly touching the top of the arches. Some cars might want to be set a bit higher (SUV's etc) but remember that when a car is set to ride height 0 it has very little suspension travel, so you should be setting height offset on the basis of the lowest the car could possibly ever sit.

Front

  • Firewall Y: 0-100 setting of how far forward the firewall is. Easiest to set in side view in Wireframe mode. Set to match your mesh's firewall. Important for engine bay size.
  • Nose Length: Used to set how far forward the engine bay goes. Important for engine bay size. Make sure the chassis doesn't stick out of the car, even when you've moved bones around on the nose.

Rear

  • Rear Wall Y: Firewall position for rear/mid engine cars
  • Tail Length: How far the back of the chassis goes. Important for rear engine bay size, not very important for front engine cars, but careful it doesn't stick out of the car.

Footprint

  • Y Offset: Used to shuffle the mesh back and forwards to sit correctly in the middle of the chassis. If you're putting big numbers in here (say more than 15) you probably need to fix it on your mesh
  • Wheelbase: In centemeters. Set this before setting anything else for best results.
  • Track Width: Supposedly track width in cm, but isn't actually measured accurately. Don't try and match it to real figures, just make sure the wheels sit correctly in the mesh (with correct tyres) and that there is enough room left in the wheel arches to make the tyres as wide as makes sense for the car (which might include having to use arch flare morphs). If you need room for wider tyres, set this a little narrower.

Wheels

  • Max Wheel Diameter: Max Wheel & Tyre diameter in cm. Set this by adjusting the default tyre size to work out what the biggest practical tyre size would be, then putting that number in here.
  • Min Wheel Diameter: Max Wheel & Tyre diameter in cm. Set this by adjusting the default tyre size to work out what the smallest practical tyre size would be, then putting that number in here.
  • Default Wheel Diameter: Sets what tyre diameter is loaded on the car by default. Set it to something sane and average for the car type.
  • Default Rim Diameter: Sets what rim diameter is loaded on the car by default. Set it to something sane and average for the car type. Remember to set correctly to keep a tyre profile that makes sense for the type and age of the car. Older cars MUST have high-ish profile tyres, due to ingame restrictions on using low profiles in early eras.
  • Default Wheel Width: Sets what tyre width is loaded on the car by default. Set it to something sane and average for the car type.

UID

  • Family GUID: Unique identifier for this FAMILY of car bodies. When you first create the first car of a family, click the drop down and generate a GUID. All other bodies in the family must have the same Family GUID. GUID: Unique identifier for this of car body When you first create the first car of a family, click the drop down and generate a GUID. Each body in a family must have a DIFFERENT GUID.

Engine

  • Engine Placement: An array of the possible engine positions. You can have a body that uses all of the possible positions if you like, but make sure it has a "FrontBounds" box to show where cargo goes if it's going to be rear engined.
  • Engine Bay: Autogenerated engine bay bounds, shown by white lines in the wireframe viewport. Don't edit this, as it will auto recalculate anyway

Aero

Default/Blutility

You can use this to copy some (but not all) of the car body values from another car body. If you're creating a family of bodies, use this to copy from another family member before fine tuning everything else. Doesn't update things like doors, so if for example you change the wheelbase and track of one family member, you can use this to copy that change to the other family members.

Paint

These are all used to set what the default material in each slot on the car body is.

Once you've set all these settings, click Edit Blueprint in the details pane, then "Apply Instance Changes to Blueprint" and then click File > Save All (or Ctrl Shift S). If you don't do those steps, your changes will not save.

Step 13 - Set bone limits

Once you've set all the other car body settings, you'll need to set the limits for the bone movement.

1: While simulating in the car body scene, select the car body.

2: Select and move one of the bones (blue squares) to the furthest extreme you want it to be able to move to in an axis, then right click on it and select "Add to Limits". This will allow the bone to move that far in the direction you moved it.

3: Right click on the bone and select "Move All bones to Bind Pose" to move the bones back to their default location

4: Repeat step 2 for every direction you want a bone to move, note that there are 6 directions (Y-, Y+, X-, X+, Z-, Z+). If you don't set any limits, then the bone can't be moved in that direction. Also note that if you accidently set a bone's limits too far, the only way to fix it is to right click, "Reset Limits" and then set the limit again.

Note the following other options on right clicking a bone

  • Move bones to Max: will move a bone as far as possible in the + axes it can move
  • Move bones to Min: will move a bone as far as possible in the - axes it can move
  • Reset limits: Will remove all limits set on this bone.
  • Move all bones to bind pose: Will move bones back to default position Once you've set all these settings, click Edit Blueprint in the details pane, then "Apply Instance Changes to Blueprint" and then click File > Save All (or Ctrl Shift S). If you don't do those steps, your changes will not save.

Bone Limiting tips.

Try to keep wheel arch flares down to a size that seems plausible for the type of car

Step 14 - Generate Thumbnails

Follow the same steps as with creating the thumbnails for Fixtures, except that you must be in Simulate mode (there's a small arrow next to the 'play' button along the top bar - select 'simulate'), and you must use the Body Variant Thumbnail Generator instead of the fixture generator.

(we'll get around to making a proper 'creating thumbnails' section soon™)

001
Body variant thumb gen 02

This is a work around because the thumbnail tool is currently broken.

You need to somehow take a screenshot of your car. One method to do this is import the car body with the broken thumbnails into the game and take a screenshot. Another method is to just take a screenshot of the model. Until the thumbnail tool is fixed, this is one of the ways to have a working thumbnail in game.

After "Export Preview" you want to navigate to your newly generated "Thumbnails" folder. You may need to go inside another folder in order to reach the texture and "BodyVarientPreviewCPP" files.

Right click on your "Name_BodyEditor_CTN" file, then select "Edit..."

FixingThumbnails1
FixingThumbnails2

Once you've selected your screenshot, you need to save everything in your project. After which, you can export.

Step 15 - Exporting Your Car Body

  1. ShareMod
    In Unreal Editor, at the top toolbar, select "Share Mod" and then click on the name of your car body.
  2. Select a path where there are no spaces in the file path.
    1. Example:
    2. "C:\Users\Name\Documents\Unreal Projects\AutomationGame" is NOT OKAY, can you see why? There is a space between "Unreal" and Projects".
    3. "C:\Users\Name\Documents\ModExport" is OKAY because there is no spaces in the file path.
  3. Once your build is successful, you need to launch the "Automation - The Car Company Tycoon Game Workshop Tool" from your "Tools" which can be accessed by hovering over "Library" in Steam.
  4. Enjoy your new car body!

FAQ

Q: I get a Max Script error running the script to unwrap my body like so

Maxscript Err Unwrap

A: Car bodies in UE use 3 UVW maps and your mesh currently has less. To ensure you have enough maps take the following steps

Q: I get a Max Script error running the script to mirror my body like so

Vertex index error

A: Save the body file as is, close 3dsMax and then reopen the file. This fixes most instances of this error.

Q: Unreal won't open the SDK project files

A: Make sure you're running the correct version of Unreal Editor. It should be version 4.17.2.

Q: I got my body in the game, but it looks weird whenever I apply fixtures

A: Refer back to Step 6: UV Unwrap where it addresses this problem.

Advertisement