[Unity3D] 如何将飞飞游戏资源提取并加载到uinty3d中
首先声明:(仅限个人学习使用,如侵权,请通知,会删除此贴.)
我的测试环境和工具:供参考
Atools
3dsmax 2014
unity3d 2019.3
台服飞飞客户端(2020年8月下的,没玩过几天号就封了233,大概猜测v20或v21版本),
前言,
从国外飞飞论坛了解到
可以用unity里的资源管理类加载自定义文件格式并转换(AssetPostprocessor类)…不太懂,有技术的大佬可以搞一下.
如果你跟我一样是小白,往下看吧.
放一张国外大佬重置飞飞Uinty版 FlyFF For Uinty3D
羡慕啊,学习吧…
第一步:准备工具
①:Atools
法国大佬开发的,不过现在github都被删了,你懂的…
(飞飞素材编辑器.能编辑地形,模型,UI等,也可输出obj,dae,ani,飞飞三大主要文件:.o3d模型,.chr骨骼,.ani动作动画,当然还有dds材质)
使用方法:
将atools解压到台服飞飞或任意飞飞客户端目录即可
链接:https://pan.baidu.com/s/1mDJEai_Q69thVTgbPr6lWQ
提取码:p42b
②3DSMAX
(用于将Atools导出的.dae格式文件转化为fbx文件,dae文件没有dds纹理素材,需要手动拖入)
当然你得需要dae导入插件:
根据自己的版本下载对应版本插件即可
选择Release_开头的
感谢@iblackly 大佬寻找的全系列(maya,3dsmax全版本)dae导入插件,可比某cxdn收费的全多了,而且还免费!
地址连接:
插件安装位置:
D:\3DMAX2014\3ds Max 2014\plugins
③Unity3D任意版本(使用Chan模型请使用2018以上)
④飞飞客户端
建议使用v15版本纯净客户端或v15纯净服务端,因为Atools开发大佬据说是用的v15服务端做的依托,生成的编辑工具
其他版本的服务端或客户端也可以提取,只是报错当当当较多,所以我们以报错少的端为主,所以自己试吧
找不到没关系,台服飞飞也没问题,报错较少
第二步:转换格式
①查找模型与导出模型dae
打开客户端的目录 或 服务端的/Resource文件夹将Atools工具里的所有文件扔进去
下图为Atools解压后的所有文件
扔进去后,在客户端或服务端根目录中打开ModelEditor.exe,会当当当的弹错,确定即可,不影响使用
打开后是这样的↓
然后点击软件的左上角file→open找到你的客户端或服务端的model文件夹里的任意o3d模型
打开之后按照下方箭头操作,(下图的√选项,Refleot反射及以下属性自己勾上点确定可以看到效果,自己选择要不要勾选,并不影响导出效果)
还有右侧的动作任意一个双击播放动作
目前只研究到每次保存一个动作和模型,所以你选择什么动作,保存后就是什么动作
设置完成后,点击file→save保存到一个任意位置,比如桌面
选择3dfile名称改为xxx.dae保存
②导入3DSMAX
首先打开3dsmax,确保你已经装了fbx导入插件和dae导入插件
先打开3DSMAX
将dae文件推入3dsmax,注意是拖入不是导入,此时会弹出一个选择框
第一个是fbx导入插件,装了才会有
第二个是dae导入插件,装了才会有(请看前言,有下载地址)
如果你是跟我一样的3DSMAX2014使用第二个有时会闪退,你可以使用第一个模式即可
此时的模型拥有骨骼和你刚才选中的一个动画,点播放可以查看
但是动画播放不正常,因为模型动画是50帧,而3DSMAX是100帧,需要更改一下
具体按照下方数字操作…
1打开曲线编辑器
2全选模型
3可以看到动画帧率
4点击时间配置
5修改结束时间为你的动画总长,确定即可
这里忘记说了,记得导出时勾选嵌入的媒体!!!
②导入贴图dds
选中模型,将客户端或服务端model中查找到的相同名称的dds拖入模型上即可拥有贴图
示例:在客户端或服务端model目录搜索你的模型名称就能搜到相同名称的dds贴图
③导出为fbx模型
注意类型选择FBX格式
第三步:导入unity
①将FBX模型拖入Assets文件夹(666就是我导出的模型文件)
此时可以将模型666直接拖入scene场景中
修改一下scale不然看不见特别小
但是黑乎乎的看不到材质,此时我们需要修改下预制件的属性
我也不是很懂这个shader,我把uinty自带的shader试了个便都不能看清楚模型
于是我去商店下了个chan模型,因为她的shader可以使飞飞模型显示出来,网上搜了一下好像是说没有双面渲染导致的…
下载完之后导入即可,当然如果你有更好的解决方案,记得告诉我一下…
导入之后我们选择刚才导入的飞飞模型,点开名称选择骨骼找到shader选择chan的选择双面渲染Clothing double sided
此时你会发现模型变得高亮且清晰不在透明.完美~
第四步:创建动画控制器并添加动画
①创建动画控制器Animator controller
右键Assest→create→Animator controller
②给游戏对象添加Animator动画播放组件
添加完Animator后将刚才创建的动画控制器扔进Controller中
然后双击打开动画控制器添加新状态
点击新创建的状态修改名称和关联动作
所有操作完成,接下来我们看一下动态效果GIF吧
希望可以帮助到想提取飞飞模型的朋友们.
2020年9月6日修改
-如果想要同一个模型的多个动作怎么办?
那就多提取几次,然后导入unity,
点击新导入的模型,点击新动作 按 Ctrl+D 即可分离动作
关于使用Chan的Shader导致模型颜色失真过于艳丽的解决方案
从网上找到一个大佬写的文章,大家可以去看一下文章并复制下shader
在这里感谢一下大佬的shader,很好用~
-怎么使用Shader代码?
Assest文件夹右键create→Shader
创建完成后改下名称,然后双击打开文件,将大佬写的代码复制进去,
修改下名称和你的文件名一致即可
选中模型后找到shader选择刚才创建的shader
最后修改途中四张贴图为你的模型贴图就大功告成了!
原来使用chan的双面渲染shader图
改成文中大佬的shader后,颜色失真问题完美解决,请忽略后面乱飞的HPMP和线条…
2020年9月12日更新
导出的模型可能存在的问题
1动画播放时位置发生偏移(坐标发生改变)
2动作异常(模型动作怪异等)
暂时发现这两个问题
解决方法:
导入3DMAX时将坐标XY都归零(这很重要,Z轴不需要变化,因为它负责上下移动)
如图:
选中物体,坐标XY轴输入0即可
然后导入unity后将以下两点按照图里对应设置
Rig里将Animation Type 选择为 Gencric通用模式 点 Applay应用
点Animation 将 Anim.Compression 压缩模式改为Off 关闭优化 应用
2020年9月17日更新问题
①导入3DMAX坐标XY归0时可能会出现两个模型(一个模型,一个阴影全黑)
这个时候删除黑色阴影模型,在手动将模型对其0位置,此时你不能输入0X 0Y 会出现偏移,因为归零只能将阴影归零
不建议删除黑色阴影模型,因为删除后导出会丢失MeshCollider,请自行选择是否删除
coll就是MeshCollider,抖动隐藏它就行了
②模型导入unity后可能会出现抖动现象
请看此贴:https://www.cnblogs.com/alanshreck/p/13684392.html
还有如果像完全恢复模型的色彩与外观跳过,请见shader修改为sprites/Default即可,
当然有的模型会出现看不到正面脸的问题,那只能切换到双面渲染shader了…除非你自己会写shader