2009年3月23日星期一

在为3D模型展UV的时候,为了绘制贴图的需要我们往往会为一个Mesh指定多个材质和相应的UV,比如将人的头部单展一个UV,身体则另展一个,这样在展UV和绘制贴图以及实际应用的时候都会比较方便,在3DS Max里可以通过Multi/Sub-Object实现(是不是应该叫做复合材质,或者子材质?),在Lightwave里面为不同的面赋予不同材质即可,但是这样的模型导出为OBJ再导入到ZBrush里面的话,ZBrush无法正确识别出这些子材质,导出法线贴图也都是错的。今天研究了一下午,总算搞定,下面是解决方法:

1.正常建模,展UV赋材质。
2.在导出OBJ之前,将所有的UV分别移动到不同的坐标空间(different space/region)。
这一步是这么个意思,默认UV的坐标空间是在(0,0)<-->(1,1)内,如下图所示,横坐标为U,纵坐标为V
每一个UV坐标空间都应该是1乘1的正方形空间,并且不互相重叠,例如(1,0)<-->(2,1)就是在默认坐标空间右侧的一个坐标空间,如下图所示,我们将上面的UV向右移了一个坐标:
在一般的建模软件内都很容易做这样坐标空间的移动,只需用选中全部UV然后向U和V的方向移动1的整数倍即可,如上图的坐标空间移动在Lightwave里可以通过Transform UV实现:
按照这样的方法,将每一个UV放到不相重叠的UV坐标空间内,然后再导出为OBJ。
3.在Brush中导入OBJ文件,Tool/Polygroups/Uv Groups,然后激活“Draw Poly Frame”(快捷键Shift+F),正常的话就可以看到不同UV对应的面被填充上了不同的颜色。
4.SubTool/GrpSplit,点击后会将不同的UV对应的面自动分层,然后就可以在不同层上绘制了。
5.需要导出法线贴图的时候,只需每个层单独导渲染就可以了。
6.使用法线贴图的时候(例如在3DS Max里)不要忘记把模型的UV都移动回(0,0)<-->(1,1)空间来哦。

0 评论:

发表评论