3D引擎美术管线一键导出技巧

发表于2016-01-07
评论2 3.1k浏览

  用过很多3D引擎,美术在拿到一个新引擎的时候,总是需要花费不少时间来学习新的引擎的美术管线。后续制作上也会在美术资源的导入到引擎过程中花费很多时间。总是碰到很多美术同学抱怨导出太烦。完全是多余枯燥的工作。

  为了让美术同学尽量节省在美术导出花费的时间,我们设计了一套一键导出的美术管线。也就是说不管是导出模型还是动画,美术只需要在3DS max里面按一个导出键就行,其他的都交给引擎处理。 

  如何做到这一点?在转换文件的时候,引擎必须知道导出的是什么类型的文件,要导出成模型文件还是动画文件,文件名是什么,导出的文件要放到哪里,如果是动画文件还需要知道动画长度是多少帧? 动画是否循环?

   为了让美术尽量少的来设置这些参数,我们设置了以下规则:

 规范3ds max文件的放置目录:

  下图为Rgame P4目录:

  红框标出的是美术会用到的目录。

Art : 存放美术源文件的目录,如..max PSD 之类的源文件。

Bin: 放编辑器的目录

Resource:游戏所有资源目录

Chunkdata: 游戏最终美术资源的目录,和Art目录结构一样,现在导出插件会自动把Art目录的资源导出到chunkdata里。

  例如一个有一个新英雄,策划给出的命名是H0014_MonkeyKing, 那么它一定是放置到目录:

  //RGame_Depot/art/character/hero/H0014_MonkeyKing/

  它所有导出的文件都会自动放到目录:

  //RGame_Depot/resource/chunkdata/character/Hero/H0014_MonkeyKing/

  规范3ds max文件的名字:如果是模型文件以m_ 开头。H0014_MonkeyKing 的模型文件名为m_MonkeyKing

  每个3ds max文件里面存一个动画,max文件名为动画名。例如MonkeyKing 的待机文件stand.max文件里面会有一个stand动画。

  规范动画名:由于rgame游戏类型里面不会有太多特殊的动画名,所以我们做了一整套的动画命名规范,所有游戏内用的动画名只能是动画表里的。动画表里面每个动画名都规范了它的混合优先级和是否循环属性。

  动画模型制作硬规格:

  模型轴心点归零并Reset Xform

  所有骨骼的scale值为100%

  所有参加skin的骨架必须要有同一个根节点

  单个max中骨骼不能重命名

  挂点设置好

  骨骼数量正确,小兵也小野怪不要超过40根,英雄和boss不要超过60根

  同一角色的所有max文档(skin文件和动作文件)的骨骼命名相同

  同一角色的所有max文档 的骨骼层级关系相同

  同一角色的所有max文档 的骨骼数量相同

  骨骼的层级关系中尽量不要用Dummy,不要把Dummy作为bone的父级,如果因为特殊需求一定需要请在dummy的自定义属性中加入 asbone

  删除max文档中所有不需要的其他模型,例如为辅助做动画而建的地面,攻击目标点等。

  有了以上规范,再导出的时候,不需设置任何参数,引擎就可以知道,该导出动画还是模型,导出文件放哪,导出文件名字是什么。动画是否循环。

  具体操作的时候在max里写了2个导出脚本,模型导出脚本和动画导出脚本。安装到max里会有2个button,

  美术点击Rgame_ModelExp 按钮,不会弹出任何设置窗口,会直接的导出一个FBX文件,然后触发引擎的FBXConverter.exe 来导出模型。

  美术点击Rgame_AnimExp 按钮,会弹出如下窗口:

  窗口中的参数,根据3ds max文件名得到,动作名为stand。 根据3ds max里动画条得到动画起始帧为0, 结束帧为60。

  另外还有一些max内的错误会导致导出出问题,或者导出的动画模型不正确.

  美术点击导出按钮后,同样会触发引擎的FBXConverter.exe 来导出模型。

  下面的批量导出按钮可以直接把一个文件夹内的所有max文件自动导出。例如外包文件回来时,可以直接一键导出所有模型和动画,快速的放到引擎内查看最终效果。

  有了以上一键导出模型动画功能,就可以进一步扩展实现,一键导出到游戏内实时更新美术资源了,这样在美术针对游戏内效果修改的时候会非常直观。

  这部分只需要在客户端内加入热更新机制,客户端会实时监控resource目录更新的文件,并实时的把这个文件从新载入到内存中。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引