EasyCMS is a toolset created to simplify porting Automation creations exported to BeamNG to Car Mechanic Simulator 2021. The tool automates porting BeamNG materials to Unity HDRP materials and manages Asset Bundle creation and exporting to CMS
Before we proceed to the installation and usage guides, let us go over things EasyCMS cannot do:
- EasyCMS does not manage the models outside of generating configs based on imported materials. The models have to be set up manually to the requirements of CMS
- EasyCMS cannot fix some textures unsupported by Unity
- Materials created by EasyCMS do not utilize CMS material features such as painting, rust, dust, dents or light functions
- Glass parts do not get cut out fully, some glass reflection effects remain on parts of glass that are supposed to be cut out
- Because EasyCMS materials are mostly transparent to support Automation cutouts, some objects may appear through these materials
- An installed instance of the Unity 2020.3 editor
- A reference of the CMS21 modding PDF Guide
Car Mechanic Simulator 2021\ModdingTools\PDFGuides\Car Mechanic Simulator 2021 Car Modding Guide.pdf(You do not need to install CMS modding tools for Unity) - 3D editing software that supports Collada (.dae) and FBX (.fbx) files (Blender recommended)
- QoL Mod for CMS21
- An image editor with support for DDS (.dds) files
- Download the latest EasyCMS Template release from the
Releasessection in this GitHub repository - Unpack the archive
- Open Unity and add the unpacked folder as a project. Make sure the selected folder has folders named
Assets,Library,ProjectSettingsetc. immediately inside it
While the guide below seems rather long, the process to making a basic working car can take approximately 5-10 minutes
First, let's prepare the Automation car itself. Make sure your car does not use modded materials that do not support exporting
- Remove the steering wheel and the seats. Car Mechanic Simulator adds its own
- Avoid fixtures going over the body's panel seams. This will not be an issue unless you want to separate the panels to work in CMS properly. Regardless, not all bodies are made the same and some of them will be a hassle to separate panels from
- Proceed to the export menu and select BeamNG.drive. Make sure to uncheck
Zip-Pack Mod, it is also highly recommended to checkMerge All Fixturesto simplify working with the exported models. Now export the car to BeamNG
- In the Unity Editor's filesystem at the bottom, go to
Assets/Carsand create a new folder for your car (Right-click > Create > Folder). The name of the folder will be the internal name of your car - Right-click inside this folder and select
Create > EasyCMS > Car Manager(do not mistake theEasyCMSoption forCreate > EasyCMS). This will create the core manager for your car, you can name this file anything you want
- Select the newly created
Car Managerfile, fill out theCMS Executablefield with the path to your CMS's .exe file (you can click the...button next to it to open a file dialog). You should only need to do this once, any Car Managers you create after will look for other Car Managers and copy this path on creation - Now fill out the
BeamNG Materialspath with the path to your car's[UID].materials.jsonfile. By default, this is located inC:\Users\[USER]\AppData\Local\BeamNG\BeamNG.drive\current\mods\unpacked\[MOD NAME]\vehicles\[CAR NAME]
- Once both paths are set up, click through all of the buttons in the
Importsection in order. This will copy the materials file and the textures related to it from your car and then build Unity HDRP materials from them.
Note
When you import the textures, you will likely see a lot of import errors. Some of the textures used by the Autobeam cars are not automatically supported in this version of Unity. This is not critical and the car itself will work with these import errors. Since EasyCMS 1.2 a tool to attempt to fix these textures is included at the bottom of the Car Manager, labeled as 2.5. Strip DDS Mip Maps. This tool is better used before building materials as after using this feature you will have to rebuild them. You can find information about fixing textures manually further in the guide
- Once materials are built, you will see
Paint_[X]assets created in your car's folder. These files are created for each of the paint slots found in the materials file. You can use these to change the paint of the car. This cannot be done in the game, so this is where you decide on the color and the paint parameters. In theMaterialsfolder you will also find all materials imported from the materials file, you can edit each one separately here if you so desire
- Open your 3D editing software of choice and import the car's model file from the exported files. By default this will be in
C:\Users\[USER]\AppData\Local\BeamNG\BeamNG.drive\current\mods\unpacked\[MOD NAME]\vehicles\[CAR NAME]\[UID]\[UID]_bodymesh.dae. In Blender, make sure not to import the same car multiple times in one project as this will mess up the material names - As per CMS requirements, there need to be at least 2 model files:
model.fbx- containing all the models of the car excluding alternate body parts, andcollider.fbx- containing just one model for the collider. Let's start with themodel.fbxfile - CMS requires that
model.fbxcontains at least 2 models: one namedbodyand one nameddetails. The official documentation lists all valid object names, other names must not be present here. For a quick working example we can select the main body model and rename it tobodyand select the chassis model and rename it todetails. All other objects should now we deleted. Select all remaining objects and apply all their transforms (in Blender, hitCtrl+Aand selectAll Transforms) - We also want a way into the driver's seat, so if the body is enclosed it's a good idea to separate the driver's window (in Blender, go into
Edit Mod(default hotkey:Tab), then into face mode (hotkey:3) and pressLwhen hovering over the window, then pressPand selectSelection), name the new objectwindow_door_front_leftorwindow_door_front_rightdepending on the side of the car. We will talk about openable panels in a separate section - This is enough for a basic car mesh, export the models as FBX into your project at path
Assets/Cars/[CAR NAME]/model.fbx. Make sure to export only the required models (in Blender, useSelected ObjectsorActive Collectionin the export settings) - Now let's create the collider model. In Blender, it is a good idea to create a separate collection for it. For a quick and simple collider we can simply create a cube and size it to the car's dimensions. Remember to apply transforms on it again if you sized it in object mode. The name of the new object must be
collider - Export the collider model to
Assets/Cars/[CAR NAME]/collider.fbx. Once again make sure to export only the collider, not the entire car with it - Now in Unity, you can drag the car out of the filesystem into the scene to make sure the model exported correctly and that materials correctly applied to it. This is also where you can find if any materials are wrong and can adjust them with a good reference
Your car folder should now look something like this:

- Navigate to the
Car Managerobject for your car and click through the buttons in theTemplatessection. This will generate all config files required and used by CMS with EasyCMS templates that you can edit later. Instead of generating theCar Config(config.txt), you can grab one from the game files off a car that closer matches the car you are porting. CMS car files can be found inCar Mechanic Simulator 2021\Car Mechanic Simulator 2021_Data\StreamingAssets\Cars. We will talk about what each config file does in a further section - Later you will likely edit these inside the game files, the
Updating Configssection of theCar Managercan bring your project's config files up to date with the ones in your game files (exporting the car to the game files will also prompt you for this if applicable)
- Once ready to export the car to CMS, first click
Build Asset Bundle. This will create the package that contains your car models so they can be loaded into CMS - Now click
Copy Car Assets To Game. This will take your car package and config files associated with it and copy them over to your game's directory so they are ready to be used in-game - Open the CMS Car Editor and select your car there. Here you can properly set up mostly everything about the car itself. Here, the QoL Mod is very useful as it extends the editor features and provides you with a lot of useful information. Make sure to periodically click
Savein the bottom left corner as you make changes - there is no autosave - In the bottom right corner you will find buttons to generate images for the car thumbnail and the car parts. Click them both
- Now you are ready to open the game itself and find your car here. For testing the QoL Mod comes to the rescue again, allowing you to spawn the last edited car right in the garage
Simply speaking, you will encounter 2 types of textures: color and monochrome
To fix DDS color textures all you need to do is import the texture into image editing software that supports various DDS compressions and re-export the texture with DXT5 compression (most reliable) and no mip maps, overwriting the original file. Preferably do this inside the Unity project so you don't have to repeat the import process
Monochrome textures are similar but require an intermediate step. These use color for transparency instead of making use of the actual alpha channel. We need to remove everything in the color black from the image so there is transparency in its place before exporting the texture to DXT5
There is a total of 4 config files that we are using
name.txt- This is simply the display name of the car, including the brand name but excluding the configuration name (the latter is part of theconfig.txtfile)config.txt- This is the main file of the car that manages most of the technical stuff. You mostly edit it via the CMS Car Editor. The vanilla Car Editor does not expose all its parameters, so QoL Mod once again comes to the rescuebodyconfig.txt- This file manages links between body parts. Theunmount_withsection defines which parts are attached to other parts, which means the attached parts will be removed when the part they are attached to gets removed, and this also manages part attachment to openable parts. This file also manages alternate positions of license plates that are used if you have alternate parts license plates attach to. In the config generated by EasyCMS the front license plate attaches to the front bumper and the rear license plate attaches to the trunk by default. EasyCMS also automatically generates links between doors, door windows and mirrorsparts.txt- This file defines prices for the car's body parts. To be able to appear in the in-game part shop the part must be defined here and must have a price above 0. EasyCMS generates a price of 300 credits for each valid part found in the model file
Openable panels are separate objects set up in a slightly different way from other body parts. Here, working in Blender will be referenced specifically, working in other software may be different.
To make openable doors, hoods, trunks etc. one must first separate these panels from the body. Liberate use of the L key when in face edit mode in Blender helps quickly select large surfaces, however be wary that the parts of the panels that go inside panel gaps are not usually picked up by this. With other more complex objects the X-Ray mode (default hotkey: Alt-Z or can be found as a button in the top right corner) paired with box or circle select (B or C hotkeys respectively) can help. Temporarily hiding faces with H can help get other faces out of the way so you don't accidentally select them along with the faces you want, you can unhide them again with Alt-H
Making the panels open correctly gets a bit weird. First, you need to set the object's origin point to the point around which the panel will rotate. The fastest (although inaccurate) way to do this is to Shift-Right Click on the point where you want the origin to be, this will set the 3D cursor to that point, then bring up the search menu (default hotkey: F3) and find and click Origin to 3D Cursor with the object selected. But we are not done yet, the axis needs to be set up in an unintuitive way
To set up the axis, first navigate to the top menu and change Transformation Orientation to Local. Now select the object you want to set up. You will now have to do different things depending on what panel this is:
- Hood: Rotate on the
Yaxis-90 degreesto open the hood forwards or90 degreesfor backwards. HitCtrl+A, thenRotation. Rotate on theYaxis90 degreesor-90 degreesdepending on what you did earlier respectively. Ensure that rotating the object on theZaxis to negative values opens the panel the correct way - Trunk: Rotate on the
Yaxis90 degreesto open the trunk forwards or-90 degreesfor backwards. HitCtrl+A, thenRotation. Rotate on theYaxis-90 degreesor90 degreesdepending on what you did earlier respectively. Ensure that rotating the object on theZaxis to positive values opens the trunk the correct way - Left Doors: Rotate on the
Xaxis-90 degrees. HitCtrl+A, thenRotation. Rotate on theXaxis90 degrees. Ensure that rotating the object on theYaxis to negative values opens the panel the correct way - Right Doors: Rotate on the
Xaxis90 degrees. HitCtrl+A, thenRotation. Rotate on theXaxis-90 degrees. Ensure that rotating the object on theYaxis to negative values opens the panel the correct way