Maya_to_Unity工作流程
***************************注意事项****************************
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进行处理: