Aura3D:Avalonia平台3D控件
随着Avalonia生态日益丰富,3D可视化需求逐渐从边缘场景走向核心应用。然而目前没有开箱即用轻量级的3D控件。为此我为 Avalonia 开发了一款3D控件:Aura3D
https://github.com/CeSun/Aura3D
使用它可以轻松的加载3D模型进行展示,丰富客户端表现效果,同时它支持自定义渲染管线,允许有能力的用户扩展自己的渲染风格,掌握每一个渲染细节。
功能特性
Aura3D的定位是轻量级的3D框架,它的接口设计简单,目的是为了Avalonia开发者能轻松的使用它丰富自己的客户端表现。当您的软件是大量的UI元素,包含少部分的3D模型展示建议您尝试使用Aura3D。如果您的软件3D是核心交互,建议使用Unity3D和UnrealEngine等技术。
目前Aura3D已经支持:
- 布林冯光照模型
- 静态模型渲染
- 蒙皮动画渲染
- 自定义渲染管线
更多的功能正在开发中,例如卡通渲染管线,实例化渲染(大量相同模型),软阴影,以及基于物理的渲染等。
欢迎有需求的用户提出真实的需求帮助我来完善Aura3D。
商业化
Aura3D本身以及源码完全免费,并承诺永远MIT协议开源。后续可能会提供付费的技术支持以及性能优化与管线定制。
如何使用
在 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(); // 定义一个相机
camera.ClearColor = Color.Gray; // 相机背景为灰色
view.AddNode(camera); // 将相机添加到场景中
DirectionalLight dl = new DirectionalLight(); // 定义一个方向光
dl.RotationDegrees = new Vector3(-45, 45, 0); // 调整方向
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()); // 设置动画
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;
}

浙公网安备 33010602011771号