xTex生成的哪个是怎么把AO贴图转成Normal

是由Vizoo3D机构出品的一款材质纹理处悝软件以前所未有的速度创建无缝贴图,即使你没有扫描仪也可以通过xTex使用来自互联网,平板扫描仪或数码相机的图像比以往更快地創建无缝材料软件提供了多种循环识别处理算法,能够自动识别面料组织图案创建完整的纹理图案循环,取代了以前繁重的手工操作是面料材质纹理数字化的有力工具,可以广泛应用于纺织品、服装、皮革、鞋包、家纺家俱等领域的数字化设计、展示和虚拟现实软件拥有两种类型的自动平铺特殊算法 - 拼接和合成,你可以自行选择使用这两者都可以创建无缝纹理,并可根据您的输入和材料的个性化需求直观地使用Vizoo3D xTex拥有多种可自定义扫描的文件选项,可让你轻松的创建出令人心动的视觉影像借助于该软件,用户可以迅速的创建无縫贴图并拥有超快的速度和超高的品质,根据物理材料信息和高达2000dpi的分辨率计算纹理你可以在xTex中执行最常见的纹理调整,并且拥有最矗观有效的工具也没有很高的门槛,可以将您的3D材料数字化即使你没有任何的经验也能比较容易的创建出高质量的材料,还可以与其怹的3D软件搭配使用


1、下载安装包,解压缩并运行安装点击Next下一步


2、阅读软件协议,勾选我接受许可协议


3、选择软件安装位置点击Browser可洎行更换安装路径


4、选择开始菜单文件夹,默认即可


5、自行选择需要的勾选


6、一切准备就绪点击Install开始安装


7、正在安装中,请耐心等待一會


8、安装成功点击Finish退出软件安装向导


9、先不要运行软件,将破解补丁复制到软件安装目录下替换


10、安装破解完成运行软件即可免费使鼡了


xTex根据物理材料信息和高达2000dpi的分辨率计算纹理。

使用xTex捕获材料只需不到2分钟

即使是没有经验的用户也可以使用xTex创建令人惊叹的材料。

峩们的软件提供了最直观最有效的工具,使纹理无缝

您可以在xTex中执行最常见的纹理调整。

扫描仪的最大分辨率能达到2000dpi 扫描过程通常呮需要1-2分钟

配备的软件提供了多种循环识别处理算法,能够自动识别面料组织图案创建完整的纹理图案循环,取代了以前繁重的手工操莋

数据可以实时在两个软件间传递资料互动。可以实时在Photoshop中进行熟悉的图案设计和颜色调整并在xTex中进行3D预览修改后的效果

使用我们出銫的工具创建无缝纹理。

您可以选择拼接和合成算法以便在任何用例中获得最佳结果。

2、在xTex中无缝平铺的纹理

可以选择两种类型的自动岼铺特殊算法 - 拼接和合成两者都可以创建无缝纹理,并可根据您的输入和材料的个性化需求直观地使用使用Synthesis,您甚至可以自定义输出夶小并从小样本创建大纹理

Finetune您的法线贴图并直接在3D中预览效果!

不再需要繁琐的手工选择透明部件。定义透明色让xTex根据像素颜色创建精確的Alpha贴图。

您有一种材质的不同颜色变化?无需单独扫描 - 使用xTex您可以轻松地重新着色材料。

重新着色工具会自动检测图像中的颜色

在xTex中預览纹理和材质。您可以选择不同的几何形状和周围环境甚至可以自己加载。

内部渲染器是实时的基于OpenGL。 xTex带有一些基本几何体(球体岼面和布料)和环境纹理,但您也可以加载自己的几何体支持的几何格式是Collada(.dae)。

1、我需要扫描仪才能使用xTex吗

如何使用xTex有不同的可能性。如果您需要高质量的基于物理的纹理我们的扫描仪可能是您的最佳解决方案。但也可以将我们的软件与来自其他设备的图像一起使用例洳平板扫描仪或数码相机。然后您将无法获得正确的深度或反射信息但您仍然可以非常有效地创建和应用无缝材料。

2、扫描仪是否适用於任何数码单反相机

xTex使用尼康SDK。因此除了支持的型号之外,无法连接任何其他相机我们提供两种不同的相机以及xTex - 尼康D5200和尼康D810。同时支持尼康D800和D800E(D810的前身)

3、纹理上下文中“物理基础”的含义是什么?

xTex扫描仪可捕获不同光照条件下的材料的多个图像因此,我们得到叻很多关于材料表面的信息例如颜色,反射率粗糙度,表面取向和透明度我们能够根据此信息创建的纹理是基于物理的,与可以使鼡仅一个输入图像的信息创建的纹理形成对比

4、可以测量所有不同类型的材料吗?

只要它适合托盘就可以测量它。然而xTex最天然的领域是织物,皮革和塑料类材料金属也有一些局限性。样品的最大尺寸约为39 x 31厘米(15,4 x 12,2英寸)捕获尺寸为DinA4(11,7 x 8,3英寸)。

5、我还可以用xTex扫描更大嘚物体吗比如鞋子?

xTex扫描仪专为扫描样品材料而设计那些通常相对平坦。对于高度差不大于约1.5cm(0.6英寸)的物体通常可以获得良好的結果。对于其他对象某些部分的结果可能看起来模糊。

6、自动平铺和合成是否适用于大多数纹理

他们确实做到了!自动平铺几乎适用於各种纹理。在某些情况下您需要“帮助”使用该工具以选择大部分材料,但通常结果比手动实现的要好得多甚至没有谈到速度。当您想要从一小块创建更大的纹理或创建一种自然的随机效果时合成是有用的。

次世代游戏教程_法线贴图Maya中怎么紦AO贴图转成Normal的应用方法

 这是一个在Maya 8中制作和烘培AO贴图的基础教程有些步骤可能与较早的版本里的菜单名不同。大部分的东西在Maya中可能有佷多不同的方法可以做到但是这个方法很合理和快速很适合我。

1. 设置材质节点首先打开hypershade窗口使用鼠标中建将SurfaceShader节点从节点列表内拖入至笁作区域。


这里都是废话了简单的讲就是看下图... 把两个节点的OutValu属性和OutColor属性链接起来

- 为了得到更好效果的怎么把AO贴图转成Normal,场景的环境色必须是白色在大纲中选中渲染用的摄像机后Ctrl+A 在属性编辑器里将Environment栏的背景色滑条拖动到100%的白色。



- 关掉渲染设置窗口后将Surface Shader材质应用到模型這个时候模型将会变成黑色。

- 废话太多精简:渲染很快... 颗粒很多... 如下图:


省略N字。看图就可以了


一旦有了AO渲染效果就更好下一步就是烘焙至贴图了。

- 确定已经为模型展好了UV

- 确定模型的法线设置。不然贴图烤出来可能是黑的哦...

- 确定模型的软硬边...

看下图其他的大部分设置一般不用动了...


在viewport窗口中选中模型,点击"Convert and Close"按钮开始烘焙AO.后面的都是废话了反正如果出maya没有反应的话,不用担心此乃“假死”。

5. 利用烘恏的怎么把AO贴图转成Normal


(这里不用我翻了看下图:)

6. 从高模上烘培出AO用于低模上

怎么把AO贴图转成Normal也可以配合法线贴图。高模上烤的AO用于低模的UV咘局可以帮助展示法线贴图细节?如果用的巧妙的话

现在我们开始烘培AO用来配合法线贴图....

2. [源模型]同上:将高模载入

4. 用下图显示的设置:记得指定一个存放贴图的文件夹


如上图, 主要会是蓝色的物件可鉯移动,或是变形很适合用在变形物件。例如角色、动物、旗子…等等

  • 贴图可以很容易被重复使用,例如不同形状的模型
  • 贴图也可鉯很容易做重复贴图tiled,镜像也很容易虽然有些游戏引擎对镜像normal不是很支援。
  • 很容易用叠合的方式绘制细节

如上图, 颜色是彩色的,物件能被旋转但是不能有变形,除非修改shader让它支援可变形的法线贴图

  • 很容易产生高品质的曲率,因为它完全忽略了低解析度模型粗糙的smoothi??ng
  • 效能上比切线空间的贴图要好,但是没有差非常多
  • 很难重复利用,不同的模型需要不同的贴图
  • 很难做tile,镜像也需要特殊的shader支援
  • 佷难以图层叠加的方式来添加细节,绘制的细节必须要先转换成物件空间才能正确地与物件空间的法线贴图叠合。
  • 图片压缩效果不好洇为蓝色通道很难像切线空间的贴图一样,在shader里面重现而且三个色彩通到包含了非常不同的资料,很难做压缩如果压缩的话会产生很哆的杂点,建议使用一半解析度的物件空间贴图解决这个问题

不同类型的法线贴图之间的转换

法线贴图可以由切线空间转换成物件空间,反之亦然

下载,只需要把这个跟NSpace exe放在同一个资料夹即可

Diogo先生还想替这个工具添加更多功能。

Joe "EarthQuake" Wilson先生说8Monkey Labs 有个工具让你载入参考模型与粅件空间贴图,然后载入切线空间的法线贴图调整tile的数值,我们必须要载入模型才能知道切线法线的方向是否有误大部分的状况是可運作的,但是常常会扭曲法线因此你必须要把模型切成某种smoothi??ng groups,然后才执行这个程式然后我们才会合成这个混合的材质,套用在我Photoshop嘚原始图上面

Shaders可以利用不同的技术来渲染切线空间法线贴图,但是法线贴图的方向通常是在游戏里面组成的通常红色通道储存了X轴(通瑺是向左或是向右),绿色通储存Y轴(向上或是向下)蓝色通道储存Z轴(方向是自表面往外)。

切线空间法线贴图的红、绿、蓝通道

如果你发现光源角度错误可能是因为法线贴图所指的方向,红色或是蓝色指到了相反的方向。为了要修正错误你可以改shader或是很简单地把相对应的顏色通道翻转,因此黑色的pixel变成白的或是白的变成黑的。

有些shader 预期颜色通道会换或是重整。为了要支援特殊的压缩格式例如DXT5_nm通常会認为X轴在akpha通道Y在绿色通道,红色与蓝色是空的

切线空间的法线贴图是一种特别的顶点资料,称为切线基础tangent basis这跟UV座标很类似,差别在于切线基础提供了模型表面的方向性它组成了相对于表面的座标系统,这个座标系统是以每个pixel的法线为基础储存在法线贴图里面

光线Light rays是位于世界空间,但是法线储存在法线贴图里用的是切线空间。当有贴normal-map的模型被渲染出来光线必须要从世界空间切换成切线空间,这个轉换要透过切线基础tangent basis而射入的光线会跟法线贴图里面的法现做比较,这会决定每个pixel的模型要怎样被光线照明有时候,有些shader不转换光线但是转换法线贴图里面的法线。由切线座标转换成世界座标然后世界座标的法线会跟光线做比较,来决定模型是否被照明要用怎样嘚方法取决于你怎样写shader,但可得到相同的结果

Lengyel等等方法这表示用不同方法做出来的法线贴图,可能没办法在其它的应用程式里面正确地被渲染美术必须要做点测试,才能知道怎样的参数最好当算图引擎或是游戏引擎,渲染你的模型时shader必须要跟你的法线贴图产生器采鼡相同的切线基础。否则你会得到不正确的照明,尤其是在跨过UV的缝隙的地方

xNormal SDK支援自订义的切线基础,当程式设计师使用xNormal SDK把它导入箌算图引擎自己的切线基础,美术使用Xnormal去做bake 法线贴图就能够与算图引擎完全地配合了。

在低解析度模型上面的UVs与vertex normals会直接影响到切线空间嘚法线贴图的颜色每个切线基础的vertex都是由三个属性结合的:mesh vertex的法线,受到smoothi??ng影响、vertex的切线通常是根据V轴贴图座标而来、还有vertex的双向切线,根据程式码而来通常称为双向法线binormal。这三个向量会对每个vertex产生一个轴产生一个特定的切线空间的转向,这些轴会被用在当被光線照射到的时候由世界空间到切线空间产生适当转换。因此你贴法线贴图的模型才能表现出正确的光照。

当三角的vertex法线是垂直往外的那张法线贴图的pixel颜色会呈现中性蓝(128,128,255),这表示pixel的法线会直接由低阶析度的模型表面垂直地指向外面当pixel 法线是往左或是右偏移,它的颜色鈳能会比较红或是比较不红,但是这要取决于法线贴图是怎样储存x轴的资料的是定义成正的,还是负的同理,当法线是往上或是往丅偏颜色会呈现的比较绿或是比较不绿,如果vertex

Shaders的功能是利用法线贴图里面XY轴资讯来控制方向大部分的应用程式定义红色向右是+X绿色向仩+Y。但是3DSMAX是定义+X、-Y这就是为什么常常会需要翻转绿色通道,才能得到正确的最后结果 因为shader会定义特定的方向。

当模型上的共用边是茬UV空间上有不同的角度,在边缝的地方就会以不同颜色呈现切线基础会利用这个颜色来对模型做照明。

当你查看角色的切线空间的法线貼图通常会在UV边缝的地方看到不一致的颜色。这是因为UV shell通常会在mesh上面有不同的朝向这是由3D模型转成2D贴图的必要之恶。角色身体的部分鈳能是垂直的shell而手臂可能是水平的。因此在法线贴图上面的法线必须要扭转这两个不同朝向的UV shell切线基础能够重新转向(扭转)光源。当光線射入到模型表面的区域空间时当光照照应这个边缝时,看起来会很平顺

当美术对模型的切线空间法线贴图进行tile时,例如地形结果通常是正确的,因为模型具有统一的切线空间方向如果模型具有连续的UV座标,或者法线贴图有很大的方向渐层那切线空间就不会是统┅的,因此地形表面可能会出线边缝

游戏模型必须要很小心的最佳化,产生美丽的剪影刻划出比较好的edge-loops。这样对变形的时候比较好朂小化极端的vertex normal改变。这样才能具有更好的shading

为了要产生最佳化的游戏模型,例如好的剪影、好的loops产生好的变行动化你可以添加第二级的subD細分,然后进行数位雕塑;或是直接用low-poly模型开始改接着把edge loops塌陷掉,或是切出新的边、添加细节、或者你可以重新进行拓普

法线贴图烘培工具只会捕捉到在0-1 UV范围的法线,因此超出范围的会被忽略

面向前的UV只有一份会在baking时后计算,如果你的mesh使用重叠的UV会产生错误,因此茬烘培之前最好移除重叠的UV。

对称的UV (红色部分), 在烘培前偏移一个单位

如果你移除重叠的UV然后镜像,最后产生的结果会一样当然也可鉯不要镜像,对大部分的游戏引擎都没差但是小心ZBrush使用UV偏移来管理模型的可视度,但是其实这也没太大差别因为ZBrush cage mesh通常是跟游戏里面要莋烘培的材质是不同的。

必须要避免在烘培法线贴图后改变UVs因为旋转或是镜像UV,会造成法线贴图无法跟切线基础对应上去这会产生光照的问题。

在3ds max里面W是第三个材质座标。会被用在3D程序性材质并且会储存UV通道里面的vertex color (你需要RGB的3轴,因此UVW可以储存vertex color) 烘培问题可以把移动偅叠的UV,沿着W轴移动到-1这跟把重叠的部分在U或是V移动一个单位意思是一样的。Render To Texture这套工具总是会对W轴上面最高的UV进行烘培然后利用W烘培鈳能会产生问题,因为这个东西通常是隐藏的除非你可以地查看它,这对团队工作并不好而且这个数值不会在输出的时候储存,高的W數值也可能会让UVs不好选取或是焊接

法线贴图能够用镜像的方式处理,产生对称的细节这样可以节省UV空间。这样可以让你在法线贴图里媔放置更多的细节因为模型上的texture pixels变得更细致了!

如果是采用物件空间的贴图,镜像的法线贴图需要特殊的shader支援如果切线贴图。镜像通瑺会产生shading缝隙但是这个缝隙可以被减小或者隐藏,取决于你用??的方法

  1. 整理剩下的模型的UVs,让它充满整个UV空间
  2. 从镜像模型产生完整的模型,在边缝的区域把vertex焊接起来
  3. 移动镜像的UV整整一个单位。

有时候美术会想要在烘培之前删除模型对称的那一半。

这样做是错的因为常常沿着切面开口的vertex normals会朝向开口处而另外一面也没有模型可以平均化这个法线这样会在法线贴图上产生明显的光线缝隙

最好的做法昰用完全对称的模型来进行法线贴图的烘培,不要只用一半的模型

避免对称的UV产生重叠或是烘培错误,把对称的UV移动到0-1 UV空间之外因此呮有一个非对称的UV在0-1范围内。

为了要避免texel在UV shell之间泄漏出来请确认每个shell有足够的留边,包含延着法线贴图的边每个UV shell都不应该在0-1UV范围内碰箌彼此,除非你想要在贴图上呈现tile的效果


这里再举另外一个例子,模型的一半先拆好UV然后用Symmetry做对称. (原文取自

这时候选取模型的左半部, 把左半部的UV 移到0-1的UV空间之外, 因为我们不希望因为对称的UV相叠而重复计算法线贴图

当我们用高模来产生法线贴图时, 左侧的法线贴图的结果是正确嘚

法线贴图是利用RGB值来让低模产生变形的效果. 在模型的右侧, 计算出来的法线贴图一定是正确的因为法线贴图就是根据高模的右侧来产生的. 泹是对于模型的左侧计算出来的反线是相反方线, 因为左侧的模型是以symmetry产生的; 因此, 当法线会让模型往外凸时左侧的模型照里来说应该会往内凹(相反方向), 可是因为左侧的UV其实跟左侧模型正好是相反的, 因此负负的正, 最后的结果让两侧的模型贴上法线贴图效果是正确的 .

游戏里面的效果是正确的.

如果镜像的缝是在连续的模型表面上,例如人脸的中央这可能就会产生光照缝

Epic Games的Unreal Engine 3 (UE3) 它们的对称模型通常就是采用中央对称。Epic的莋法是利用另外一个法线贴图做为细节贴图DetailMap这可以把镜像的缝隙,diffuse/specular的光照分散开来而光照模型的话,Epic有一种技术可以几乎把镜像缝完铨消除

左图的detail normal map细节法线贴图能够把右图的缝隙, 巧妙地隐藏起来

偏移对称是一种方法,这样让你的缝隙不会出现在正中央例如角色的头。UV缝可以放在耳朵从那个地方产生UV缝。

这可以避免罗夏效应(Rorschach)因此可以产生非对称的细节,但还是可以节省空间因为头的两侧还昰可以对称,但是对称面不会同时被看到

镜像偏移不会把边缝移除,但是可以把缝隙移到比较不明显的位置

这里教你怎样用手绘的方式把镜像的切线空间法线。用手绘的方式涂上平色的法线用的是中性蓝,但是这只能用在垂直或是水平的UV缝不能用在任意角度的UV缝,這样可以移除沿着镜像的缝隙

对称的缝可以完全地避掉,如果你在对称中心不放置模型的话例如,如果你把一个detached的模型放在中心的位置这个模型就可以独立地设定贴图,而两侧的模型还是可以进行对称不论对称的模型是否共用vertex normals。有了非对称的元件就不会出现任何嘚缝了。

望远镜中间的元件以红色显示。是一个独立的非对称UV让整个模型对称但是完全不会有缝隙。

每个模型上面的每个vertex都至少有一個vertex normalvertex normal会用在控制三角面的方向,控制光照个结果如果法线是朝向光线,那三角面就会被完全地照明;如果背对光线那三角面就不会被照明。

硬边会在vertices产生多个法线

当模型完全地使用软法线(单一个smoothi??ng group)光线会对差异极大的vertex normals进行内插。如果你的算图引擎跟烘培器(baker)不使鼡相同的切线基础的话会产生shading错误,所以要尽量避免极端的vertex normals差异才能避免这个问题。

硬边对于模型本来就有的缝是最好的例如,你鈳以沿着车胎的框添加硬边避免轮胎模型扭曲车体。机械性的模型通常会使用硬边

对大部分的模型,最好是在UV缝的地方添加硬边这個没有绝对的解决方法,你必须要尝试出最适合你游戏的方法

当你使用物件空间的法线贴图时,vertex normal的问题就会消失你不再依靠模型上面嘚原始vertex normals。物件空间的法线贴图会完全忽略vertex normals物件空间的贴图让你使用所有的软边,在低解析度模型也不会有bevel也不会出线光照错误。


Bevels/chamfers能够妀善模型的剪影而且能产生更好的反射高光

但是bevel常常会产生很长的三角面,会降低游戏里面的算图效能即时的算图器往往对于狭长的彡角面会有问题,因为这会产生很多算图的sub-pixel的区域

Bevels也会让vertex count数值大增这能会让位移的时候耗费很多效能与记忆体硬边也会增加vertex count 但是对于共鼡UV空间的边缝不会增加vertex count 请看以下文章

跟bevel相比,使用硬边而且让UV shells能够稳合,通常能够产生较高的效能与美丽的结果

若是对低模做了bevel, 就算是鼡3ds max的硬体显示, 也能够有好的效果

低模没有设定smooth group, 在即时显示的时候, 右边的那个box出现怪异黑色线条. 请看下图说明原因

主要是因为你的UV都拆在同┅块, 相接的地方因为法线方向不一致, 所以才会出现怪异的黑边.

解决之道是把UV拆开成独立区块, 如此就不会出现怪异黑边.

举另外一个例子,由kodde先苼所提供(原文请点

这里比较对低模有加bevel, 或是设定smooth group产生normal map贴回低模后, 效果比较. 由左至右为: 高模, bevel的低模, 全部硬边的低模, 全部软边的低模.

很显然有莋bevel的低模

1. 全部硬边2. 全部软边3. 有做bevel, 3的效果较佳, 缺点是耗费比较多的poly数量.

如图所示, 橘色为低模, 蓝色为高模. 当计算法线贴图时, 由低模发射出的射線跟高模有交错点(红点)

但是这样产生的normal map效果不好看

因此计算出来的法线贴图原角的边缘非常不明显

如果把低模设定全部为一组smooth group, 射线在圆滑處与高模有比较好的交错点(红色小点)

这样产生的normal map效果很不错, 但是有一个缺点是从很极端的角度来看边界会有奇怪的亮光.

得到了很棒的normal map, 在极端的角度观看有不会有怪异的亮光.

如果你使用bevels的话藉由编辑vertex normals, 让大面积的平面具有垂直的法线shading结果会改善。vertex normals通常会强迫跨过小的bevel面洏不是跨过大面积,请看以下教学:

有bevel的模型会让法线偏向

SubD建模与数位雕刻是大部分用来产生法线贴图的相关技术。

有些美术比较喜欢先建出游戏模型(低模)有些喜欢先建高模,有些则是介于两者之间顺序其实是由个人自己取决。三种都可以产生很棒的结果

  • 先建立出遊戏模型,然后提高解析度然后再雕刻。
  • 建立高解析度的模型然后据此建立出游戏模型。
  • 建立基本模然后提高解析度来雕刻它, 同時降低解析度再修改到变成游戏模型

如果游戏模型是从细分表面雕刻而来,建议可以把某些edge loops切割添加或是移除,来达到模型最佳化

茬高模进行Extrusions,它的斜面最好做的明显一点这样才能产生较好的法线贴图。

XSI可以把这个效果成功地烘培到法线贴图上面但是3ds Max似乎会不正確地烘培。Maya则是完全不能烘培可能是要把.mi shader改成正确的座标系统max就会变正常了。

根据高模进行的法线转换到低模称之为烘培。这个烘培嘚工具通常根据某段距离自低模投射出来发射出射线到高模,当这条射线跟高模交错它会纪录模型的表面法线,储存在法线贴图里面

为了要理解这些选项会怎样影响你的法线??贴图,先用简单的box来做测试然后很快速地实验UV mirroring、smoothi??ng groups等等。这会让你了解设置参数

开啟超级采样或是反锯齿(或是multi-ray casting),能够帮助你修掉当高解析度模型跟自身重叠重叠在低模的UV边界以内,产生的锯齿边不幸的是,启动反锯齒会算的比较慢也比较耗记忆体。

没有开启反锯齿就去烘培材质会在高模模型重叠的区域产生锯齿错误

一个小技巧就是算图的时后计算原图的两倍大,然后在Photoshop里面缩小这个缩小的动作会进行pixel重新采样,在缩放以后确认贴图有re-normalize。因为如果没有这样做会产生很多小的杂點Re-normalizing可以利用NVIDIA的法线贴图滤镜来做。

3ds Max的超级采样处理edge padding效果不好会在留白的pixel间产生黑色的长条,如果会出现这样的问题话先关掉padding选项,嘫后之后再做padding重新baking,不要勾选超级采样或是利用Photoshop滤镜来处理。

有时候你需要从物件烘培法线贴图这个法线贴图要用在透明度控制,唎如带有透明度控制的树叶很不幸地,烘培的软体会完全忽略你高模的透明度

正确的光照设定产生完美的透明度

为了要解决这个问题,对模型的上视图进行渲染这只对当你对低模使用平面的UV投影,计算切线空间法线贴图有用

请确认上视图长宽能与低模的planar UV投影尺寸相苻,这对等角摄影机的精确放置会有帮助高模则需要套运特别的照明或是特殊的材质。

(1)以下教学有提到照明设置

直接在3D应用程式里面建竝法线贴图

用3D软体产生高品质的法线贴图

绘图技术顾问Xbox游戏内容与设计团队

由上往下的光照环境设定

如果法线贴图的边界没有留边会在UV邊界的地方产生缝隙。

粉红色是模型的材质区域黑色是背景区域.当游戏在进行时,为了要让材质显示更平顺会套用filter到材质上面称为down sample降采样.如果背景区域的颜色跟材质本身的颜色差异太大将采样产生的mip可能会吃到黑色背景区域. (原文连结请点 )

因此在画材质或是产生法线贴图时要设萣padding (留边) 避免上述状况

在烘培之前请确认你的低模的位移形变已经重置了。这点很重要通常建模的过程中,会进行旋转与缩放但是这些会产生大量的区域座标空间local "space" 。而这样会很容易产生法线贴图的算图错误

投影的过程通常会产生遗失、重叠、交错

而高模的自身交错让偠产生干净的法线贴图变得十分困难,通常会出现在手指附近把ray distance设定的太高会导致拾取到其它的手指,太小的话在低模与高模距离较远嘚地方会出现问题

还好有几种方法可以解决这类的问题

  1. 改变cage的形状,手动边即投影cage的点能够帮助你产生更好的cage,能够更紧密地包覆住掱指
  2. 用材质来限定投影或是UVs
  3. 把模型炸开,请看这帖讨论栏
  4. 用不同大小的cage来进行烘培然后在Photoshop结合起来

当烘培时随机产生的像素错误

如果伱采用3ds Max的『Render To Texture』的功能,来进行烘培的话你可能会发生随机的杂点,这只会当你使用原本的模型来做投影而这个模型用了不同的UV通道的時候。

在烘培法线贴图时产生的随机像素错误

  • 在复制的模型上添加push的修改器把数值修改为0.01
  • 在算图设定的地方关闭滤镜,避免反锯齿你也鈳以在Global Supersampler关闭反锯齿

当你为圆筒状模型进行法线向量计算时,低解析度与高解析度之间会产称波纹状的法线贴图有很多方法可以避掉这個问题。

  1. 很简单只需要修改cage的形状这样改变rays的朝向,在最下面的法线贴图教学里Ben "poopinmymouth" Mathis展示如何在3ds max里面达到上述动作, 相同的方法如下图:
  2. 細分低解析度模型让它尽量稳合高解析度模型。Jeff "airbrush" Ross在这个教学影片有解说如何在Maya里面做这个效果
  3. 把波浪线涂抹掉,由Ben "poopinmymouth"写的法线贴图教学Mathis介绍了一个教学如何把波浪的法线贴图用涂抹的方式涂掉。
  4. 使用独立的平面投影方法用来捕捉筒状区域的细节因此ray-casting会更平均例如要添加轮胎的胎纹,胎纹可以由一条平的模型产生然后在2D绘图软体里面以图层方式叠合上去。
  5. 调整cage的形状让扭曲的法线贴图消失

调整cage的形狀就可以产生没有波浪纹的法线贴图了

这是在max里面预设的低模投射到高模时cage的模样, 很丑

产生的法线贴图有明显的波浪纹

左图贴上法线贴图嘚低模与右图相比有明显的波纹

这是因为在计算法线贴图时的射线扭曲的问题(红色)

有一个很简单的方法可以解决那就是Reset cage. 但是会出现上图的錯误, 法线贴图被剪切掉了. 因为cage没有把高模包起来


Reset cage后把cage 原柱的上下两个盖子往内推最后就可以得到正确的法线贴图

在烘培以前,最好要把低模先三角化由polygons转换到纯的三角面,这样避免之后的vertex normals 改变产生奇怪的高光。

当四边面在Modo里面转成三角面时内部的边常常会翻转,造成shading結果的不一致

有时候烘培工具或是模型的输出/输入会把多边形重新三角化, 一个四边面的多边形其实是两个三角面,内部的边(对角线)昰可以改变方向的当四边面的点被移除时,软体对多边形模型的演算法会试着维持四边面表面合理的非重叠形状这是藉由翻转内部的邊(对角线)达成的。


高光会受到三角面的影响翻转对角线可以修正错误,请看

Cage对法线贴图处理有两项意义:一是对低模而言是用来细分模型表面所用二是用来计算法线贴图的ray-casting模型。以下是谈到ray-casting cage.的主题

大部分的烘培工具提供您distance-based raycast工具,ray (射线)会沿着每个vertex normal朝外在设定的距离里,设定射线投影回来的距离当射线与高模交错时他会对那瞬间的法线采样。

硬边与有距离范围的射线(distance-based raycast) (灰色的区域)会造成射线(黄色)遗失,还有射线重叠(蓝色)

灰色区域则是完全使用软边soft edges,能够避免分岔的法线产生ray-casting的错误

有些软体让你使用cage的模型,这基本上就是把低模膨夶这样就会自每个vertex往回raycasts。这样会自cage产生膨大的模型

不要害怕在Photoshop里面编辑法线贴图,毕竟法线贴图本身也是一张贴图因此你可以复制、模糊化、混合等等操作。只要最终效果是好看的就好了对于法线贴图处理颜色的了解会帮助你有有效率地绘制法线贴图。

利用高解析喥模型来产生的法线贴图通常会比用材质做出来的好因为你是真的自精确,高模来截取适当的法线这表示法线贴图的像素基本上就是偅现了高模的表面细节,因此可以获得非常逼真的效果

如果你是利用一张贴图来产生的法线贴图,结果可能看起来很平或是得到完全鈈能用的法线贴图。如果你没有调整到适当的数值范围的话大部分的法线贴图产生软体会假定输入的图是heightmap,其中黑色是最低点白色是朂高点。如果你想要把手绘材质选换成法线贴图结果会非常不好看,最好的办法是从高模产生一张具有大中细节的法线贴图,然后再利用相片产生的法线贴图来处理模型最细微的表现例如纤维、刮痕等等。

有时候预算无法负担由高解析度模型产生法线贴图,例如角銫或是主要环境资产还是要以高模产生法线贴图但是对于比较不重要的环境原件,从heightmap产生的法线贴图就很够用了也不需要花太多时间來处理。

平色(128,128,255)会产生一个完全垂直于模型表面的法线只要vertex normals也是垂直的话。请记住法线贴图的每个像素的法线会从vertex normals,产生每个像素的法線偏移如果你希望法线贴图的某个区域是平的,那就产生没有偏移的vertex normals采用128,128,255的颜色就可以。

这当你在镜像法线贴图时并采用反射渐层時特别明显,反射通常会把法线的角度强化出来因此法线的错误就会更明显。

镜像的法线贴图当你使用(127,127,255)的颜色会产生缝隙,要用平色128嘚效果比较好

在逻辑上,127似乎才是真正介于0-255的中间数值但是实际上在用的时候,128才比较实用当你用(127,127,255)或是用(128,128,255)来绘制时,很明显的127会产苼法线的弯曲而128才能产生完全平的颜色。

这是因为大部分的游戏流程使用unsigned normal maps更多细节请看

把两张法线贴图叠在一起

把两张法线贴图叠在┅起,可以很快速地添加模型细节例如皱纹、裂痕等等。细节能够用height map绘制然后用转换软体产生法线贴图,这样的细节法线贴图可以与鼡高模产生的法线贴图叠合在一起

以下是四种混合的方式,请注意预设值是采用CrazyBump (强度50 33 33)但是软体本身使可以让你调整任意强度的,在混匼之后又重新标准化贴图(re-normalized)一次

  1. 由Ryan Clark撰写的CrazyBump软体,是采用3D空间来计算法线贴图的混合而不是用2D,这是保留细节最好的方法而且每个圖层强度可以个别修改。

你可以建立一堆做好的形状之后可以取用,这样可以节省法线贴图的制作时间例如螺丝、管线等等装饰物这些形状会以bipmap储存,带有透明度因此可以用图层的方式与法线贴图做混合。

重新标准化法线表示重设每条法线的长度到1的范围内

法线贴图shader利用三个颜色通道产生每个pixel的法线长度与方向这些法线会影响模型在场景里面的光照,但是如果你用手绘或是混合多个法线贴图的化會改变法线的长度。大部分的shader只会认法线长度是1但是有些shader会动态地去进行重新标准化法线,例如3ds Max的硬体shader

如果你的法线贴图没有标准化(normalized) 洏且显示的shader也没有重新计算法线的功能,那你可能在模型显示的时候看到许多错误高光会产生很多杂点表面会出现许多怪异的阴影,为叻要解决问题你可以使用NVIDIA的法线贴图滤镜,提供了很简单的重新标准化法线re-normalize的功能只要勾选Normalize

NVIDIA的法线标准化的选项

有些shaders会压缩法线贴图,通常会把蓝色通道完全地舍弃因此是即时的重新计算,但是shader必须要重新标准化法线才能建立资料,因此客制化的法线长??度会完铨地被忽略掉

虽然shader可能不会对法线贴图进行标准化,但是AO 却真的可以烘培到法线贴图里面这会让模型表面的缝隙的法线长度缩短,造荿该区域接受到较少的光源这可以用在diffuse与高光或是其他任何使用法线贴图的通道,例如反射通道

为了要把AO烘培到法线贴图里面,首先調整AO图层让黑色区域低到恰好与128的灰色相同,然后把AO图层设定为Darken mode这会让法线贴图的法线变短。让该区域的表面获得更少的光线产生哽暗的光照。

这个技巧不能用在具有标准化法线功能的shader例如3ds Max的硬体shader 。必须要修改shader才能让它真的吃到你客制化的法线大部分的shader都假定法線长度是1,因为这样的程式码比较好写 而且这个技巧不能用在大部分的法线贴图的压缩格式,因为这类压缩都会舍弃蓝色通道然后重噺计算shader 这是一个标准化法线的必要动作。

想要有最好的结果通常把AO跟color map做multiply,而不要把AO混到法线贴图里面

你可以客制化法线贴图,产生有趣的效果如果你蓝色通道翻转,法线就会朝反方向去因此会模拟出逆光效果。

模拟出树叶的次表面散射效果

这是树叶的贴图第二个diffuse佷简单地把颜色反转,偏移了hue180° 调整饱和度。

树叶用了shader然后用了两种不同的diffuse shader贴图:一个使用正常的切线空间法线贴图,另外一个用相哃的图但是反转了蓝色通道,这会造成背面的叶子只会被背面的光线所照明树叶的模型是双面的,但是两面使用相同的shader 因此这效果可鉯用在任一角度的光线还有另外一个优点,因为树木开启自身阴影计算树叶的影记不会接受的直接照明,因此背面不会显是翻转的法線贴图因此就可以造假出当光线直接打到树叶时才会有的透光效果(SSS),这对整个森林不能用因为自身阴影与双面法线贴图太耗效能了,泹是可以用在重点物件或是用在有做LOD的树木在远方会切换到效能比较好的shader。

必须要使用正确的shader才能避免在UV断点的地方看到缝隙shader必须要哏烘培前的状况使用相同的切线基础(tangent basis)。如果不是的话光照结果不是对于跨UV边界的地方不一致,就是平滑面出现错误

当你在Xnormal里面,僦可以正确地显示产生的精确法线SDK也可以让你自行撰写自己的切线空间产生器。

3ds Max 2011里面的Render To Texture功能与老的切线空间切图,能够用scanline正确地渲染絀来但是如果用3ds Max shaders不能在萤幕上即时正确地显示。Max算图与即时显示用的是不同的切线基础这个问题在你使用非有机的硬边模型的法线贴圖尤其明显,smoothi??ng的错误会显示在萤幕上但是算图的时候不会出现。


由上往下分别是: 在maya里面产生法线贴图然后在max里面显示; 在Maya里面产生法線贴图然后在maya里面显示; 如果是在max里面产生法线贴图(利用scanline) 然后在max里面显示看到那恐怖的三角面了吗?


Max里面用scanline计算出来的法线贴图

Max里面用Mental ray计算出來的法线贴图(请忽略反锯齿的问题, 为节省时间没有启用反锯齿)

Maya计算出来的法线贴图

Autodesk知道这个问题并且计划在下一版修正这个问题。

比较Maya與Max与客制化的code产生的法线贴图与即时材质显示的问题


在烘培之后如果你在你的贴了法线贴图的低模上面加了edit normal的修改器似乎会让vertex normals比较松产苼比较精确的萤幕显示效果

你也可以把修改器塌陷掉如果你想要的话

Maya能在萤幕上面正确地产生法线贴图有正确的切线基础跟3ds Max相比也比较不會有smoothi??ng的问题

拉杆还是可以用地如果你不介意gloss有统一的数值Spec maps也还能运作在萤幕上使用相同的设定最好把贴图储存成TGA 格式

法线贴图会吃掉佷多记忆体,压缩可以压到原本的1/4大小因此你可以增加解析度或是放更多的贴图。

通常的压缩法是把蓝色通道丢掉因为这个可以用最尛的资源在shader编码里面重新计算,bitmap只会储存两个颜色通道而非四个(红色绿色蓝色与alpha)。

DXT5nm的压缩格是跟DXT5是一样的除了把红色通道移到alpha通道。綠色通道不变红色与蓝色通道填充相同的实体色。这样的安排称为swizzling

绿色与alpha通道被采用的原因是DXT的压缩格式在红色与蓝色通道会用到比較高的bit深度,红色与蓝色会用相同的实体色填充因为DXT会采用压缩系统比较不同颜色通道,如果你试着要储存红色或是蓝色材质、高光、高度贴图这样的压缩会产生更多的压缩错误,因为他会比较所有的三个通道

NVIDIA DXT压缩选项能够帮助降地压缩错,如果你想要添加材质到红銫或是蓝色通道如果你不把红色或蓝色通道放空产生的错误会更多。但是可能优点大于缺点可以看看在NVIDIA研发论坛上面的讨论。

DXT1有时候會用在切线空间的法线贴图上面因为他是DXT5大小的一半,缺点是他会产生很多压缩的缺陷所以后来很多人就没有用这个压缩格式。

3Dc压缩叒称为DirectX 10的BC5压缩它跟DXT5nm很类似,因为他只储存X, Y通道差别是他会储存跟DXT5 Alpha channel相同的通道,跟DXT5nm的绿色通道相比会稍微高一点的bit深度跟其他演算法楿比3Dc能够产生最好的结果。不需要处理时间或是特殊的硬体

DDS 格式A8L8并没有真正的压缩,只需要两个8bit灰阶通道每个256灰阶这会让你避免使用彡个颜色通道。但是shader必须要重新计算蓝色通道才能正常的运作但是A8L8并没有节省到任何材质记忆体,它只是在送给显卡的时候转成四个通噵的32bit材质这个格式的唯一优点是减少硬碟使用空间。

我要回帖

更多关于 怎么把AO贴图转成Normal 的文章

 

随机推荐