Maya_to_Unity工作流程

  • Post author:
  • Post category:其他


***************************注意事项****************************

1、maya的place2Dtexture不起作用,只能使用pbs节点的uv调整(只能调整scale、offect),所以贴图的rotate只能使用uv工具进行调整:

2、Unity项目第一步将色彩空间设置为liner:

3、灯光材质与area光源优劣区别:

①下图所示只有灯光材质可以将场景照亮,但是计算速度较慢(但灯光材质可以加上posteffect可以实现bloom效果!)

②area光源一般模拟自然天光源来使用(一般情况室内,只有环境球不足以不足以照亮整个室内场景,所以要在每个窗户使用area模拟窗口的入射天光),此外area的计算速度快一点?

****************************Maya_to_Unity流程****************************

1、maya场景设置

①maya的单位为厘米、unity为米(每个单元格),所以可以在maya中进行匹配缩放,再导入unity中(unity中scale比较慢)

②maya的pbs材质的贴图一定要使用非中文路径(所以工程文件应该也是非中文路径)

③可以借助unityToMaya的接口工具进行联动操作

2、maya模型调整:

①尽量合并材质球,减少drawCall数量

②不要出现长三角面,不利于uinty优化

③贴图的选择

不要使用placeTexture2D旋转

(对于PBS材质无效,


maya


的PBS材质不识别贴图的placeTexture2D信息


),而是要使用UV工具进行旋转。

⑤UV工具可以使用:automatic、best等投射方式(便捷快速)

⑥玻璃材质标注为glass前缀(目前无法使用mel使用transparent模式切换),进行后期手工处理

3、将材质转换为PBS材质:

①使用以下mel进行转换:


string $a[] = `ls -sl`;


//if( $ssel[0]==””) return;


string $ss;


for($ss in $a)


{


shadingNode -asShader StingrayPBS -name (“StingrayPBS”+$ss);


sets -renderable true -noSurfaceShader true -empty -name (“StingrayPBS”+$ss+”SG”);


setAttr (“StingrayPBS”+$ss+”.initgraph”) true;


connectAttr -f (“StingrayPBS”+$ss+”.outColor”) (“StingrayPBS”+$ss+”SG”+”.surfaceShader”);


setAttr (“StingrayPBS”+$ss+”.use_normal_map”) 1;


string $incomeNode1[]=`  listConnections -d off -s on $ss`;


print  $incomeNode1;


if($incomeNode1[0]!=””)


{


//


打开use_color_map贴图


setAttr (“StingrayPBS”+$ss+”.use_color_map”) 1;


//


取消链接;


disconnectAttr ($incomeNode1[0]+”.outColor”) ($ss+”.color”);


// connectAttr -f ($incomeNode1[0]+”.outColor”) blinn1.color;


//


建立链接


//setAttr (“StingrayPBS”+$ss+”.use_color_map”) 1;


connectAttr -f ($incomeNode1[0]+”.outColor”) (“StingrayPBS”+$ss+”.TEX_color_map”);


//


设置坐标


string $file[]=`  listConnections -d off -s on  (“StingrayPBS”+$ss+”.TEX_color_map”)`;


string $uv[]=`  listConnections -d off -s on  ($file[0]+”.uvCoord”)`;


float $repeatU = `getAttr ($uv[0]+”.repeatU”)`;


float $repeatV= `getAttr ($uv[0]+”.repeatV”)`;


float $offsetU= `getAttr ($uv[0]+”.offsetU”)`;


float $offsetV=`getAttr ($uv[0]+”.offsetV”)`;


setAttr (“StingrayPBS”+$ss+”.uv_offsetX”) $offsetU;


setAttr (“StingrayPBS”+$ss+”.uv_offsetY”) $offsetV;


setAttr (“StingrayPBS”+$ss+”.uv_scaleX”) $repeatU;


setAttr (“StingrayPBS”+$ss+”.uv_scaleY”) $repeatV;


}


else


{


vector $color=` getAttr ($ss+”.color”) ` ;


float $x1=$color.x;


float $y1=$color.y;


float $z1=$color.z;


setAttr (“StingrayPBS”+$ss+”.base_color”) -type double3 $x1  $y1  $z1 ;


}


//


根据材质球选择面,然后替换为新的材质球


hyperShade -objects $ss ;  //


根据材质选择面


sets -e -forceElement  (“StingrayPBS”+$ss+”SG”);  //


将新的材质球赋予选择的面


}

②转换完以后进行材质的preset设置(但是此操作会打断colorTexture)

③使用以下脚本进行colorTexture的链接;并将


placeTexture2D


的信息转换到PBS的UVoffset、Uvscale上



/********


补充:防止设置preset后colormap勾选被去掉,UV被重置的问题*******/


string $a[] = `ls -sl`;


//if( $sssel[0]==””) return;


string $ss;


for($ss in $a)


{


string $file[]=`  listConnections -d off -s on  ($ss+”.TEX_color_map”)`;


if($file[0]!=””)


{


//


打开use_color_map贴图


setAttr ($ss+”.use_color_map”) 1;


//


设置坐标


string $uv[]=`  listConnections -d off -s on  ($file[0]+”.uvCoord”)`;


float $repeatU = `getAttr ($uv[0]+”.repeatU”)`;


float $repeatV= `getAttr ($uv[0]+”.repeatV”)`;


float $offsetU= `getAttr ($uv[0]+”.offsetU”)`;


float $offsetV=`getAttr ($uv[0]+”.offsetV”)`;


setAttr ($ss+”.uv_offsetX”) $offsetU;


setAttr ($ss+”.uv_offsetY”) $offsetV;


setAttr ($ss+”.uv_scaleX”) $repeatU;


setAttr ($ss+”.uv_scaleY”) $repeatV;


}


}

5、场景中添加其他物体:

①添加灯光:maya中可以添加spot、point灯光(一般用作人工光,如灯具):

②可以添加背景,使用png贴图(边缘进行虚化)

6、导出fbx(导出fbx到贴图所在路径比较好)

①将glass的PBS材质手工设置为transparent模式

②导出之前注意maya(厘米)与unity(米)的空间单位(如有缩放,尽量在maya中进行,unity缩放比较慢)

7、Unity导入

①先导入贴图

②将fbx导入到贴图的目录



一定要勾选产生光子图UV,否则后期烘焙贴图会出错!(材质贴图是UV0)

⑤如果想在Unity中对物体的材质进行调整,要将材质进行extract:

8、对Unity导入模型进行修正:

①透明材质,要使用alpha通道进行透明度的调整:

②玻璃要做成有厚度的,否则单面只有一个面可见

9、Unity灯光技巧:

①首先使用一盏directlight作为日光,自然光只让他来产生阴影,此灯只是产生阴影而已

②环境球的曝光度,对场景间接光的提升不是很明显,对反射环境图的亮度有有作用:



如果不想在增加灯光数量、亮度的情况下提升间接光的亮度,可以使用下面的参数,非常好!

⑤室内场景的户外天光,使用area放置在玻璃上进行模拟(去掉阴影投射)

⑥室内灯:


室内人工光灯(

灯泡,灯具,

小范围的照明

):使用spot、point灯,但是大面的柔和室内光不建议使用


室内大面的照明

使用area(数量不能多,面积不要太大)


室内的灯带

使用发光材质制作(既要照明,又要看到灯光本体,就要使用发光材质)

10、灯光探头、反射探头

①灯光探头,在需要有动态物体活动的区域,且需要表现细腻的光影空间时使用,

可以在动态物体活动区域密集的阵列式排布(简单点)

②反射探针,可以每个空间一个(把墙体排除),或在需要反射实际物体的空间中进行进行设置

11、场景光子图初步计算:

可以使用substractive(直接光、间接光都烘焙)、Baked indirect(只烘焙间接光)

12、最终烘焙使用以下参数:

AO可以烘焙,也可以使用posteffect进行后期处理

13、后期可以是posteffct进行处理:



版权声明:本文为wangyihero8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。