从maya灯光贴图到unity
【专业iPhone 3d游戏、移动游戏开发:北京贝武易科技公司】
有疑问请联系我QQ:363596350
lightmap灯光贴图,让场景更加真实。
我们有两个uv设置
• An Ambient Occlusion pass.环境Occlusion灯光
• A Ray Trace pass. 光线追踪灯光
好,开始。
在Unity中开始一个新的项目,a new Project。
包含标准包,Standard Assets Package;
同时,导入我们的资源包,LightMappingTutorial.unitypackage,我们在文件里提供了,unity里的资源可以以包的概念导入导出。
在文件包里打开TutorialStart场景;
现在的画面是没有等过效果的,视觉真实性不是很好,下面我们用lightmap来把场景调的更真实些。
整个场景是包含了三个面物体(meshes): “HouseMesh”, “TreeTrunks”, 和 “TreeBranches”.
房子,树干,树叶。
房子在maya中我们就用到一个材质球。
在maya里打开场景House.mb,如下图:
选择房子物体,打开材质编辑器,Window/UV Texture Editor...
下面我们使用Ambient Occlusion模拟全局灯光效果,准备生成第一个Lightmap。
•需要生成一个新的材质,打开Hypershade Window (Window/Rendering Editors/Hypershade...)
•生成一个新的Surface Shader (Create/Materials/Surface Shader)
•生成一个Mental Ray环境材质纹理:Mental Ray Ambient Occlusion Texture (Create/mental ray Textures/Mib_amb_occlusion).
双击“mib_amb_occlusion1”材质球,打开它的属性窗口Attribute Editor,给它重命名为:“AOTexture”。
• 把“surfaceShader1” 重命名为“AOShader”.
在材质编辑窗口,用鼠标中键把AOTexture 拖放到AOShader上面,再弹出的选择菜单中选Default方式,这就把AOTexture和AOShader以默认的方式连接起来。
这里我们就完成了对房子Ambient Occlusion设置所用到材质了。
• 双击AOTexture,编辑它的属性(改变2个设置):
第一个,采样值(the number of Samples),默认是16,为了达到更好的效果,提到64或128,根据个人的机器而定。
第二个是最大间距值(Max_distance),默认为0,但是远的地方的物体我们不需他们之间互相影响,我们把值设为Max Distance-----1.5,就可以。
设置完毕。
•鼠标中键把AOShader材质拖给房子,房子变黑。
•把渲染方式设置为Mental Ray,Window/Rendering Editors/Render
Settings...
• 测试渲染;
存在一些斑点splotchiness,取决于你的Samples值,但是后面跟的材质合成在一起的时候看不出来,基本上没问题。
• 好了,下面我们把它烘焙出来。
我们需要一个新的UV Set,进入maya的Modeling栏。
选择房子,进入Create UVs/Automatic Mapping (options)设置窗口。
设置如下:
• Set the number of Planes to 6
• Set Optimize to “Fewer Pieces”选,较少片段方式
• Set the Scale Mode to “Stretch to Square”保证正方体
• Set “Shell Stacking” to “Shape”. This ensures that Maya will map the UV shells into the tightest composition.让贴图更加紧凑,不留大空。
• Finally, check Create New UV Set and name it “lightmap”.生成新的UV Set ,并命名为lightmap。
• 设置好了,点击Project钮.
进入材质编辑器,我们可以看到有2个UV sets,他们是原来的“map1” 和 新的“lightmap”.
下面,我们开始烘焙这个Ambient Occlusion通道。
在“Channel Box/Layer Editor”栏,隐藏“TreeBranchesLayer”树叶层;
因为树叶用到了Alpha通道,在计算的时候是根据面来算,而不是根据通道来算,会出现不符合实际的阴影,所以,我们就隐藏了它。
选择房子,选择菜单Color/Batch Bake(mental ray) (options)设置
这里有很多参数设置
• Objects to Bake is “Selected”,要烘焙的物体时“Selected”选择的物体;
• Bake to Texture—make sure Bake Shadows is set.烘焙到材质,选择烘焙阴影;
• Camera is “perspective”.选择透视相机;
• 选择use bake scene override;
• Color mode is “Light and Color”.颜色模式:灯光和材质;
• 选择 Orthogonal Reflection(直角反射)(没有这个,AO计算会计算每个角生成不需要的材质);
• Normal Direction is “Surface Front”.法线方向为“面的前方”;
• 前缀名Prefix : “HouseAO”.
• 设置尺寸为2048 x 2048 ,图像格式为“TIFF”;
• 选上Bake To One Map;
• “Fill Texture Seams”相对于2048的图,设为10最合适;填充材质接口;
• The last setting is to check Override mesh UV set assignments and to name it “lightmap”.最后一个设置为,检查Override mesh UV 分配为 “lightmap”.
最后,整一个设置表为:
最后,转换、关闭,Convert and Close。
这个过程需要些时间。
结果显示一片乱,但是实际上这个AO已经通过UV:lightmap正确的烘焙出来了,只是选择视图显示是“map1”而已。后面我们接续工作。
把HouseDiffuse shader重新赋予给房子,恢复正常显示;
下面我设置另外一种方式:Ray Trace pass:
生成一个环境灯,Ambient Light,Create/Lights/Ambient Light (options).
设置如下
Intensity 0.15;
Ambient Shade 0;
这个灯光是用来调整阴影的对比度的,让影子不要太黑;
• 不生成阴影 Cast Shadows ,按Create生成.
• 下面,再生成一个方向灯,Directional Light.
在属性窗口,设置颜色为HSV (48.35, 0.185, 1.0),灯光有点偏黄;
在下面的Shadows栏,选择Use Ray Trace Shadows;
旋转灯光到一定的角度,模拟太阳照射;
如(-45, 45, 0);
下面的工作是进行Mental Ray设置;
打开渲染窗口,Render Settings Window (Window/Rendering Editors/Render Settings...).
把“mental ray” 的渲染质量Quality Presets 提高为“Production”(生产级别的).
到下面的Raytracing菜单,确定Ray Tracing 是备选的状态;
• 到下面的Shadows栏,改变Shadow Method 阴影方法为“Sorted”(分类阴影).
对于树叶的Alpha通道树叶很重要,否则渲染出多变形。
• 确定“TreeBranchesLayer”层打开,选择房子;
• 打开烘焙设置窗口,Color/Batch Bake (mental ray) (options).
做两个改变:
• 改变颜色模式Color Mode 为“Only Light”.
• 重命名Prefix为“HouseShadow”.
• 点击Convert and Close钮,开始烘焙;
进入HyperShade window,把刚才烘焙生成的材质命名为“FinalShader”。
下面我们就把2个通道生成的材质合成为1个材质;
我们用Photoshop进行合成,在这个目录下“Documents/maya/projects/default/renderData/
mentalray/lightMap”应该有我们刚生成的tif格式文件。
用Photoshop把他们合成到一块;
• 把“HouseAO.tif” 叠到“HouseShadow.tif”上,层的叠加方式用blending mode ------Multiply.(正片叠加方式)。
把文件保存到unity项目的资源(Asset)里,名为“LightMapTexture.psd”,注意,不要合层,方便日后调整。
回到Hypershade Window,材质窗口,生成一个新的Lambert材质,名为LightMap;
• Graph/Clear Graph,清理Hypershade Window的工作区域.
• 选择“LightMap” Material,执行Graph/Input Connections.
• 生成一个层材质Layered Texture通过default默认方式连接到“LightMap” Material.
这里讲究的是一个思路和方法,我们生成了一个Layered Texture,然后把刚才生成的房子的材质和新烘焙、合成出来的黑白图,让他们以一种Illuminate(照明)的方式融合起来,然后赋予房子,需要说明的是unity能自动人maya的文件,同时,也认maya的分层贴图,最后的连接为
清晰显示为
烘焙的黑白图连接到Layered Texture的inputs[0].color
彩色材质图连接到Layered Texture的inputs[1].color
Layered Texture的Blend Mode融合方式为:Illuminate
还有重要的一步是调整好对应的UV,选择房子,单击右键UV Sets/UV Linking...
设置好对应的UV
。
最后,把lightmap材质再赋一次给房子。
保存文件,最后到unity里,自动就能认maya的文件,把文件直接拖到视图就可以。
• 选中 “HouseMesh” 把材质类型改为“Lightmapped/Diffuse”.
• 把合成好的黑白材质“LightMapTexture.psd” 拖到“Lightmap (RGB)”位置.
好,显示效果很好,不错!
全文完。
【专业iPhone 3d游戏、移动游戏开发:北京贝武易科技公司】
有疑问请联系我QQ:363596350
- 大小: 58.3 KB
- 大小: 205.2 KB
- 大小: 132.8 KB
- 大小: 94.9 KB
- 大小: 96.6 KB
- 大小: 10.6 KB
- 大小: 21.2 KB
- 大小: 59 KB
- 大小: 340.2 KB
- 大小: 36.6 KB
- 大小: 73.7 KB
- 大小: 231.3 KB
- 大小: 33.4 KB
- 大小: 33.4 KB
- 大小: 7.2 KB
- 大小: 42.6 KB
- 大小: 10.7 KB
- 大小: 23.1 KB
- 大小: 45.8 KB
- 大小: 56 KB
- 大小: 55 KB
- 大小: 22.5 KB
- 大小: 37 KB
- 大小: 66.4 KB
- 大小: 19.2 KB
分享到:
相关推荐
烘焙后的场景不再需要运行时计算光照,而是直接从Lightmap贴图中读取,从而提高性能。 在【描述】中提到的"加载、替换与切换"是指在游戏运行过程中改变Lightmap的过程。这在某些需要昼夜交替或者不同光照环境的场景...
从Maya灯光贴图到Unity,这一过程是游戏开发与3D艺术中提升场景真实感的关键技术之一。本文将深入探讨如何从Maya中的光照贴图(lightmap)过渡至Unity,使游戏场景更加逼真。 ### 理解Lightmap的重要性 在3D图形学中...
Unity3D 提供了一个强大的光照贴图系统,称为 Lightmap,它可以将场景中的光照信息烘培到纹理中,从而提高游戏的性能。Lightmap 是 Unity3D 中的一种重要技术,它可以将场景中的光照信息烘培到纹理中,以提高游戏的...
本文将深入探讨Unity3D的Lightmap入门,帮助开发者理解如何使用内置的Illuminate Labs Beast工具来烘培光照贴图,提升场景的视觉效果。 首先,了解Lightmap的基本概念至关重要。Lightmap是一种预先计算并存储光照...
然而,在实际应用中,烘焙灯光贴图可能会遇到一些问题,如阴影丢失或法线效果不正确。本文将详细探讨这些问题及其解决方法。 首先,当你的模型使用了法线贴图,并在Unity3D中进行了灯光烘焙,你可能会发现烘焙后的...
LightMap烘培贴图是Unity中预计算光照的一种方式,它将静态光源的信息烘焙到纹理上,使得静态物体在运行时无需实时计算光照,降低GPU负载。批处理修改LightMap烘培贴图则意味着我们需要对多个对象或整个场景的...
动态加载LightMap。需要事先烘焙好lightmap,并保存。
Unity3D 是一款广泛应用于游戏开发的3D引擎,提供了丰富的功能来处理各种资源,如贴图和模型。本教程将深入讲解如何导入和管理这些资源,并关注几个关键的属性设置。 首先,我们来了解贴图的导入和配置。在Unity中...
在Unity引擎中,光照贴图烘焙(Lightmap Baking)是一种优化光照计算的方法,它可以将复杂的光照信息预先计算并存储到贴图中,以便在运行时以较低的性能成本渲染场景。然而,当游戏场景中存在大量预制体(Prefab)且...
5. **应用灯光贴图**:将烘焙好的灯光贴图应用到材质的特定槽位(通常使用Map Channel 2),并导出场景到Unity 3D。 6. **在Unity中设置材质**:打开Unity场景后,更改默认材质为支持灯光贴图的类型。然后将之前烘焙...
不同预制体在不同场景烘焙,使用方法:https://blog.csdn.net/qq_26318597/article/details/113652985
开发者需要了解Unity3D的Lightmapping机制,以及OpenGL如何处理和呈现纹理信息,以实现从Unity3D到目标平台的无缝过渡。通过理解这一过程,开发者可以更好地优化他们的项目,特别是在处理大量静态几何体和复杂光照...
`AnisoLevel` 设置各项异性过滤级别,它影响从斜角观察贴图时的清晰度。较高的级别意味着更好的视觉质量,但也意味着更高的内存消耗。 了解了贴图的导入和设置之后,我们转向网格资源。`.fbx` 文件等3D模型导入后,...
动态加载lightmap,当场景比较大时,场景中的静态物件是逐步加载的。因此每个物件要单独存储自己的lightmap信息。
在Unity3D游戏引擎中,透明贴图的处理是一个重要的技术环节,因为它直接影响到游戏的视觉效果和性能表现。以下是一些关于Unity3D透明贴图的注意事项和优化技巧: 首先,透明材质在Unity3D中的表现方式是通过特定的...
传统的做法往往需要借助外部软件如3ds Max等进行光照贴图(Lightmap)的烘焙,随后导入Unity中进行后续处理。然而,随着Unity引擎功能的不断完善与优化,开发者现在可以直接在Unity编辑器内部完成Lightmap的制作。...
unity5 LightMap_shader支持透明贴图 可调亮度 LightMap_shader支持透明贴图
在"OpenGL-- Shader 颜色 光照 3 光照贴图 LightMap_VS2015"项目中,开发者可能使用Visual Studio 2015作为开发环境,通过OpenGL库实现了LightMap技术。"OGLLightMaps.sln"是Visual Studio的解决方案文件,包含了...
1. **烘焙Lightmap**:在Unity编辑器中,进行Lightmap烘焙,并将生成的Lightmap纹理移动到一个单独的文件夹,例如"Assets\lightmap\scenenXXX\"。这样做的目的是让Lightmap不包含在场景包中,从而在首次加载时减小...