Unity3D】unity怎么导出选定灯光

2021-02-04 18:12发布

9条回答
梵梵
2楼 · 2021-02-05 09:29

Unity已经成为游戏程序员中越来越受欢迎的游戏引擎。这是因为Unity直接支持多种平台,如移动、桌面和控制台环境。此外,对于低收入开发者或工作室来说,它是免费使用的。



Unity支持多种技术和组件。一些关键部件是灯光和照明技术。在Unity中,你可以通过模拟复杂的灯光行为或者通过简单的灯光模型来照亮场景。



小磊子
3楼 · 2021-02-05 10:21

本文小姐姐将以著名的斯蓬扎宫模型场景为例,和大家一起探讨一下正午时分的光影布光方法及烘焙过程。3dMax模型情况如下图所示(由图可见,模型的面数为6万多(见截图左上角),模型一定要采用精简的单面建模,否则这个场景的面数会多达几百万,甚至上千万的面,如此多的面数,Unity是吃不消的,无论烘焙过程的展UV,还是烘焙,甚至烘焙之后的场景运行,都会陷入无休止的等待、假死机和卡顿状态,毕竟烘焙之后也会个场景带来一些负载,而且最终作品要在用户机器或手机上运行,所以从模型的面数方面,必须充分考虑给场景留出足够的裕度)

1. 模型导出

无论你用3dMax、Maya、C4D、Blender或Sketchup建的模型,建议都以fbx格式导出,因为Unity3d对fbx格式兼容的最好,这也是官方的建议,导出时一定要勾选“EmbedMedia”(嵌入媒体),否则在导入Unity时会成为无贴图的“裸模”

2. 模型导入Unity

⑴ 在导入模型前,按下图所示,勾选掉Unity3d的“Auto Generate”(自动烘焙)选项,好多人一打开Unity3d,不知道怎么啦,总感觉系统处于运算状态,就是因为Unity默认这个选项是勾选的,当导入模型后,什么还没做,就一直陷入莫名的忙机,也是这个原因,所以导入前取消这个选项。

⑵ 按下图所示将刚才从3d软件导出的FBX模型拖入Unity3d的Assets文件夹,2017版之后,可能出于别的考虑,Unity不再直接导入材质和贴图,所以很多人发现模型导入后总是无材质和贴图的裸模,这里还需要做一点设置,看下一步。


⑶ 选中刚导入的FBX模型,点击inspector面板的Materails按钮,我们发现下面的所有材质都显示“none”,这就是裸模的根源,有童鞋说,前面不是说导出FBX时不勾选“Embedmedia”选项,就会出现裸模,这都勾选了,怎么还是裸模呢?这里需要说一下,如果前面不勾选,这里一定是裸模,但是,勾选之后,还需要一点点设置,否则依然会裸模,也就是前面和现在的设置缺一不可。


⑷ 继续,此时拉开“location”后面的下拉框,将设置改为第一项,也就是“use external materails(legacy)”,意思是“使用外部材质(旧版)”,如下图所示:

⑸ 接下来还需要将“naming”后面的下拉框改为“from model‘s materails’”,如下图所示,意思是贴图名称取自模型材质,然后点击下面第二张图中所示的“apply”(应用)按钮,这时unity就稀里哗啦地将所有材质和贴图真正导入Unity。

⑹ 导入材质和贴图后,unity的assets文件夹中会多出“materails”和与FBX同名的后缀为".fbm"的两个文件夹,一个存放的是材质,一个用来存放贴图,如下图所示。


⑺ 接下来将assets中的FBX模型拖入“Herarcy(层级面板)”,此时我们可以看到,FBX模型连同材质和贴图被完美地导入了Unity,如下图所示。


到此模型导入完毕,从下面的图可以看到,在unity3d默认灯光的照射下,场景看起来很苍白,没有一点层次,你的作品功能再强大,场景没有出色的视觉美感,所有功夫全白费,受众是不能接受这样的作品,这就是烘焙的重要意义!考虑到一些童鞋导入模型都成问题,所以前面啰嗦了一堆,熟悉的童鞋可以跳过。接下来就进入unity3d烘焙的正题。


3. Unity3d场景布光及光照参数设置

无论是游戏,还是VR场景,烘焙前首先要做的事是灯光的布设,因为烘焙的主要任务是渲染灯光的光影效果,没有灯光,烘焙也就无从谈起。unity3d的布光原则,和其他3D软件并无二样,也就是要根据所要表现的意境和气氛来决定如何打灯。一开始我们就说要烘焙正午时分的场景,下面我们就按正午时刻的光照来布设灯光。大家都知道,正午时分,阳光明媚,光照明暗分明,太阳光近乎垂直投射,但是,这个场景只有顶部一个可进光的开口,其他部分都是密闭的,表现正午的气氛,如果灯光垂直向下投射,阴影会与场景物体重合,所以我们不能垂直打灯,因此将灯光调至与地面夹角大约60-80度,合理的灯光布设是场景光影出彩和营造气氛的先决条件,不同的时间段,灯光角度不同。

⑴ 下面我们用平行光来模拟太阳光,作为主光源(照亮场景的主要光源)照亮场景的部分区域(也就是迎光面),产生光斑,与此同时,在其他区域产生阴影。照亮区和阴影区必须形成强烈的反差,才能显示出阳光的明媚,很多人烘焙的场景平淡,就是因为明暗对比不强烈,该亮的不亮,该暗的不暗。非洲人之所以看起来牙齿很白,是因为黑色脸部的衬托所致,因此要表现优秀的阳光效果,光照明暗反差要大,但暗区也不能死黑一片。Unity一创建新的场景,就默认为我们创建了一盏平行光,现在我们将其调至如下图所示的投射角度,既要考虑让一二层都有阳光投射的痕迹,又不至于灯光垂直入射。

⑵ 接下来选中平行光(Directional Light),将inspector面板中的灯光强度(intensity)调至2,如下图所示,默认值是1,很多人马上说灯光已经曝光了,但必须调大,因为我们最终要的是烘焙光照,不是实时光照,现在只是实时光照曝光了,因为烘焙光照的算法和实时光照不同,不调大,烘焙后阳光不够强烈。另外,顺便将灯光的模式“Mode”改为“baked(烘焙模式)”,如下面第二张图所示。其他值

⑶ 主光源设定之后,我们还需要考虑阴影区域的照亮,虽然阴暗区相对照亮区较暗,但也不能有伸手不见五指的感觉,正午阳光充足的时候,在强光的照射对比下,阴影区会显得比较暗,但物体还是能看清,而且有层次感的,这主要是天光的贡献,因此我们需要开启Unity的天光作为辅助光源来照亮阴暗区域,与此同时,主光源照射到迎光面后,反射到周围的物体上,这些物体又作为二次光源照亮其他物体,多次反弹后到达阴暗区,也起到光照的作用,因此,这个场景的辅助光源除了天光,还有主光源-太阳光多次反弹光,或者说两者的综合效果作为辅助光,共同照亮阴影区。现在我们打开光照面板,点击window/lingting/settings,如下图所示,弹出光照面板,然后按下面第二张图所示,将光照面板的标签拖至inspector面板标签之后,使其和inspector面板并排,这样节省屏幕空间,如下面第三张图所示。

⑷ 接下来将光照面板(Lighting)下场景(Scene)标签中的环境反射(Environment Reflections)的反弹次数改为5,这个值越大,光线会充分传递到阴暗区,亮度越亮,但亮度不会超过照亮区。然后将实时光照(RealTime Lighting)下实时全局光照(RealTime Global ILLumination)后的复选框取消勾选,也就只进行烘焙全局光照计算。接着将混合光照(Mixed Lighting)的光照模式(Lighting Mode)后的下拉框中的选项改为烘焙间接光(Baked Indirect),最后再将光照贴图设置(Lightmapping Setings)下的光照运算器(Lightmaper)后的下拉框选项改为渐进式(Progressive),如下图所示。还需要勾选环境遮蔽(Ambient Occlusion),也就是AO,如下第二张图所示,这个选项会在物体或物体间内转角或内转折处产生软阴影,例如墙内凹角,对于表现细节很有帮助。至此场景的辅助光和光照参数就设好了。

4. 烘焙模型设置

做完以上的设置之后,还需要对模型进行必要的设置。选中层级面板中所有需要烘焙的模型物体,勾选Inspector面板右上角的Static,将所有物体设定为静态,如下图所示,否则烘焙之后没有阴影和任何效果,切记!然后在assets面板中,选中导入的所有FBX模型,勾选inspector面板模型(model)下的创建光照贴图坐标(Generate Lightmap UVs)复选框,如下第二张图所示,否则烘焙后,模型会遍布黑斑,其实是光照图错乱,因为没有贴图坐标,光照图不知道怎么贴。

5. 烘焙

完成上面的设置,就可以进行场景烘焙了。点击下图所示的“Generate Lighting(生成光照)”按钮,即可开始光照烘焙

说明:最近Unity2019版的正式版发布,由于一直在测试破版的稳定性,所以到现在才更新,请童鞋们谅解!下面就改用2019版来和大家继续探讨Unity3d的光照烘焙。

接上面的步骤,烘焙完成共耗时7.5分钟,且无任何报错提示,如下图所示:

下面从不同角度来看看烘焙的效果,由下列截图可见,烘焙成果非常干净,未见很多童鞋所说的黑斑、白斑、麻点、漏光、漏阴影、撕裂、破面、硬边等现象,而且烘焙速度非常快。一般情况下,最终的正式渲染烘焙,很多人都得1,2个小时,大部分没经验的童鞋,得5,6个小时,甚至几十个小时,还有的童鞋陷入了无休止的死机状态。无论质量好坏,有的童鞋想看一眼效果,一时半会都看不到,搞得非常心塞。前面说过,我们此次的目标是烘焙正午时分的光照效果,大家看看有没有正午的效果?小姐姐个人认为,整个场景明暗对比强烈,阴暗区域虽然很暗,但是层次还是很清晰的。

我们再来看看细节效果


yy123456
4楼 · 2021-02-05 15:46

Unity支持多种技术和组件。一些关键部件是灯光和照明技术。在Unity中,你可以通过模拟复杂的灯光行为或者通过简单的灯光模型来照亮场景。

秀儿
5楼 · 2021-02-06 09:26

Unity支持多种技术和组件。可以通过模拟复杂的灯光行为或者通过简单的灯光模型来照亮场景。

希希
6楼 · 2021-02-07 09:20

Unity已经成为游戏程序员中越来越受欢迎的游戏引擎。这是因为Unity直接支持多种平台,如移动、桌面和控制台环境。此外,对于低收入开发者或工作室来说,它是免费使用的。



Unity支持多种技术和组件。一些关键部件是灯光和照明技术。在Unity中,你可以通过模拟复杂的灯光行为或者通过简单的灯光模型来照亮场景。



Mantra
7楼 · 2021-03-23 10:03

Unity中的灯光想要导出的话只支持UnityPackage格式,所以也就意味着只能在Unity中使用,别的软件是无法使用的。

可以将要导出的灯光创建预制体,之后在预制体上右击选择Export Package即可完成导出。

相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    很简单啊,勾选了静态属性的缘故!

  • 回答 6

    修改Light组件中的Intensity的值即可.

  • 回答 9

    1.在Asset store里选择一个skybox。 2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的...

  • 回答 14

    开发是开发,美术是美术,不过一般情况下可以不精通,最好能熟练就行。要是想学习Unity3D游戏开发,可以没有美术功底,但要是会写语言就会好学些。

  • 回答 9

    unity更容易上手一些,因为虚幻用的是C++,unity用的是C#,学习C#的成本比C++的成本要小一些,不过虚幻对一些功能封装的比较人性化一些.

  • 回答 7

    在层级视图中点击右键,在Light菜单下选择所需要的灯光类型即可.给物体上添加灯光组件,选择所需要的灯光即可.

  • 回答 4

    把场景中不参与运动的物体设置成静态的.点击window菜单下的Navigation界面,调整好参数,在场景中烘焙出可供行走的路面给场景中要使用导航的物体添面导航网格代理组件在脚本中获取导航风格代理组件对象,调用方法即可...

没有解决我的问题,去提问