Transport Fever

Transport Fever

十分な評価がありません
Textures for Transport Fever with Substance Painter
作者: OlaHaldor
A quick guide on texturing for Transport Fever with Substance Painter, converting to DDS files with Photoshop and how to set up a .mtl file.
The guide requires basic knowledge of Substance Painter and Photoshop.
   
アワード
お気に入り
お気に入り
お気に入りから削除
The Core Basics
An asset can be textured using three image maps. They can be named whatever you like as long as they are linked properly in the .mtl file for the mesh. For simplicity in this guide I use the following setup.

Color and opacity
This image map is the base color and may contain different degrees of transparency using the alpha channel. Useful for windows and other cutouts.

<modname>_albedo_opacity
  • RGB: Albedo
  • A: Opacity

Note: you do not need to use the alpha channel unless necessary. In such case, you can skip or delete the alpha channel and remove the "_opacity" in the file name to make it clear what the file contains.

Surface Shading
The following image map defines whether a part of the model is made of metal, is shiny or matte, and adds an extra layer of detail with an ambient occlusion map. The R, G and B channels contain different information.
<modname>_metal_gloss_ao
  • R: Metalness
  • G: Glossiness
  • B: Ambient Occlusion

Normal map
This image map defines depth in the texture, and can greatly save polygon counts by either baking details from a high polygon mesh or painting height data in Substance Painter, such as bolts, screws, lids, dents, scratches and so on.
<modname_normal>

Masks
This image map is telling the game where the color will be changed should the player want to, and where dirt and rust appear on the model. Just like the one before, the R, G and B channels contain different information.
<modname>_color_dirt_rust
  • R: Color mask
  • G: Dirt mask
  • B: Rust mask
Setting up Substance Painter
When you've loaded your model and are ready to start texturing, you need to set up the project properly.

You will need three masks for your export: the color mask, dirt mask and rust mask.

To set these up, make three new user channels.


Name them accordingly.

color mask
dirt mask
rust mask





Now you'll find and toggle the masks when you add filters, fill layers or paint by hand.


At this point you're ready to start texturing.

The Export Profile
This is my export profile for Transport Fever. Note how the user channels are mapped.
DDS conversion
Note: If you don't want to, or need to because of already small file size with TGA files, or don't have a way to convert to DDS, you can skip this section.

Transport Fever accepts both TGA and DDS files. The latter is a compressed file format, and can greatly reduce the size of the downloaded mod. This is convenient both for players on a slow internet connection, but it also takes up a great deal less hard drive space.

As an example, my Stadler Flirt mod took over 350mb space with the texture in TGA files, while just over 100mb in DDS. This is an extreme reduction!

Substance Painter can not export DDS directly at this time, so you will need to export to an intermediate file format, such as TGA which is fine, because you can start adding and testing your mod to the game until you convert to DDS.

The Process
I have tested three different converters, but only one of them could do the job properly. By properly, I mean: Transport Fever did not crash.

This plugin require Photoshop.
Get the nVidia Texture Tools for Adobe Photoshop here[developer.nvidia.com].

When it's installed, you open your file and go File > Save As...
Then select D3D/DDS as file type. Check "Alpha channels" if you're export the albedo_opacity map.

Each type of texture map require their specific setting. Make sure Generate Mip Maps is on, and you've checked Save Flipped Vertically.

albedo_opacity
DXT5 (interpolated alpha)

metal_gloss_ao and color_dirt_rust
DXT1 (no alpha)

normal
3Dc (normal map)
The .mtl File
In the MTL file you need to link all of these image maps, so your model will look the same as it does in Substance Painter.

Here is an example from my mod:
function data() return { params = { fade_out_range = { fadeOutEndDist = 20000, fadeOutStartDist = 10000, }, map_albedo_opacity = { compressionAllowed = true, fileName = "models/vehicle/train/flirt_01_albedo_opacity.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "CLAMP_TO_EDGE", wrapT = "CLAMP_TO_EDGE", }, map_metal_gloss_ao = { compressionAllowed = true, fileName = "models/vehicle/train/flirt_01_metal_gloss_ao.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, map_normal = { compressionAllowed = true, fileName = "models/vehicle/train/flirt_01_normal.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "CLAMP_TO_EDGE", wrapT = "CLAMP_TO_EDGE", }, map_cblend_dirt_rust = { compressionAllowed = true, fileName = "models/vehicle/train/flirt_01_color_dirt_rust.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, map_dirt = { compressionAllowed = true, fileName = "models/vehicle/dirt_albedo.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, map_dirt_normal = { compressionAllowed = true, fileName = "models/vehicle/dirt_normal.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, map_rust = { compressionAllowed = true, fileName = "models/vehicle/rust_albedo.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, map_rust_normal = { compressionAllowed = true, fileName = "models/vehicle/rust_normal.dds", magFilter = "LINEAR", minFilter = "LINEAR_MIPMAP_LINEAR", mipmapAlphaScale = 0, type = "TWOD", wrapS = "REPEAT", wrapT = "REPEAT", }, color_blend = { albedoScale = 1.0, }, dirt_rust = { dirtColor = { 72 / 255.0, 64 / 255.0, 51 / 255.0 }, rustColor = { 65 / 255.0, 53 / 255.0, 40 / 255.0 }, dirtScale = 3.0, rustScale = 1.67, dirtOpacity = .25, rustOpacity = .5 }, polygon_offset = { factor = 0, units = 0, }, props = { coeffs = { 1, 1, 1, 1, }, }, two_sided = { twoSided = false, }, }, type = "PHYS_TRANSPARENT_NRML_MAP_CBLEND_DIRT", } end

Note: This can be on for TGA, but must be on if you use DDS!
compressionAllowed = true,

I want you to notice these parts:
map_albedo_opacity

and

type = "PHYS_TRANSPARENT_NRML_MAP_CBLEND_DIRT",

The "OPACITY" and "TRANSPARENT" bits can be removed if you don't need the opacity channel for the mesh using this material.
21 件のコメント
Hans 2020年8月16日 10時59分 
Hi OlaHaldor.

Very good instuction also for a SP beginner like me. At the moment I use version 2020.2.1 (6.2.1).

I have three questions about the output templates for exporting textures:
1) Why do you use Mesh maps Ambient Occlusion and not Input maps Ambient Occlusion?
2) And why do you use Glossiness and not Glossiness2?
3) I can also select 8 bits or 8 bits + dithering. What is the best choice for TpF(2)?
Thad 2017年11月19日 15時29分 
Alright, thanks :steamhappy:
OlaHaldor  [作成者] 2017年11月19日 13時39分 
@YouBlewIt, Texture Settings, as stated in the screenshot.
Thad 2017年11月19日 12時10分 
One last thing, where is the window where the three new user channels are supposed to go?
Thad 2017年11月19日 11時50分 
Okay I think I've got it now, thanks. :steamhappy:
OlaHaldor  [作成者] 2017年11月19日 11時45分 
@YouBlewIt, the .dds files are the textures. Open it with photoshop and you're good to go.
Thad 2017年11月19日 11時39分 
I just got the NVIDIA Texture Tools plugin, is that the one you mean? I'm just not sure which file type the locomotives use that can be imported and retextured in photoshop.
OlaHaldor  [作成者] 2017年11月19日 11時36分 
@YouBlewIt, you can't import DDS into Substance Painter. If that's what you want to do, you must convert it to a file format Painter can import.
If you're going to paint in Photoshop you need the DDS plugin.
Thad 2017年11月19日 11時21分 
I'm trying to repaint a locomotive in the base game. What file is supposed to be imported? The .DDS?
Jones 2017年2月3日 1時44分 
Yup I figured I might have to use TGA's, couldn't find solution either. Thanks for replying :)