mirror of
https://github.com/maker-community/ElectronBot.DotNet.git
synced 2026-10-25 02:29:48 +08:00
add model Material update
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user