从maya中导入物体到Uniyt3D
我想,很多小白跟我一样,从maya或者3dmax中导入到u3d的物体不知道怎么用。我也是新手,共同分享一下今上午的经验。
我想大部分人看到我这个东西之前,已经看多N多个模型导入的技巧之类的,我也是 啊,悲催啊,他们写的太高神了,懂maya的不懂u3d,懂U3D的不懂maya。哎。
先写写美工应该注意的事项吧(其中很大一部分是参考别人的。因为,我不懂美工啊。只是感觉我需要这样。
重要的一点:导入到u3D 中的模型,
首先对制作流程作简单介绍:素材采集-模型制作-贴图制作-场景塌陷、命名、展UV坐标-灯光渲染测试-场景烘培-场景调整导出
第一章 模型制作规范
1 在模型分工之前,必须确定模型定位标准。一般这个标准会是一个CAD底图。制作人员必须依照这个带有CAD底图的文件确定自己分工区域的模型位置,并且不得对这个标准文件进行任何修改。导入到MAX里的CAD底图最好在(0,0,0)位置,以便制作人员的初始模型在零点附近。
2 在没有特殊要求的情况下,单位为米(Meters),
3 删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。如Box底面、贴着墙壁物体的背面等。
4 保持模型面与面之间的距离。推荐最小间距为当前场景最大尺度的二千分之一。例如:在制作室内场景时,物体的面与面之间距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm。如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。在建模初期一定要注意检查共面、漏面和反面的情况;
5 可以复制的物体尽量复制。如果一个1000个面的物体,烘焙好之后复制出去100个,那么他所消耗的资源,基本上和一个物体所消耗的资源一样多。
6 建模时最好采用Editable Poly面片建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用Editable Mesh 在最终烘焙时可能会出现三角面的情况。
7 模型的塌陷当一栋建筑模型经过建模、贴纹理之后,然后就是将模型塌陷,这一步工作也是为了下一步烘焙做准备。所以在塌陷的时候要注意一些问题:
(1) 按照“一建筑一物体”的原则塌陷,体量特别大或连体建筑可分塌为2-3个物体,但导出前要按建筑再塌成一个物体,城中村要按照院落塌陷。
(2) 用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱;
(3) 塌陷物体,按楼或者地块来塌陷,不要跨区域塌陷;
(4) 按项目对名称的要求进行严格的标准的命名;
(5) 所有物体的质心要归于中心,检查物体位置无误后锁定物体;备注:所有物体不准出现超过20000三角面的情况,否则导出时出错。
8 模型命名 不能使用中文命名,必须使用英文命名,不然在英文系统里会出问题。地块建筑模型不允许出现重名,必须按规范命名。
9 树的种植方法用十字交叉树或简模树。在种植树木的时候,要考虑到与周围建筑的关系,不能乱种树,要根据现状放置不同的树种、位置;重点建筑地块需种简模树,并在原地与之对应的种上十字片树(替换用);导出时模型树和与之对应的十字片树为单棵的,其它十字片树可塌一起,但面数不能超过1万。
10 模型的级别也就是模型的精细程度,有时我们在建模的时候要根据建筑所处的具体位置,重要程度对该建筑进行判断是建成何种精度的仿真模型。可以将建筑分为五个等级。其中,一级为最高等级,五级为最低等级。单个物体的面数不要太大,毕竟是做虚拟现实,而不是制作单张效果图。单个物体面数要控制到8000个面以下。
11 镜像的物体需要修正
用镜像复制的方法来创建新模型,需要加修改编辑器修正一下。
第一步:需要选中镜像后的物体,然后进入Utilities面板中单击Reset XForm,然后单击Reset Selected;
第二步:进入modfiy面板选取Normal命令,反转一下法线即可。
12 烘焙的物体黑缝解决对办法
在烘焙的时候,如果图片不够大的时候,往往会在边缘产生黑缝。
处理小技巧 :
1)如果做鸟瞰楼体比较复杂可以把楼体合并成一个物体变成多重材质,然后对楼体进行整体完全烘焙;这样可以节省很多资源。
2)对于建筑及地形,须检查模型的贴图材料平铺的比例,对于较远的地表(或者草地),可以考虑用一张有真实感的图来平铺,平铺次数少一些。对于远端的地面材料,如果平铺次数大了,真实感比较差。
第二章 材质贴图规范
1 材质和贴图类型我们目前使用的是Unity3D软件作为仿真开发平台,该软件对模型的材质有一些特殊的要求,在我们使用的3dsMax中不是所有材质都被Unity3D软件所支持,只有下面几种材质是被Unity3D软件所支持。
Standard(标准材质)默认的通用材质球。基本上目前所有的仿真系统都支持这种材质类型。 Multi/Sub-Object(多维/子物体材质)将多个材质组合为一种复合式材质,分别指定给一个物体的不同次物体选择级别。
要注意的是,
在VR场景制作中,Multi/Sub-Object材质中的子材质一定要是Standard标准材质。否则不被unity3d支持。我们在制作完模型进行烘焙贴图前都必须将所有物体塌陷在一起,塌陷后的新物体就会自动产生一个新的Multi/Sub-Object多维/子物体材质。因此,这种材质类型在我们的仿真制作中经常使用。
2 贴图通道及贴图类型 Unity3D目前只支持Bitmap贴图类型,其它所有贴图类型均不支持。只支持Diffuse Color(漫反射)同self-Illumination(自发光,用来导出lightmap)贴图通道。 Self-Illumination(不透明)贴图通道在烘焙lightmap后,需要将此贴图通道额channel设置为烘焙后的新channel,同时将生成的lightmap指向到self-Illumination。
3 贴图的文件格式和尺寸建筑的原始贴图不带通道的为JPG,带通道的为32位TGA,但最大别超过2048;贴图文件尺寸必须是2的N次方(8、16、32、64、128、256、512),最大贴图尺寸不能超过(1024×1024)。在烘培时将纹理贴图存为TGA 格式。
4 贴图和材质应用规则
(1) 贴图不能以中文命名,不能有重名;
(2) 材质球命名与物体名称一致;
(3) 材质球的父子层级的命名必须一致;
(4) 同种贴图必须使一个材质球;
(5) 除需要用双面材质表现的物体之外,其他物体不能使用双面材质;
(6) 材质球的ID号和物体的ID号必须一致。
(7) 若使用CompleteMap烘焙,烘焙完毕后会自动产生一个Shell材质,必须将Shell材质变为Standard标准材质,并且通道要一致,否则不能正确导出贴图。
(8) 带Alpha通道的贴图,在命名时必须加_al以区分。
5 通道纹理应用规则模型需要通过通道处理时需要制作带有通道的纹理。在制作树的通道纹理时,最好将透明部分改成树的主色,这样在渲染时可以使有效边缘部分的颜色正确。通道纹理在程序渲染时占用的资源比同尺寸普通纹理要多。通道纹理命名时应以-AL结尾。
第三章 模型烘焙及导出 模型烘焙
1 场景灯光
(1) 渲染方式:采用Max自带的Light Tracer光线追踪进行渲染。
(2) 灯光效果控制:
该项目在烘焙前会给出固定的烘焙灯光,灯光的高度、角度、参数均不可调整,可以在顶视图中将灯光组平移到自己的区块,必须要用灯光合并场景然后烘焙。
2 烘焙贴图方式建筑模型的烘焙方式有两种:一种是LightMap烘焙贴方式,这种烘焙贴图渲染出来的贴图只带有阴影信息,不包含基本纹理。具体应用于制作纹理较清晰的模型文件(如地形),原理是将模型的基本纹理贴图和LightMap阴影贴图两者进行叠加。优点是最终模型纹理比较楚,而且可以使用重复纹理贴图,节约纹理资源;烘焙后的模型可以直接导出FBX文件,不用修改贴图通道。缺点是LightingMap贴图不带有高光信息;另一种是CompleteMap烘焙方式,这种烘焙贴图方式的优点是渲染出来的贴图本身就带有基本纹理和光影信息,但缺点是没有细节纹理,且在近处时纹理比较模糊。
3 烘焙贴图设置
① CompleteMap烘焙方式在进行CompleteMap烘焙设置时,
应注意以下几点:
a) 贴图通道和物体UV坐标通道必须为1通道,
b) 烘焙贴图文件存储格式为TGA格式;
c) 烘焙设置
使用已有通道,默认为3
阴影参与烘焙计算 创建一个新的Baked材质 文件格式类型 目标贴图栏
② LightingMap烘焙方式在进行LightingMap烘焙设置时,和CompleteMap设置有些地方不同:
a) 贴图通道和物体UV坐标通道必须为3通道
b) 烘焙时灯光的阴方式为Adv.RayTraced阴影
c) 烘焙设置
创建一个新的Baked材质
开启直接光照 阴影参与烘焙计算 开启间接光照 目标贴图栏 文件格式类型 使用已有通道,默认为3
d) 用LightingMap烘焙时,背景色要改为白色,可避免有黑边的情况;而用CompleteMap烘培时,背景色要改为与贴图近似的颜色。
e) 在使用lightmap烘焙后,需要将材质改回Standard,然后将新生成的map拷贝到Standard的self-Illumination内,并设置正确的贴图通道。
4 贴图UV编辑必须手动进行UV编辑。模型导出
1、将烘培材质球改为标准材质球,通道为1,自发光100;
2、将所有物体名、材质球名、贴图名保持一致
3、合并顶点(大小要合适);
4、清除场景,除了主要的有用的物体外,删除一切物件;
5、清材质球,删除多余的材质球(不重要的贴图要缩小);
6、按要求导出fbx(检查看是否要打组导出);
视具体情况导出动作
第四章 场景模型验收 模型制作流程 模型验收流程 模型验收标准
第五章 模型备份提交标准文件标准备份模式:
UV 坐标:存放地型和建筑烘培前编辑的UV坐标;
导出fbx:存放最终导出的地型和建筑的fbx文件;
培贴图:存放地型的最终贴图和建筑的最终烘培贴图,tga格式的,同时这里面有一份转好的贴图;
原始贴图:存放地型和建筑在制作过程中的所有的贴图;
Max文件:原始模型,未做任何塌陷的,有UVW贴图坐标的文件。烘焙前模型,已经塌陷完的,展好UV的,调试好灯光渲染测试过的文件。烘焙后模型,已经烘培完的,未做任何处理的文件。导出模型,处理完烘培物体,合并完顶点,删除了一切没用物件的文件。
第六章 项目命名要求
1、建筑模型命名:区域名_jz_编号;如:SH01_01_jz_01、SH01_01_jz_02……
2、建筑贴图命名:模型名_编号;如:SH01_01_jz_01_01……
3、地形模型命名:区域名_dx_编号;如:SH01_01_dx_01……
4、地形贴图命名:模型名_编号;如:SH01_01_dx_01_01……
5、镂空贴图:要加“_al”后缀 6、需要加特效的玻璃要加“_bl”后缀;(需要加特效的要单独一个物体烘焙)
第七章 创建各资料路径
1、航片存放路径
2、各区域CAD导出的MAX文件
3、照片资料
4、公共纹理库资料
5、客户提供的所有资料
第七章 特殊制作要求
1、 围墙、护栏、雨棚、车棚等要按实际制作。
2、 照片与图纸不符时,以实际照片为主。
3、 沿街店铺尽量与实际一致。
4、 预估尺寸时尽量去借助照片中的参照物,如人、汽车、树木等。
5、 除重点建筑外尽量简化模型,贴图做精,能用贴图表现结构的尽量用贴图表现。
6、 绿化的种类、颜色尽量去实际一致。
7、 建筑顶部的结构及顶部的附属设施尽量按实际制作。
8、 建筑贴图时顶部要留出女儿墙的高度,避免出现窗户顶到建筑顶部。
9、 建筑要制作入口。
10、 地形、绿化要丰富。
11、 书报亭、公交站、变电箱、烟囱、信号塔等要简单制作,以丰富场景。
12、 所有贴图UV大小要准确,避免失真。
从max导出FBX到Unity,以下环节需要特别注意
1,单位设置
很多人在建模,动画的时候,默认的max system unit是设置的inch,建议修改成metres或者centimetres,否则导出的模型和动画可能比例不一致;
2,导出物
在导出模型和动画时,建议选择的导出模式,是根据你要导出模型或者动画,使用export selected模式导出,即,只导出选中的对象。
3,动画中必须有模型
在使用export selected导出动画时,要全选你要导出的全部骨骼,包括Bipe,和Bone,以及他们的Nub。然后选中任何1个模型,一起导出;FBX不允许没有模型的动画单独存在;
4,可能丢失蒙皮信息的原因1
在使用export selected导出模型时,要选中你要导出的模型,以及全选所有的骨骼,才会有蒙皮信息。查看导出的FBX有没有蒙皮信息,可以把FBX文件拖到Unity里,看Mesh上面有没有一个参数叫做skined mesh material,如果没有,则是你没有选中骨骼就导出了,因此没有蒙皮信息。
5,可能丢失蒙皮信息的原因2
在导出有蒙皮信息的模型文件成FBX时,一定要给每一个模型或者sub mesh指定他们的材质,且给每个材质正确的命名,且其Diffuse map不能为空。 否则也不会有skined mesh mat,也就是蒙皮信息也无法导出。
6,ResetXForm
记得在skin或者physique之前,一定要严格的进行ResetXForm,否则导出的FBX,模型会有严重的偏移;
以下是自用的FBX自动导出脚本说明书
***********************
FBX_AniExporter.ms
当模型/动画的unit和system的unit一致时(建议都是centimetres),使用这个脚本进行FBX动画文件的批量导出,需要修改里面的导入文件夹和导出文件夹路径,脚本会对导出FBX自动命名;脚本会自动全选场景中所有的$Bip*和$Bone*,以及1个模型进行导出;
FBX_AllMeshExporter.ms
批量导出场景中的所有模型/子物体为一个个单独的FBX 模型文件(含模型,UV,蒙皮信息,不含动画信息);脚本在导出时自动使用以下规则:模型1+全部$Bip+全部$Bone,模型2+全部$bip+全部$Bone,模型3+全部$bip+全部$Bone;
FBX_MeshExporter.ms
旧版的FBX_AllMeshExporter,可以不管;
ANI_1by1.ms
当模型/动画的unit和system的unit设置不一致时,将system unit设定正确,然后逐个打开要导出的max文件,使用这个脚本一个个导出;
InitMatFile.ms
给场景中所有模型/子物体设置独立的材质球,给材质球自动命名为模型的名字并且填充Diffuse Map,需要指定其中的map路径,且map路径里的TGA贴图张数不能小于场景里的模型数量,脚本才能正确运行;
Select2Export
故名思意,导出选中的模型和骨骼。