unity3d导出fbx模型_unity3d 怎么导出fbx模型 - CSDN
精华内容
参与话题
  • unity中的模型导出.FBX格式模型,此插件使用方便,快捷!可以直接使用!
  • 博主本来想自己写,有大大写的异常详细...在Unity3D中使用三维模型,主要依靠Mesh Filter组件载入多边形表面物体(polygon mesh),然后依靠Mesh Renderer组件将Mesh正确渲染出来。 内置基本3D模型 Unity3D内置有...

    本篇博文转载自:https://www.jianshu.com/p/e2aa4d898fb7

    博主本来想自己写,有大大写的异常详细,转载一下以作学习记录。


    模型(Mesh)

    在Unity3D中使用三维模型,主要依靠Mesh Filter组件载入多边形表面物体(polygon mesh),然后依靠Mesh Renderer组件将Mesh正确渲染出来。

    内置基本3D模型

    Unity3D内置有一些基本几何体,通过Hierarchy面板上的Create按钮或者菜单选择GameObject > 3D Object来创建:

    Name Model
    Cube 方块:1×1的正方体
    Sphere 球体
    Capsule 药丸
    Cylinder 圆柱
    Plane 平面:10×10的平面
    Quad 单面:1×1的单面

    这些内置的基本几何体其实就是引擎自带的mesh。等同于我们在外部创建一个Cube或Plane模型然后导入Unity使用。这与我们的在Maya中使用预设几何体有本质不同。Unity3D的基本几何体不具备任何调整参数选项。

    普通3D模型导入Unity3D

    由于基本几何体都非常简单,Unity3D本身也不提供多边形编辑工具给我们使用(但可以使用
    ProBuilder Advance 插件来进行一些多边形编辑工作),所以很多情况下我们需要其他3D软件来制作模型,然后再导入到Unity3D中。

    虽然U3D现在支持直接导入Maya的.ma文件,但建议大家还是先将模型清理好后导出成.fbx格式,然后再导入到U3D中,这样比较便于管理。

    并不是所有的Maya节点都能够被正确导入到Unity3D中,实际上,Unity3D仅支持Polygon Mesh、Joints、空节点、蒙皮信息、摄影机、关键帧动画的导入,而Maya中常用的NURBS表面、Curve曲线、变形器、IK、Constraints等内容都不支持。

    并且,我还建议大家在导出.fbx之前对Maya文件进行一下“清理”工作,检查好模型的发现方向,烘焙好关键帧动画,删除掉多余无用的节点,删除无用的构造历史,同时将模型放在坐标原点中心位置,冻结Transform属性(归零)。

    Unity3D可以识别单个模型文件中的多个mesh,且Mesh Filter组件仅支持载入单个mesh,所以我们可以用一个文件导出所有游戏所需要用到的mesh,然后在U3D中一一调用。

    因此,为Unity3D制作模型素材的时候,在三维软件中就搭建好全部模型并不是一个好选择。因为三维软件中重复出现的模型,导入U3D中以后会被识别成不同的mesh,直接载入整个场景会浪费掉很多系统资源。更有效的制作流程是在三维软件中制作好不同的“小物件”,然后在Unity3D中完成具体场景的搭建工作。

    PS:地形、植被等模型可能更适合于利用Unity3D自带的功能模块来创建呢!

    模型导入的设置参数

    选择相应的模型Asset,其导入参数会显示在Inspector面板中。

    Model一栏是关于模型的导入参数,Rig一栏是关于绑定设置的导入参数,Animations一栏是关于动画数据的导入参数。

    unity_model_import_02.png

    这个模型素材来自: "Unity-chan"Model 1.1

    • Scale Factor:导入尺寸缩放(按照实际长度计算)
    • Use File Scale是否保留模型本身的缩放属性
    • Mesh Compression:网格数据压缩程度,会一定程度上减少mesh的多边形面数
    • Read/Write Enabled:是否支持直接修改本文件
    • Optimize Mesh:是否精简mesh的面数
    • Import BlendShapes:是否导入BlendShapes
    • Generate Colliders:是否自动创建碰撞体
    • Keep Quads:是否保持所有的四边面(而不自动转换为三角面)
    • Weld Vertices:是否自动融合重合的顶点
    • Swap UVs:交换UV组(通常模型有多套UV组,且导入后发现贴图不正确时勾选)
    • Generate Lightmap UVs:是否自动创建用于光照烘焙的UV组
    • Normals:如何处理法线方向(Import代表导入模型原来的法线数据、Calculate代表用下面的Smoothing Angle参数来进行自动光滑计算、None代表完全无光滑发现设置)
    • Smoothing Angle:夹角在多少度以上的边会被自动计算成光滑边界
    • Tangents:切线计算设置
    • Import Materials:是否导入模型材质球
    • Material Naming:使用什么名称来命名材质球
    • Material Search:材质球搜索规则

    设置完毕千万不要忘记点击 Apply 按钮确认哦!!!

    关于比例

    在Unity3D中尺寸比例非常重要,因为很多Unity3D操作都依赖于physics物理解算,而物理解算会因为物体的尺寸比例不同而呈现出差异极大的结果。一个100米高的大石头和一个1厘米高的小石块从空中落到地面的行为显然是很不一样的。

    Unity3D中默认 1单位距离 = 1米。

    由于Maya中默认设置为 1单位距离 = 1厘米,所以Maya模型导出成.fbx以后再导入Unity3D,要设置scale为0.01,否则就会变得超级大。

    总结一下导入模型的技术要求:

    • 法线要正确:Unity3D中不可以修改多边形法线方向,所以如果错了就必须返回Maya进行修改再重新导入;
    • 比例要正确:如果按照Maya默认1单位=1厘米,那么1米高的物体在Maya中就应该高100个单位,同时导入时Scale Factor设置为0.01;
    • Pivot Point要提前设置好;
    • 位移归零位置要在坐标原点(但初始位置不一定要在原点);
    • 不能有构造历史(导出FBX的时候会自动统一清空构造历史,所以不要有任何依赖于构造历史的修改变化);
    • UV都放在(0,1)象限内,且保持UV正向(Maya中显示为蓝色为正向);
    • 单一mesh的UV不要有重叠;
    • 只使用smooth bind进行绑定;
    • 动画必须全部由动画曲线关键帧控制;
    • 骨骼命名最好提前做好。

    绑定(Rig)

    Rig一栏下的设置比较简单,最重要的是设置Animation Type

    • Legacy:这种方式比较老式了,不支持Avatar,通过Animation组件来调用动画
    • Generic:这种方式现在比较常用,对动画的调用主要通过Animator组件来完成
    • Humanoid:这种方式类似Generic,也是配合Animator使用的,但专门针对人形骨架,可以点击Configure...按钮进入人形骨架Avatar的详细设定

    所谓Avatar,在我认为是对于骨骼结构的一种标准化描述方式,用来方便在不同模型之间自由应用动画数据。比如Humanoid类型的Avatar,就把人形生物的各关键骨点都标准化为了特定的名称,这样不论动画数据是基于怎样的命名规范,只要将动画数据fbx文件以及目标模型fbx文件都标准化成人形Avatar,就可以自由的将动画数据应用在新模型上。

    眼尖的同学应该可以发现,这个概念和Maya中的HumanIK很像。

    在下面图片所示的Mapping面板中,我们可以手动指定各关键骨点所对应的场景节点,甚至还可以对于头部和手指的细节进行设置,非常方便:

    unity_model_rig_avatar1.png

    Muscles & Settings面板我还没怎么用过,以后用到了再补充进来。

    对模型进行绑定设置的基本流程可以总结如下:

    • 对于非常非常简单的动画对象,可以选择Legacy方式进行设置(但我还是不太推荐)
    • 对于标准人形对象,选择Humanoid方式,Avatar Definition可以直接Create From This Model,也就是根据本模型新建一个Avatar
      • 如果对自动创建的Avatar不满意,点击Configure...进入Mapping面板自行设置
      • 如果已经设置过同样的Avatar,可以在Avatar Definition中选择Copy From Other Avatar以避免重复工作
    • 对于非标准人形对象,选择Generic方式,Avatar Definition同上
      • Generic方式还需要指定一个Root Node,也就是“根”节点,这个节点是所有动画的起点,通常可以指定骨骼链的最顶端joint,或者骨骼链的父物体节点等等
    • **点击Apply按钮确认!!!

    将设置好的.fbx资源拖进场景中,Inspector中会显示这个游戏物体的组件

    可以看到已经附加了一个Animator组件(动画人),其Avatar参数已经添加好了,但Controller参数还是空的。这时候模型是不会在场景中播放动画。

    如果之前选择的是Legacy方式的Rig,游戏物体会被自动附上Animation组件。其中Animation参数也是空的(因为这个fbx模型本身是不带动画的!)。

    初学者大多会“自作多情”地认为,带动画的fbx模型导入Unity3D不是应该直接就自动播放动画么?其实并不是这样的。如果是Legacy方式导入,模型又自带动画的话,倒是有可能自动播放,但LegacyAnimation组件目前其实已经逐渐被大家抛弃了,而使用Animator的话,不添加Controller是不会有动画被播放的。


    动画(Animation)

    上面所使用的Unity-chan的素材,动画文件是和模型文件分开的,如果选择模型.fbx文件打开Animations面板的话,看到的是一片空白:

    大家如果也使用这个资源的话,可以在UnityChan > Animations目录下找到带动画的.fbx文件。

    我选择unitychan_WALK00_F.fbx文件来做演示,点击文件右边的小箭头,可以显示这个.fbx文件的全部内容,我们可以看到只有一些貌似面部的mesh,一个Avatar,以及一个WALK00_F文件。

    这个.fbx文件实际上只包含动画数据,之所以会有这些mesh出现,是因为这些mesh上的动画并不是通过骨骼绑定来实现的,而是blendshape或者是直接transform动画,所以必须保留动画数据所依附的节点,也就是这些mesh。

    而这个WALK00_F文件就是动画数据所存放的文件了(在硬盘上的文件后缀名是.anim)。

    有动画的.fbx文件在Animations面板下是有内容的。

    unity_model_animation_2.png

    • Bake Animation:我没用过这个选项,应该是把IK动画烘焙成关键帧动画的意思吧,但不保险,还是在三维软件中做好所有的烘焙工作吧。

    • Anim. Compression:是否精简压缩动画曲线,当然选择Off

    • Clips:这里可以对动画曲线做切割,点击+号可以添加一个片段,并给这个片段指定Start帧和End帧,每一个Clip对应之前看到的一个动画文件,默认是将整段动画曲线做成一个大Clip,也就是WALK00_F。我们可以在一个文件中把全部需要的动画都做进去,然后在导入的时候手动分割,我个人比较推荐这种做法。

      要注意的是,手动分割以后的clips文件才会真正出现在硬盘上,前面展开fbx文件看到的那个动画文件实际上是包含在fbx文件内部的,在硬盘上找不到的。

    • Loop Time:该片段是否默认循环播放

    实际上,从设定clip的名称开始,后面的所有设定都是针对某一个特定clip来做的详细参数,这里不细说了。

    这张图片中显示出两条Warning警告,说明这个模型其实是有一点点小问题的,我检查了一下,应该是有一根Spine骨骼稍微有点歪,不过不影响大局,就不管它了。

    在最底下的预览框中可以看到,这种单独导出动画文件的工作方式真不咋地,由于没有实体模型,所有动画文件预览时都看不到,点击播放就看到一张白脸在那里晃来晃去。

    解决办法是用鼠标将模型fbx文件拖到这个预览窗口中,这样就替换了原始模型,便可以看到该段动画clip在正确的模型上优雅地播放了。

    Animator Controller (动画人控制器)

    下面我们来让这个模型能够动起来。

    unity_animation_1.png

    如果使用老式的Animation组件,只需要将动画片段clip拖到到Animation栏中,这段clip相当于“当前动画片段”,会自动在game object被载入时自动开始播放了,如果设置了loop,那么就会不断循环。
    Animations一栏中,可以添加任意多个clips,这些clips则是“后备动画片段”,未来可以通过脚本来调用他们进行播放。

    老式Animation组件的问题在于,游戏中动画片段之间的切换是非常频繁且复杂的,使用这种方式的话,所有的动画切换都要通过脚本来实现,变成了程序员的负担。所以那些编写游戏引擎的程序员们当然就要想办法把这份工作甩给美工去做咯,于是就开发了后面的Animator系统,把动画片段的切换逻辑设计给“可视化”。

    unity_animator_1.png

    新式的Animator组件需要调用一个Controller,我们可以在Assets中新建一个,暂且起名叫AC吧。

    将这个AC拖到Animator组件的Controller一栏中,然后双击这个AC文件打开Animator面板。

    这个面板现在空空荡荡的就3个类似按钮的东西,我们可以拖动这些“按钮”来随意布局。

    unity_animator_controller_1.png

    把动画文件拖到这个面板上,可以看到动画clip变成了一个较大的橘色长条,然后从Entry长条中延伸出一个箭头指向这个新加入的clip长条。

    unity_animator_controller_2.png

    unity_animator_controller_3.png

    实际上,Animator Controller是一个“状态机”(关于状态机的解释可以看这里),而Animator面板则将这个状态机的设计工作“可视化”了。我们后面会学习到的PlayMaker也是一个基于状态机的交互设计插件。

    这些不同颜色的“长条”代表不同的“状态”,“箭头”则代表状态可以从一端变化到另一端。所以上面这样图可以这样解释:当该物体“进入”场景时,物体动画状态变为WALK00_F,也就是“一经载入,模型播放WALK00_F动画”的意思。

    点击WALK00_F,我们可以看到与在Project面板中点击WALK00_F动画片段文件时不同的Inspector面板显示内容:

    unity_animator_controller_4.png

    在这里我们可以设置这个“动画状态”下播放哪个动画片段(Motion),用什么速度(Speed)来播放,要不要把动画倒放(Mirror)等等。

    在Project面板中点击WALK00_F动画片段文件时Inspector面板显示的内容是这样的:

    显示成灰色是因为我点击的是fbx文件中包含的clip,所以不可编辑,我们可以Ctrl+D将其复制成单独的clip文件,然后再修改。

     

    展开全文
  • Unity 导出FBX和OBJ的方法

    万次阅读 热门讨论 2018-10-15 11:48:08
    Unity 导出FBX 安装插件 下载地址 链接:https://pan.baidu.com/s/1ARZ3Rdzb0800ZuVJs16p1Q  提取码:5emt 使用方法   FBXExporter.ExportFBX("", fbxname, meshObjs, true); 第一个参数 文件路径...

    Unity 导出FBX

    安装插件 下载地址

    链接:https://pan.baidu.com/s/1ARZ3Rdzb0800ZuVJs16p1Q 
    提取码:5emt

    使用方法 

     FBXExporter.ExportFBX("", fbxname, meshObjs, true);

    第一个参数 文件路径 不写默认是资源文件下 

    第二个参数 导出的文件名称

    第三个参数 需要导出的GameObject数组

    将FbxExporter.cs随意挂载在物体上 然后将要导出的物体拖到 Mesh Objs上 然后运行

    成功会有输出 

     

    然后在资源目录下找到文件

    Unity导出ObJ

    安装插件下载地址

    链接:https://pan.baidu.com/s/1Grs2QSewN4bb-V3O80mw8Q 
    提取码:1tr3

    使用方法 你需要将脚本命名为ObjExporter.cs,放在项目的Editor目录下,选择你要导出的模型物体(可以有若干子物体),在编辑器菜单中找到Custom的输出选项,能看到三个选项,分别是"输出所有网格到单一的Obj文件","输出选择的网格合体到一个Obj文件","输出每个选择的模型到单一Obj文件",一般常用第二项.成功输出后将弹出对话框,模型和关联的贴图将放到项目的根目录的"ExportedObj"文件夹中.

    导出成功如图

    展开全文
  • SketchUp模型导出Unity3D能用的FBX

    千次阅读 2019-07-16 20:27:55
    1、新建SketchUp工程的时候,选择工程单位为Meter(米),如果不是米,则在Tools-> Model Info -> Unit内将Format修改为Decimal : Meters即可。 因为会影响到SketchUp的原图,所以请注意如果精度不够的话还...

    1、新建SketchUp工程的时候,选择工程单位为Meter(米),如果不是米,则在Tools -> Model Info -> Unit内将Format修改为Decimal : Meters 即可。

          
    因为会影响到SketchUp的原图,所以请注意如果精度不够的话还需要把 Precision 变更为足够的精度,把Enable length snapping 也设置为和精度一致使其能够正确的执行自动捕捉。

    2、导出时注意选择参数,请选择File -> Export -> 3D Model里面有FBX这个格式(好像只有Pro版本的SketchUp才行哦),先不要着急Export,
    选择一下Options修改几个选项

    Export Options中的
    选中 Triangulate all faces将所有面变为三角形构成的
    选中 Export two-sided faces将双面都导出(有的平面两面材质不同的,这很重要)

    选中 Export texture maps导出贴图表面
    选中Swap YZ coordinates(Y朝上)
    单位选择Model Unit(如果你第一步是对的,这里选Meters也是一样的效果)

    OK以后,点击Export即可。

    3、在Unity3D中选择Asserts -> Import New Asset,找到刚刚导出的fbx文件,选中,文件导入成功后选择Project窗口中的模型,
    然后将其Inspector中的(FBXImporter) -> Meshes -> Scale Factor(缩放比例)修改为1。最后将模型拖入场景子级就大功告成啦。

    展开全文
  • Unity3d GameObject导出FBX

    千次阅读 2018-08-20 15:09:42
    编辑器并不提供将GameObject导出fbx文件的功能。使用插件FBX Exporter。 这款插件要求比较高 https://download.csdn.net/download/u012801153/10610147

    编辑器并不提供将GameObject导出成fbx文件的功能。使用插件FBX Exporter。

    https://download.csdn.net/download/u012801153/10610147

    这款插件要求比较高
    这里写图片描述

    展开全文
  • 3DMax导出FBX文件贴图丢失

    万次阅读 2018-07-11 10:48:00
    在3DMax中导出模型,勾选上了【嵌入媒体】,导出时报如下错误:最后导出FBX文件里的模型没有贴图。度娘查了下,说什么没有塌陷的原因,这里的模型不是这个问题。怎么办?凉拌~既然该FBX文件导入到Unity3d模型...
  • 3DMax中设计场景导出fbx时,a.mat、a.fbx、贴图文件夹三者都需要提供。a.mat在导入Unity后,是这种形式:在Unity中,为避免材质丢失问题,要注意:在3DMax导出时,材质球mat文件名尽量与贴图名称一致,否则就会...
  • Unity导入fbx模型设置

    千次阅读 2018-09-03 00:04:54
    Unity导入fbx模型设置   默认设置时模型导入Unity会有几率产生模型各个部件错位,造成这个原因多半是 fbx 有好几个常用的格式标准,它们之间不兼容导致的 在 Maya 或者3DMax 里导出时,单位设成米或厘米,不要用...
  • 1、先在SolidWorks里建一个最简单的Cube模型
  • 3dMax导出fbx三维模型Unity3D

    万次阅读 2014-07-25 11:14:04
    导入时, 目录结构如下: 文件名(文件夹) |-------贴图文件 |-------文件名.fbx |-------文件名.max ...这里需要注意的一点:一定要把.max文件一起放入,否则贴图信息会丢失,美术就需要在unity3d中再
  • 使用unity的同学相信会经常遇到这样的问题: 需要导入某个第三方开发的FBX模型,在3dmax中加工之后再导出回到unity。这个时候常常会遇到尺寸不一致的问题。 只需要这样做: 在3dmax import的时候选择:1.0 的scale ...
  • 3DMAX导出unity3d中使用的FBX

    千次阅读 2014-03-12 20:26:25
    设置3DMax中的单位为厘米,在闽菜Customize->Units Setup中Metric选择Centimeters,System Unit Setup中选择1 Unit = 1.0 Centimeters。 FBX 导出指南 Unity 支持 FBX 文件,这种文件可以在许多流行三维应用...
  • 1,导入后缩小变黑。2,但修改比例会正常。解决方案从3dmax转化为fbx单位修改为毫米就好了
  • 如题,会给大家分享一个超实用的动态库,是关于将unity中的对象转换为fbx存储下来的方法,这个方法我试过N次,Pc端可以,移动端不可以用,想用的同学我下一篇会给大家写另外的方法~~~好了 话不多说了就,我给大家...
  •  ①将模型中所有的零部件结合成组,再导出fbx,导入unity中。  ②将出错误的零部件所在的组解组,然后选择塌陷整体“工具面板(小锤子)”,然后再成组。(本人采用的办法)  ③物体的边框不正,在“工具”(小...
  • 用Max导出Unity3D使用的FBX文件流程注解 从max导出FBX到Unity,以下环节需要特别注意。  1,单位设置  很多人在建模,动画的时候,默认的max system unit是设置的inch,建议修改成metres或者centimetres,...
  • Unity3D开发:向Unity3D中导入外部模型

    万次阅读 2017-12-21 18:50:37
    Unity3D支持多种外部导入的模型格式,这里列出了它支持的外部模型的属性,并且以3D MAX为例,导出FBX文件给Unity3D使用。 Unity3D支持多种外部导入的模型格式,但它并不是对每一种外部模型的属性都支持。具体...
  • Unity导入Fbx贴图丢失问题

    千次阅读 2019-05-22 13:16:48
    尝试用3D查看器查看Fbx文件,是有贴图的,那么问题就出现在Unity导入Fbx时的设置上。 默认的设置如图 主要是这个Material Naming属性,默认是By Base Texture Name,下面有注解是说对于每一个导入的材质,Unity首先...
  • 3dsmax-骨骼绑定及动作导出流程

    万次阅读 2019-04-17 13:48:16
    3dsmax-骨骼绑定及动作导出流程 以导出unity 为例 创建 模型 及 骨骼 蒙皮 给模型添加一个 蒙皮修改器 添加进 骨骼 封套, 给 骨骼 分配 顶点及其权重 ...
  • 3dsMax导出unityfbx文件丢失动画

    千次阅读 2016-11-22 12:02:39
    同事导出给我的fbx文件中没动作,但是导出中确实也有报log,我对3dsmax不太了解,所以去查了一下解决方案,果然有如下图:导出选项中有个Animation选项,展开后勾选BakeAnimations之后导出就可以了,我没有记录导出...
1 2 3 4 5 ... 20
收藏数 1,259
精华内容 503
关键字:

unity3d导出fbx模型