Aura3D:Avalonia平臺3D控件
隨著Avalonia生態(tài)日益豐富,3D可視化需求逐漸從邊緣場景走向核心應(yīng)用。然而目前沒有開箱即用輕量級的3D控件。為此我為 Avalonia 開發(fā)了一款3D控件:Aura3D
https://github.com/CeSun/Aura3D
使用它可以輕松的加載3D模型進(jìn)行展示,豐富客戶端表現(xiàn)效果,同時它支持自定義渲染管線,允許有能力的用戶擴(kuò)展自己的渲染風(fēng)格,掌握每一個渲染細(xì)節(jié)。
功能特性
Aura3D的定位是輕量級的3D框架,它的接口設(shè)計簡單,目的是為了Avalonia開發(fā)者能輕松的使用它豐富自己的客戶端表現(xiàn)。當(dāng)您的軟件是大量的UI元素,包含少部分的3D模型展示建議您嘗試使用Aura3D。如果您的軟件3D是核心交互,建議使用Unity3D和UnrealEngine等技術(shù)。
目前Aura3D已經(jīng)支持:
- 布林馮光照模型
- 靜態(tài)模型渲染
- 蒙皮動畫渲染
- 自定義渲染管線
更多的功能正在開發(fā)中,例如卡通渲染管線,實例化渲染(大量相同模型),軟陰影,以及基于物理的渲染等。
歡迎有需求的用戶提出真實的需求幫助我來完善Aura3D。
商業(yè)化
Aura3D本身以及源碼完全免費,并承諾永遠(yuǎn)MIT協(xié)議開源。后續(xù)可能會提供付費的技術(shù)支持以及性能優(yōu)化與管線定制。
如何使用
在 Avalonia 項目中添加 Aura3D.Avalonia 包:
dotnet add package Aura3D.Avalonia
然后在你的項目中使用 Aura3DView 控件, 并綁定 SceneInitialized 事件:
<Window
...
xmlns:aura3d="clr-namespace:Aura3D.Avalonia;assembly=Aura3D.Avalonia"
...>
<aura3d:Aura3DView x:Name="aura3Dview" SceneInitialized="OnSceneInitialized"/>
</Window>
在 SceneInitialized 事件中,初始化你的場景:
public void OnSceneInitialized(object sender, RoutedEventArgs args)
{
var view = (Aura3DView)sender;
camera = new Camera(); // 定義一個相機(jī)
camera.ClearColor = Color.Gray; // 相機(jī)背景為灰色
view.AddNode(camera); // 將相機(jī)添加到場景中
DirectionalLight dl = new DirectionalLight(); // 定義一個方向光
dl.RotationDegrees = new Vector3(-45, 45, 0); // 調(diào)整方向
dl.CastShadow = true; // 允許投射陰影
view.AddNode(dl); // 將光源添加到場景中
using var s = AssetLoader.Open(new Uri("avares://Example/Assets/Models/Soldier.glb"));
var (model, animations) = ModelLoader.LoadGlbModelAndAnimations(s); // 加載glb格式模型
model.AnimationSampler = new AnimationSampler(animations.First()); // 設(shè)置動畫
view.AddNode(model); // 將模型添加到場景中
model.Position = camera.Position + camera.Forward * 10;
model.Position += model.Up * 0.5f;
model.RotationDegrees = new Vector3(0, 180, 0);
camera.Position = camera.Position + camera.Up * 2 + camera.Forward * 3;
camera.Position = camera.Position + camera.Forward * 3;
}

浙公網(wǎng)安備 33010602011771號