# Model Import Process

The goal of this documentation is to go through what it takes to import a model into
S&box.

This documentation is based of [this](https://www.youtube.com/watch?v=1-L8BvNAbjQ) guide.

## Process

To start you will need the model that you wish to import into S&Box, and the textures
and the associated textures. The model can contain other things like animations, however,
those are only added if the model is non-static. A static element could be a picture, where
a non-static object could be something like a player model.

### Create the VDML Model

To start you can create the VDML model by right clicking the model in S&Box and then clicking
`Create model...`.

![create-model-import-model](./Img/create-model-import-model.png)

Once that is clicked an explorer window will appear and you will choose where you want the
vdml file to be saved. You will want the vdml file to be saved within the same folder as the
model.

![create-model-import-model](./Img/vdml-file-import-model.png)

Double clicking the VDML file will open a program called ModelDoc. ModelDoc is the program that
ties the animcation, the model, and the textures together to make a fully realized VDML file.

![model-doc-import-model](./Img/model-doc-import-model.png)

#### Create the .mat File and Attach it to the Model

In order to assoicate the textures with the model we need to create a .mat file. The .mat file
contains all the textures that will be used on the model. To create a .mat file, right click it
one of the textures and click `Create Material`.

![create-mat-import-model](./Img/mat-creation-import-model.png)

This will open the material creation window, and depending on the naming scheme of all the textures
some fields (or all) will have the texture automatically applied. Below contains all the suffixs that
are reconized by S&Box.

![texture-suffix](./Img/texture-suffix-import-model.png)

Once `Create Material` has been click an explorer window will open. Make sure to save the .mat file in
the same folder as all the other resources realted to the model. Once that is completed you should see
the material editor pop up.

![create-mat-window-import-model](./Img/texture-creation-import-model.png)

*NOTE: Make sure that `specular` and `metalness texture` are checkmarked, this will enable PBR materials.*

Go ahead and save the material if everything looks good, and now we can go back to ModelDoc.

#### Associate the .mat File to the Model

Once you are back to the ModelDoc program, located at the left of the application is the `MaterialGroupList`
and the `RenderMeshList`. What we care about is adding our material we just created to the 
`DefaultMaterialGroup`.

![assiociate-material-import-model](./Img/model-doc-material-import-model.png)

Clicking on the `DefaultMaterialGroup` will open the `Node Editor`, and clicking the magnifying glass the explorer
will pop up for us to choose our new material.

![model-doc-mag-glass-import-model](./Img/model-doc-mag-glass-import-model.png)

Traverse to the file that we created and double click it. That will assign the material to the model. You will need
to go ahead and recompile, after recompiling you should see the texture applied in ModelDoc.

![model-doc-recompile-import-model](./Img/texture-recompile-import-model.png)

If everything looks good, go ahead and save the model in ModelDoc. If there are no animations associated with the
model, then your done. You can use the VMDL file as is in the project. If there are assoicated models, then go
to the [Assoicate Animations](#assoicate-animations) section.

#### Assoicate Animations

TODO: Lots to learn on how to even create the animations, once those animations are created, I'll go ahead
and update this doc on how to do this.