UrhoSharp将3D引入各种平台,并使用其自己的二进制mdl格式的模型文件。 3D模型有很多来源,包括cgtrader和TurboSquid,以及FBX,OBJ,DAE和BLEND等格式。 Urho3D提供了AssetImporter和Urho3D Blender加载项等工具,您可以使用这些模型。 在这篇文章中,我们将更仔细地查看这些工具,并解释如何轻松将它们整合到应用程序中。
使用Urho3D Blender加载项导入3D资产
由于我们正在构建一个ARKit应用程序,并且室内设计是AR的一个合适的用例,我为这个例子找到了一个家具模型。
注意*本文假设了3D建模软件Blender的一些知识。 如果您不熟悉此工具,并且想要一个底稿,请查看教程部分。
- 首先,下载Urho3DBlender加载项并遵循安装指南。
- 然后,将由Satish Parab创建的这本漂亮的书架导入Blender。 (这可以通过文件 - >导入fbx菜单轻松完成。)
- 现在,通过从模型中烹饪Urho预制,将您的模型导出到Urho。 (一组预配置的节点,模型和材料。)
为此,请在“属性”面板中找到Urho3D导出器配置面板:
要导出预制,请选择以下选项:
- 选择要通过“输出”文件夹进行保存的位置。
- 对象 - 全部。 要在大纲视图中选择特定对象,请选择仅选择。
- 导出几何,材质和纹理。
- 出口Urho Prefabs并检查一个集体。
- 可选地,要与对象交互,请添加物理(碰撞形状,刚体)。
单击魔术导出按钮并转到输出目录,如下所示:
我们的预制包括几个文件夹和文件:
- Materials: 告诉着色器使用纹理,技术和参数。
- Models: 表示3D几何的自定义二进制文件。
- Objects: 描述我们的预制作为一组节点,变换,模型和材料的XML文件。
- Textures: 漫射地图,普通地图,镜面地图等
使用AssetImporter导入3D资产
与Urho3D Blender加载项不同,AssetImporter是一个命令行界面(CLI)工具(基于Assimp)。 您可以在UrhoSharp.Tools包中找到可执行文件。 为了将FBX文件转换为预制,只需使用以下参数执行:
AssetImporter.exe node file.fbx prefab.xml
要快速查看结果,还有一个可以在GitHub上找到的AssetImporter CLI上的一个小型WPF / Cocoa应用程序。 现在,只需将这些文件添加到您的项目中并设置正确的Build Action; 对于iOS它是BundleResource:
定义场景
定义场景的最简单方法是将SimpleApplication子类化,其中包含一个预配置的场景,其中包含灯光,摄像头和其他您不需要创建自己的组件。
Scene.InstantiateXml will create a copy of the prefab defined in the assets with a given position, i.e. one meter away, one meter down.将创建一个具有给定位置的资产中定义的预制的副本,即距离一米的距离。
启动此场景
只需在iOS应用程序的布局中添加一个UrhoSurface(UIPanel)。 作为根视图,例如:
点击(此处)折叠或打开
- var surface = new UrhoSurface(UIScreen.MainScreen.Bounds);
- Window.RootViewController.View.AddSubview(surface);
- Window.MakeKeyAndVisible();
- surface.Show(new ApplicationOptions {
- ResourcePaths = new [] { "BookshelfData"}
- });
这也显示了如何轻松地将Urho嵌入任何现有的UIKIt应用程序作为(子)视图。
将其全部与ARKit结合
为了显示由ARKit提供的增强现实中的模型:
- 添加ARKit特定资产(如YCbCr着色器等)。
- 然后添加基本的Arkit应用程序类,在使用ARKit与UrhoSharp指南中描述。
- 并对ArkitApp类进行子类化,而不是SimpleApplication。
- 运行!
ArkitApp将在不久的将来提供UrhoSharp NuGet软件包,并且还将支持Google ARCore,因此您还可以在Android设备上玩UrhoSharp和AR。 最终的演示将在GitHub上公布! 由于许可证不包括资产。
如果您想了解有关UrhoSharp的更多信息,请务必访问Xamarin开发人员中心的文档!