add model Material update

This commit is contained in:
gil zhang
2023-05-30 01:32:27 +08:00
parent e3e4382221
commit 53ba234fd8
5 changed files with 150 additions and 1 deletions
@@ -38,6 +38,20 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient
};
}
[RelayCommand]
public void PlayAction()
{
var playEmojisLock = ElectronBotHelper.Instance.PlayEmojisLock;
if (!playEmojisLock)
{
//随机播放表情
ElectronBotHelper.Instance.ToPlayEmojisRandom();
}
ElectronBotHelper.Instance.PlayEmojisLock = true;
}
[RelayCommand]
public async Task Loaded()
@@ -201,6 +215,8 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient
FocusCameraToScene();
DispatcherTimer.Start();
ElectronBotHelper.Instance.ModelActionFrame += Instance_ModelActionFrame;
}
catch (Exception)
{
@@ -208,6 +224,15 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient
}
}
private void Instance_ModelActionFrame(object? sender, Verdure.ElectronBot.Core.Models.ModelActionFrame e)
{
Material = new DiffuseMaterial()
{
EnableUnLit = false,
DiffuseMap = LoadTextureByStream(e.FrameStream)
};
}
private void FocusCameraToScene()
{
var maxWidth = Math.Max(Math.Max(ModelBoundingBox.Width, ModelBoundingBox.Height), ModelBoundingBox.Depth) + 240;
@@ -240,6 +265,39 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient
var tr5 = tr4 * Matrix.Translation(average.X, average.Y, average.Z);
RightArmModel.HxTransform3D = tr5;
var nodeList = HeadModel.GroupNode;
foreach (var itemMode in nodeList.Items)
{
if (itemMode.Name == "Head3.obj")
{
foreach (var node in itemMode.Traverse())
{
if (node is MeshNode meshNode)
{
meshNode.Material = Material;
}
}
}
}
//if (modelName == "Head3.obj")
//{
// if (newScene != null && newScene.Root != null)
// {
// foreach (var node in newScene.Root.Traverse())
// {
// if (node is MeshNode meshNode)
// {
// meshNode.Material = Material;
// }
// }
// }
//}
}
catch
{
@@ -321,4 +379,10 @@ public partial class ModelLoadCompactOverlayViewModel : ObservableRecipient
return TextureModel.Create(filePath);
}
private TextureModel LoadTextureByStream(Stream data)
{
return TextureModel.Create(data);
}
}