Unity运行时导出FBX模型的解决方案

这篇具有很好参考价值的文章主要介绍了Unity运行时导出FBX模型的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文章是写如何在运行时导出场景中的游戏对象到FBX格式的文件。该解决方案支持导出游戏对象在Hierarchy下的层次结构、Transform组件信息、材质贴图、静态Mesh网格、SkinnedMesh、骨骼信息以及动画等。也支持将场景中的摄像机组件以及灯光组件导出到FBX模型。

目前该解决方案仅支持Legacy动画的导出,不支持Generic、以及Humanoid动画的导出。因为其中用的一些API只能在Legacy动画下使用,所以只能导出Legacy动画。但是可以导出当前游戏对象下所有的动画剪辑。

1.添加FBX SDK在运行时的支持

你可以通过以下方式在Unity项目里添加Autodesk FBX SDK for Unity:

点击菜单栏的“Windoes”选项,选择“Package Manager”;

在Package Manager面板中左上角点击“+”,然后选择Add package from git url ;

在弹出的输入框中输入“com.autodesk.fbx@4.1.1”,然后点击“Add”添加包;
Unity运行时导出FBX模型的解决方案

添加过Autodesk FBX SDK for Unity之后,该包仅支持编辑器模式下使用。如果想在运行时也被支持,需要做以下操作:

点击菜单栏的“Edit”选项,然后选择“Project Settings”,弹出的窗口中选择“Player”;

然后在“Other Settings”选项卡中,找到“Script Compilation”选项;

在“Scripting Define Symbols”框中输入“FBXSDK_RUNTIME”,然后点击“Apply”按钮即可;
Unity运行时导出FBX模型的解决方案

 注:该包在运行时只有Windows/OSX/Linux三个平台可以支持,其他平台暂时不能支持;

2. 导入 Exporter FBX Model

导入unitypackage包:Exporter FBX Model

该包的下载地址:点我

2.1 简介

导入包体后,打开默认的示例场景:SampleScene

整个工程只有三个脚本:

1.编辑器脚本:ClipInfo:该脚本为编辑器脚本,主要用于将现有的动画剪辑数据序列化到本地,然后在运行时进行读取。该脚本只会在打包成EXE之前使用一次,保证StreamingAssets文件目录下有可供运行时读取的文件。

2.运行时脚本:DeserializeAnimationInfo:该脚本主要作用是在运行时将StreamingAssets文件目录下的动画数据进行反序列化。

以上两个脚本,如果没有导出动画的需求,完全可以抛弃掉;

3.运行时脚本:Exporter FBX:该脚本用于导出场景中的游戏对象到FBX文件。默认的导出路径为StreamingAssets文件夹(路径可以在代码里修改)。

2.2 操作

想要在运行时导出FBX模型,最关键的脚本是ExporterFBX脚本,将该脚本挂载到场景中的任意模型上即可。将要导出的游戏对象拖拽到该脚本的ExportModels字段下。

该脚本的入口方法为ExportAll,他有三个参数:

List<GameObject > unityGos:要导出的Unity对象列表;

bool animationOnly:是否只导出动画(不导出材质贴图以及网格信息);

bool notAnimation:是否不导出动画(为true就是不导出动画,只导出材质贴图及网格信息);

如果不需要导出动画信息,只需要把notAnimation参数设置为true即可;

如果需要导出动画信息,就需要做如下操作:

1.在编辑器模式下,将动画的剪辑信息序列化到本地:

Unity运行时导出FBX模型的解决方案

 选择菜单栏的Windeow——>ClipInfo,之后会弹出一个对话框;

Unity运行时导出FBX模型的解决方案

将Project视图下的动画剪辑拖拽到ClipInfo面板下的Clip选择框中,也可以直接在该选择框后面进行选择; 

指定好动画剪辑之后,下面会显示出来动画的关键帧信息,这时候点击Save按钮;即可将动画信息序列化到StreamingAssets文件夹下。至此,该编辑器脚本就不再使用(如果以后需要序列化其他的动画,还是要用的)。

然后将脚本DeserializeAnimationInfo拖拽到需要导出的游戏物体下。然后既可以将场景打包成exe进行测试。

打包完成之后,运行打包后的exe,按下键盘的“A”键就可以将指定模型导出到FBX文件。“S”键可以在运行时修改动画。

3.写在后面

这只是我做出来的一个实例场景,我做的肯定不够完善,脚本中很多地方都可以进行优化,大家可以根据自己的需求来修改。

主要的脚本就是ExporterFBX脚本,该脚本中我也都写了注释,大家可以看一下,进行修改;

比如在该脚本的ExportAll方法中,可以修改FBX文件导出保存的路径;以及需不需要导出动画信息,也都可以修改。希望这个文章能帮到大家。文章来源地址https://www.toymoban.com/news/detail-404218.html

到了这里,关于Unity运行时导出FBX模型的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity-Audio-编辑器中运行没有声音的解决方案

    一、外部配置检查 1、检查播放设备是否选择正确           2、检查播放的音频文件是否损坏,能否用系统自带播放器播放 二、Unity中检查 1、检查AudioListener和AudioSource组件  (1)是否挂载了这两个组件            Unity中播放音频必须有这两个组件 (2)AudioSoure组件

    2024年02月08日
    浏览(47)
  • Unity中如何通过UI显示3D模型解决方案?

    需求:实现将3D模型显示在2DUI上面,实现王者荣耀英雄商城之中英雄展示功能,3D模型可以旋转,添加特效等正常3D功能。 效果: 那些黑圈圈就是例子特效哦。  实现: Project面板创建一个RawImage 创建一个Camera,通过设置渲染模式控制模型显示的 创建一个RenderTexture 创建一个

    2024年02月02日
    浏览(40)
  • unity 以管理员权限运行 与 无法读取D3DCompiler DLL文件 解决方案

    在unity hub下载后,用编辑器无法打开项目,可能出现的问题。   Unity 以管理员权限运行,这不受支持。Unity在您的项目中执行脚本和二进制库,这些脚本和二进制库可能来自第三方来源,并可能对您的计算机有害。Unity 还可以执行仍在开发中且尚未完全测试的脚本和二进制库

    2024年04月13日
    浏览(50)
  • 使用Deoldify模型来对视频影像复原(对运行时遇到的问题的做出的解决方案)

    第一次做Deoldify模型的复原,由于对该模型的使用不太清晰,搜索了一篇文章来查看,文章如下:https://blog.csdn.net/weixin_42512684/article/details/117376885   文章发布于21年,但是其作者提供的代码也是帮助解决了很多问题,但是由于作者所提供的模型如stable类型的模型已经无法下载

    2024年04月29日
    浏览(58)
  • 【解决】FBX模型导入Unity3D贴图丢失问题

    1、选择“Materials” 2、Location选择“Use External Materials(Legacy)” 3、最后点击“Apply”  

    2024年02月15日
    浏览(60)
  • unity导出FBX

    unity版本:2020.2.1f1c1 1、添加Fbx Exporter的package包 2、选中一个预制体点击菜单Gameobject -- Export To Fbx 3、设置导出参数 选择Binary 而非ASCII,否则无法导入blender 真的是so easy呀~~

    2024年02月12日
    浏览(42)
  • Unity中 Prefab导出FBX

    Unity 已经在Package Manager中集合了很多实用的插件,比如这里用到的FBX Exporter. 在Unity的菜单中Window ---- Package Manager,打开包管理界面 点击设置如图下面的Advanced ... 选择该选项 在Advanced Settings 中勾上Enable Preview Package 选择   关掉窗口 选择包类型 下面的 Unity Registry 然后找到FBX

    2024年02月11日
    浏览(47)
  • 在unity中结合FBX Exporter合并mesh并导出Fbx

    目标是把多个mesh合并成一个或者几个,降低drawcall,但是又不想标记成static的,也不想进3dmax合并的一个尝试。 首先在Window - Package Manager里安装FBX Exporter,我的unity版本是2020,2019应该也可以 安装成功后发现右键GameObject,可以导出fbx了。 接下来就是合并多个mesh 假设我有这么

    2023年04月10日
    浏览(48)
  • 【unity】 untiy中如何导出FBX

    打开unity 菜单中Window -----Package Manager 点击下面的Adv… 勾上Enable 选择 I understand 关掉窗口 选择下面的 Unity Registry 点击安装 安装好以后 GameObject — Export To FBX…就可以了 选中你需要导出的文件 ,就可以直接导出FBX文件了 知道你存放的路径就看到了

    2024年02月15日
    浏览(48)
  • Unity场景素材导出为 FBX文件的方法

    一、Unity场景素材导出为 FBX文件的方法:http://t.csdn.cn/Xyjxe 二、Unity场景素材导出为 OBJ文件的方法:http://t.csdn.cn/08RY3 三、Unity地形导出为 OBJ文件的方法 (大家可以打开我的博客主页进行查看此系列其它文章) 文章目录 系列文章目录 前言 一、Unity导出FBX文件 安装插件 网盘下

    2024年02月05日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包