Fix spotlight direction on models with only a light pos vhot

This commit is contained in:
Jarrod Doyle 2024-12-26 13:23:07 +00:00
parent 1b13d92b99
commit a5571c9f76
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
2 changed files with 3 additions and 7 deletions

View File

@ -51,12 +51,8 @@ public class Light
Matrix4x4 rotate,
Matrix4x4 scale)
{
var transform = scale * rotate * translate;
vhotLightPos = Vector3.Transform(vhotLightPos, transform);
vhotLightDir = Vector3.Transform(vhotLightDir, transform);
Position = Vector3.Transform(Position, rotate) + vhotLightPos;
SpotlightDir = Vector3.Normalize(vhotLightDir - vhotLightPos);
Position = Vector3.Transform(Position, rotate) + Vector3.Transform(vhotLightPos, scale * rotate * translate);
SpotlightDir = Vector3.Normalize(Vector3.Transform(vhotLightDir, scale * rotate));
}
public float StrengthAtPoint(Vector3 point, Plane plane)

View File

@ -258,7 +258,7 @@ public class LightMapper
}
if (model.TryGetVhot(ModelFile.VhotId.LightDirection, out vhot))
{
vhotLightDir = vhot.Position - model.Header.Center;
vhotLightDir = (vhot.Position - model.Header.Center) - vhotLightPos;
}
}
}