emissive has a problem with some skins

This commit is contained in:
iAmAsval 2021-11-16 23:39:23 +01:00
parent cdf629e1e7
commit 577b82e86f
3 changed files with 35 additions and 34 deletions

View File

@ -13,7 +13,6 @@ using FModel.Framework;
using HelixToolkit.SharpDX.Core;
using HelixToolkit.Wpf.SharpDX;
using SharpDX;
using SharpDX.Direct3D11;
using Camera = HelixToolkit.Wpf.SharpDX.Camera;
using Geometry3D = HelixToolkit.SharpDX.Core.Geometry3D;
using PerspectiveCamera = HelixToolkit.Wpf.SharpDX.PerspectiveCamera;
@ -57,22 +56,6 @@ namespace FModel.ViewModels
set => SetProperty(ref _zAxis, value);
}
private bool _showWireframe;
public bool ShowWireframe
{
get => _showWireframe;
set
{
SetProperty(ref _showWireframe, value);
foreach (var g in Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;
geometryModel.RenderWireframe = !_showWireframe;
}
}
}
private bool _appendModeEnabled;
public bool AppendModeEnabled
{
@ -112,7 +95,7 @@ namespace FModel.ViewModels
}
}
public void HideToggleAll()
public void RenderingToggle()
{
foreach (var g in Group3d)
{
@ -123,7 +106,18 @@ namespace FModel.ViewModels
}
}
public void ToggleDiffuseOnly()
public void WirefreameToggle()
{
foreach (var g in Group3d)
{
if (g is not MeshGeometryModel3D geometryModel)
continue;
geometryModel.RenderWireframe = !geometryModel.RenderWireframe;
}
}
public void DiffuseOnlyToggle()
{
foreach (var g in Group3d)
{
@ -134,7 +128,7 @@ namespace FModel.ViewModels
{
mat.RenderAmbientOcclusionMap = !mat.RenderAmbientOcclusionMap;
mat.RenderDisplacementMap = !mat.RenderDisplacementMap;
mat.RenderEmissiveMap = !mat.RenderEmissiveMap;
// mat.RenderEmissiveMap = !mat.RenderEmissiveMap;
mat.RenderEnvironmentMap = !mat.RenderEnvironmentMap;
mat.RenderIrradianceMap = !mat.RenderIrradianceMap;
mat.RenderRoughnessMetallicMap = !mat.RenderRoughnessMetallicMap;
@ -203,7 +197,6 @@ namespace FModel.ViewModels
continue;
var m = new PBRMaterial { RenderShadowMap = true, EnableAutoTangent = true };
var parameters = new CMaterialParams();
unrealMaterial.GetParams(parameters);
@ -215,11 +208,17 @@ namespace FModel.ViewModels
if (parameters.Normal is UTexture2D normal)
m.NormalMap = new TextureModel(normal.Decode()?.Encode().AsStream());
// if (parameters.Specular is UTexture2D specular)
// m.SpecularColorMap = new TextureModel(specular.Decode()?.Encode().AsStream());
// if (parameters.UseMobileSpecular)
// m.SpecularShininess = parameters.MobileSpecularPower;
// m.AmbientOcculsionMap = new TextureModel(specular.Decode()?.Encode().AsStream());
// if (parameters.Specular is UTexture2D specularPower)
// {
// m.RoughnessFactor = parameters.MobileSpecularPower;
// m.RoughnessMetallicMap = new TextureModel(specularPower.Decode()?.Encode().AsStream());
// }
// if (parameters.Emissive is UTexture2D emissive)
// {
// m.EmissiveColor = Color4.White; // FortniteGame/Content/Characters/Player/Female/Medium/Bodies/F_MED_Obsidian/Meshes/F_MED_Obsidian.uasset
// m.EmissiveMap = new TextureModel(emissive.Decode()?.Encode().AsStream());
// }
}
else
{
@ -231,8 +230,7 @@ namespace FModel.ViewModels
Name = unrealMaterial.Name,
Geometry = builder.ToMeshGeometry3D(),
Material = m,
IsRendering = isRendering,
FillMode = FillMode.Solid
IsRendering = isRendering
});
}
}

View File

@ -4,9 +4,8 @@
xmlns:converters="clr-namespace:FModel.Views.Resources.Converters"
xmlns:adonisUi="clr-namespace:AdonisUI;assembly=AdonisUI"
xmlns:adonisControls="clr-namespace:AdonisUI.Controls;assembly=AdonisUI"
xmlns:adonisExtensions="clr-namespace:AdonisUI.Extensions;assembly=AdonisUI"
xmlns:helix="http://helix-toolkit.org/wpf/SharpDX"
WindowStartupLocation="CenterScreen" ResizeMode="CanResize" IconVisibility="Collapsed" Background="#262630"
WindowStartupLocation="CenterScreen" ResizeMode="CanResize" IconVisibility="Collapsed"
PreviewKeyDown="OnWindowKeyDown" Closing="OnClosing"
Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={converters:RatioConverter}, ConverterParameter='0.60'}"
Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={converters:RatioConverter}, ConverterParameter='0.60'}">
@ -29,7 +28,7 @@
<ColumnDefinition Width="4*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Background="#2A2B34">
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
@ -41,7 +40,7 @@
</Grid>
<GridSplitter Grid.Column="1" ResizeDirection="Columns" Width="4" VerticalAlignment="Stretch" ResizeBehavior="PreviousAndNext"
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer0BackgroundBrush}}" />
Background="{DynamicResource {x:Static adonisUi:Brushes.Layer3BackgroundBrush}}" />
<helix:Viewport3DX Grid.Column="2" EffectsManager="{Binding ModelViewer.EffectManager}" Camera="{Binding ModelViewer.Cam}"
IsChangeFieldOfViewEnabled="False" IsMoveEnabled="False" UseDefaultGestures="False" ShowViewCube="False"

View File

@ -17,20 +17,24 @@ namespace FModel.Views
}
public void Load(UObject export) => _applicationView.ModelViewer.LoadExport(export);
private void OnClosing(object sender, CancelEventArgs e) => MyAntiCrashGroup.ItemsSource = null; // <3
private void OnClosing(object sender, CancelEventArgs e)
{
_applicationView.ModelViewer.AppendModeEnabled = false;
MyAntiCrashGroup.ItemsSource = null; // <3
}
private void OnWindowKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.W:
_applicationView.ModelViewer.ShowWireframe = !_applicationView.ModelViewer.ShowWireframe;
_applicationView.ModelViewer.WirefreameToggle();
break;
case Key.H:
_applicationView.ModelViewer.HideToggleAll();
_applicationView.ModelViewer.RenderingToggle();
break;
case Key.D:
_applicationView.ModelViewer.ToggleDiffuseOnly();
_applicationView.ModelViewer.DiffuseOnlyToggle();
break;
}
}