查看: 1621|回复: 0
打印 上一主题 下一主题

以FBX实现 MAX与MAYA互转(转载)

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-9-12 16:31:45 |只看该作者 |倒序浏览
前言

  本文主要整理自之前发表在讨论区的留言,毕竟基于个人的使用经验,疏漏谬误之处所在难免,还请众家先进不吝指教。

  MAX与maya是现在占有率最高的两套3D动画软件,各擅胜场,关于两套软件的比较不在本文范围以内。因为使用者众,相信大家都会常碰到需要在这两套软件之间转换的状况,例如在MAYA建模用MAX算图;或是因为工作的关系,得要接触使用不同软件的工作伙伴,甚至要交换资源…….等状况,尤其项目的规模越大,这样的状况更难避免。

  最常见的应该是模型的转换,通常是使用OBJ或是3DS这两种老牌的格式作为中介,不过也因为这两种格式也有一定历史了,造成转换上并不是很完整,会损失不少的信息,例如贴图、平滑…...等等,那就更别说是动作了!

  前一阵子因为工作的关系,需要整合MAX与MAYA的工作团队,而在更早之前朕宏上面也有朋友发表过使用Filmbox的fbx作为转换的格式,可以成功转换(大部分)模型、骨架、动作、贴图....等信息,真是惊为天人。

  经过一整个项目的整合经验,也累积了一点心得,在此跟大家分享一下,不过还是要强调一下,这纯粹是基于个人使用的经验(经验法则),再者因为个人对MAX比较熟悉一点,所以对MAYA方面的掌握度可能比较不足,难免疏漏或错误,还请不吝指教。

FBX介绍

  fbx是filmbox这套软件所使用的格式,现在改称Motionbuilder。Motionbuilder是一套专攻动作制作的软件(尤其是配合mocap系统),详细的资料可以查网络上的信息,这里就点到为止了。

官方网站 : www.kaydara.com

  Motionbuilder扮演的是动作制作的平台,所以在前端的modeling和后端的rendering也都有赖于其它软件的配合,所以Motionbuilder在档案的转换上自然下了一番功夫。

MAX5已经内建fbx的import/export,如果是MAYA或XSI等请至官方网站下载免费的plugin包一套搞定,目前应该是到5.0版。

还有一个有趣的讯息

  FBX有提供Quicktime6的Plugin,意思就是说只要有安装这个插件,就可以直接在Quicktime Player里面显示FBX的模型~~~酷哟

Viewport的操作方式和Motionbuilder相同,鼠标只有左键有功用(配合Mac族?)

shift+LMB=Pan

ctrl+LMB=dolly

shift+ctrl+LMB=Rotate

输出与输入---基本概念

  前面提到MAX5已经内建fbx的importer/exporter,如果是MAYA5则需要另行安装(怎幺安装不需要教吧?)

  MAYA要输出入fbx没有什幺选项,只要按ok就好,MAX的fbx import/export就提供了不少选项可以作细部的调整,比较重要的是在输入的时候可以选择Y-UP或Z-UP的坐标,如果是从MAYA出来的东西,记得要选择Y-UP。
  因为预设的单位不同,所以从MAX转到MAYA,模型通常都会很大,MAYA转到MAX都会太小(这个大小问题其实也常发生在输入obj档时),不过只要在两边都把单位设好,我的习惯是都设成公分,在modeling的时候也参考现实的尺寸,这个问题基本上就ok了。


  接下来就是调整max与maya的网格大小,在maya里加大camera的far clip(如果在prsp里看不太到东西的话)

  由MAX转到MAYA或是MAYA转到MAX,FBX会将所有的对象Link到一个FBX Root上(主要是解决Y-UP与Z-UP的问题),所以请勿乱删这个dummy(node),因为这是所有对象参考的原点。

在群组阶层关系部份,个人觉得FBX和MAYA的GROUP对应相当良好,转到MAX会成为一个dummy,而MAX的GROUP转到MAYA会对应到MAYA的GROUP,这里也可以发现MAYA和MAX的GROUP的观念有一定差距,MAYA的GROUP概念比较单纯,接近MAX的link to dummy的作用。

至于Link的部份,大致上是没有什幺问题的,这一点留待模型与动作的部份,再做补充说明。

模型篇

  模型的转换,相信是最常见的需求。点对点线对线的状况最为单纯,FBX在这个部份的表现相当理想,多边型模型基本上是分毫不差。

  有趣的是,在Max里相同拓朴的模型,如果是mesh转出去,都会变成三角面,用poly输出的话就是漂亮的四角面(MAYA没有这个问题,因为MAYA只有polygon),而MAX输入fbx的模型,都会成为mesh的形式。

  更利害的是fbx居然能够保留nurbs ─ 例如用MAYA转出一个用nurbs建的模型,相同的fbx文件,如果用MAX输入的话会自动转成mesh,用maya输入的话还是nurbs~更神奇的是再从xsi 输出一个nurbs模型到maya,仍然保留unrbs的格式(好吧!MAX的NURBS真的是超级废柴)

  这里有一个小技巧,在MAYA如果输出NURBS到FBX,进入MAX就会转成Mesh,在MAYA的时候可以先按1键,将显示的平滑度降低,这样出来的模型资料量会小很多,到MAX再执行Meshsmooth即可。

接下来这一点很重要,避免使用不等比缩放,如果有用到,MAX在Hierarchy->Reset字段下有两组按钮,点选Transform和Scale,真正将位移缩放的变形量归零;之后再到Utilities面版下,点选Reset Xform或再convert一次将比例归零。MAYA则使用freeze transformation。 这样转换的模型才不会出现乱飞的状况。
材质与灯光

  材质方面,能够保留MAX或MAYA多边形的贴图轴信息(NURBS的UV不行),材质球的属性,有部分可以保留,能转的就算赚到了,shader都会转成phong shader,diffuse(MAX)对应到color(MAYA)、Opacity(MAX)对应到transparency(MAYA).......其它的依此类推,颜色转换是无误,但比较可惜的是部分数值的对应并不是很理想,这一点还请各位朋友自行比较,我是不太信任这一点,毕竟同样的数值在不同的软件下不见得会产生相同的效果。

  在转档后,常会觉得有OVER的感觉,怎幺打光都不对,其实在转档后,FBX会自动把MAX的Enviroment>Global Lighting>Ambient设为50%的灰,调低即可,至于东西转到MAYA则是会把每一个材质的Ambient设为0.588,全选起来用Attrib sprend sheet一次调低即可。

  贴图的部分,不用说只能转bitmap(files)的贴图,此外只会保留diffuse这个channel,其它的部分要再自行指定,希望新版可以提供支持(基本上支持bump和Opacity就很感动了)

  FBX在转换后,会把每一个单独的模型产生一个新的材质,所以会发现在材质编辑器里面有爆多的材质球(尤其是MAYA看起来会很可怕),所以在转换前,能够先Attach或combine就先结合在一起,省得整理麻烦。

  若是从MAYA转出的模型,如果没有上贴图设定UV,以MAX开启的话都会被赋予一个材质,在Diffuse的地方还是会加上一个bitmap的贴图(但是是空的-maya ghost),这时候用MAX算图时就会出现没有UVWMap的警告讯息,必须要手动加上UVWmap,或是在MAYA里就先拆UV。

  另外,有的时候还是会产生法向量方向的问题,开2side或下normal指令修正啦。

  标准的三种光源,Spotlight转成spotlight、onmi转成point light,Directlight转Directlight,位置、方向都不会有问题,灯光强度:Multiplier对应到Intensity、颜色、Spotlight的Cone angle都会保留,不过前面也提过了,相同的数值不代表相同的效果 。

  一些比较特别的灯光种类,如MAYA的Ambientlight、体积光、MAX的Skylight…就会被转成helper之类的虚拟对象。阴影部份的属性不会保留,所以FBX的灯光转换还满鸡肋的,主要是作对位功用吧!

"听说"有一个叫OHM的格式,可以顺利转换灯光的属性: www.mindthink.de 不过大半年过去了,似乎还是只闻楼梯响的阶段。

摄影机篇

  我把CAMERA的部分独立出来说明,CAMERA顺利转换与否,在协同工作的状况下是相当重要的ㄧ件事,以我个人的例子来说,这次因为没有办法招募到那幺多使用MAYA或MAX的工作伙伴,五五波(笑),必须要各取其长处。最后决定角色动画在MAYA进行,场景部分在MAX进行RENDER速度比较理想,最后再进行合成。

  这时候CAMERA的转换就扮演着重要的角色了,第一点是要确保画面在两套软件间维持无误,第二点是要确保摄影机的动作顺利转换

(最好是不要动camera啦,自爆)。

  在经过了多次尝试后,主要的重点是要在MAX与MAYA里面保持相对应的设定,因为FBX在这里并不是很聪明,属于Rendering setting或Render Global的设定并不会被转换,需要手动设定。算图的尺寸不用说要保持一致,包括分辨率、像素比、Aperture width……等,通常使用内定工业规格的设定,例如NTSC、HDTV…是最保险的。

  在MAX的rendering里面Aperture width和camera setting中的lens数值是相对应的,MAX调整前者,后者也会相对变化,保持画面不变;而在MAYA里Aperture是属于Camera的属性,调整Film back里面的设定,MAYA会保持Focal length不变而画面改变。不过两套软件计算方式似乎不太相同MAX是用mm,MAYA是用ratio,我并没有花时间去找出换算的方式,原则上保持一套软件的设定固定,不要两边都做调整,以免产生误差。

      MAYA中的场景与摄影机的参数

      MAYA中的场景与摄影机的参数

  MAX的FOV对应到MAYA的Angle of view,Lens对应到Focal legth,上面提到过两套软件在Aperture部分的计算方式不相同,所以在这里的对应数值也会有出入,例如在MAX设定lens是28mm,转到MAYA会变成28.884(出现小数点),这倒是不用太担心,两边算出来的画面是相同的,FBX会做出转换(先决条件是上面的条件要控制住)。

使用RamPlayer确认影像迭合无误(灰色是由MAYA Render出)

  还有ㄧ个容易忽略的重点,就是在filmfit的部分也要保持一致,建议是使用水平Horizontal。

  解决了画面的对应,接下来就是摄影机的动作。camera的Dolly、Track、Arc都可以处理,如同一般的对象,摄影机的移动、旋转(缩放没有实际意义)也可以转换过去,不过出状况的比例不低,建议是使用FreeCamera互转,比较稳当(spotlight也是一样,修正一个对象总比再加上一个target来的容易)。

  最常发生的状况就是摄影机反转,如果摄影机乱跑,也可以试着使用Freeze transformation来修正 ,釜底抽薪的方式就是多下几个key点来强制校正这个问题,再不行,输出前先把camera的动态逐格取样,转成keyframe应该就ok了(不过就没办法修改了)。

  至于zoom的动作,也可以转换,不过我没有仔细测试过这个部份,因为在动作的时候担心出状况,所以就避免使用了。

有时候出现警告讯息,不见得代表一定出问题。

骨架与动作

  关于骨架的转换,不管是CS的biped,或是bones...转出后都会变成单纯的一根一根的bones,IK会不见,只会保留单纯FK的形式,动作都会转变成每一格每一个关节的旋转量(再编辑无力),我想这是可以理解的,不过我们仍然可以将这段动作透过MAYA的trex editor或是再转成BVH进CS作编辑(这里需要第三方的插件配合)特别注意一点,CS的骨架输出后会在跨下产生一根多出来的(姑且称为老X吧),直通地平面,那是因为Biped的Root其实是投影在地平面上的一个点,就留着不会有什么影响。

  虽然骨架可以顺利转换,但前面也提过了,IK handle之类的连结关系并不会被转过去,这样子就麻烦了,因为大部分的时候我们是把keyframe下在各个控制的handle或locater或dummy .....ect上,转过去当然只有dummy的动作......只有CS没有这样的问题这时候就要先把keyframe bake到骨架上去,就可以解决这一个问题了关于动作的转换,大部分状况都是ok的,位移、旋转、缩放都可以转,不过vertex animation就无能为力了(可以透过Morph来想办法,不过不一定划算)

  至于keyframe的转换,在输出的时候会有一个取样值,看是每秒几格(预设是30格),不过也不一定就会转出满满30个keyframe,程序会试著作判断~~~~转不过去才会强制取样。

  这时候如果都是依赖curve来调整动作的话,就有机会产生取样错误,所以我的方法都是多下几个key点来避免这样的状况(in max or maya)蒙皮的部分,MAX可以转换官方的Skin与Physique,能保留每一个点的weight(残念,Bones pro没办法呀......),在FBX5.0里面,甚至可以指定模型输入时要转成Skin或Physique。不过在这一点我试的经验是成功率有待研究,多多少少还是会出现拉扯、错点....等现象,重新执行Normalize Weights有的时候可以修正一些问题。

目前我的做法还是输出定位好的模型与骨架到个别软件去作skin(bind)的动作。此外,Morpher(Blend shape)也在转换支持之中,不过我并没有仔细的测试过,主要是做MAX的morph modifier和MAYA的Blend shape之间的转换,测试过MAX的输入输出基本上都是ok的,甚至连keyframe都可以保留,不过似乎不支持MAX的progressive morph(无法对应吧),这点有机会在好好研究啦。

结语

  拉拉杂杂的把这段时间整合的经验分享下来,虽然FBX对于不同软件之间的转换已经提供了相对完整的解决方案,但是实际执行起来,仍不免要解决诸多问题。换个角度想,要是那么容易就搞定了互转,AW和Discreet也不要玩了,谁不想寡占市场呢?

  其实个人也有这样的感觉,能够用一套软件搞定,何苦要花费更多的成本在转换的整合上呢?这个时候就是衡量了,要如何在效率、效果、人力资源、项目管理……上面取得一个平衡,相信是超出于技术考量的问题了。

ANYWAY,提供给有需要的朋友参考一下吧。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-24 00:38 , Processed in 0.114913 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部