从maya灯光贴图到unity
[b]【专业iPhone 3d游戏、移动游戏开发:北京贝武易科技公司】[/b]
有疑问请联系我QQ:363596350

lightmap灯光贴图,让场景更加真实。

我们有两个uv设置

• An Ambient Occlusion pass.环境Occlusion灯光
• A Ray Trace pass. 光线追踪灯光

好,开始。

在Unity中开始一个新的项目,a new Project。
包含标准包,Standard Assets Package;
同时,导入我们的资源包,LightMappingTutorial.unitypackage,我们在文件里提供了,unity里的资源可以以包的概念导入导出。
在文件包里打开TutorialStart场景;

[img]http://dl.iteye.com/upload/attachment/285622/36bbe3b3-87aa-3de4-998b-c60ea6e2b42d.jpg[/img]
现在的画面是没有等过效果的,视觉真实性不是很好,下面我们用lightmap来把场景调的更真实些。
整个场景是包含了三个面物体(meshes): “HouseMesh”, “TreeTrunks”, 和 “TreeBranches”.
房子,树干,树叶。

房子在maya中我们就用到一个材质球。
在maya里打开场景House.mb,如下图:

[img]http://dl.iteye.com/upload/attachment/285628/4f47ca1c-8c9a-3b9c-b4f7-8cd3199821f1.jpg[/img]
选择房子物体,打开材质编辑器,Window/UV Texture Editor...

[img]http://dl.iteye.com/upload/attachment/285631/1a405cda-e748-38c4-9ec7-da01fd2282a7.jpg[/img]
下面我们使用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).

[img]http://dl.iteye.com/upload/attachment/285643/6e749de5-1b45-34d3-9955-4c0571c80126.jpg[/img]
双击“mib_amb_occlusion1”材质球,打开它的属性窗口Attribute Editor,给它重命名为:“AOTexture”。
• 把“surfaceShader1” 重命名为“AOShader”.
在材质编辑窗口,用鼠标中键把AOTexture 拖放到AOShader上面,再弹出的选择菜单中选Default方式,这就把AOTexture和AOShader以默认的方式连接起来。
这里我们就完成了对房子Ambient Occlusion设置所用到材质了。

[img]http://dl.iteye.com/upload/attachment/285669/2691cca9-247d-3fc0-8aaf-9974fefea284.jpg[/img]

• 双击AOTexture,编辑它的属性(改变2个设置):
第一个,采样值(the number of Samples),默认是16,为了达到更好的效果,提到64或128,根据个人的机器而定。
第二个是最大间距值(Max_distance),默认为0,但是远的地方的物体我们不需他们之间互相影响,我们把值设为Max Distance-----1.5,就可以。
设置完毕。
•鼠标中键把AOShader材质拖给房子,房子变黑。
•把渲染方式设置为Mental Ray,Window/Rendering Editors/Render
Settings...
• 测试渲染;

[img]http://dl.iteye.com/upload/attachment/285688/614113a0-492b-36ae-992f-4696674a4a5e.jpg[/img]
存在一些斑点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钮.

[img]http://dl.iteye.com/upload/attachment/285699/79f2be8c-ec8d-35a1-b94f-5cf8f0049988.jpg[/img]

进入材质编辑器,我们可以看到有2个UV sets,他们是原来的“map1” 和 新的“lightmap”.
下面,我们开始烘焙这个Ambient Occlusion通道。
在“Channel Box/Layer Editor”栏,隐藏“TreeBranchesLayer”树叶层;

[img]http://dl.iteye.com/upload/attachment/285716/0961e925-9b47-3077-b2fc-35135aa9e4e9.jpg[/img]
因为树叶用到了Alpha通道,在计算的时候是根据面来算,而不是根据通道来算,会出现不符合实际的阴影,所以,我们就隐藏了它。

选择房子,选择菜单Color/Batch Bake(mental ray) (options)设置

[img]http://dl.iteye.com/upload/attachment/285728/fbbc0f56-ad93-3037-aa70-99354cbed899.jpg[/img]
这里有很多参数设置
• 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”.
最后,整一个设置表为:

[img]http://dl.iteye.com/upload/attachment/285746/e5294437-9c87-3268-be6f-dd5622938076.jpg[/img]
最后,转换、关闭,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),灯光有点偏黄;

[img]http://dl.iteye.com/upload/attachment/285771/ae30f956-544c-3e5b-8c72-6908411f1091.jpg[/img]

在下面的Shadows栏,选择Use Ray Trace Shadows;
旋转灯光到一定的角度,模拟太阳照射;
如(-45, 45, 0);

下面的工作是进行Mental Ray设置;
打开渲染窗口,Render Settings Window (Window/Rendering Editors/Render Settings...).
把“mental ray” 的渲染质量Quality Presets 提高为“Production”(生产级别的).

[img]http://dl.iteye.com/upload/attachment/285774/7eeddddc-423d-3de4-9e78-94fa1926bfae.jpg[/img]
到下面的Raytracing菜单,确定Ray Tracing 是备选的状态;
• 到下面的Shadows栏,改变Shadow Method 阴影方法为“Sorted”(分类阴影).
对于树叶的Alpha通道树叶很重要,否则渲染出多变形。

[img]http://dl.iteye.com/upload/attachment/285778/198d80ba-c05d-3c81-a167-0c3c715397a6.jpg[/img]

• 确定“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格式文件。

[img]http://dl.iteye.com/upload/attachment/285788/10fcb46c-1c35-3cb0-a8ef-6da394401b65.jpg[/img]
用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.

[img]http://dl.iteye.com/upload/attachment/285797/f94bddb4-edf3-33e0-96b8-53007928c989.jpg[/img]

这里讲究的是一个思路和方法,我们生成了一个Layered Texture,然后把刚才生成的房子的材质和新烘焙、合成出来的黑白图,让他们以一种Illuminate(照明)的方式融合起来,然后赋予房子,需要说明的是unity能自动人maya的文件,同时,也认maya的分层贴图,最后的连接为

[img]http://dl.iteye.com/upload/attachment/285813/7dbef760-7d62-3d1c-801b-970a8dc92c75.jpg[/img]
清晰显示为

[img]http://dl.iteye.com/upload/attachment/285815/98a55c36-812a-3188-8c1c-3e2ee71fffb9.jpg[/img]

烘焙的黑白图连接到Layered Texture的inputs[0].color

[img]http://dl.iteye.com/upload/attachment/285818/da80173a-bcad-32e9-bcaa-65f9dfcc8e9d.jpg[/img]

彩色材质图连接到Layered Texture的inputs[1].color

[img]http://dl.iteye.com/upload/attachment/285820/d54e1639-b339-3aa3-84bb-3ae09f09997f.jpg[/img]

Layered Texture的Blend Mode融合方式为:Illuminate

[img]http://dl.iteye.com/upload/attachment/285827/51ab581f-27e1-3748-b660-d3b7b770abb6.jpg[/img]

还有重要的一步是调整好对应的UV,选择房子,单击右键UV Sets/UV Linking...
设置好对应的UV

[img]http://dl.iteye.com/upload/attachment/285831/c3ab68e4-ef0b-39dd-8542-6f50b60e2d36.jpg[/img]。
最后,把lightmap材质再赋一次给房子。

[img]http://dl.iteye.com/upload/attachment/285833/cda9026e-6a49-36ea-91af-fc8d85e8456e.jpg[/img]

保存文件,最后到unity里,自动就能认maya的文件,把文件直接拖到视图就可以。

• 选中 “HouseMesh” 把材质类型改为“Lightmapped/Diffuse”.
• 把合成好的黑白材质“LightMapTexture.psd” 拖到“Lightmap (RGB)”位置.

[img]http://dl.iteye.com/upload/attachment/285839/99163d4a-a0d7-3738-878d-44c064bdda60.jpg[/img]

好,显示效果很好,不错!

全文完。

[b]【专业iPhone 3d游戏、移动游戏开发:北京贝武易科技公司】[/b]
有疑问请联系我QQ:363596350

从maya灯光贴图lightmap到unity相关推荐

  1. Unity 烘焙灯光贴图,跳转场景时会黑一下问题

    Unity中的灯光进行烘焙后就创建了场景灯光信息和灯光贴图.在加载跳转场景时会更换并计算场景烘焙的灯光信息, 对场景进行照明. 场景切换时会黑一下,查找问题是在场景环境光的渲染上Environment ...

  2. Unity烘培灯光贴图切换到Android平台后画质下降的问题

    在PC,Mac & Linux Standalone下进行烘培后产生的灯光贴图,切换到Android平台后,灯光贴图文件会被自动压缩,从而导致画质下降. 手动修改灯光贴图文件的属性从Compr ...

  3. Maya材质贴图向四则运算节点介绍

    作为在maya材质贴图比较常用的节点,加减乘除又是在制作中用的比较多的.所有的绘图软件中基本上都包括了四则运算.今天将和大家来整理一下四则运算节点在maya中的底层逻辑以及基础的应用. 我们先回忆一下 ...

  4. Unity项目运行时动态更新光照贴图 | LightMap

    Unity项目运行时动态更新烘培的光照贴图 动态更新烘培的光照贴图 场景的物件没有发生变化(也就是说没有运行时加载在场景上的Prefab) 场景的烘培贴图已经更新,但是有些物件prefab想运行时加载 ...

  5. UWA学堂专栏推荐:光照贴图Lightmap初探

    这也许是目前国内对lightmap(光照贴图)总结最全面的文章了,作者钱康来,毕业于清华大学CG/CAD实验室,主要研究方向为计算机图形学,多年工作经验横跨Unity.Cocos.unreal多个游戏 ...

  6. maya turtle 贴图烘培文件命名规范

    1.学习三维模型贴图绘制时,都要用到物体ID,ao(occ),normal贴图.使用maya自导的turtle渲染器就很方便,不过要手动加载插件,才能使用.选择各个输出的层名称,occ 建议使用tur ...

  7. 新入门的游戏贴图师,你不知道的MAYA,贴图细节

    Ⅰ.MAYA贴图的基础教程 第一步: 先在场景中做一个简单的瓶子模型 用来进行贴图 1.沿着瓶子的外轮廓画一条curve. 2.让建立的the curve 偏移offsetting 离瓶子的厚度为-0 ...

  8. 将Gif图转换成Unity Texture2D

    最近项目里要从网上拉取玩家的头像,可玩家的头像可以用gif图但unity不支持gif图,这样就会出现拉取失败会显示问号的图,那是Unity内转换Texture2D图失败是给的默认图.于是在网上查找解决 ...

  9. 光照贴图 LightMap

    为什么要选择光照贴图? 在游戏中 在一个静态的环境中 你的某块区域的光是一直需要的 如图 如果你的Light Baking 类型是Realtime  那么就是实时光照 会耗费电脑性能 那么使用光照贴图 ...

最新文章

  1. 双十一秒杀架构模型设计实践!
  2. php虚拟内存设置,虚拟内存有什么用
  3. 4kyu Path Finder #1: can you reach the exit?
  4. 小白一路走来,连续刷题三年,谈谈我的算法学习经验
  5. 通信 / DHCP 四次握手
  6. 下午去银行办理按揭手续,不得已调休半天
  7. aes256加密java_使用Java和JCEKS进行AES-256加密
  8. 【Python学习】 - sklearn学习 - 评估指标precision_score的参数说明
  9. Java 类的封装、继承、多态
  10. wPython环境安装
  11. 有jar包直接加密tcp请求报文_netty(十六)报文加密
  12. 汇编指令-adr与ldr伪汇编区别(8)
  13. 如何调用VS自带的数据源选择对话框
  14. Swift 必备开发库 (高级篇) (转)
  15. UDID获取的方法(Iphone,Ipad,Mac,Window都可以)
  16. 人民网:《百度公布博客服务商前十强 MSN博客超过本土博客》
  17. 闭环控制步进电机对比传统开环控制的优点
  18. 陌陌推出点赞匹配功能,动了谁的蛋糕?
  19. html中的keygen元素
  20. 什么是服务器未响应手机,手机服务器未响应

热门文章

  1. MCE | 动物实验溶剂大讨论
  2. Here Document
  3. 自动积分制系统中的积分奖励设置
  4. 湖北中级工程师评定条件及流程?伴德诚
  5. usb蓝牙适配器 linux,树莓派用USB蓝牙适配器连接蓝牙设备
  6. php驾校管理系统的设计与实现
  7. 面试 | 软通动力技术面
  8. 关于“元宇宙”和“VR元年”
  9. 2021年净水器发展环境(PEST)分析:随着居民生活品质提升,净水器的需求也将稳步增长 [图]
  10. 针对例程tl-upp-saver加TCP的调试过程