Add force Mesh SDF rebuild when holiding F key and using Build All Meshes SDF optino in Editor menu

This commit is contained in:
Wojtek Figat
2025-11-04 13:30:18 +01:00
parent 387c3ea2f4
commit 0f701ec08e

View File

@@ -1390,6 +1390,7 @@ namespace FlaxEditor
public void BuildAllMeshesSDF() public void BuildAllMeshesSDF()
{ {
var models = new List<Model>(); var models = new List<Model>();
var forceRebuild = Input.GetKey(KeyboardKeys.F);
Scene.ExecuteOnGraph(node => Scene.ExecuteOnGraph(node =>
{ {
if (node is StaticModelNode staticModelNode && staticModelNode.Actor is StaticModel staticModel) if (node is StaticModelNode staticModelNode && staticModelNode.Actor is StaticModel staticModel)
@@ -1399,7 +1400,7 @@ namespace FlaxEditor
model != null && model != null &&
!models.Contains(model) && !models.Contains(model) &&
!model.IsVirtual && !model.IsVirtual &&
model.SDF.Texture == null) (forceRebuild || model.SDF.Texture == null))
{ {
models.Add(model); models.Add(model);
} }
@@ -1412,7 +1413,17 @@ namespace FlaxEditor
{ {
var model = models[i]; var model = models[i];
Log($"[{i}/{models.Count}] Generating SDF for {model}"); Log($"[{i}/{models.Count}] Generating SDF for {model}");
if (!model.GenerateSDF()) float resolutionScale = 1.0f, backfacesThreshold = 0.6f;
int lodIndex = 6;
bool useGPU = true;
var sdf = model.SDF;
if (sdf.Texture != null)
{
// Preserve options set on this model
resolutionScale = sdf.ResolutionScale;
lodIndex = sdf.LOD;
}
if (!model.GenerateSDF(resolutionScale, lodIndex, true, backfacesThreshold, useGPU))
model.Save(); model.Save();
} }
}); });