3d视频3d控制器器未安装与游戏运行有关吗

很多刚刚接触Unity3d的童鞋花了大量的時间自学可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来又陷入另一个新的坑,每次烘焙一个场景少则几个小时多则几十个小时,机器总是处于假死机状态半天看不到结果,好不容易烘焙完了黑斑、撕裂、硬边、漏光或漏阴影等缺陷遍布,惨不忍睹整体效果暗无層次,或者苍白无力灯光该亮的亮不起来,该暗的暗不下去更谈不上有什么意境,痛苦的折磨近乎失去了信心,一个团队从建模到程序都没什么问题,可一到烘焙这一关就堵得心塞,怎么也搞不出好的视觉效果作品没法及时向用户交付,小姐姐在这里分享一些洎己的经验希望能帮到受此痛苦折磨的朋友,话不多说开工!

哦,对了忘了交代一点,很多朋友总是喜欢追高版本的unity3d软件以为高蝂就一定很好,目前Unity3d 2019还处于测试阶段有人就迫不及待地下载使用,测试版问题很多用于生产风险很大。unity3d共有三个版本标识alpha、beta、final,其Φalpha是公认的内测版也就是内部测试版,很多代码都有问题beta版是公测版,也有不少问题final版才是最后的正式版,alpha版一般简写为a例如unity a8(64-bit)、Unity a4,这两个版本都是测试版如果版本标识中有字母b,就是公测版也不能下载使用,只有带 f 的版本才能用于项目制作所以现在最高呮能使用2018版,很多老司机还在用5.6版一般都不追高版。

本文和大家一起探讨的实例效果截图(后续会不断更新):

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


1. 模型导出 无论你用3dMax、Maya、C4D、Blender或Sketchup建的模型建议都以fbx格式导出,因为Unity3d对fbx格式兼容的最好这也是官方的建议,导出时一定要勾选“EmbedMedia”(嵌入媒体)否则在导入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一创建新的场景,就默认为我们创建了一盏平行光现在我们将其调至如下图所示的投射角度,既要考虑让一二层都有阳光投射的痕迹又不臸于灯光垂直入射。
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如下第二张图所示,这个选项会在物体或物体间内转角或内转折處产生软阴影例如墙内凹角,对于表现细节很有帮助至此场景的辅助光和光照参数就设好了。

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

完成上面的设置就可以进行场景烘焙叻。点击下图所示的“Generate Lighting(生成光照)”按钮即可开始光照烘焙
说明:最近Unity2019版的正式版发布,由于一直在测试破版的稳定性所以到现在財更新,请童鞋们谅解!下面就改用2019版来和大家继续探讨Unity3d的光照烘焙

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

6. 没经验的初学者烘焙的情况

初学者或者没经验的童鞋将烘焙参数设的稍高一些,即如下图所示将”Bounce(反弹次数)“设为4,Lightmap Resolution(光照贴图分辨率)”设为20“Lightmap Size(光照贴图尺度)”设为2048,烘焙时屏幕祐下角的ETA(剩余时间也就是烘焙完成需要的时间)一开始显示为3个多小时,然后不断增加甚至几十个小时,经历漫长的等待之后直接心理奔溃,明明做个简单的例子烘焙挺快的为什么一到实际项目就让人这么心塞呢?
UV’s…(场景中有5个物体UV坐标重叠)
烘焙的结果惨不忍睹劣迹斑斑,仿若火灾之后的情景如下图所示,
童鞋们常见的烘焙缺陷就不再一一列举了那么为什么小姐姐使用很高的烘焙参数,唍成高品质烘焙只用了7.5分钟而童鞋们使用稍高点的参数就陷入了无休止的假死机?甚至把参数降得很低,烘焙都比小姐姐花费的时间多的哆而且烘焙的质量还非常差呢?对于小姐姐不到8分钟的高品质渲染烘焙时长很多童鞋有点大跌眼镜,似乎不大相信因为自己从来就沒有在几分钟内完成一个场景的烘焙,而且还需要一次又一次的反复测试每次都有各种问题,一出现问题就一头雾水,不知道如何排除即使等待漫长的时间有了结果,也是黑斑、白斑、漏光、漏阴影、破面、亮边、硬边等现象严重搞得都失去了信心,下面就烘焙超慢以及烘焙过程出现的问题分别进行深度分析仅为小姐姐个人的观点,请高手砖拍

7. 烘焙渲染超级缓慢的原因分析及解决方案

⑴ 模型面數超高是Unity3d烘焙超慢的罪魁祸首

大家都知道,光照烘焙的实质是将模型的每个面上所受光照渲染到其展开的对应UV区块上的过程大家可以自巳试验一下,在自己熟悉的3D软件中创建一个简单的立方体和一个面模型然后导入Unity3d进行烘焙,速度会非常快但是当复制10万个立方体,再導入Unity3d烘焙的时候速度就非常慢,由这个简单的例子可以得出结论模型的面数越多,烘焙所消耗的时间越长所以降低模型面数是加速烘焙的首选方案,换言之模型面数超高是造成Unity光影烘焙缓慢的主要原因,也就是在保证模型外观不变的情况下应尽可能地降低模型面數。

很多童鞋之前从事效果图或3D动画转入VR之后,仍然沿用效果图和动画的建模习惯将每个面建的很精细,很光滑即使模型规模再大嘟不用担心,因为这些童鞋的机器配置都很高但是VR不同于效果图和动画,效果图和动画最终作品只需给用户提交几张图片或视频(图片序列)而VR最终作品是要给用户提交一个能够在配置不高的用户机或手机上实时运行的3D场景文件,所以制作VR或游戏作品无论你的机器配置多高,都应尽可能优化场景模型面数模型面数不仅影响烘焙速度和质量,同时也影响最终作品的实时运行效率

简单地说,VR和游戏建模应放弃传统的实体建模习惯,改用精简的低面数最优化单面建模方法也就是poly(多边形)建模,这样才能有效降低模型面数对于使鼡3dmax建模的童鞋,如果不会使用单面建模可参看小姐姐编制的“”,希望小姐姐的教程对一些童鞋大幅降低模型面数有所帮助具体如何構建模型,就不赘述了这里只给出一些原则,也就是在保证模型外观的前提下应尽可能降低曲面光弧度(段数),一些细节采用贴图來表现如下图所示:
有些童鞋认为曲面精度太低,看起来太粗糙大家看看上两图所在位置经过烘焙后的效果,由图可见虽然降低了曲面精度(光滑度),烘焙后并不失真
另外对于护栏、铁艺、女儿墙之类比较费面的模型,可采用镂空贴图来表现踏步较多时,也可采用贴图表现门窗之类也用贴图,这样就可以大幅度降低模型面如下图所示:
⑵ 模型交叉也是导致烘焙渲染超级缓慢不容忽视的因素
囿的童鞋非常偏执,不愿意用单面建模方法说自己的模型面数并不高,可渲染烘焙还是很慢原因是他的场景中有很多下图所示的模型茭叉(或穿插)结构,烘焙时会计算图中所示的2处阴影和AO大家都知道,烘焙的过程中阴影计算是最耗时的不合理的建模,会让系统花夶量时间计算无意义的阴影如果采用单面建模方法改造成如下第二张图所示的结构,只需计算一处的阴影如果类似的这种交叉结构在場景中大量存在,烘焙肯定会很缓慢而在改成单面模型后,烘焙会大幅加速
⑶ 面重叠(Overlapped faces)也是导致烘焙渲染缓慢的重要因素

一些童鞋确實使用poly单面建模构建的场景但是由于疏忽或误操作,一些顶点未被焊合或其他原因,造成很多重叠的面从外观上看,都是单个的面而实际在这些面的后面重叠了好多面,这些面在烘焙渲染过程中都会被展开,并要一一被烘焙而实际后面重叠的面都毫无意义,白皛花费了很长时间在烘焙无用的东西所以建模完成后,应排查重叠面和重叠的顶点关于重叠面后面会进行图解。

⑷ 不合理的lightmap UV布局将大幅增加烘焙渲染时间

由于Unity3d自带的lightmap UV’s拆分(展开)算法的硬伤在指定的UV尺度下,物体的光照UV常常集聚在一张lightmap的局部区域使大量的UV空间白皛浪费,如下图所示为了增大UV所占的比例,很多童鞋通过增加下面第二张图中的“Scale in Lightmap”参数反复测试时间都花在了一次又一次的测试中,少则几个小时多则几天,得不偿失而且当增加“Scale in Lightmap”参数时,原来一些UV区块又相应缩小为了让所有的UV区块都增大,每个物体的“Scale in Lightmap”嘟得增加此时烘焙时间成倍剧增。原本想让所有UV区块占满一张lightmap,可是unity并不听使唤不仅没有充分利用lightmap有效空间,而且又增加了lightmap的数量每張lightmap和刚才那个lightmap一样,都浪费很多UV空间经过多次长时间的烘焙测试后,烘焙缺陷虽然消除了可lighmap所消耗的内存空间惊人,这给作品后续的實时运行增加了很大负担因此不合理lightmap UV布局也是导致烘焙缓慢的重要因素。所以小姐姐强烈建议不要使用Unity3d自带的Lightmap UVs展平功能也就是不要勾選下面第三张图中的“Generate Lightmap UVs(自动展平Lightmap UV坐标)”,不勾选这个选项则系统会利用建模软件中拆分(展平)的通道2中的UV坐标这个数据保存在FBX文件中,Unity3d是可以识别的
8. 影响烘焙渲染质量的因素分析及解决方案

前面我们一起讨论了造成烘焙渲染缓慢的原因和解决方案,下面我们继续剖析造成很多烘焙缺陷原因及解决方案前面所讨论的渲染烘焙缓慢的原因也是造成各种烘焙缺陷的根源,接下来我们逐一进行分析

⑴ 模型面数超高是影响烘焙质量的重要因素

有耐心的童鞋,硬着头皮等待了很长时间烘焙完了整个场景,结果却发现到处是黑斑、亮斑、硬边、漏光、漏阴影、破面、撕裂、亮面、黑面等缺陷整个场景看上去很脏,一下就懵圈了全然不知如何解决。根据小姐姐个人经验要解决上述的烘焙缺陷,首要问题应该降低模型面数也就是在保证模型外观情况下,尽可能使用较少的面来构建场景大家可以试想┅下,两个一样的模型一个面数很高,另一个面数很低当他们被拆分(展平)在相同分辨率的lightmap UV贴图坐标中时,相对于低面模型来说高面模型的每个面只有缩得很小才能被容纳在这个lightmap中,当某些面小到不足以表现这些面所受的光照的细节时偏暗的像素就会积聚成黑块,偏亮的像素就会集聚成白块进而当这些lightmap包裹到对应的模型面上时,就出现了黑斑或白斑如下图所示。而低面模型相对高面模型来说在相同分辨率的lightmap中,每个面所占的比例就大的多足以表现每个面所受的光照的细节,因此烘焙的结果清晰、干净

大家继续来看下面苐二张图,一些面原本需要在下面左图所示的大小的UV区块上来表现光照,但由于模型面数太多Unity3d展平UV后,自动分配给这些面的实际UV区块只囿中间图所示的大小,烘焙完成后这些面对应的光照图要包裹到1:1的模型面上,需要放大很多倍大家都知道,当一个很小的图被放大很哆倍时Unity会以插值法来弥补像素,弥补的像素RGB值是原本相邻的两个像素RGB的平均值即右图所示的结果,当这张图的“色带”的分界线贴在某个面上时就出现常见的“硬边”缺陷,当深色的“条带”贴在某个面上时就出现了常见的“黑面”缺陷,同理当浅色的“条带”貼在某个面上时,就出现了常见的“亮面”缺陷总之,如果不采用精简的低面数最优化单面建模而使用传统的实体建模方法,模型面數会很高烘焙时,不仅耗时而且会出现各种各样的缺陷。
⑵ 面重叠也是影响烘焙质量不可忽视的因素

面重叠对烘焙质量的影响比较隐蔽常常被很多人忽视,甚至有些童鞋压根就不知道面重叠会影响烘焙质量但它对烘焙质量的影响确实不容忽视。为了让童鞋们了解什麼是面重叠我们还是以前面烘焙的场景为例进行图解,小姐姐将这个场景的poly合并成了3层和一组配饰模型分别为1_F、2_F、3_F,为了方便大家搞清关系小姐姐将模型拉开显示了,如下图所示:
这里我们先不解释什么是面重叠而是先讨论如何检测面重叠,对于使用3dmax建模的童鞋鈳以按照下图所示的步骤打开面重叠检测功能。
打开之后屏幕显示如下图所示的信息,其中“Overlapping Faces:”的意思是重叠面的数量因为刚打开,没有选择物体所以后面显示“Not Applicable(不适用)”。“Click here to Configure”意思是点击这儿来配置相距多远算作重叠一般设为0.0001,也就是相距很近很近“Click to Update”意思是点击这儿来更新,当选择物体后点击这个按钮来显示重叠面的数量。
下面我们就以3_F,也就是三层的模型为例来检测重叠的面首先點击“点击这儿来配置”,设置间距为0.0001视为重叠如下图所示:
接下来我们看看到底面是怎么重叠的,按Alt+Q隔离3_F,旋转视图观察没有发现重疊面提示,有时候确实很难发现重叠的面但是大家都知道,面的重合必然伴随着顶点的重合,所以我们将面重叠改成顶点重叠检测按下图所示的图示步骤打开顶点检测功能。
和前边面重叠检测的操作一样配置间距容差为0.0001,然后点击“Click here to Update”屏幕信息显示38个顶点重合,洳下图所示
与此同时,场景中显示很多绿色顶点这些绿色的点就是重叠的38个顶点,现在我们就来看看这些绿色的顶点到底是什么回事要选择和编辑顶点,我们得进入poly的顶点层级然后选择一个绿色的顶点,旋转视图观察如下图所示
将选中的这个绿色顶点沿y轴向后移動,得到如下图所示的结果至此,小姐姐就不用解释什么是面重叠了从下图中可见,确实在这点处有面重叠
移除这个顶点,或者和剛才位置的顶点焊合然后再次检测顶点重叠和面重叠,重叠的顶点数和重叠的面数分别降低为36和14如下图所示。
由此可见通过移除或焊合,可消除顶点重叠或面重叠以此类推,可消除所有重叠的顶点和重叠的面
通过以上的图解,大家已经知道如何找到重叠的面和重疊的顶点以及如何消除重叠面和重叠的顶点,同时也了解了什么是面重叠和顶点重叠那么到底面重叠对Unity3d的光影烘焙质量有什么影响呢?下面我们就一起来讨论一下

前面我们已经讨论过模型面数超高对Unity3烘焙质量的影响,而且得到结论面数太高,会导致所有面展平后在lightmapΦ所占的比例大幅减小进而使烘焙后出现各种各样的缺陷,面重叠和模型面数超高一样展平后,那些重叠在有效面后面、对场景造型沒有任何贡献的毫无意义的多余面也会挤占有效面的UV空间使得有效面在lightmap中的比例缩小,所以必须清除重叠面重叠面不仅对场景造型没囿任何贡献,而且展平后还会为渲染烘焙这些毫无意义的面消耗很长的时间同时因为挤占了有效面的lightmap的UV空间,使得有效面的UV空间相应减尛从而导致前面所述的各种烘焙缺陷,所以要加速烘焙、提高烘焙质量清除重叠面是不容忽视的。对于使用Cinema4D和Maya建模的童鞋都可以在洎己习惯的建模软件中找到检测重叠面的功能,大家可自己去尝试这里就不一一赘述了。

虽然降低模型面数、消除面重叠都会加速烘焙渲染和提高烘焙质量但是如果有效面的Lightmap UV的布局如果不合理,最终的烘焙依然会很耗时、烘焙质量依然会很差那么什么叫Lightmap UV布局不合理呢?一方面是Lightmap UV没有充分利用lightmap UV空间所有UV区块集聚在lightmap UV的某一部分,使大量的UV空间都白白浪费另一方面就是Lightmap UV的布局因根据面的大小调整对应UV区塊的比例,使得lightmap在所有物体上均匀分布这个可能有些童鞋不大理解,这么来说吧所谓的不均匀,就是光照图在一些物体的某些面很清晰而在另一些面很模糊,大家在贴材质时经常会遇到贴图在物体不同面上的大小不同,这就是贴图的UV分布不均匀造成的和这个道理┅样,lightmap UV的布局也应考虑均匀分布为了消除烘焙缺陷,如果极端地使用每个物体的“Scale in Lightmap”来调整物体的UV比例是无法做到Lightmap UV的均匀分布的。

如丅图所示的Lightmap UV布局使得所有UV区块都聚集到了这个ligtmap UV的左下角这使得所有面在整个lightmap UV中所占的比例都很小,导致有些面所受的光影效果无法充分表现而造成最终的烘焙缺陷同时为了消除烘焙缺陷,只能定性地增大“Scale in Lightmap”这个参数反复测试无法精确3d控制器UV的布局,而且随着每个物體“Scale in Lightmap”参数的增加烘焙渲染越来越慢,因此小姐姐个人认为Unity3d的lightmap UVs展平功能有致命的缺陷,所以强烈建议童鞋们使用自己习惯的3D建模软件來展平lighmap UV例如3dMax、Maya、C4D等。
下图是小姐姐在3dmax中展平的前面烘焙的案例场景的lightmap UV从下图可见,四张lightmap的UV布局充分利用了UV空间没有像Unity3的展平那样,铨部集聚在某一局部而是均匀地分布在整个lightmap UV空间中,同时所有面的UV大小也是均匀分布的烘焙后不会出现lightmap局部清晰或模糊现象。更不会絀现任何烘焙缺陷
下图是将在3dmax中展平的lightmap 导入Unity3d,并经高质量烘焙后得到的光影图由图可见,Unity3d老老实实地按照3max展平的UV高质量地烘焙出了整個场景的光照图一气呵成,无任何缺陷且总共用时7.5分钟。从前面的截图大家都已经看到整个场景没有任何烘焙缺陷,而且光影图非瑺清晰明暗层次分明。


由以上的图解可见lightmap UV的布局,的确会影响着烘焙的质量也就是合理的UV布局,不仅会加速烘焙而且可以提高烘焙质量,不合理的UV布局不仅会导致烘焙缓慢,而且很难保证烘焙质量
正是小姐姐在模型阶段采用了3dmax最优化低面数精简建模方法构建的整个场景,并在3d中排除了所有的重叠面同时在3d中合理地拆分(展平)了lightmap UV,所以在Unity3d中仅用了7.5分钟就快速高质量地烘焙出了整个场景当然,一些童鞋会说自己烘焙一些实例,也是几分钟完成了也没什么烘焙缺陷,那是因为你所用的案例模型都是很简单的并且经过优化處理的,当然烘焙很快而且没有任何问题,但是一换成实际的项目场景立即就卡住不动了,少则几个小时多则几天烘焙不出来。所鉯只要按照小姐姐上述的方法可在几分钟内快速完成实际项目的烘焙渲染。当然其中会涉及到一些经验

9. 分步/分批次烘焙渲染

一些童鞋嘚机器可能配置太低,整个场景一键烘焙可能吃不消或者烘焙太慢,此时可以分步烘焙渲染也就是一次烘焙一个或一组物体。有时只囿某些物体有烘焙缺陷通过分步/分批次烘焙,可避免无缺陷物体的重复烘焙时间下图所示为单独烘焙1层的情况下,仅用时2分多钟依照这样的方法,然后分别选择2层、3层进行单独烘焙每次只选择一个或一组物体来烘焙,前面已经烘焙完成的物体不会受影响这样不仅會减轻一次烘焙的机器负载,而且避开了一些物体的重复烘焙尤其是当某个物体烘焙出现问题的时候,可将排查范围锁定在所选择的物體内对于机器配置较低的童鞋,无需再为升级硬件支付额外的成本这个功能是小姐姐个人的一些经验所得。

烘焙渲染根据灯光和物体嘚状态可分为静态灯光下静态物体的烘焙、静态灯光下动态物体的烘焙、动态灯光下静态物体的烘焙、动态灯光下动态物体的烘焙四种對于早先从事3D动画的童鞋,肯定不理解为什么要有这四种分类呢因为动画只需将场景中的所有物体渲染成图片序列(视频),终端用户呮需要播放就可以了而VR和游戏是需要用户和场景进行交互操作的,两者的机理有本质的区别作为VR和游戏的开发程序,Unity自然有自己独特嘚烘焙渲染方式下面我们就这四种烘焙渲染方法一一展开讨论,为了简化问题我们设定一个比较简单的场景,如下图所示:

⑴ 静态灯咣下静态物体的烘焙

前面我们讨论的斯蓬扎宫的烘焙就是静态灯光下静态物体烘焙的典型实例之所以称之为“静态灯光下静态物体的烘焙”,是因为除相机外灯光的状态(位置、方位角、颜色、强度等)以及物体的状态(位置、方位角、比例、材质等)相对时间恒定不變,简单地说就是灯光和物体的状态不随时间变化。这种烘焙的设置前面提到过这里我们再讨论一下,其设置如下图即第一步先将產生阴影的主光源的灯光模式(Mode)设定为“baked(烘焙模式)”。第二步将需要烘焙的物体设定为“Static(静态)”如果不设定为静态,烘焙之後没有任何效果第三步将lighting(光照)面板中Realtime Lighting(实时光照)下的Realtime Global ILLumination(实时全局照明)选项取消勾选,保留Mixed Lighting(混合照明)下的Baked Global ILLumination(烘焙全局照明)选项嘚勾选然后进行必要的其他设置,烘焙上面的场景就得到上图的静态灯光下静态物体的烘焙效果
这种烘焙方式在烘焙完成后,所有直接光照和全局光照完全被转移到光照贴图中此时无论如何调整灯光(灯光强度、灯光颜色、灯光角度),甚至将灯光模式改为mixed或realtime或者勾选"realtime Global Illumination",都对场景无任何影响,也就是说这种方式烘焙的场景,运行时灯光是不能改变的(如下图所示)大家可以自己试一试。
有童鞋可能会问这种烘焙方式,场景中是不是不能有运动物体当然不是啦,只是运动物体就像被烘焙忽略一样没有任何光影效果而已,但运動在场景中是存在的并且保持着原有的运动效果,简单地说这种烘焙方式不适合有运动物体的场景。

下面是“斯蓬扎宫”应用这种方式烘焙的正午时分的截图其效果可以与Vray的渲染效果媲美,当然这需要一些经验

本想用视频向大家展示这种烘焙运行时的效果,折腾了恏多天可是这里不支持链接视频,而且Gif动态图像有5M限制所以没法在这里给大家展示,要看这种方式烘焙的场景运行时的效果可以去看视频。

⑵ 静态灯光下动态物体的烘焙

这种方式适合灯光静止且有运动物体的场景(如马路上行驶汽车的城市场景)为了演示静态灯光丅动态物体的烘焙,我们在上面的场景中添加一个Cube(立方体),用它来代替运动的物体它可能是一辆汽车、一个角色,或者是其他的運动物体总之,为了简化这里用一个运动的立方体来表示,位置如下图所示按照前面的概念,要烘焙这个立方体也得勾选“Static”,否则烘焙后没有效果所以选中这个立方体,然后勾选“Static”设定这个立方体为静态(运动的物体是不该设为静态的),然后重新烘焙整個场景
下面用一个Gif动态图像来看看整个场景烘焙后的情况:
由上图可见,立方体的烘焙是错误的:1. 立方体投射的阴影没有跟随立方体运動;2. 立方体所接受的阴影没有变化;3. 立方体进入暗区和亮区光照没有变化

由此可见,除了相机如果场景中有运动的物体,不适合使用靜态灯光下静态物体的烘焙方式而应改用“静态灯光下动态物体的烘焙”方式,具体步骤如下:首先将运动物体解除“Static”设定或者说,运动物体不要勾选“Static”选项;接下来将主光源的灯光模式(Mode)设定为Mixed(混合)模式;然后将lighting(光照)面板中Realtime Mode(光照模式)改为“Shadowmask(阴影遮罩)”这样实时光照的阴影就可以和烘焙阴影很好地融为一体(这里特别说明一下,所谓实时光照的阴影和烘焙阴影融为一体是指兩者阴影的亮度一模一样)。有些童鞋想用3dmax、C4D或Maya自带的烘焙模块来为Unity3d烘焙场景对于静态灯光下静态物体的烘焙,这是完全可以的但是┅旦有运动物体,就要用到实时光照此时实时灯光的实时阴影亮度很难做到与其他3D软件中烘焙的阴影亮度完全一样,当两者重叠在一起時实时阴影很暗,看上去就像挖了一个黑洞一样的感觉这个大家自己去试试就知道了,有了这样的尝试之后大家就理解什么叫“实時光照的阴影和烘焙阴影融为一体”的概念了,如果用其他3D软件来烘焙导入Unity3d后,阴影很难融为一体所以建议大家不要使用其他3d软件来烘焙Unity3d场景,免得白白浪费时间

Unity静态灯光下动态物体的烘焙设置步骤如下四图所示:
最后还需要为运动物体设定“Light Probe Group(光探测器组)”,用來收集运动物体可能到达处的环境光照信息以保证运动物体在不同位置的正确光照。也就是在Heirarchy面板的空白处右键点击在弹出的菜单中點击light下的“Light Probe Group(光探测器组)”,场景中就会出现带有四个顶点的立方体网格这就是光探测器。具体步骤图解如下:
下图为调整光探测器嘚过程其中需要不停地选择和使用“Duplicate Selected(复制选择的)”命令,然后移动顶点最终让光探测器的顶点密布运动物体的运动范围,范围比實际要大些
光探测器器布置好后,清除之前烘焙的数据(Clear Baked Data)然后重新烘焙(Generate Lighting),如下图所示:
重新烘焙后得到如下图所示的结果由圖可见,运动物体的光影这回正确了
这种烘焙完成后,改变灯光的光强度、颜色或角度以及运动物体的状态场景会相应变化,简单地說这种方式烘焙完成的场景,运行时可以改变灯光和运动物体的状态(但运动物体必须在光探测器组范围之内)如下图所示:
有童鞋馬上会问,不是在说静态灯光下动态物体的烘焙嘛灯光能改变,就不是静态灯光了是的,之所以演示这种烘焙后灯光可以改变是因為在实际应用中,肯定有童鞋会发现这个现象但是还是建议这种烘焙后不要改变灯光,因为会发生一些怪异的现象比如,场景中会出現双光斑和颜色不一致具体大家自己可以去尝试,正是因为这个原因所以小姐姐把这种方式归类到静态灯光之列,用于静态灯光下静態物体的烘焙并在运行时不要改变灯光。

下面是应用这种方式烘焙的“斯蓬扎宫”的截图要浏览这种方式烘焙的场景运行时的效果,鈳以去前面的网址看视频

⑶ 动态灯光下静态物体的烘焙 如果灯光在运行时需要改变且场景中无运动物体(如窗帘慢慢拉开时阳光投逐渐射进室内的照明、涵洞中的油灯照明等),就需要使用这种方式来烘焙这种烘焙方式的设置如下图所示:


下图是这种方式烘焙的效果及烘焙后改变灯光状态时场景的变化情况,由图可见这种方式烘焙的场景在运行时可改变灯光。
下图是应用这种方式烘焙的“斯蓬扎宫”嘚两张截图要浏览这种方式烘焙的场景运行时的效果,可以去前面的网址看视频

⑷ 动态灯光下动态物体的烘焙

对于灯光在运行时需要妀变且有运动物体的场景用这种方式来烘焙,设置方法与动态灯光下静态物体的烘焙设置相同如下图所示,所不同的是需要为运动物體设定光探测器组,方法同静态灯光下动态物体烘焙中的光探测器组的设定这种方式烘焙的效果如下图所示。
这种方式烘焙的场景在运荇时灯光也可改变详见上一方式中的动态Gif图。

下面是这种方式烘焙的“斯蓬扎宫”的截图要想浏览这种方式烘焙的场景运行时的效果,可以去前面的网址看视频

⑸ 四种烘焙方式的比较

上面只是和大家孤立地讨论了四种烘焙方式的设置和烘焙效果,下面对四种方式进行橫向比较以方便童鞋们对四种方式有更深入的理解,这里我们设定如下所示的场景墙壁、地面、四个球体为静态,四个立方体做活塞運动

Illumination)烘焙完成的场景,有同学肯定有点懵圈前面说的静态灯光下静态物体的烘焙从来没提到过运动物体,这个怎么会有运动物体呢其实这种方式是可以有运动物体的,只不过这里也为运动物体引入了光探测器组运动物体是用烘焙到光探测器组中的光照数据照明的,前面之所以没提运动物体是为了特别强调静态物体的“静态”!由下图可见静态灯光下静态物体的烘焙方式,静态物体表面的光影和AO非常精细烘焙结果相对其它方式来说,对硬件的开销最小但静态物体和动态物体表面均不会产生高光,且运动物体不产生投影运动粅体进入明暗区域表面只有明暗变化,并没有接受真正的阴影如果对于运动物体的光影要求不高,可优先采用这种烘焙方式
下图为静態灯光下动态物体的烘焙(Mixed+Baked Global Illumination)结果,由图可见这种方式烘焙的场景,除了静态物体的表面的光影和AO精细之外静态物体和动态物体均有高光,动态物体不仅接受阴影而且产生真实的投影,相对于上一种方式来说机器开销稍大一些,这种方式使用的最多的烘焙方式更囸:下图中注释“烘焙(Mixed)应为混合(Mixed)”。
下图为动态灯光下静态物体和动态物体两种烘焙方式的混合体这种方式烘焙,静态物体和動态物体表面均有真实的高光和阴影且灯光在运行时可改变,但静态物体表面的光影没有其它方式精细对于运行时需要改变灯光的场景,可采用动态灯光下静态物体的烘焙或动态灯光下动态物体的烘焙
好了,至此对于四种烘焙方式就和大家讨论完了

前面小姐姐以“斯蓬扎宫”日景的烘焙作为切入点和大家一起讨论了3D模型导入Unity3d的方法、Unity3d的简单布光和烘焙,并介绍了Unity3d常见的烘焙缺陷及其解决方案和加速烘焙的方法逐步深入到Unity3d的四种烘焙方式,通过实例的图解相信童鞋们对unity3d的烘焙已经有了进一步的理解。实际应用中除了日景的烘焙吔常常涉及到夜景的烘焙。下面还是以“斯蓬扎宫”的场景为例和童鞋们继续讨论夜景的烘焙。前面的例子都只使用了一盏模拟太阳的岼行光在下面的例子中将使用多盏灯光来烘焙。

和3D场景一样Unity3d的场景布光也要有主光源,也就是照亮场景的主要光源其作用除了点亮場景外,还起着主控场景意境和气氛的作用相信大家对“斯蓬扎宫”的场景强控已经很熟悉了,对于这个场景小姐姐认为夜景应保持┅份神秘和静谧,因此考虑在两层回廊布设适当适量的“宫灯”灯光颜色采用暖色调。

在场景中添加如下图所示的“宫灯”模型置于囙廊顶部,具体位置如下图所示

为“宫灯”模型添加对应的灯光将等类型设为点光源“Point”,灯光强度设为1灯光颜色设为橙色,灯光模式设为混合(Mixed)灯光范围设为9左右,为灯光设置Cookie并将灯光置于“宫灯”模型下部的地面附近,如下图所示:
将“宫灯”模型及其灯光┅起选中通过复制,每层左右两边各布置两组然后向二层复制四组,如下图所示:

烘焙后的效果如下图所示烘焙用时6.8分钟(408.155秒)
8个點光源共同作为主光源点亮了整个场景,各自产生了限定在一定范围包内的柔和阴影但是作为主景的狮头雕还不够突出,所以考虑在狮頭的上方布设两盏模拟射灯的点光源同时在狮头前方的地面上也布设一盏模拟射灯的点光源,三盏点光源共同作为场景的辅助光源一起點亮狮头但不宜过亮。具体设置如下图所示:
另外为了强调另一端的两个装饰鼎,分别在其附近各布设一盏点光源作为装饰性的辅助光,照亮场景局部具体设置如下图所示:
然后重新烘焙,结果如下图所示烘焙用时7.4分钟(448.196秒),要浏览这种烘焙运行时的动态效果可以去前面的网址看视频。

前面讨论了四种基本的烘焙形式但实际应用中,既有静态灯光又有动态灯光,既有静态物体又有动态粅体,这种情况下的烘焙就叫混合烘焙

前面的例子在烘焙时,要么只选择光照模式为Realtime Lighting下的Realtime Global Illumination要么只选择光照模式为Mixed Lighting下的Baked Global Illumination,而系统默认两項都被选择如下图所示,那么到底是该都选择呢还是只选择一项呢?下面给出官方的一段建议原文如下:

其意思是:使用照明系统朂灵活的方法是一起使用Baked GI和Realtime GI(也就是两项都选择),但是这也是性能最沉重的选择。为了减少资源和时间消耗您可以选择禁用Realtime GI或Baked GI(也僦是只选择一项)。

根据上面官方的建议静态灯光下静态物体的烘焙,静态灯光选择Baked的模式光照模式只选择Baked Global Illumination;静态灯光下动态物体的烘焙,静态灯光选择Mixed模式光照模式也只选择Baked Global Illumination,并为动态物体在其运动范围内添加光探测器组;动态灯光下静态物体的烘焙动态灯光选擇Realtime模式,光照模式只选择Realtime Global Illumination;动态灯光下动态物体的烘焙动态灯光选择Realtime模式,光照模式也只选择Realtime Global Illumination并为动态物体在运动范围内添加光探测器组。这样的匹配方式烘焙场景最节省硬件开销和时间但对于混合烘焙方式,静态灯光就选择Mixed模式动态灯光选择Realtime模式,也就是在一个場景的多盏灯光中有的灯光设为Mixed,有的灯光设为Realtime模式而光照模式Baked GI和Realtime GI两项都要同时选择,这样Mixed灯光自动对应Baked GI,Realtime灯光自动对应Realtime GI此时有童鞋會问了,不是说同时选择两种GI方式会增加硬件开销吗,为什么还要同时选择呢为了得到更真实的复杂光影效果,混合烘焙必须同时选擇两种GI但有方法来优化场景来缓解额外的硬件开销。
上面的意思简单地图示如下
对于一般用户来说静态灯光下动态物体的烘焙方式足夠用了,这是用的最多的一种烘焙

火车或汽车出入隧道、室内外出入、游戏角色出入涵洞、室内开关灯这样的场景,使用混合烘焙光感会更好。当然小姐姐个人认为使用前面所说的四种基本烘焙方式之一代替,也能获得好的效果

有了前面知识的铺垫,混合烘焙不再昰问题这里就不进行图解了,有兴趣的童鞋可以自己去尝试

下面以一个小客厅为例,和童鞋们一起讨论Unity3d的室内烘焙一方面是对前面知识的综合应用,另一方面满足以下做装修童鞋的学习需求

话不多说,开工!这个例子的3D场景如下图所示:
拆分好的UV如下图所示
导入Unity3d后嘚场景情况如下图所示:
这个场景比较简单一个窗户、一个沙发、一个茶几、一个书柜、两个落地灯、一个墙面装饰、还有一个挂画、茶几上一个杯子、两盆绿植,这里我们设想将场景烘焙成阴天的白昼气氛也就是没有直射太阳光,室外光线完全是大气折射的太阳光所以我们确定这个场景的主光源为从窗户投射的光线,可以使用Unity3d的面光源置于窗户附近但我们这里选用Unity3d的材质灯光,也就是将某个模型嘚材质勾选“自发光”这个模型就成了灯光了。选中窗户玻璃勾选其材质中的自发光(Emission),将自发光强度设为1.5发光颜色设为白色,洳下图所示:
因为这个场景不可能有运动物体光线也不会变化,所以选用静态灯光下的静态物体的方式烘焙场景所以将自发光材质的Global Illumination(全局光照)设为Baked,勾选光照面板中的“Baked Global Illumination”然后烘焙,得到如下图所示的结果(烘焙用时5分钟):
从上图可见场景太暗,但明暗关系巳经有了如果反复烘焙,太浪费时间我们设想通过photoshop来调色,需要说明的是这里所说的调色不是简单的图片调色,而是对整个场景调銫如下图所示,将一个特殊的色带文件与相机关联起来对这个文件调整,就会调整相机中的场景这样我们将这个文件(png图片)用ps打開,然后截取一张相机视图的图片按照图片调色的方法,对截取的图片调色然后将图片调整的参数应用于那个色带文件,保存色带文件后Unity3d的场景就回作相应的调整,关系就是这样
下面我们就来调色,首先抓取相机视图的图片然后在ps中打开,同时也将刚所说的色带攵件也用ps打开如下图:
首先调一下截取的相机视图图片的亮度和对比度,亮度88对比度-50,如下图所示:
然后对色带也做这样的调整如下圖所示:
然后保存色带文件,Unity的相机视图就会作相应的调整调整后如下图所示:
原理大家都明白了吧,这样就是以用ps灵活地为Unity3d场景调色叻只要Unity3d烘焙出场景的明暗关系,剩下的就交给ps了这样可以节省大量反复测试烘焙的时间。按照上面的方法对相机视图进行色相饱和度、色彩平衡等调整后相机视图的场景如下:
好了,场景调色就到这里

木地板应该有反射,所以我们需要引用Unity3d的“Reflection Probe(反射探测器)”茬层级面板空白处右键单击,在弹出的菜单中选择light下的“Reflection Probe”命令场景中会出现一个四面体线框,如下图所示在反射探测器的检视面板Φ按下节点命令,四面体的四个面上会出现黄色下把手拖动可以调节探测器的大小,按下探测器检视面板中的移动按钮可以调整探测器的位置,用这两个命令配合将探测器调至和房间一样大,或者说让探测器完全包络这个房间烘焙的时候,会将整个房间烘焙成一个仳较小的全景图贴在探测器上供具有反射的材质映射来实现真实反射。这里说明一下当场景比较复杂时,可以用多个反射探测器拼合來满足场景的外形场景中不需要反射的地方,就不需要布置反射探测器了
反射探测器布置好后,需要重新烘焙反射数据是通过烘焙獲得的。如果熟悉了烘焙之前就布置好反射探测器,免得重复烘焙烘焙之后结果如下
上图反射效果不太好,下面我们为木地板加一个實时反射效果如下:

现在我们将玻璃的材质灯光关闭,用平行光来模拟阳光重新烘焙(用时6分钟左右)并开启反射后效果如下:
在这個例子中引入了ps的后处理调色,以避免为达到好的色调和颜色及明暗对比反复烘焙浪费很多时间好了,这个例子就讨论到这

● Unity沙漠庭院烘焙

下面和童鞋们再讨论一个“沙漠庭院(The Courtyard)”的烘焙,也算是对Unity烘焙的综合应用其3D场景如下图所示:
因为拆分的UV比较多,这里就不仩图了导入Unity后的场景如下图所示:


日景烘焙,按下图设置模拟太阳的平行光和光照参数
为场景中模型灯设置材质灯光参数如下图这里苐二次用到材质灯光,然后点击光照检视面板中的“Generate Lighting”开始烘焙场景。
噔噔蹬蹬经历28分钟的烘焙,结果如下
这个场景是官方的没有提供3D模型,小姐姐想了很多办法才导出FBX文件面数高达300多万,测试烘焙了几次光照图好多都设到了,总有问题如下图所示:
那这些烘焙缺陷如何消除呢?前面小姐姐说过模型面数太多是导致烘焙缺陷的重要因素,因为同样分辨率的光照图模型面数越多,分配给每个媔的区块就越小模型面数越少,分配给每个面的区块就越大区块越大,光照图越清晰区块越小,光照图被拉扯得越严重缺陷就会樾多。下图为官方的模型:
下图为小姐姐用低面数最优化精简单面建模方法重新构建的模型(花了两天时间总面数50万,降低了6倍)
另外,小姐姐烘焙这个场景后发现模型的贴图有问题,如下图所示:
上面这些贴图问题其实是很多人经常遇到的现在我们回到3d中,看看3dΦ的情况如下图所示
由上图可见,3dmax场景打开后模型显示破破烂烂,这也是很多网友提问的问题网上解答的不是让修改显示驱动,就昰模型偏离原点太远小姐姐认为不是这些原因造成的模型破烂,按上图的标注勾选背面去除立即就消除了模型的显示破烂,如下图所礻:
由下图可见Unity中的问题在3dmax场景中也存在
另外,贴图的分辨率为精度很高,为什么在Unity中很虚呢这里不得不和大家讨论一下UV问题,通瑺情况下很多人在3dmax中习惯用UVW map来调整模型的材质贴图,对于简单的模型这种方法没问题,但是对于复杂的模型用标准的平面、圆柱、浗面等贴图坐标,横竖都不正确就像上面的图示一样,这种现象称为UV扭曲或拉伸这是不正常的贴图。要解决UV扭曲、拉伸或挤压必须掌握UV拆分(也称为“展UV”,通俗地讲就是展平UV)前面提到过拆分UV,一听到拆分UV很多童鞋一个头两个大,觉得拆分UV很难掌握这里小姐姐不想对拆分UV进行深解,只是通过对比让大家对UV拆分有个大概的概念。

为了找到上面例子中贴图被扭曲和拉伸的原因我们将模型的贴圖换成棋盘格,因为上面例子中的贴图不容易看出问题棋盘格材质是所有3D软件用来显示UV排列的一种方式。

下图是上面的实例场景模型贴圖换成棋盘格的情况
下面我们一块一块来图示分析
棋盘格的排列代表模型的UV坐标情况或者说棋盘格的排列是由模型的贴图坐标3d控制器的,棋盘格排列有问题贴图一定也会有问题。从上面的图解可见场景贴图的UV坐标是不正确的,棋盘格线性排列贴图纹理一定会朝一个方向;棋盘格错乱,贴图纹理也一定错乱;棋盘格扭曲贴图纹理也一定扭曲;棋盘格密集(挤压)或拉伸,贴图纹理一定会变虚因为拉伸會导致纹理被拉大,挤压会导致纹理皱皱巴巴这两种情况都会使贴图变得模糊。上面的图示中模型贴图局部密集相信大家都遇到过。

為了矫正不正确的贴图坐标模型必须使用3dmax的Unwrap UVW修改器进行手工UV拆分,或者叫手工展UV(展平UV坐标)如下图所示。对于材质的纹理贴图坐标使用系统自动拆分UV,常常是不正确的所以必须使用手工来拆分。对于使用C4D、Maya、犀牛、Su的用户也有相应的功能,这里就不赘述了
拆汾或展平的UV坐标是被保存在贴图通道中的,贴图通道设置在Unwrap uvw和材质面板各有一个如下图所示。
Unwrap uvw面板的贴图通道(Map Channel)用来设置拆分的UV坐标保存在哪个通道通道可以有8个。材质面板中的贴图通道(Map Channel)用来设置这个材质贴图的排列受哪个UV坐标的贴图通道3d控制器系统默认固有銫(或过度色)贴图受通道1(即Map channel 1)3d控制器,展UV(Unwrap uvw)修改器面板的贴图通道(Map Channel)默认是2因为一般情况下都是用UVW Map调整贴图坐标,这个UV坐标占據通道1有的童鞋使用展平修改器时,发现模型的贴图没有变化是因为展平修改器的贴图通道和材质的贴图通道不一致,模型的贴图没囿受到你正在使用的材质贴图展平UV的3d控制器如下图所示:
展平修改器一般情况下是用于3d控制器光照贴图的(也就是3d控制器烘焙贴图),咣照贴图默认占据通道2所以展平修改器的通道默认是2,有时因为模型的贴图坐标不正确需要手工拆UV,也就是需要使用一下展平修改器此时必须将通道改为1,这个大家必须注意否则拆了半天,材质贴图没变化

刚才小姐姐说,贴图通道可以有8个通道1默认是分配给材質固有色贴图的,通道2默认是分配给光照贴图的其他6个可以用来展平法线贴图、高光贴图、阴影贴图、AO贴图等等,一般我们只需要过度銫贴图和光照贴图两个通道

UV展平后有两种用途,一种用于美工在photoshop中绘制贴图另一种用于3d控制器纹理贴图,没有美术功底的童鞋当然鈈会绘制贴图啦,那就用展平的UV坐标来3d控制器纹理贴图好了

我们手工展UV是为了矫正不正确的纹理贴图,所以展平UV的贴图通道就改为1

展岼UV大家可以想象成拆盒子一样,要拆盒子得有缝,没有缝是拆不开的,拆UV一般也得有缝,UV缝可以系统自动定义也可以手工绘制,系统定义的缝经常不是我们所想要的所以对于3d控制器材质贴图的UV,我们一般都是手工来绘制拆缝的这里就不具体绘制拆缝了。拆缝绘淛好后就可以展UV了。展平UV修改器的展平方式很多如下图所示:
正确拆分(或展平)的UV,棋盘格应该是方方正正(长宽相等或近似相等)排列整齐,这样贴图贴上去才没问题如下图所示,绝对不允许排列错乱、扭曲、拉伸或挤压否则就像上面的例子一样。
另外在一個物体中对于一种材质,棋盘格的密度必须相等除非特殊要求。棋盘格的除了长宽相等、排列规整外还必须合理,什么是合理呢唎如下图中的回转体,网上很多例子都将其端面的棋盘格排列成下图所示:
小姐姐个人认为回转体的端面应该让棋盘格绕环向(或圆周方向)排列,为什么呢假设这个物体是个木头,端面的纹理应该是一圈一圈的年轮按照上图的排列,木纹贴上去纹理肯定是线性的,这是不正确的再假设这个物体是一个机械零件,端面的纹理应该是车削加工的刀纹一圈一圈的,按照上面的排列金属纹理贴上去,也不会又一圈一圈的刀纹而是线性纹理,这是不合理的UV拆分为什么在这里要强调这个问题呢,因为我们前面所讨论的场景好多UV坐標有问题的物体就是回转体。

小姐姐对上面例子的模型重新拆分贴图UV并使用“条带展平”拆分后得到下图所示的效果,错误的UV坐标得到叻矫正而且上下面的棋盘格沿圆周方向排列,这才是合理的如果贴上砖纹,纹理自然会环向分布由图可见,UV坐标消除了错乱、扭曲、拉伸和挤压
同理对其他有问题的模型重新拆分贴图UV后,效果如下:
通过手工拆分UV之后错乱、扭曲、拉伸的UV得到了矫正。这里说明一丅对于一个物体,材质相同的部分除了UV坐标正确、合理之外,棋盘格大小必须一致也就是UV坐标的密度必须相同,如果UV密度不同就潒你的手心手背一样。另外同一场景中的不同物体如果材质及贴图相同,UV密度也必须相同这样才看上去协调。

那么如何让一个物体的所有面的UV密度相同呢按照下图所示的方法来完成:
一个物体各个面的UV密度统一了之后,那材质和贴图相同的不同物体如何统一呢很简單,选择每个物体点击上图中第六步的图标,所有物体的UV就全部均匀一致了如下图所示:
将贴图去换回原本的贴图后,贴图不再有错亂、扭曲、拉伸和挤压现象了如下图所示:

UV正确拆分后,不需要太高分辨率的贴图就可以让模型的贴图很清晰贴图分辨率太高,烘焙囷实时运行时机器负载太大

手工拆分贴图UV后,也可以将其应用于光照贴图这就需要通过贴图通道的复制将材质贴图的UV复制给通道2,当嘫也可以用机器自动展平光照贴图的UV

好了,废话就说到这里矫正了模型的贴图坐标之后,下面我们就来重新烘焙上面的例子,按之前设萣的参数重新烘焙后结果下(有时约12分钟):
添加灯光辉光和地面模糊反射之后的效果如下:

由图可见,先前的问题都已经消除掉了

這个场景的夜景烘焙后续会补充,下面大家一起来看看一个小区室外场景的烘焙

这个案例的3D场景截图如下所示这个场景原本900多万面,小姐姐用单面建模方法重新构建模型只用了4.5万面,用于VR和游戏的场景必须用精简建模以保证手机端的流畅运行。
在3D软件中拆分每个物体嘚UV于通道2一般童鞋一个物体拆分一个UV,实际上多个物体可以共享一个光照图的UV也就是选中多个物体一起拆分,得到一个UV这样这些物體就共享一个UV了,拆分好UV后倒入U3D如下图所示:
这个场景日景的灯光比较简单,用一盏模拟太阳光平行光作为主光源并勾选阴影,用天咣和环境光作为辅助光源弥补主光源的盲区其他参数按前面例子的方法设置,有前面知识的铺垫相信大家可以自行完成烘焙的相关参數设置,小姐姐烘焙完成的结果截图如下(用时12分钟):
烘焙完成后大家可按照前面小姐姐介绍的方法用ps对场景进行润色当然不是对图爿调色,而是借用图片的调节来调整整个场景的颜色,以避免在Unity中重复烘焙这里小姐姐就不上图了,相信大家都可以自行完成这个操莋的

这个场景的夜景灯光相对来说比较复杂,小姐姐设想以建筑的亮化霓虹灯和路灯共同作为主光源照亮场景用射灯作为辅助性装饰輔助光点缀建筑,同时用微弱的天光和环境光也作为辅助光照亮建筑的边缘灯光布设截图如下:(待续)

下面小姐姐和大家一起讨论一丅游戏场景的烘焙,当然也适用于VR场景有的童鞋可能会问,为什么老讲场景烘焙因为场景的烘焙和后处理是Unity作品的生命线,无论你的莋品功能再强大如果视觉效果太差,立即就被用户否掉了这就如同每个人的颜值,没有好的视觉效果别人是不会给你机会的,游戏囷VR场景的烘焙和后处理恰恰是决定作品视觉效果的命脉因此掌握烘焙和后处理对于使用Unity3d开发游戏和VR作品的从业者来说至关重要。

在讨论遊戏场景的烘焙和后处理之前小姐姐下面想和大家先探讨一下网上很多人经常提问的Unity3d场景卡顿、烘焙质量差和烘焙超慢的问题,因为这些问题常常都是模型引起的因此我们就从模型说起。

1. 模型阶段造成U3d光影烘焙问题和实时运行卡顿的因素探讨及消除方法

需要说明的是Unity3d洎身不具有建模功能,尽管有一款可以在Unity3d内建模的插件但其功能与流行的专业3D建模软件相比,简直弱爆了因此小姐姐还是建议大家使鼡自己熟悉的专业建模软件来构建3D场景。

前面的例子中小姐姐曾经提到模型的面数太高,会影响光影烘焙的质量原因是当模型的UV2(光照贴图UV通道)被展平为指定分辨率的贴图坐标时,模型面数太高只有每个面都适当缩小才能容纳到贴图坐标中,而这样的缩小使得一些面小到其所占据的UV空间不足于完全表现其所接受的光照时,那么这些面的光影就会集聚成黑色块、灰色块或白色块光照贴图回贴到模型上时,就出现了黑斑、白斑、硬边等缺陷同时因为每个面的UV空间太小,而光照图被过分拉大而使模型上的光影看起来很虚如果模型媔数被大幅降低后,相对于高面模型来说模型的每个面不需要缩太小就能完全容纳到同样分辨率的贴图坐标中,简单地说低面模型比高面模型展平后每个面所占的UV空间要大得多,这样就可以让每个面所接受光影的黑灰白过度完全呈现而不至于集聚成黑色块、灰色块或皛色块,也就不会出现常见的烘焙缺陷同时没有因为光照图被过分拉大,模型上的光影图看起来就很清晰另外,模型面数越高烘焙過程中的渲染计算量越大,烘焙就越缓慢明白了这个道理,大家就应该知道小姐姐为什么要反复强调降低模型面数了通俗地讲,模型媔数越高烘焙质量越差,烘焙越缓慢反之,模型面数越低(越少)烘焙质量越高,烘焙越快因此,要得到好的烘焙质量和提高烘焙速度必须大幅降低模型面数。

说到模型面数对烘焙质量和烘焙速度的影响那么小姐姐不妨将话题展得再开一些,也就是模型面数不僅仅只影响烘焙质量和烘焙速度而是贯穿从建模到Unity3d作品实时运行的整个过程,为什么这么说呢且听小姐姐慢慢道来。

习惯实体建模的童鞋一定有这样的经验,当场景的规模比较大时随着模型的越建越多,场景越来越卡卡到以至于建模进程推进非常困难,甚至鼠标點一下得等好长时间材质贴图和场景的编辑操作慢的让人心烦,展平UV贴图坐标更是慢的出奇当然一个比较大的场景一般是多人协同作業,但是最后总要合并到一个场景中的卡顿还是不可避免的,好不容易完成了整个场景的构建在导出FBX格式文件时又卡住不动了,最后呮好分批导出到了Unity3d中,和在3d软件中一样场景的编辑操作也变得非常卡顿,硬着头皮终于完成了Unity3d的场景搭建实时运行时又被卡住了,發布后的作品就更不用说了有的童鞋说,自己的机器配置很高不存在卡机问题,可是发布后的作品不是在你自己的机器上运行而是偠在配置不高的用户机或者手机、网页端运行,所以不大幅降低模型面数会影响从建模到作品发布后的所有过程,换句话说用于Unity3d的模型,必须最大限度地降低模型面数要降低模型面数,得从建模一开始就采用最优化的低面数精简单面建模而不是等用实体建模完成后財设法减面。实体建模后的减面是被动的而且这种减面容易造成破面和贴图错乱。

接下来小姐姐用图解给大家展示一下单面建模的优越性:

下面第一张图所示的场景是用实体建模构建从截图左上角的统计数据可见,场景的总面数为9949281将近1000万个面,如下第一张图所示场景的编辑操作非常卡,想用边线显示一下半天切换不过来如此多面的场景导入Unity3d,别说烘焙和实时运行了就光场景的编辑操作都困难。丅面第二张图是孤立显示的这个场景中的一个模型从第二张图左上角的统计信息可见,这个单个模型的面数为339870将近34万个面,这么高面數的单个模型对于所有引擎来说都是吃不消的。下面第三张图是使用3dmax最优化低面数精简单面建模方法重新构建的这个场景的模型截图甴第三张图左上角的统计信息可见,这个场景重建后的总面数为405376即40多万个面,大幅度降低了模型面数相比重建前面数缩减了20多倍。下媔第四张图是重建后第二张图所示对应的模型截图由第四张图左上角统计信息可见,这个模型的面数为20593即2万多个面,比重建前(下面苐二张图所示)缩减了15倍由此可见,要大幅度降低模型面数必须采用最优化低面数精简单面建模方法 。有的童鞋会说自己就不需要鼡单面建模,而是用一些减面的修改编辑器一样可以减面,没错修改编辑器是可以减少模型的面数,但是这种减面方法是被动的减媔效果没有单面建模的减面效果好,甚至会导致模型破面或畸形所以小姐姐强烈建议用于Unity3d的模型最好采用反复强调的最优化低面数精简單面建模方法构建,这里小姐姐用的是3dmaxMaya、Cinema4D等其他3D软件也都有对应的单面建模方法,大家可以自己去网上找
再展示几张采用3dmax最优化低面數精简单面建模构建的单个模型的截图,从下面的几张截图可见单面建模构建的模型边面非常规整,场景编辑操作流畅不像实体建模構建的模型那样,边面交错、密集视图操作卡顿。
在采用最优化低面数精简单面建模时除了用合理的poly布线来降低模型面数,一些不重偠的模型还可用贴图来简化例如门窗、护栏、围墙和比较费面的结构,使用贴图简化模型是降低模型的面数另一条途径如下面这些截圖所示:
3d场景和Unity3d场景中的卡顿除了模型面数太高所致,材质、贴图的数量太多和贴图分辨率太大也是造成卡机的重要因素对于需要重复貼图的材质,如果纹理相差不大尽量使用同一材质,同时尽可能使用分辨率较小(如128x128)的高清晰度无缝贴图有的童鞋在使用重复贴图時,往往不注意无缝贴图的分辨率找来就用,例如常用一张、或作为重复贴图用于材质然后通过调整UV让纹理缩小,结果和128x128的纹理效果唍全一样但是大尺寸和小尺寸的贴图所消耗的机器资源相差非常大,所以小姐姐强烈建议使用小尺寸(也就是小分辨率如128x128)的无缝纹悝作为重复贴图,这样可以从重复贴图的角度消除卡顿而对于无需重复贴图的材质,例如广告牌、指示牌、护栏和围墙及铁艺、百叶窗嘚镂空贴图小姐姐建议这些模型使用同一种材质,并将所有纹理合并到一张贴图中如下图所示,这样就可以使多个使用不同非重复纹悝的物体或者物体的面使用同一种材质不仅减少了材质的数量,也减少了贴图的数量更重要的是在unity3d作品启动时会更快,因为这些物体呮需要加载一张贴图如果不这样,而是每个物体使用各自独立的贴图加载会非常慢,这时有童鞋会问不同物体使用同一种材质,而苴每个物体贴图也不一样这怎么弄呢,这就需要使用手工拆分UV1(材质贴图默认占据一号UV通道)也就是手工展平UV1,即将物体的UV手工调整箌这张贴图中这个物体需要的对应贴图区域这样就可以进一步消除因为重复纹理太大、非重复纹理数量太多和材质数量太多所造成的卡頓,当然这部分是在单面建模过程中需要做的
好了,建模过程中有关消除卡顿、提高烘焙质量和加速烘焙的一些因素就说到这里另外,在单面建模完成后需要对每个物体进行顶点焊合,消除孤立顶点和断点否则导入Unity3d后会出现模型的撕扯和贴图错乱。最后还要排查重疊面和重叠顶点否则也会影响烘焙质量和烘焙速度,这个前面已经讲过这里就不赘述了。

2. Unity3d场景的视锥剔除、遮挡剔除、和LOD优化及模型階段的预处理

在建模软件中完成以上的操作之后小的场景已经很流畅,但是对于大规模的场景尽管从建模、材质、贴图三个方面进行叻优化,可导入Unity3d实时运行时有时还会很卡此时就需要使用Unity3d的视锥剔除、遮挡剔除、和LOD技术对Unity3d场景进行进一步优化。要使用视锥剔除、遮擋剔除、和LOD技术得在3d软件中对模型做一些预处理,因为这些预处理会改变模型因此需要在拆分UV2之前完成这些预处理。另外需要说明一點有的童鞋可能因为没有这些概念,就直接跳过这一步去Unity中烘焙场景了等烘焙完了,才意识到场景的卡顿需要应用视锥剔除、遮挡剔除、和LOD技术那么所做光影烘焙就全白做了。

下面小姐姐就结合这个例子的游戏场景来讨论视锥剔除、遮挡剔除、和LOD技术及其在3d软件中的預处理

下图所示为这个游戏场景的3dmax模型截图:

什么是“视锥剔除”呢,首先我们需要先搞清什么是“视锥”如果有3d软件的使用经验,夶家应该知道3d软件中相机视野(也称视域)范围的空间形态是一个四棱锥如下图所示:
视锥就如同人眼睛的视野一样,视野以外的区域称為盲区我们把这个空间形态为四棱锥的相机视野就称为“视锥(Frustum)”,视锥也就是相机的视野那么什么是视锥剔除呢,大家都知道Unity3d嘚场景最终是通过相机来呈现的,或者说是通过相机来浏览或渲染的为了减轻相机的渲染负担,引用了“视锥剔除(rustum Culling)”的渲染机制吔就是让机器只渲染相机视野以内的物体,视野以外的物体会被忽略计算我们把这种物体处于相机视锥以外时被忽略计算的场景优化机淛就称为“视锥剔除”,视锥剔除通过忽略视锥以外物体面数和贴图的计算来减轻相机的渲染负担从而进一步加速实时运行,为了让大镓理解视锥剔除、遮挡剔除、LOD优化小姐姐胡乱构造一个简单的场景,如下图所示:
当运行这个场景时Unity会自动启用视锥剔除,我们在相機视图是看不到视锥剔除的情况但视锥剔除确实是在起效,为了让大家看到视锥剔除的直观效果我们将相机视图和场景视图同屏显示,如下面的GIF动画所示左边是相机视图,右边是场景视图由右边的场景视图可见,Unity运行时无论相机移动还是旋转,相机视锥以外的物體都被忽略了渲染计算也就是被剔除掉了,只渲染计算视锥以内的物体以此来加速实时运行。与此同时我们由左边的相机视图可见,并没有因为Unity启用了视锥剔除而发生物体显隐的突变
在视锥剔除中,那么什么叫物体处于视锥以内呢Unity3d用物体的最大边界盒来判定这个粅体是否在视锥以内,也就是只要物体的最大边界盒有一个点处于视锥以内就认为这个物体进入了视锥,或者说叫这个物体处于视锥以內了相反,只要物体的最大边界盒没有一个点在视锥以内就认为这个物体不在视锥以内了。简单地说Unity3d是把物体的最大边界盒作为了3d控制器物体渲染与不渲染的触合开关,因为计算物体的最大边界盒要比计算物体本身快得多有了这样的认知之后,我们可将物体的最大邊界盒是否处于视锥以内的概念替换为物体的一个顶点是否处于视锥以内的概念来理解会更接近大家的自然思维,即只要物体的一个顶點处于视锥以内Unity就认为这个物体全部处于视锥以内。相反只要没有一个顶点处于视锥以内,Unity就认为这个物体全部处于视锥以外此时,有的童鞋会说那要是一个物体只有很小一部分在视锥内,大部分在视锥之外按刚才的说法,在视锥之外的那部分也会被认为在视锥鉯内了而这部分实际就不在视锥内,机器计算这部分有点多余了而且会因为这部分没有被剔除而卡顿,是的要不让机器计算这部分哆余的物体,就需要我们在3d建模软件中针对“视锥剔除”优化技术事先对高面数的物体进行合理的拆解或切分也就是我们在前面所说的預处理。

另外有些童鞋也会问,Unity官方的文档说相机的视锥剔除是自动开启的,可以不用管小姐姐这么啰嗦有什么意义呢?问题就在這儿如果小姐姐不啰嗦,一些童鞋就不知道视锥剔除对自己的场景根本不起作用!因为有的童鞋建模时习惯把很多物体合并(Attach)成一個Poly网格模型,尤其是面数比较多的石头、篱笆、植物等看似在建模软件中可以加速场景的编辑操作,但是到了Unity3d中就如同上面说的那样,会因为高面物体处于视锥以外的部分与视锥以内的部分为一体所以视锥以外的部分不能被剔除,尽管视锥剔除是自动开启的可压根僦不起作用,从而造成实时运行依然卡顿此时就需要如上所述,在建模软件中将高面物体进行合理的拆解切分

Unity的视锥剔除优化除了要求在3d软件中不能合并那些零碎多面的模型外,有时也得把一些多面的其他poly网格模型切分(Detach)或拆解成多个网格模型另外,Unity3d有个硬性要求即每个mesh(网格模型,也就是我们前面所说的poly网格模型即一个物体)的最大顶点数(Vertices count)不能超过65556,有的童鞋不管三七二十一将整个场景合并成了一个物体,或者将多个物体合并在了一起导入Unity3d时报错,就是因为导入的模型中有顶点数超过这个数值的模型,而有的童鞋說它的模型顶点数比这个数值小很多,导入时还是报错这是因为Unity导入时会对模型进行些微的重构,此时Unity会自动添加一些顶点当顶点數超过了上限值时会报错。这个上限值可以作为模型拆解的参考对于不连续(也就是分离)的mesh,直接拆解就可以了对于连续(也就是無缝固连在一起)的mesh,拆解时尽量将切缝选在比较隐蔽的转角处以免烘焙之后出现接缝。

⑵ 针对视锥剔除的模型预处理

有了上面的概念我们就来对这个游戏场景的模型在3d建模软件中进行视锥剔除的预处理:

远景为三个山体,如下面第一张图所示每个山体的面数均为3842,頂点数为1954如下面第二张图所示,这三个山体的面数都只有不到4k比较低,顶点数远远小于上限值所以原样保留,无需拆分有些杠精會问,那能不能把这三个山体拆分成面数和顶点数更少的物体呢这样来说吧,一个西瓜没法整个吃下去我们得切分成小块,切分的原則得方便手持和口咬但你非要切成细小的渣渣,谁也没办法可是你觉得这样吃起来方便吗?小姐姐个人的经验认为面数5k左右的算是媔数不多的模型,当然有时23万的面数也不是问题,但是超过3万以上面数的模型就得考虑拆解。所以这些山体就保持原样不动吧
近景囿多个大块的石头,如下面第一张图所示其中面数最多的石头的面数为5866,顶点数为3045也远远小于上限,如下面第二张图所示所以这些石头不用切分成小块,但是如果有人想把这些石头合并成一个物体导入unity时,可能会因顶点数超上限而报错因为这些石头的顶点总数已經达到42832了。
近景中还有一些石头阶梯如下面第一张图所示,其中面数最多的阶梯的面数为5403顶点数为3018,也可以不用拆分当然不能合并,原因就不说了
我们还可以看到场景中有一些类似木桥的墙板,如下面第一张图所示其中面数最多的墙板的面数为5226,顶点数为2861如下媔第二张图所示,和上面一样无需拆分,也不能合并
另外还有如下图所示的木板,我不知道这个应该叫什么这些物体的总面数才8k多,总顶点数才4k多一样无需拆分,也不要合并
木门的面数只有3760,顶点数只有2248如下图所示,和前面一样不用拆分,也不要合并
下面苐一张图所示的是一些篱笆或者叫做栅栏,其中面数最多的栅栏的面数为20682顶点数为36384,如下面第二张图所示面数有些高,我们可以考虑將这个物体拆分成4到5个小的物体但是我们看到这个篱笆由6段组成,我们干脆就将这个物体拆解成6个物体每个小物体的面数大概在3k多左祐,具体就不拆解了大家可以自己去拆分。其他栅栏的面数均为3448顶点数为1788,如下面第三张图所示无需拆分,也不要合并
下面第一張图所示为一些木桶,其中面数最多的木桶的面数为12636顶点数为6800,面数有些高如下面第二张图所示,可以考虑拆分成三个小物体其他嘚面数大于5k的,也可以适当拆分
下图所示的石头的总面数只有3k多,就保持原样不拆分了也不要合并。
剩下的就是这个场景中最主要的┅些物体有木屋和木塔,如下面第一张图所示其中面数最多的木屋的面数为64721,顶点数为36489如下面第二张图所示,顶点数虽未超上限泹是面数有点高,可以拆分成多个小的物体面数最高的部分是一层的圆木墙,每面墙的面数为4011如下面第三张图所示,所以将这四面墙各自拆分成独立的物体二三层的墙面面数也都比较高,也和一层一样将四面墙拆解出来。剩下的屋顶只有几k就不再拆分了。
另外丅面第一张图的中心区域我们计划用一个略微起伏的地形来填充,如下面第二张图所示这个地形在3d软件中来构建比较困难,而且贴图如果用3d软件的混合材质来贴Unity3d根本就不兼容,所以我们还是选择在上面的模型导入Unity3d之后在U3D中通过画笔涂刷来构建这个地形和为这个地形绘淛贴图。地形的面数一般比较高如果坚持用3d建模软件来构建这个地形,导入Unity后这个地形不具有u3d涂刷地形的自动优化功能,而Unity3d的地形会根据与相机的距离自动简化地形网格如下面第三张图所示。
按照以上的方法和步骤对场景中一些高面模型进行适当拆分后将其导入Unity3d,無需再做设置实时运行时会自动剔除视锥之外的物体,也就是忽略视锥以外看不见的物体及其贴图的渲染计算从而加速运行。

在建模軟件中对高面模型合理拆分后Unity运行时,会自动通过剔除视锥以外的物体来加速运行此时一些聪明的童鞋会想到,沿着相机的视线方向看过去常常会有一些物体完全被挡在距离相机较近的物体后面,让机器渲染计算这些物体及其贴图似乎也是一种负担,没错确实如此,因此Unity3d引入了“遮挡剔除”的渲染优化机制,也就是让机器在视锥剔除的基础上再忽略被挡住物体及其贴图的渲染计算更进一步加速实时运行。小姐姐用下面Gif动画给大家展示一下遮挡剔除的优化效果
和视锥剔除一样,在相机视图中也是看不到遮挡剔除的情况但是吔确实是起效的。所以我们还是将相机视图和场景视图同屏显示如上GIF动画所示。因为视锥剔除是自动启用的无法禁用,所以在使用遮擋剔除优化时会和视锥剔除优化叠加,由上面的GIF动画右边的场景视图可见视锥内被渲染计算的物体比前面仅启用视锥剔除时少了很多,两者相差的部分就是被遮挡剔除优化剔除掉的物体由左边的相机视图可见,遮挡剔除和视锥剔除共同作用下也没有任何物体显、隐的突变

遮挡剔除不像视锥剔除那样会自动启用,而是需要在Unity3d中进行一些设置然后进行遮挡数据烘焙(这里的烘焙与光影烘焙不是一回事)后才可起效。需要说明的是遮挡剔除分静态物体和动态物体的遮挡剔除,详细可参看小姐姐的CSDN博客文章-这里就不赘述了

下面的GIF动画昰实际工程应用视锥剔除和遮挡剔除优化的情况,我们依然将相机视图与场景视图同屏显示来观察优化效果
下面的GIF是上图中右侧场景视圖的放大显示:
遮挡剔除也是根据物体的最大边界框是否被其他物体的最大边界框完全挡住,来确定物体是否被剔除所不同的是,它是沿着相机视线方向剔除视锥以内,且被距相机最近物体完全遮挡住的物体

⑷ 针对遮挡剔除的模型预处理

和视锥剔除一样,遮挡剔除的模型预处理也需要在3d建模软件中来完成而且视锥剔除的模型预处理完全适用遮挡剔除,另外根据遮挡剔除的特点在3d场景的布局时,尽量将高大的模型布置在场景的中心以便相机从任何方向浏览时,都能遮挡比较多的物体或者将面数相对较高的物体拆分成多个物体,使拆分后的物体能够被一些物体遮挡

由于这个游戏场景比较小,没有较大的物体虽然远景的三个山体较大,但面数都比较低所以就鈈用拆分了。

有时由于场景中物体的布局比较松散物体相互遮挡比较少,此时应用遮挡剔除的优化效果不明显为了弥补这一缺陷,Unity3d引叺了LOD(Level Of
Detail细节等级)优化为了让大家理解LOD优化,小姐姐举个生活中大家熟知的例子相信大家一定有送亲友离别的经验,当亲友在你身边即将离开时他的面部表情、神态、肢体、着装都可以看得很清楚,当亲友离开一定距离时只能看到他的头发和衣服颜色,表情、神态囷着装细节已经看不清了再远一些,只能看到他的肢体轮廓更远一些,他的形体集聚成一个小黑人最后消失在视野中。我们来分析┅下这个过程无论亲友离你多远,他的面部形态、肢体形态、着装及他的身高等都是不变的只是随着距离变化,一些细节视觉已经无法分辨了而已如果用一个3d角色(模型)来表现,反正远处也看不清细节不如将模型简化一些,贴图缩小一些这样既不影响视觉效果,还能减轻机器负担LOD就是利用这样的思路,来优化(加速渲染计算)视锥中经视锥剔除和遮挡剔除优化后剩余的物体具体地说就是根據物体与相机之间距离的增大,让物体及贴图使用不同的简化版本下面的GIF用一个球体简单地展示了LOD的优化原理,近处用面数比较多的球體稍远一点,用一个面数比较少的近似球体更远处用一个面数更少的几何体,再远就直接剔除掉我们把距相机不同距离范围所对应嘚模型及贴图称为细节等级,LOD一般可有3-5个细节等级分别为LOD0、LOD1…LOD4,默认为3级即LOD0、LOD1…LOD2,LOD0为最高级即模型面数最多、贴图分辨率最高,LOD2或LOD4級别最低即模型面数最少、贴图分辨率最低。
在LOD优化过程中这几个球体会平滑切换,下面我们将这几个几何体拉开看看如下面第一張图所示,而实际上LOD的多个模型版本是在同一位置的如下面第二张图所示。
⑹ 针对LOD优化的模型预处理

一般情况下需要LOD优化的模型,得茬3D建模软件中预处理每个细节等级对应的模型和贴图这个模型可作为LOD0,然后原地(也就是同位置)复制两个这个模型分别简化(减面囷缩小贴图)为两个版本,即LOD1、LOD2LOD2的面数和贴图要小于LOD1,完成所有需要LOD优化的模型的预处理及其他预处理就可导入Unity3d中对每个需要LOD优化的模型进行设置了。

在Unity中对需要LOD优化的每个高面模型分别添加LOD Group组件如下图所示,一般高面模型默认为LOD0,选择LOD1将LOD1对应的的模型添加到LOD1,如下媔第二张图所示以此类推,选择LOD2将LOD2对应的的模型添加到LOD2,如下第三张图所示之后鼠标调整LOD的相机距离范围。按同样的方法为其他需偠LOD优化的模型进行LOD Group组件设置
LOD可用于所有需要LOD优化的模型,但一般主要用于数目较多的植物、石头之类的高面模型 下面的GIF动画展示了speedtree树朩在Unity3d中的LOD优化,我们截取其中一帧进行图解见下面第二张图所示。
由上面第二张图的解析可知LOD是通过降低被视锥剔除、遮挡剔除优化の后,视锥内剩余且使用LOD优化的高面物体在相机运距范围的面数和贴图大小,及超出最远距范围时剔除物体来缓解渲染负担,以加速實时运行当相机前进时,使用LOD优化的不同物体的细节等级由当前值动态升高即从LODn向LOD0动态逐级平滑切换,或者从解除剔除向LOD2至LOD0逐级切换当相机后退时,使用LOD优化的不同物体的细节等级由当前值动态降低从LODn向LOD2动态逐级平滑切换,直至超出LOD2的距离范围自动剔除

LOD优化正是利用物体与相机的距离增大时视觉逐渐模糊和距离减小时视觉逐渐清晰的现象,让处于不同相机距离范围的不同物体使用不同的细节等级并动态地升高或降低细节等级、剔除、解除剔除,这种模型面数和贴图大小的动态布局使相机的渲染计算量大幅减小。如果不理解峩们可以用反向思维来推理,也就如果不使用LOD优化那么无论物体距离相机多远,视锥内的高面物体的面数都保持不变也没有物体被剔除,此时视锥内物体的总面数远远大于使用LOD优化后的值视锥内所有物体的贴图所消耗的显存也远远大于使用LOD优化后的值,运行时要比LOD优囮后卡顿LOD优化的优势由此可见一斑。

好了关于最优化低面数精简单面建模、视锥剔除、遮挡剔除和LOD优化就说到这里,有的童鞋可能会疑惑为什么用这么多篇幅讲这些呢?因为很多人在烘焙完场景之后才发现运行很卡顿,如果没有这些概念想解决卡顿,根本无从下掱等搞清楚解决卡顿需要这些知识点时,得返回到建模软件中修改模型模型改变了,场景得重新烘焙此时,前面光影烘焙所花费的時间就全部浪费了所以小姐姐不得不在烘焙光影之前,用很多的篇幅把解决卡顿的优化途径给大家作个交代请大家谅解。下面我们一起讨论一下这个游戏场景的UV2拆分(也就是光照贴图UV坐标的展开)最前面的例子已经讨论过在建模软件中拆分UV2的意义,这里就不赘述了其实拆分UV2也可算作一种优化方式,即可提高烘焙质量和烘焙速度另外需要强调一点,模型的改变会使已经拆分的UV2发生错乱,所以必须茬视锥剔除、遮挡剔除、LOD优化预处理完成之后拆分UV2

3. 光照贴图UV坐标(UV2)拆分

大家都知道,光照贴图和材质贴图一样得有3d控制器贴图的UV坐標,默认的光照贴图通道为2号通道即UV2,就是常说的第二套UV材质贴图的UV坐标,默认为1号通道即UV1,UV1和UV2互不干涉没有光照贴图坐标,烘焙后的光影会错乱Unity3d自身的UV2展平功能有致命的缺陷,所以建议大家在建模软件中展平UV2(也就是拆分UV2)下面小姐姐和大家一起在3dmax中拆分一丅这个游戏场景模型的UV2。

前面小姐姐提到在建模软件中拆分UV2也是一种优化方式,之所以这样说其一是因为建模软件拆分的UV2永远比Unity3d效果恏,Unity3d官方也建议最好在建模软件中拆分其二是在建模软件中可以让多个物体共享一个光照贴图的UV坐标,也就是将多个物体展平到一个光照UV(UV2)中这样可以减少光照贴图的数量,使Unity3d作品的加载启动和实时运行更快

OK,下面就来拆分首先选择三个山体,然后将其群组并命名为“shanti_4096”,然后选择这个群组并展平UV2因为这三个山体比较大,所以设置其UV2的分辨率大一些这里设为,如下图所示然后隐藏这个群組,以免忘记哪些已经拆分哪些没拆分。
接下来选择所有的大石头并群组,命名为“dashitou_4096”然后拆分这个群组的UV2,设置分辨率为如下圖所示,然后隐藏这个群组
接下来选择下图中的几个房子群组,并命名为“house1_4096”然后拆分这个群组的UV2,设置分辨率为然后隐藏这个群組。
下面再选择下图中的几个房子打组并命名为“house2_4096”,然后拆分这个群组的UV2设置分辨率为,如下图所示然后隐藏这个群组。
最后选擇剩余所有物体成组并命名为“others_4096”,然后拆分这个组的UV2设置分辨率为。
通过上面的步骤我们将这个游戏场景所有模型光照贴图拆分荿了5个UV,拆分UV2总共用时50分钟这里需要说明一下,小姐姐所用的UV拆分方法比传统方法快十几倍传统方法拆分一个光照UV花费几个小时也是瑺事,甚至长达几十个小时所以正确的方法对提高工作效率非常重要。

从上面的截图可见在建模软件中拆分UV2,可充分利用UV空}

乐乐捕鱼3D游戏是一款可以为玩家帶来超好竞技体验的棋牌平台玩家可以在这里自由的结交更多的牌友,酷炫的海底世界丰富的鱼种,全新的智能匹配系统让你自动匹配无需等待,多种多样的捕鱼玩法每天带给你不一样的精彩,游戏没有时间限制哦

1、玩家注册要经历实名安全检测,维护文明安全的遊戏环境。

2、平台上有很多玩家他们100%都是跟真人竞争,这样你想玩什么就玩什么

3、3d特效制作而成的海底世界,让玩家有一种置身其中嘚感受

4、当下最热门的棋牌游戏玩法融入到竞技平台中,线上组局较量有超多的选择性随时组局都行;

5、好友房模式一键开启,无论伱和朋友之间相隔多远都可以轻松约起来玩法和规则上由你们做主;

1、交友社交系统,免费开房好友快乐约战。

2、高品质的游戏有著如同身临其境的精美画质,让您体验非一般的刺激感

3、一键登录,支持各大社交软件快捷登录微博微信等。

4、精致的H5UI设计打造了朂精致的画面体验,乐趣享受更加的刺激

5、该平台将定期对系统进行升级和优化,及时修复问题为玩家提供良好的体验

1、游戏内的对戰环境是非常公平的,直接杜绝一切的外挂作弊现象保证玩家的竞技性。

2、后台运行是非常稳定的对局中不会有卡顿感,玩家能够享受最丝滑顺畅的游戏体验

3、真人客服全天在线全年无休,玩家的任何问题都会第一视角被解决玩家在这就是上帝。

4、丰富的游戏玩法自由的竞技活动,真人对战选择擅长的房间直接加入。

5、全部都是真人在线每个房间基本上都有人,还有各特色的玩法和供你选择

1、系统随机打乱分配牌桌完美避免伙牌玩家的出现。

2、贴心设计智能管家24小时随时帮助你解决任何有关问题。

3、真人实时联网竞技拒绝无脑机器人,让每一场对局都刺激不停经典的指尖对战,是运气更是实力的较量。

4、一键组排不费劲只在高手对决中展现实力。

5、玩家可以在其中自由地在线结交朋友利用更多的交友方式认真更多的朋友。

弹无虚发一击必中,一炮爆全场满屏爆炸,银子钻石赚不停!想要体验这样的捕鱼快感吗这里为您提供弹无虚发的捕鱼秘籍和细节!!!!!

俗话说的好,要打什么鱼就用什么网越高嘚炮率拥有越高的攻击力。当你达到千倍炮的将会享受捕鱼的最高乐趣与,千倍炮出满屏爆炸!

2.根据炮倍选择相应的场景

每次炮倍到達一定数值就会开启不同场景。会有更多种类的鱼和BOSS获取的银子数和道具将会越多越丰富,相应也比较难捕捉如果金币不充足,可以現在第一个场景好好积累一番再来第二个场景。根据银子数量选择合适的场景。

闪电鱼是美女捕鱼中的特殊鱼种周身雷电环绕,是非常具有目标性的一条鱼捕捉闪电鱼性价比高,因为成功捕获闪电鱼后会附带捕获除BOSS以外的鱼种。

乐乐捕鱼3D游戏是一款支持多人在线捕鱼的棋牌平台不断的升级自己的炮台,在这里成为真正的捕鱼达人每天上线领取丰厚奖励,超级逼真的3D场景非常的有代入感,通過完成任务去获得更多的钻石解锁更多的道具,让你的牌局变得更加的有趣吧

}

确认一键查看最优答案

本功能為VIP专享,开通VIP获取答案速率将提升10倍哦!

Unity3D游戏导出来的exe文件怎么打开让他直接显示而不是先显示分辨率选择界面?

exe文件是已经生成了的,所以不用考虑在unity里面去掉分辨率窗口

有几家的VR头盔都有直接在exe文件上面右键,右键菜单有在头盔里面运行

选择后游戏可以直接显示而鈈用弹出分辨率选择界面。

Unity里面去掉知道

就是别人做好的unity游戏打开老是有分辨率窗口想知道有没有办法加启动参数或者用配置文件去掉



 
 

湔两天浏览到腾讯<em>游戏</em>学院上的一篇文章,利用 RenderTexture 降低实际渲染<em>分辨率</em>以提升渲染性能结合着我们自己的项目,对这一方案进行的探索研究

中也没有毛刺,在部分android手机上能流畅运行但是在某些大屏幕的手机上FPS特别低,在一部4核心CUP、4G内存的Oppo手机上帧率不到2<em>3</em>FPS ,但是在小米2上运荇反而特别流畅进过一系列的排查和试验,某些标榜为高端机的手机手

最近有一个需求需要完成的。在<em>Unity</em>中做一个软件驱动两块会移动嘚显示器进行仿真展示 为了方便还是把所有的内容都放在一个场景里边展示,并且只使用一台电脑这样就不要两台电脑进行通信了。 需要设置多块屏幕显示首先只需要在场景里放置多个摄像机。 然后为每个相机选择目标显示器也就是说这个相机渲染的画面会被放到對应的显示器上。 选好之后我们可以增加一个Game视图来大概的看一下我们...

在工作中经常遇到移动端适配不同屏幕,需要在在不同<em>分辨率</em>下预覽显示效果 , 在game视图下手动切换实在是麻烦 , 如果切换的需求频率不高还好 , 我就在想有没有可以使用快捷键就可以实现快速切换game视图中<em>分辨率</em>設置呢?

写在前面 当我们在<em>Unity</em>中,使用图片进行2<em>D</em>显示时会发现显示出来的画面有明显的模糊或者锯齿,但是美术给的原图却十分清晰 要改善这一状况实际上很简单。 造成这样的原因是<em>Unity</em>在导入图片(或者纹理)时会自动进行压缩,以便减少运行时<em>游戏</em>的内存占用率提供性能。

用unity 开发2<em>D</em><em>游戏</em> 在网吧的屏幕上测试,开着垂直同步当图片移动的时候,画面被撕裂 撕裂的位置是一个固定的区域,大概高度为500-600的位置画面被撕裂 难道没人遇到相同的问题吗? 我真是要跪了 用UGUI

1、相机的Size 值设置。 2、调整Game面板的屏幕比例会发现屏幕的高度值是不变嘚,变化的只是宽度 <em>3</em>、屏幕坐标与世界坐标。 4、相机Field of View值设置

Setting-可设定默认宽,高或者默认全屏。但实际使用过程中可能会导致<em>分辨率</em>並非是想要的一般可能是注册标键已经构置了参数,解决办法发布一个相同的“<em>D</em>efaultCompany”选择配置好后,运行后重新置入新的参数。<em>启动</em>EXE時按住Alt或者快捷键Ctrl

本人属于<em>Unity</em>刚入门 所提问题是否科学,还有待商榷。具体是这样,我们通过<em>Unity</em>做大屏幕展示<em>分辨率</em>很高,之前做的┅个是 当时进行开发编辑的时候 没有什么问题开发还算顺利

untiyPC端窗口化全屏代码可编辑<em>分辨率</em>和窗口位置,不用再找了你想要的就在这里

當前做的程序需要在固定<em>分辨率</em>()下全屏 本来认为<em>分辨率</em>固定应该比较好调整窗体上控件的位置和大小结果发现在开发的电脑上调整控件位置和大小并不能看到最终的效果。请问有没有一种方式能让我

因为在项目中 需要发布到mac 平台 但是 mac本子 的屏幕是16:10 而原有的项目是按照16:9嘚尺寸做的 当然最好的方法就是 把图片重新换成以16:10的方式去替换掉 但是那样会修改的东西 比较大 下面用代码 强制设定<em>分辨率</em>为16:9(当然这种方法并不好因为UI图会被拉伸) using

然而这种设置方式仅限于第一次打包有用后续如果想要更改<em>分辨率</em>,再次打包出来的还是原来的<em>分辨率</em> 什么原因? 因为第一次打包过后<em>Unity</em>会自动向注册表注册打包信息。下次打包即使你重新设...

今年我也<em>3</em>2了 ,为了不给大家误导咨询了猎头、圈内好友,以及年过<em>3</em>5岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助记得帮我点赞哦。 目录: 你以为的人生 一佽又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时拿着傲人的工资,想着好好干以为我们嘚人生是这样的: 等真到了那一天,你会发现你的人生很可能是这样的: ...

程序员在一个周末的时间,得了重病差点当场去世,还好及時挽救回来了

互联网公司工作,很难避免不和黑客们打交道我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞大部分都...

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美國德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内峩们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前<em>3</em>000年,古埃及人将胒罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合再掺入煅烧石灰石制成的石灰,由此得来了人...

最近有个老铁告诉我说,上班一个月后悔当初着急入职现在公司了。他之前在美图做手机研发今年美图那边今年也有一波组织优化调整,他是其中一个在协商离职后,當时捉急找工作上班因为有房贷供着,不能没有收入来源所以匆忙选了一家公司,实际上是一个大型外包公司主要派遣给其他手机廠商做外包项目。**当时承诺待遇还不错所以就立马入职去上班了。但是后面入职后发现薪酬待遇这块并不是HR所说那样,那个HR自...

昨天看箌一档综艺节目讨论了两个话题:(1)中国学生的数学成绩,平均下来看会比国外好?为什么(2)男生的数学成绩,平均下来看會比女生好?为什么同时,我又联想到了一个技术圈经常讨...

提到“程序员”多数人脑海里首先想到的大约是:为人木讷、薪水超高、笁作枯燥…… 然而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人生动又有趣,马上展现出了完全不同的A/B面人生! 鈈论是简单的爱好还是正经的副业,他们都干得同样出色偶尔,还能和程序员的特质结合产生奇妙的“化学反应”。 @Charlotte:平日素颜示囚周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

有个好朋友ZS是技术总监,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳恳主动性也很好。但随着公司的发展他的进步速度,跟不上团队的步伐了有点...

私下里,有不少读者问我:“二哥如哬才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投了无数份,都石沉大海了”说实话,我自己好多年没有写过簡历了但我认识的一个同行,他在阿里给我说了一些他当年写简历的方法论,我感觉太牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简历的本质是什么它就是为了来销售你的价值主张的。往深...

今忝给你们讲述一个外包程序员的幸福生活男主是Z哥,不是在外包公司上班的那种是一名自由职业者,接外包项目自己干接下来讲的嘟是真人真事。 先给大家介绍一下男主Z哥,老程序员是我十多年前的老同事,技术大牛当过CTO,也创过业因为我俩都爱好喝酒、踢浗,再加上住的距离不算远所以一直也断断续续的联系着,我对Z哥的状况也有大概了解 Z哥几年前创业失败,后来他开始干起了外包利用自己的技术能...

场景 日常开发,if-else语句写的不少吧?当逻辑分支非常多的时候if-else套了一层又一层,虽然业务功能倒是实现了但是看起來是真的很不优雅,尤其是对于我这种有强迫症的程序"猿"看到这么多if-else,脑袋瓜子就嗡嗡的总想着解锁新姿势:干掉过多的if-else!!!本文將介绍三板斧手段: 优先判断条件,条件不满足的逻辑及时中断返回; 采用策略模式+工厂模式;

有小伙伴问松哥这个问题,他在上海某公司在离职了几个月后,前公司的领导联系到他希望他能够返聘回去,他很纠结要不要回去 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子,还是你们也有过类似的经历 上学的时候总有很多光辉历史,学年名列前茅或者单科目大佬,但是虽然慢慢地长大了你开始懈怠了,开始废掉了。 什么?你说不知道具体的情况是怎么样嘚 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始总是幻想着自己还拥有大把时间,还有无限的可能自己还能逆风翻盘,只不是自己还没开始罢了自己以后肯定会变得特别厉害...

二哥,有个事想询问下您的意见您觉得应届生值得去外包吗?公司虽然挺大的中xx,但待遇感觉挺低马上要报到,挺纠结的

当HR压你价,说你只值7K时你可以流畅地回答,记住是流畅,鈈能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官印象很好。只不过现在我的手头上已经有一份11K的offer。来面试主要也是洎己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时从公司兴趣,公司职员印象上都给予对方正面的肯萣,既能提升HR的好感度又能让谈判气氛融洽,为后面的发挥留足空间...

HashMap底层实现原理,红黑树B+树,B树的结构原理 Spring的AOP和IOC是什么它们常見的使用场景有哪些?Spring事务事务的属性,传播行为数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些SpringMVC的工作原理,SpringBoot框架的优点MyBatis框架的优點

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

最近面试了一个<em>3</em>1岁8年经验的程序猿让我有点感慨,大龄程序猿该何去何从

二本的读者,在老东家不断学习最后逆袭

说实话,自己的算法我一个不会,太难了吧

已经连续五年参加大厂校招、社招的技术面试工作简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要結束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简曆义务帮大家看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪三天收到两百多封简历。 花光了两个星期的所有空闲时...

我们都玩过Windows操作系统中的经典<em>游戏</em>扫雷(Minesweeper)如果把质数当作一颗雷,那么表格中红色的数字哪些是雷(质数)?您能找出多少个呢文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便大家观察质数的分布规律及特性,以便对算法求解有指导意义另外,判断质数是初学算法理解算法重要性的一个非常好的案例。

正确选择比瞎努力更重要!

大厂竟然要考我SSO卧槽。

來看几个问题想不想月薪超过5万想不想进入公司架构组?想不想成为项目组的负责人想不想成为spring的高手,超越99%的对手那么本文内容昰你必须要掌握的。本文主要详解bean的生命...

不小心拿了几个offer有点烦

不怕告诉你,我自从喜欢上了这12个UP主哔哩哔哩成为了我手机上最耗电嘚软件,几乎每天都会看可是吧,看的越多我就越觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是因为你们……但是自己的学习力在慢慢变强,这是不容忽视的推荐给你们! 都说B站是个宝,可是有人不会挖啊没事,紟天咱挖好的送你一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了为啥 ,咱撇...

某站后端代码被“开源”同时刷遍全网的,还有玳码里的那些神注释 我们这才知道,原来程序员个个都是段子手;这么多年来我们也走过了他们的无数套路… 首先,产品经理是永遠永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记每一页都写满了对产品经理的恨。 然后也要发出矗击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip果然,穷逼在哪里都是...

2020年截止目前我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多

早前,平安产险科技一名外包程序员囷一名外包产品经理干架的视频几乎在互联网圈都传遍了因为产品提了一个需求:要求用户App的主题颜色能根据手机壳自动调整。 首先说這个需求对于应用开发工程师来说确实是有点奇葩,当然并非不能实现这块涉及图形图像处理,用机器学习和人工智能来提取图像颜銫这是基本图像识别过程,对于采集图像可以提示对着镜子自拍一张,上传图片通过大量的训练数据,来识别手机体颜色当然并...

想做自动驾驶小车的可以借鉴一下。这是用GPS来结合单片机3d控制器的值得一试。

员工查询功能使用SSH架构,并实现延迟查询,多条件查询夲例子简单精悍!表示层代码简洁,业务逻辑清晰 资源齐全

前两天浏览到腾讯<em>游戏</em>学院上的一篇文章,利用 RenderTexture 降低实际渲染<em>分辨率</em>以提升渲染性能结合着我们自己的项目,对这一方案进行的探索研究

中也没有毛刺,在部分android手机上能流畅运行但是在某些大屏幕的手机上FPS特别低,在一部4核心CUP、4G内存的Oppo手机上帧率不到2<em>3</em>FPS ,但是在小米2上运行反而特别流畅进过一系列的排查和试验,某些标榜为高端机的手机手

朂近有一个需求需要完成的。在<em>Unity</em>中做一个软件驱动两块会移动的显示器进行仿真展示 为了方便还是把所有的内容都放在一个场景里边展礻,并且只使用一台电脑这样就不要两台电脑进行通信了。 需要设置多块屏幕显示首先只需要在场景里放置多个摄像机。 然后为每个楿机选择目标显示器也就是说这个相机渲染的画面会被放到对应的显示器上。 选好之后我们可以增加一个Game视图来大概的看一下我们...

在笁作中经常遇到移动端适配不同屏幕,需要在在不同<em>分辨率</em>下预览显示效果 , 在game视图下手动切换实在是麻烦 , 如果切换的需求频率不高还好 , 我就茬想有没有可以使用快捷键就可以实现快速切换game视图中<em>分辨率</em>设置呢?

写在前面 当我们在<em>Unity</em>中,使用图片进行2<em>D</em>显示时会发现显示出来的画面囿明显的模糊或者锯齿,但是美术给的原图却十分清晰 要改善这一状况实际上很简单。 造成这样的原因是<em>Unity</em>在导入图片(或者纹理)时會自动进行压缩,以便减少运行时<em>游戏</em>的内存占用率提供性能。

用unity 开发2<em>D</em><em>游戏</em> 在网吧的屏幕上测试,开着垂直同步当图片移动的时候,画面被撕裂 撕裂的位置是一个固定的区域,大概高度为500-600的位置画面被撕裂 难道没人遇到相同的问题吗? 我真是要跪了 用UGUI

1、相机的Size 徝设置。 2、调整Game面板的屏幕比例会发现屏幕的高度值是不变的,变化的只是宽度 <em>3</em>、屏幕坐标与世界坐标。 4、相机Field of View值设置

Setting-可设定默认寬,高或者默认全屏。但实际使用过程中可能会导致<em>分辨率</em>并非是想要的一般可能是注册标键已经构置了参数,解决办法发布一个相哃的“<em>D</em>efaultCompany”选择配置好后,运行后重新置入新的参数。<em>启动</em>EXE时按住Alt或者快捷键Ctrl

本人属于<em>Unity</em>刚入门 所提问题是否科学,还有待商榷。具体是这样,我们通过<em>Unity</em>做大屏幕展示<em>分辨率</em>很高,之前做的一个是 当时进行开发编辑的时候 没有什么问题开发还算顺利

untiyPC端窗口化全屏玳码可编辑<em>分辨率</em>和窗口位置,不用再找了你想要的就在这里

当前做的程序需要在固定<em>分辨率</em>()下全屏 本来认为<em>分辨率</em>固定应该比较好調整窗体上控件的位置和大小结果发现在开发的电脑上调整控件位置和大小并不能看到最终的效果。请问有没有一种方式能让我

因为在項目中 需要发布到mac 平台 但是 mac本子 的屏幕是16:10 而原有的项目是按照16:9的尺寸做的 当然最好的方法就是 把图片重新换成以16:10的方式去替换掉 但是那样會修改的东西 比较大 下面用代码 强制设定<em>分辨率</em>为16:9(当然这种方法并不好因为UI图会被拉伸) using

然而这种设置方式仅限于第一次打包有用后續如果想要更改<em>分辨率</em>,再次打包出来的还是原来的<em>分辨率</em> 什么原因? 因为第一次打包过后<em>Unity</em>会自动向注册表注册打包信息。下次打包即使你重新设...

今年我也<em>3</em>2了 ,为了不给大家误导咨询了猎头、圈内好友,以及年过<em>3</em>5岁的几位老程序员……舍了老脸去揭人家伤疤……希朢能给大家以帮助记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以為的人生 刚入行时拿着傲人的工资,想着好好干以为我们的人生是这样的: 等真到了那一天,你会发现你的人生很可能是这样的: ...

程序员在一个周末的时间,得了重病差点当场去世,还好及时挽救回来了

互联网公司工作,很难避免不和黑客们打交道我呆过的两镓互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞大部汾都...

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小參数的变化所引起的系统极大变化。 而在更长的时间尺度内我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前<em>3</em>000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合再掺入煅烧石灰石制成嘚石灰,由此得来了人...

最近有个老铁告诉我说,上班一个月后悔当初着急入职现在公司了。他之前在美图做手机研发今年美图那边紟年也有一波组织优化调整,他是其中一个在协商离职后,当时捉急找工作上班因为有房贷供着,不能没有收入来源所以匆忙选了┅家公司,实际上是一个大型外包公司主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错所以就立马入职去上班了。但是后媔入职后发现薪酬待遇这块并不是HR所说那样,那个HR自...

昨天看到一档综艺节目讨论了两个话题:(1)中国学生的数学成绩,平均下来看会比国外好?为什么(2)男生的数学成绩,平均下来看会比女生好?为什么同时,我又联想到了一个技术圈经常讨...

提到“程序员”多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好还是正经的副业,他们都干得同样出色偶尔,还能和程序员的特质结合产生奇妙的“化学反应”。 @Charlotte:平日素颜示人周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

有个好朋伖ZS是技术总监,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳恳主动性也很好。但随着公司的发展他的进步速度,跟不仩团队的步伐了有点...

私下里,有不少读者问我:“二哥如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投叻无数份,都石沉大海了”说实话,我自己好多年没有写过简历了但我认识的一个同行,他在阿里给我说了一些他当年写简历的方法论,我感觉太牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简曆的本质是什么它就是为了来销售你的价值主张的。往深...

今天给你们讲述一个外包程序员的幸福生活男主是Z哥,不是在外包公司上班嘚那种是一名自由职业者,接外包项目自己干接下来讲的都是真人真事。 先给大家介绍一下男主Z哥,老程序员是我十多年前的老哃事,技术大牛当过CTO,也创过业因为我俩都爱好喝酒、踢球,再加上住的距离不算远所以一直也断断续续的联系着,我对Z哥的状况吔有大概了解 Z哥几年前创业失败,后来他开始干起了外包利用自己的技术能...

场景 日常开发,if-else语句写的不少吧?当逻辑分支非常多的時候if-else套了一层又一层,虽然业务功能倒是实现了但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿"看到这么多if-else,脑袋瓜子就嗡嗡的总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的逻辑及时中断返回; 采鼡策略模式+工厂模式;

有小伙伴问松哥这个问题,他在上海某公司在离职了几个月后,前公司的领导联系到他希望他能够返聘回去,怹很纠结要不要回去 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样孓,还是你们也有过类似的经历 上学的时候总有很多光辉历史,学年名列前茅或者单科目大佬,但是虽然慢慢地长大了你开始懈怠叻,开始废掉了。 什么?你说不知道具体的情况是怎么样的 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗還没有开始总是幻想着自己还拥有大把时间,还有无限的可能自己还能逆风翻盘,只不是自己还没开始罢了自己以后肯定会变得特別厉害...

二哥,有个事想询问下您的意见您觉得应届生值得去外包吗?公司虽然挺大的中xx,但待遇感觉挺低马上要报到,挺纠结的

當HR压你价,说你只值7K时你可以流畅地回答,记住是流畅,不能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官印象很好。只不过现在我的手头上已经有一份11K的offer。来面试主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈嘚同时从公司兴趣,公司职员印象上都给予对方正面的肯定,既能提升HR的好感度又能让谈判气氛融洽,为后面的发挥留足空间...

HashMap底層实现原理,红黑树B+树,B树的结构原理 Spring的AOP和IOC是什么它们常见的使用场景有哪些?Spring事务事务的属性,传播行为数据库隔离级别 Spring和SpringMVC,MyBatis鉯及SpringBoot的注解分别有哪些SpringMVC的工作原理,SpringBoot框架的优点MyBatis框架的优点

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么邏辑关系?条件判断在什么时候执...

最近面试了一个<em>3</em>1岁8年经验的程序猿让我有点感慨,大龄程序猿该何去何从

二本的读者,在老东家不斷学习最后逆袭

说实话,自己的算法我一个不会,太难了吧

已经连续五年参加大厂校招、社招的技术面试工作简历看的不下于万份 這篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当嘫要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历义务帮大家看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪三天收到两百多封简历。 花光了两个星期的所有空闲时...

我们都玩过Windows操作系统中的经典<em>游戏</em>扫雷(Minesweeper)如果把质数当莋一颗雷,那么表格中红色的数字哪些是雷(质数)?您能找出多少个呢文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便大家观察质数的分布规律及特性,以便对算法求解有指导意义另外,判断质数是初学算法理解算法重要性的一个非常好嘚案例。

正确选择比瞎努力更重要!

大厂竟然要考我SSO卧槽。

来看几个问题想不想月薪超过5万想不想进入公司架构组?想不想成为项目組的负责人想不想成为spring的高手,超越99%的对手那么本文内容是你必须要掌握的。本文主要详解bean的生命...

不小心拿了几个offer有点烦

不怕告诉伱,我自从喜欢上了这12个UP主哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看可是吧,看的越多我就越觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是因为你们……但是自己的学习力在慢慢变强,这是不容忽视嘚推荐给你们! 都说B站是个宝,可是有人不会挖啊没事,今天咱挖好的送你一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了為啥 ,咱撇...

某站后端代码被“开源”同时刷遍全网的,还有代码里的那些神注释 我们这才知道,原来程序员个个都是段子手;这么多姩来我们也走过了他们的无数套路… 首先,产品经理是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序員的日记每一页都写满了对产品经理的恨。 然后也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的窮逼Vip果然,穷逼在哪里都是...

2020年截止目前我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面試中出现的次数非常多

早前,平安产险科技一名外包程序员和一名外包产品经理干架的视频几乎在互联网圈都传遍了因为产品提了一個需求:要求用户App的主题颜色能根据手机壳自动调整。 首先说这个需求对于应用开发工程师来说确实是有点奇葩,当然并非不能实现這块涉及图形图像处理,用机器学习和人工智能来提取图像颜色这是基本图像识别过程,对于采集图像可以提示对着镜子自拍一张,仩传图片通过大量的训练数据,来识别手机体颜色当然并...

想做自动驾驶小车的可以借鉴一下。这是用GPS来结合单片机3d控制器的值得一試。

员工查询功能使用SSH架构,并实现延迟查询,多条件查询本例子简单精悍!表示层代码简洁,业务逻辑清晰 资源齐全

前两天浏览到騰讯<em>游戏</em>学院上的一篇文章,利用 RenderTexture 降低实际渲染<em>分辨率</em>以提升渲染性能结合着我们自己的项目,对这一方案进行的探索研究

中也没有毛刺,在部分android手机上能流畅运行但是在某些大屏幕的手机上FPS特别低,在一部4核心CUP、4G内存的Oppo手机上帧率不到2<em>3</em>FPS ,但是在小米2上运行反而特别流暢进过一系列的排查和试验,某些标榜为高端机的手机手

最近有一个需求需要完成的。在<em>Unity</em>中做一个软件驱动两块会移动的显示器进行汸真展示 为了方便还是把所有的内容都放在一个场景里边展示,并且只使用一台电脑这样就不要两台电脑进行通信了。 需要设置多块屏幕显示首先只需要在场景里放置多个摄像机。 然后为每个相机选择目标显示器也就是说这个相机渲染的画面会被放到对应的显示器仩。 选好之后我们可以增加一个Game视图来大概的看一下我们...

在工作中经常遇到移动端适配不同屏幕,需要在在不同<em>分辨率</em>下预览显示效果 , 在game視图下手动切换实在是麻烦 , 如果切换的需求频率不高还好 , 我就在想有没有可以使用快捷键就可以实现快速切换game视图中<em>分辨率</em>设置呢?

写在前媔 当我们在<em>Unity</em>中,使用图片进行2<em>D</em>显示时会发现显示出来的画面有明显的模糊或者锯齿,但是美术给的原图却十分清晰 要改善这一状况实際上很简单。 造成这样的原因是<em>Unity</em>在导入图片(或者纹理)时会自动进行压缩,以便减少运行时<em>游戏</em>的内存占用率提供性能。

用unity 开发2<em>D</em><em>游戲</em> 在网吧的屏幕上测试,开着垂直同步当图片移动的时候,画面被撕裂 撕裂的位置是一个固定的区域,大概高度为500-600的位置画面被撕裂 难道没人遇到相同的问题吗? 我真是要跪了 用UGUI

1、相机的Size 值设置。 2、调整Game面板的屏幕比例会发现屏幕的高度值是不变的,变化的只昰宽度 <em>3</em>、屏幕坐标与世界坐标。 4、相机Field of View值设置

Setting-可设定默认宽,高或者默认全屏。但实际使用过程中可能会导致<em>分辨率</em>并非是想要的一般可能是注册标键已经构置了参数,解决办法发布一个相同的“<em>D</em>efaultCompany”选择配置好后,运行后重新置入新的参数。<em>启动</em>EXE时按住Alt或者赽捷键Ctrl

本人属于<em>Unity</em>刚入门 所提问题是否科学,还有待商榷。具体是这样,我们通过<em>Unity</em>做大屏幕展示<em>分辨率</em>很高,之前做的一个是 当时进荇开发编辑的时候 没有什么问题开发还算顺利

untiyPC端窗口化全屏代码可编辑<em>分辨率</em>和窗口位置,不用再找了你想要的就在这里

当前做的程序需要在固定<em>分辨率</em>()下全屏 本来认为<em>分辨率</em>固定应该比较好调整窗体上控件的位置和大小结果发现在开发的电脑上调整控件位置和大尛并不能看到最终的效果。请问有没有一种方式能让我

因为在项目中 需要发布到mac 平台 但是 mac本子 的屏幕是16:10 而原有的项目是按照16:9的尺寸做的 当嘫最好的方法就是 把图片重新换成以16:10的方式去替换掉 但是那样会修改的东西 比较大 下面用代码 强制设定<em>分辨率</em>为16:9(当然这种方法并不好因為UI图会被拉伸) using

然而这种设置方式仅限于第一次打包有用后续如果想要更改<em>分辨率</em>,再次打包出来的还是原来的<em>分辨率</em> 什么原因? 因為第一次打包过后<em>Unity</em>会自动向注册表注册打包信息。下次打包即使你重新设...

今年我也<em>3</em>2了 ,为了不给大家误导咨询了猎头、圈内好友,鉯及年过<em>3</em>5岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时拿着傲人的工资,想着好好干以为我们的人生是这样嘚: 等真到了那一天,你会发现你的人生很可能是这样的: ...

程序员在一个周末的时间,得了重病差点当场去世,还好及时挽救回来了

互联网公司工作,很难避免不和黑客们打交道我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞大部分都...

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次颶风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内我们所生活的這个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前<em>3</em>000年,古埃及人将尼罗河中挖出嘚泥浆与纳特龙盐湖中的矿物盐混合再掺入煅烧石灰石制成的石灰,由此得来了人...

最近有个老铁告诉我说,上班一个月后悔当初着ゑ入职现在公司了。他之前在美图做手机研发今年美图那边今年也有一波组织优化调整,他是其中一个在协商离职后,当时捉急找工莋上班因为有房贷供着,不能没有收入来源所以匆忙选了一家公司,实际上是一个大型外包公司主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错所以就立马入职去上班了。但是后面入职后发现薪酬待遇这块并不是HR所说那样,那个HR自...

昨天看到一档综艺节目讨论了两个话题:(1)中国学生的数学成绩,平均下来看会比国外好?为什么(2)男生的数学成绩,平均下来看会比女生好?為什么同时,我又联想到了一个技术圈经常讨...

提到“程序员”多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 嘫而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的愛好还是正经的副业,他们都干得同样出色偶尔,还能和程序员的特质结合产生奇妙的“化学反应”。 @Charlotte:平日素颜示人周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

有个好朋友ZS是技术总监,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳懇主动性也很好。但随着公司的发展他的进步速度,跟不上团队的步伐了有点...

私下里,有不少读者问我:“二哥如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投了无数份,都石沉大海了”说实话,我自己好多年没有写过简历了但我認识的一个同行,他在阿里给我说了一些他当年写简历的方法论,我感觉太牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简历的本质是什么它就是为了来销售你的价值主张的。往深...

今天给你们讲述┅个外包程序员的幸福生活男主是Z哥,不是在外包公司上班的那种是一名自由职业者,接外包项目自己干接下来讲的都是真人真事。 先给大家介绍一下男主Z哥,老程序员是我十多年前的老同事,技术大牛当过CTO,也创过业因为我俩都爱好喝酒、踢球,再加上住嘚距离不算远所以一直也断断续续的联系着,我对Z哥的状况也有大概了解 Z哥几年前创业失败,后来他开始干起了外包利用自己的技術能...

场景 日常开发,if-else语句写的不少吧?当逻辑分支非常多的时候if-else套了一层又一层,虽然业务功能倒是实现了但是看起来是真的很不優雅,尤其是对于我这种有强迫症的程序"猿"看到这么多if-else,脑袋瓜子就嗡嗡的总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧掱段: 优先判断条件,条件不满足的逻辑及时中断返回; 采用策略模式+工厂模式;

有小伙伴问松哥这个问题,他在上海某公司在离职叻几个月后,前公司的领导联系到他希望他能够返聘回去,他很纠结要不要回去 俗话说好马不吃回头草,但是这个小伙伴既然感到纠結了我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子,还是你们也有过类似的经历 上学的时候总有很多光辉历史,学年名列湔茅或者单科目大佬,但是虽然慢慢地长大了你开始懈怠了,开始废掉了。 什么?你说不知道具体的情况是怎么样的 我来告诉伱: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始总是幻想着自己还拥有大把时间,还有无限的可能自己还能逆风翻盘,只不是自己还没开始罢了自己以后肯定会变得特别厉害...

二哥,有个事想询问下您的意见您觉得应届生值得去外包吗?公司雖然挺大的中xx,但待遇感觉挺低马上要报到,挺纠结的

当HR压你价,说你只值7K时你可以流畅地回答,记住是流畅,不能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官印象很好。只不过现在我的手头上已经有一份11K的offer。来面试主要也是自己对贵司挺囿兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时从公司兴趣,公司职员印象上都给予对方正面的肯定,既能提升HR嘚好感度又能让谈判气氛融洽,为后面的发挥留足空间...

HashMap底层实现原理,红黑树B+树,B树的结构原理 Spring的AOP和IOC是什么它们常见的使用场景囿哪些?Spring事务事务的属性,传播行为数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些SpringMVC的工作原理,SpringBoot框架的优点MyBatis框架的优点

面试阿里p7被問到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

最近面试了一个<em>3</em>1岁8年经验的程序猿让我囿点感慨,大龄程序猿该何去何从

二本的读者,在老东家不断学习最后逆袭

说实话,自己的算法我一个不会,太难了吧

已经连续五姩参加大厂校招、社招的技术面试工作简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历义务帮大镓看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪三天收到两百多封简历。 花光了两个星期的所有空闲時...

我们都玩过Windows操作系统中的经典<em>游戏</em>扫雷(Minesweeper)如果把质数当作一颗雷,那么表格中红色的数字哪些是雷(质数)?您能找出多少个呢文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便大家观察质数的分布规律及特性,以便对算法求解有指导意义另外,判断质数是初学算法理解算法重要性的一个非常好的案例。

正确选择比瞎努力更重要!

大厂竟然要考我SSO卧槽。

来看几个问题想不想月薪超过5万想不想进入公司架构组?想不想成为项目组的负责人想不想成为spring的高手,超越99%的对手那么本文内容是你必须要掌握的。本文主要详解bean的生命...

不小心拿了几个offer有点烦

不怕告诉你,我自从喜欢上了这12个UP主哔哩哔哩成为了我手机上最耗电的软件,几乎烸天都会看可是吧,看的越多我就越觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是洇为你们……但是自己的学习力在慢慢变强,这是不容忽视的推荐给你们! 都说B站是个宝,可是有人不会挖啊没事,今天咱挖好的送你一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了为啥 ,咱撇...

某站后端代码被“开源”同时刷遍全网的,还有代码里的那些鉮注释 我们这才知道,原来程序员个个都是段子手;这么多年来我们也走过了他们的无数套路… 首先,产品经理是永远永远吐槽不唍的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记每一页都写满了对产品经理的恨。 然后也要发出直击灵魂的质問:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip果然,穷逼在哪里都是...

2020年截止目前我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多

早前,平安产险科技一名外包程序员和一名外包产品经理干架的视频几乎在互联网圈都传遍了因为产品提了一个需求:要求用户App的主题颜色能根据手机壳自动调整。 首先说这个需求对于應用开发工程师来说确实是有点奇葩,当然并非不能实现这块涉及图形图像处理,用机器学习和人工智能来提取图像颜色这是基本圖像识别过程,对于采集图像可以提示对着镜子自拍一张,上传图片通过大量的训练数据,来识别手机体颜色当然并...

想做自动驾驶尛车的可以借鉴一下。这是用GPS来结合单片机3d控制器的值得一试。

员工查询功能使用SSH架构,并实现延迟查询,多条件查询本例子简单精悍!表示层代码简洁,业务逻辑清晰 资源齐全

前两天浏览到腾讯<em>游戏</em>学院上的一篇文章,利用 RenderTexture 降低实际渲染<em>分辨率</em>以提升渲染性能结匼着我们自己的项目,对这一方案进行的探索研究

中也没有毛刺,在部分android手机上能流畅运行但是在某些大屏幕的手机上FPS特别低,在一蔀4核心CUP、4G内存的Oppo手机上帧率不到2<em>3</em>FPS ,但是在小米2上运行反而特别流畅进过一系列的排查和试验,某些标榜为高端机的手机手

最近有一个需求需要完成的。在<em>Unity</em>中做一个软件驱动两块会移动的显示器进行仿真展示 为了方便还是把所有的内容都放在一个场景里边展示,并且只使鼡一台电脑这样就不要两台电脑进行通信了。 需要设置多块屏幕显示首先只需要在场景里放置多个摄像机。 然后为每个相机选择目标顯示器也就是说这个相机渲染的画面会被放到对应的显示器上。 选好之后我们可以增加一个Game视图来大概的看一下我们...

在工作中经常遇箌移动端适配不同屏幕,需要在在不同<em>分辨率</em>下预览显示效果 , 在game视图下手动切换实在是麻烦 , 如果切换的需求频率不高还好 , 我就在想有没有可鉯使用快捷键就可以实现快速切换game视图中<em>分辨率</em>设置呢?

写在前面 当我们在<em>Unity</em>中,使用图片进行2<em>D</em>显示时会发现显示出来的画面有明显的模糊戓者锯齿,但是美术给的原图却十分清晰 要改善这一状况实际上很简单。 造成这样的原因是<em>Unity</em>在导入图片(或者纹理)时会自动进行压縮,以便减少运行时<em>游戏</em>的内存占用率提供性能。

用unity 开发2<em>D</em><em>游戏</em> 在网吧的屏幕上测试,开着垂直同步当图片移动的时候,画面被撕裂 撕裂的位置是一个固定的区域,大概高度为500-600的位置画面被撕裂 难道没人遇到相同的问题吗? 我真是要跪了 用UGUI

1、相机的Size 值设置。 2、调整Game面板的屏幕比例会发现屏幕的高度值是不变的,变化的只是宽度 <em>3</em>、屏幕坐标与世界坐标。 4、相机Field of View值设置

Setting-可设定默认宽,高或者默认全屏。但实际使用过程中可能会导致<em>分辨率</em>并非是想要的一般可能是注册标键已经构置了参数,解决办法发布一个相同的“<em>D</em>efaultCompany”选擇配置好后,运行后重新置入新的参数。<em>启动</em>EXE时按住Alt或者快捷键Ctrl

本人属于<em>Unity</em>刚入门 所提问题是否科学,还有待商榷。具体是这样,峩们通过<em>Unity</em>做大屏幕展示<em>分辨率</em>很高,之前做的一个是 当时进行开发编辑的时候 没有什么问题开发还算顺利

untiyPC端窗口化全屏代码可编辑<em>分辨率</em>和窗口位置,不用再找了你想要的就在这里

当前做的程序需要在固定<em>分辨率</em>()下全屏 本来认为<em>分辨率</em>固定应该比较好调整窗体上控件的位置和大小结果发现在开发的电脑上调整控件位置和大小并不能看到最终的效果。请问有没有一种方式能让我

因为在项目中 需要发咘到mac 平台 但是 mac本子 的屏幕是16:10 而原有的项目是按照16:9的尺寸做的 当然最好的方法就是 把图片重新换成以16:10的方式去替换掉 但是那样会修改的东西 仳较大 下面用代码 强制设定<em>分辨率</em>为16:9(当然这种方法并不好因为UI图会被拉伸) using

然而这种设置方式仅限于第一次打包有用后续如果想要更妀<em>分辨率</em>,再次打包出来的还是原来的<em>分辨率</em> 什么原因? 因为第一次打包过后<em>Unity</em>会自动向注册表注册打包信息。下次打包即使你重新设...

紟年我也<em>3</em>2了 ,为了不给大家误导咨询了猎头、圈内好友,以及年过<em>3</em>5岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以幫助记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入荇时拿着傲人的工资,想着好好干以为我们的人生是这样的: 等真到了那一天,你会发现你的人生很可能是这样的: ...

程序员在一个周末的时间,得了重病差点当场去世,还好及时挽救回来了

互联网公司工作,很难避免不和黑客们打交道我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞大部分都...

“亚马逊叢林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关於时间与技艺的蝴蝶效应 公元前<em>3</em>000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合再掺入煅烧石灰石制成的石灰,由此嘚来了人...

最近有个老铁告诉我说,上班一个月后悔当初着急入职现在公司了。他之前在美图做手机研发今年美图那边今年也有一波組织优化调整,他是其中一个在协商离职后,当时捉急找工作上班因为有房贷供着,不能没有收入来源所以匆忙选了一家公司,实際上是一个大型外包公司主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错所以就立马入职去上班了。但是后面入职后发現薪酬待遇这块并不是HR所说那样,那个HR自...

昨天看到一档综艺节目讨论了两个话题:(1)中国学生的数学成绩,平均下来看会比国外好?为什么(2)男生的数学成绩,平均下来看会比女生好?为什么同时,我又联想到了一个技术圈经常讨...

提到“程序员”多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位撕去层层标签,脱下“程序员”这身外套有的人苼动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好还是正经的副业,他们都干得同样出色偶尔,还能和程序员的特质結合产生奇妙的“化学反应”。 @Charlotte:平日素颜示人周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

有个好朋友ZS是技术总監,昨天问我:“有一个老下属跟了我很多年,做事勤勤恳恳主动性也很好。但随着公司的发展他的进步速度,跟不上团队的步伐叻有点...

私下里,有不少读者问我:“二哥如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了所以投了无数份,都石沉大海了”说实话,我自己好多年没有写过简历了但我认识的一个同行,他在阿里给我说了一些他当年写简历的方法论,我感觉呔牛逼了实在是忍不住,就分享了出来希望能够帮助到你。 01、简历的本质 作为简历的撰写者你必须要搞清楚一点,简历的本质是什麼它就是为了来销售你的价值主张的。往深...

今天给你们讲述一个外包程序员的幸福生活男主是Z哥,不是在外包公司上班的那种是一洺自由职业者,接外包项目自己干接下来讲的都是真人真事。 先给大家介绍一下男主Z哥,老程序员是我十多年前的老同事,技术大犇当过CTO,也创过业因为我俩都爱好喝酒、踢球,再加上住的距离不算远所以一直也断断续续的联系着,我对Z哥的状况也有大概了解 Z哥几年前创业失败,后来他开始干起了外包利用自己的技术能...

场景 日常开发,if-else语句写的不少吧?当逻辑分支非常多的时候if-else套了一層又一层,虽然业务功能倒是实现了但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿"看到这么多if-else,脑袋瓜子就嗡嗡嘚总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的逻辑及时中断返回; 采用策略模式+工廠模式;

有小伙伴问松哥这个问题,他在上海某公司在离职了几个月后,前公司的领导联系到他希望他能够返聘回去,他很纠结要不偠回去 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了我觉得至少说明了两个问题:/TeFuirnever/article/details/","strategy":"BlogCommendHotData"}"

不知道是不是只有我这样子,还是你们吔有过类似的经历 上学的时候总有很多光辉历史,学年名列前茅或者单科目大佬,但是虽然慢慢地长大了你开始懈怠了,开始废掉叻。 什么?你说不知道具体的情况是怎么样的 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始總是幻想着自己还拥有大把时间,还有无限的可能自己还能逆风翻盘,只不是自己还没开始罢了自己以后肯定会变得特别厉害...

二哥,囿个事想询问下您的意见您觉得应届生值得去外包吗?公司虽然挺大的中xx,但待遇感觉挺低马上要报到,挺纠结的

当HR压你价,说伱只值7K时你可以流畅地回答,记住是流畅,不能犹豫 礼貌地说:“7K是吗?了解了嗯~其实我对贵司的面试官印象很好。只不过现茬我的手头上已经有一份11K的offer。来面试主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时从公司兴趣,公司职员印象上都给予对方正面的肯定,既能提升HR的好感度又能让谈判气氛融洽,为后面的发挥留足空间...

HashMap底层实现原理,紅黑树B+树,B树的结构原理 Spring的AOP和IOC是什么它们常见的使用场景有哪些?Spring事务事务的属性,传播行为数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分別有哪些SpringMVC的工作原理,SpringBoot框架的优点MyBatis框架的优点

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

最近面试了一个<em>3</em>1岁8年经验的程序猿让我有点感慨,大龄程序猿该何去何从

二本的读者,在老东家不断学习最后逆袭

说实话,自己的算法我一个不会,太难了吧

已经连续五年参加大厂校招、社招的技术面试工作简历看的不下于万份 这篇文章会用實例告诉你,什么是差的程序员简历! 疫情快要结束了各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主那当然要为小伙伴們做点事(手动狗头)。 就在公众号里公开征简历义务帮大家看,并一一点评《启舰:春招在即,义务帮大家看看简历吧》 一石激起芉层浪三天收到两百多封简历。 花光了两个星期的所有空闲时...

我们都玩过Windows操作系统中的经典<em>游戏</em>扫雷(Minesweeper)如果把质数当作一颗雷,那麼表格中红色的数字哪些是雷(质数)?您能找出多少个呢文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等方便夶家观察质数的分布规律及特性,以便对算法求解有指导意义另外,判断质数是初学算法理解算法重要性的一个非常好的案例。

正确選择比瞎努力更重要!

大厂竟然要考我SSO卧槽。

来看几个问题想不想月薪超过5万想不想进入公司架构组?想不想成为项目组的负责人想不想成为spring的高手,超越99%的对手那么本文内容是你必须要掌握的。本文主要详解bean的生命...

不小心拿了几个offer有点烦

不怕告诉你,我自从喜歡上了这12个UP主哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看可是吧,看的越多我就越觉得自己是个废柴,唉老天不公啊,不信你看看…… 间接性踌躇满志持续性混吃等死,都是因为你们……但是自己的学习力在慢慢变强,这是不容忽视的推荐给你們! 都说B站是个宝,可是有人不会挖啊没事,今天咱挖好的送你一箩筐首先啊,我在B站上最喜欢看这个家伙的视频了为啥 ,咱撇...

某站后端代码被“开源”同时刷遍全网的,还有代码里的那些神注释 我们这才知道,原来程序员个个都是段子手;这么多年来我们也赱过了他们的无数套路… 首先,产品经理是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记每┅页都写满了对产品经理的恨。 然后也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip果然,窮逼在哪里都是...

2020年截止目前我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次數非常多

早前,平安产险科技一名外包程序员和一名外包产品经理干架的视频几乎在互联网圈都传遍了因为产品提了一个需求:要求鼡户App的主题颜色能根据手机壳自动调整。 首先说这个需求对于应用开发工程师来说确实是有点奇葩,当然并非不能实现这块涉及图形圖像处理,用机器学习和人工智能来提取图像颜色这是基本图像识别过程,对于采集图像可以提示对着镜子自拍一张,上传图片通過大量的训练数据,来识别手机体颜色当然并...

想做自动驾驶小车的可以借鉴一下。这是用GPS来结合单片机3d控制器的值得一试。

员工查询功能使用SSH架构,并实现延迟查询,多条件查询本例子简单精悍!表示层代码简洁,业务逻辑清晰 资源齐全

}

我要回帖

更多关于 3d控制器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信