• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

MSFS24 Dirt effect on the leading edges...how?

Messages
48
Country
hungary
Hi folks,

I want to add a dirt effect to the leading edge of my plane. I tried following the SDK’s instructions for this, but unfortunately the effect isn’t working as it should.
Does anyone have any idea what I did wrong or what I might have missed?

This is the section of SDK dirt effect that I used:
https://docs.flightsimulator.com/ms...irt_And_Grime.htm?rhhlterm=dirt&rhsearch=dirt

Here is my Blender setup:
blender_object.jpg


Material:
material.jpg


Converted and builded aircraft looks like this:
Képernyőkép 2026-03-24 163610.png


Regular dirt slider at almost 1.00:
Képernyőkép 2026-03-24 163625.png


Regular dirt slider exactly at 1.00:
Képernyőkép 2026-03-24 163636.png



And of course, I added these codes into my exterior.xml:

<Behaviors>
.
.
<Include ModelBehaviorFile="ASOBO_EX1\\Index.xml"/>
<Include ModelBehaviorFile="ASOBO_EX1\\DefaultConfig.xml"/>
<Include ModelBehaviorFile="ASOBO_EX1\\ExteriorDefs.xml"/>
.
.
<Component ID="Regular_Dirt">
<UseTemplate Name="ASOBO_ET_COMMON_Dirt_Multiple_Template">
<TYPE>REGULAR</TYPE>
<SaveParameters ID="Dirt_NODE_IDs">
<REGULAR_wings/>
</SaveParameters>
</UseTemplate>
</Component>
.
.
</Behaviors>
 
I've not done this. but reading the SDK, the textures go in Albedo (Base) and Decal Blend mask - not in Detail slot?
 
Excellent info. :teacher:

Hey Ron, what is the best way to (digitally ?) 'wash our hands' after adding "Dirt" to our 3D model ? :)

GaryGB
 
I've not done this. but reading the SDK, the textures go in Albedo (Base) and Decal Blend mask - not in Detail slot?
I’ve already checked your suggestions, and yes, the base color was indeed in the wrong place; I’ve now moved it to the “Base Color Texture” slot. ☺️

I think the mask PNG texture is in the right place, as shown in my previous image: “Decal Blend Mask Texture” slot

The result is that the appearance is now perfect, but the slider still doesn’t allow you to control the texture’s "mass"; either nothing is visible (0–0.99), or everything is suddenly visible (1.00):
Képernyőkép 2026-03-24 181958.png
 
The only thing after this is setting vertex Alpha, but not sure that would fix the issue. This stuff should work similar to ice. The ice slider worked fine that last time i looked.

EDIT:

Vertex Alpha is the "primary" method??
DA40CGDFQ_2026.03.25_10h8m54s.png
 
Last edited:
Excellent info. :teacher:

Hey Ron, what is the best way to (digitally ?) 'wash our hands' after adding "Dirt" to our 3D model ? :)

GaryGB
You must model a washroom at every airport. I think someone just did it a EDDS
 
Hi folks,

I want to add a dirt effect to the leading edge of my plane. I tried following the SDK’s instructions for this, but unfortunately the effect isn’t working as it should.
Does anyone have any idea what I did wrong or what I might have missed?

This is the section of SDK dirt effect that I used:
https://docs.flightsimulator.com/ms...irt_And_Grime.htm?rhhlterm=dirt&rhsearch=dirt

Here is my Blender setup:
View attachment 99450

Material:
View attachment 99451

Converted and builded aircraft looks like this:
View attachment 99452

Regular dirt slider at almost 1.00:
View attachment 99453

Regular dirt slider exactly at 1.00:
View attachment 99454


And of course, I added these codes into my exterior.xml:

<Behaviors>
.
.
<Include ModelBehaviorFile="ASOBO_EX1\\Index.xml"/>
<Include ModelBehaviorFile="ASOBO_EX1\\DefaultConfig.xml"/>
<Include ModelBehaviorFile="ASOBO_EX1\\ExteriorDefs.xml"/>
.
.
<Component ID="Regular_Dirt">
<UseTemplate Name="ASOBO_ET_COMMON_Dirt_Multiple_Template">
<TYPE>REGULAR</TYPE>
<SaveParameters ID="Dirt_NODE_IDs">
<REGULAR_wings/>
</SaveParameters>
</UseTemplate>
</Component>
.
.
</Behaviors>
The material parameters settings - you have Blend Mask Threshold set to 1.0 - in the SU5 Beta latest ASOBO exporter it defaults to 0.001 - check that.
 
The material parameters settings - you have Blend Mask Threshold set to 1.0 - in the SU5 Beta latest ASOBO exporter it defaults to 0.001 - check that.
I already tried both "ends" of this scale 'Blend Mask Threshold", 0 to 1.0 and with both values shows same visible effect; with the dirt debug slider still functional in the same way: 0 to 0.99 no effect, 1.0 full effect.
But you mentioned above those 'Vertex Alpha' thing... well... I already checked this in Blender, but i'm not sure about that...
I have Color Attributes with these values:
Képernyőkép 2026-03-25 163547.png


As you'll see, I set alpha value to 1.0 (full white) by clicking the right side of 'color' row.
But when I switch to 'Vertex paint' mode, i didn't see any alpha channel values:
Képernyőkép 2026-03-25 154404.png


But I see a "Color" (full white as shows at this picture above) and "Secondary color" that is full black.
 
I watched your videos and tried to adjust the vertex alpha properties based on them. Unfortunately, I wasn't successful.
Then I decided to play it safe: I wrote a short script in AI that sets the value of a specific (selected) object's vertex alpha channel to a value I specify.
I tested it on three different objects at the same time. I set the value to 1.0 for one, 0.5 for another, and 0 for the third (the script checks the actual values set for each object).
The result is the same every time: there’s no change between 0.0 and 0.9, and then the effect appears on the object at 1.0.
I’m starting to suspect that there might be a Blender exporter bug behind this.

This is the code what i'm using in Blender if you want to try yourself:

import bpy

def get_average_alpha(obj):
"""Visszaadja az objektum AlphaLayer vertex color alpha értékeinek átlagát"""
if obj and obj.type == 'MESH':
mesh = obj.data
if "AlphaLayer" in mesh.vertex_colors and len(mesh.vertex_colors["AlphaLayer"].data) > 0:
vcol_layer = mesh.vertex_colors["AlphaLayer"]
total = 0.0
count = len(vcol_layer.data)
for loop in vcol_layer.data:
total += loop.color[3] # alpha csatorna
return total / count
return 0.0


class VertexAlphaPanel(bpy.types.Panel):
bl_label = "Vertex Alpha Setter"
bl_idname = "VIEW3D_PT_vertex_alpha"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "Vertex Tools"

def draw(self, context):
layout = self.layout
scene = context.scene
obj = context.active_object

# Input mező
layout.prop(scene, "vertex_alpha_value")

# Gomb a beállításhoz
layout.operator("object.set_vertex_alpha", text="Set Vertex Alpha")

# Átlag alpha érték mutatása
avg_alpha = get_average_alpha(obj)
layout.label(text=f"Average Alpha: {avg_alpha:.3f}")


class SetVertexAlpha(bpy.types.Operator):
bl_idname = "object.set_vertex_alpha"
bl_label = "Set Vertex Alpha"
bl_description = "Set all vertex colors alpha to the given value"

def execute(self, context):
obj = context.active_object
if not obj or obj.type != 'MESH':
self.report({'WARNING'}, "Please select a mesh object")
return {'CANCELLED'}

value = context.scene.vertex_alpha_value
if value < 0.0 or value > 1.0:
self.report({'WARNING'}, "Value must be between 0 and 1")
return {'CANCELLED'}

bpy.ops.object.mode_set(mode='OBJECT')
mesh = obj.data

if "AlphaLayer" not in mesh.vertex_colors:
mesh.vertex_colors.new(name="AlphaLayer")

vcol_layer = mesh.vertex_colors["AlphaLayer"]

for poly in mesh.polygons:
for loop_idx in poly.loop_indices:
r, g, b, a = vcol_layer.data[loop_idx].color
vcol_layer.data[loop_idx].color = (r, g, b, value)

self.report({'INFO'}, f"Vertex alpha set to {value}")
return {'FINISHED'}


def register():
bpy.utils.register_class(VertexAlphaPanel)
bpy.utils.register_class(SetVertexAlpha)
bpy.types.Scene.vertex_alpha_value = bpy.props.FloatProperty(
name="Alpha Value",
description="Alpha value to set for all vertices",
default=1.0,
min=0.0,
max=1.0
)


def unregister():
bpy.utils.unregister_class(VertexAlphaPanel)
bpy.utils.unregister_class(SetVertexAlpha)
del bpy.types.Scene.vertex_alpha_value


if __name__ == "__main__":
register()
 
Back
Top