Give your own meshes a material¶
The props, the modular kit, the plants, the weapons and the pickups all run on one master material. You never open it. You make a Material Instance from it, set a few fields, and drop the instance on your mesh slot.
- The master:
Content/TheLastTemplate/Materials/Environments/Props/M_PropsMaster - The prop and item instances:
Content/TheLastTemplate/Materials/Environments/Props/ - The plant instances:
Content/TheLastTemplate/Materials/Environments/Vegetation/
Characters are not on it. They have their own materials under Materials/Characters/.
One instance per material slot name¶
The meshes that ship name their material slots after what the surface is, not after the object. A crate, a door and a pallet all carry a slot called M_Wood. A railing and a locker both carry M_Metal.
So the slot name is the assignment: slot M_Wood gets MI_Prop_Wood, slot M_Brick gets MI_Prop_Brick, slot M_Foliage gets MI_Veg_Foliage. Filling a freshly imported mesh is a lookup, not a decision.
Name your own meshes' slots the same way and you inherit that. If a mesh needs a look that does not exist yet, add one instance to the library rather than a one-off material on that mesh.
The fields you set¶
Open any instance and you get four groups in the Details panel.
01 - Surface¶
| Field | What it does | Master default |
|---|---|---|
Base Color |
The flat colour. Also the tint when Use Texture is on |
set per instance |
Use Texture |
Off: flat colour. On: Base Color Texture multiplied by Base Color |
off |
Base Color Texture |
Only read when Use Texture is on |
white |
Metallic |
1 for bare metal, 0 for everything else | 0 |
Roughness |
0 is a mirror, 1 is chalk | 0.6 |
Specular |
How strong the highlight is on a non metal | 0.5 |
Opacity |
Only does something if you also set the blend mode to translucent | 1 |
Subsurface Color |
The colour light takes when it passes through a leaf | set per instance |
02 - Emissive¶
| Field | What it does | Master default |
|---|---|---|
Emissive Color |
The colour the surface gives off | set per instance |
Emissive Intensity |
Multiplier on it. Leave at 0 for anything that does not glow | 0 |
Normal¶
| Field | What it does | Master default |
|---|---|---|
Use Normal |
Turns the surface detail on. Off means a perfectly flat surface | off |
Normal Texture |
Which tiling map to project | set per instance |
Normal Tiling Cm |
The size in world centimetres of one repeat of the map | 200 |
Normal Intensity |
0 flattens the map out, above 1 exaggerates it | 1 |
Normal Follows Object |
Off: the projection is fixed in the world. On: it rides the object | off |
03 - Wind¶
| Field | What it does | Master default |
|---|---|---|
Use Wind |
Turns the whole wind chain on | off |
Bend Scale |
Overall bend of the plant | 1 |
Wind Intensity |
Feeds the bend. Small on purpose | 0.12 |
Wind Speed |
Speed of the bend | 0.25 |
Wind Direction |
Which way the wind pushes | set per instance |
Flutter Amount |
Flap along the leaf normal, in centimetres | 1.2 |
Flutter Speed |
Speed of that flap | 2.2 |
Secondary Amount |
A second, slower bend, in centimetres | 2 |
Secondary Speed |
Speed of that second bend | 0.55 |
Blend mode, two sided and shading model are not parameters. They live in the Material Property Overrides section of the instance, and the shipped instances use them: MI_Prop_Glass sets Blend Mode to Translucent and Two Sided, MI_Veg_Foliage and MI_Veg_DryFoliage set Shading Model to Two Sided Foliage because a leaf is a single sided card.
Flat colour, or a texture¶
Everything is flat colour by default. That is what makes the kit cheap to dress: a value in Base Color, a Roughness, a Specular, done.
When you do need a texture, tick Use Texture and set Base Color Texture. That is how the collectible cards and the readable notes work, for example MI_Prop_Card_Comet with T_Card_Comet_BC.
Warning
With Use Texture on, Base Color stops being the colour and becomes a tint: the texture is multiplied by it. Leave a colour in there and your texture renders darker than the file, with no error anywhere. Set Base Color to white unless you actually want to tint it.
Surface detail: the tiling normal maps¶
Fourteen tiling normal maps ship in Content/TheLastTemplate/Textures/Environments/Surfaces/. They are projected on world axes, not on the mesh UVs, so they do not care how a mesh was unwrapped and two walls standing side by side get bricks of the same size.
Each map was drawn at a real physical size. That number, in centimetres, is what goes in Normal Tiling Cm.
| Map | What it is | Real size of one tile |
|---|---|---|
T_Brick_N |
Brick 190 by 57, mortar joint 10 | 200 cm |
T_Plaster_Cracked_N |
Render torn off the brick underneath | 200 cm |
T_Concrete_Worn_N |
Form marks, blowholes, spalling, cracks | 200 cm |
T_Concrete_Floor_N |
1 m slabs with sawn joints | 200 cm |
T_Asphalt_N |
Aggregate 5 to 20, cracks and crazing | 200 cm |
T_Gravel_N |
Loose stones 20 to 70, three sizes | 100 cm |
T_Tiles_Ceramic_N |
300 mm floor tiles, 6 mm joint | 120 cm |
T_Wood_Planks_N |
Twelve boards, knots, end joints | 200 cm |
T_Wood_Bark_N |
Vertical plates, deep furrows | 100 cm |
T_Foliage_Veins_N |
Leaf veining, tiling, not one drawn leaf | 15 cm |
T_Roof_Shingles_N |
Shingles 333, 125 exposed, granules | 100 cm |
T_Roof_Corrugated_N |
83 mm wave, overlaps, screws | 100 cm |
T_Metal_Rusted_N |
Pitting and scales lifting off | 100 cm |
T_Metal_Tread_N |
3 mm checker plate | 50 cm |
Set Normal Tiling Cm to that number and the detail is at true scale. A smaller number makes it finer and repeats more often, which is sometimes what you want on a small prop. The instances that already carry a map are MI_Prop_Asphalt, Brick, Concrete, Metal, Plaster, Rebar, SteelPainted, Wood and MI_Veg_Bark, and not all of them are set to the true size.
Every map has an _ORH companion next to it, with ambient occlusion in red, roughness in green and height in blue. M_PropsMaster does not read it. It is there for you if you want to build a richer material of your own.
Normal Follows Object¶
The projection is fixed in the world by default. That is right for walls, floors and anything that never moves: the texture runs continuously across the joint between two modular pieces.
It is wrong for anything that moves. A door swinging on its hinge, a crate you pick up, a backpack on a character: the object slides through a texture that stays where it was. Tick Normal Follows Object on those instances and the projection travels with the mesh instead.
The cost is real and you should know it before you tick it: the projection then works in object space, so a static mesh that you scaled in the level gets its detail scaled with it, and two abutting pieces no longer line up. Pick one behaviour per instance, and make a second instance if one mesh needs the other.
Make your own instance¶
- Right click
M_PropsMaster, then Create Material Instance. Name it after the slot:MI_Prop_Ceramic,MI_Veg_Moss. Put prop and item looks inMaterials/Environments/Props/, plants inMaterials/Environments/Vegetation/. - Tick
Base Colorand pick the colour. TickRoughnessandSpecularand set them. SetMetallicto 1 only if the surface is bare metal. - If it needs a texture, tick
Use Texture, setBase Color Texture, and setBase Colorto white. - If it needs relief, tick
Use Normal, pick aNormal Texture, and setNormal Tiling Cmto that map's real size. TickNormal Follows Objectif the mesh moves. - Assign the instance to the mesh's material slot.
For a transparent surface, add Blend Mode in Material Property Overrides and set it to Translucent, then use Opacity. MI_Prop_Glass is the worked example.
Plants and their wind¶
Wind is off unless the instance ticks Use Wind. When it is on, the master bends the mesh with Bend Scale, Wind Intensity and Wind Speed, then adds two more movements on top: Flutter Amount along the leaf normal, and Secondary Amount as a slower second bend. Those last two are added in centimetres and carry most of what you actually see.
How much a given vertex moves is a vertex colour painted into the mesh, black at the root and white at the tips. The material only sets the gain.
Two rules that save a lot of time:
- Every instance used by one plant must carry the same wind values. A plant is several slots, bark plus foliage, or vine plus foliage. If two of them run at different speeds or gains the plant comes apart while it moves. The four shipped instances all carry
Bend Scale0.9,Wind Intensity0.1,Wind Speed0.25,Flutter Amount0.3,Flutter Speed2.2,Secondary Amount0.9,Secondary Speed0.5. Retune all of them together or none. - Stiffness is the mesh's job, not the material's. Dead wood is black in the vertex colours, so it stays still with the same values a leaf uses. Do not try to express "wood is stiffer" by lowering the gains, or you flatten the leaves too.
Warning
If you import your own plant FBX and it has no vertex colours, the material reads white everywhere and the plant waves from the root, including the trunk. Import vegetation by dragging the FBX into the Content Browser so the import dialog appears, and set Vertex Color Import Option to Replace.
The other materials in the pack¶
Not everything is an instance of the props master.
| What | Where |
|---|---|
| Water | Materials/Environments/Water/M_Ocean and MI_Ocean |
| Post process | Materials/Effects/PostProcess/M_TLTPostProcess and MI_TLTPostProcess |
| Block out grids | Materials/Prototyping/M_PrototypeGrid and the instances in Prototyping/Childs/ |
| Menu background | Materials/Environments/Menu/ |
| Material parameter collections | Materials/Collections/ |
Impact decals and the Niagara sheets have their own masters too.