[{"data":1,"prerenderedAt":1815},["ShallowReactive",2],{"page-Lighting-1":3,"page-count-Lighting":344},[4,392,1058],{"id":5,"title":6,"body":7,"date":368,"description":13,"extension":369,"meta":370,"navigation":373,"path":385,"seo":386,"stem":387,"tags":388,"__hash__":391},"blogs\u002F_legacy\u002F2018\u002F2018-01-01-note-lightmass-deep-dive.md","深入LightMass系列笔记",{"type":8,"value":9,"toc":341},"minimark",[10,14,25,28,31,34,39,42,47,52,55,62,66,69,74,77,85,88,92,95,100,103,107,110,115,118,121,127,130,135,139,142,145,148,151,156,160,163,166,170,173,176,179,183,186,189,192,195,200,203,208,211,214,217,221,224,229,232,236,239,242,247,251,254,259,263,266,271,274,279,282,287,290,293,296,301,304,307,326,329,332,335,338],[11,12,13],"p",{},"UE4使用Lightmass对光照进行预计算，以节省动态光照计算的成本。",[11,15,16,17,24],{},"本文是EpicJapan的LightMass Deep Dive系列的总结，与之前更新的文章有重叠的地方可能会略过，如有需要可以参看[",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fwww.slideshare.net\u002FEpicGamesJapan\u002Flightmass-lightmap-epic-games-japan",[22],"nofollow","原始的PPT","]。",[11,26,27],{},"内容本身的UE4版本为4.13，当前UE4版本4.18。",[11,29,30],{},"其实这个系列讲的内容并不多，只是使用了很多配图，让人能非常直观的对Light Mass的计算进行理解。",[11,32,33],{},"预计算光照主要的组成部分有3个：Light Map、Shadow Map和Precomputed Light Volume。",[35,36,38],"h2",{"id":37},"light-map","Light Map",[11,40,41],{},"光照贴图是静态光照最重要的部分，当前关卡生成的光照贴图可以在World Settings一栏里面看到。",[43,44,46],"h3",{"id":45},"pointspotdirectional-light","Point\u002FSpot\u002FDirectional Light",[48,49,51],"h4",{"id":50},"direct-light","Direct Light",[11,53,54],{},"直接从光源所在处打出射线进行计算，对于有光源半径的光而言会多做一些计算。",[11,56,57],{},[58,59],"img",{"alt":60,"src":61},"image","\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb.png",[48,63,65],{"id":64},"indiret-light","Indiret Light",[11,67,68],{},"间接光照的计算核心是光子映射算法，详细的实现分为以下步骤",[70,71,73],"h5",{"id":72},"photon-mapping","Photon Mapping",[11,75,76],{},"首先从光源向周围放射光子，对命中表面的光子进行记录，并按照一定的条件进行光子反射。",[11,78,79,82],{},[58,80],{"alt":60,"src":81},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-1.png",[58,83],{"alt":60,"src":84},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-2.png",[11,86,87],{},"这个反射过程会重复多次，最终形成在物体表面的很多光子数据。",[70,89,91],{"id":90},"final-gathering","Final Gathering",[11,93,94],{},"从纹素出发，沿着光子的反射路径回溯性的收集光照信息。",[11,96,97],{},[58,98],{"alt":60,"src":99},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-3.png",[11,101,102],{},"在收集过程中并不会从自己周围收集，因为这部分的光照已经在直接光照中计算过了。",[70,104,106],{"id":105},"irradiance-caching","Irradiance Caching",[11,108,109],{},"要对场景中所有的纹素进行收集的话，不仅花费时间，且由于反弹并不是均匀的所以会有很多噪点。",[11,111,112],{},[58,113],{"alt":60,"src":114},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-4.png",[11,116,117],{},"所以这个时候就需要将收集的光照缓存起来，然后以插值的方式来收集光照数据。",[11,119,120],{},"当然上面的只是大致过程，其中还有很多细节上的优化，例如：",[11,122,123],{},[124,125,126],"strong",{},"Adpative Samping",[11,128,129],{},"如果在收集时，光子路径的相邻点间隔较大的情况，会增加额外的射线进行光照数据收集。",[11,131,132],{},[58,133],{"alt":60,"src":134},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-5.png",[43,136,138],{"id":137},"sky-light","Sky Light",[11,140,141],{},"天空光照稍微有些不同，并不会进行Photon Mapping。",[48,143,51],{"id":144},"direct-light-1",[11,146,147],{},"在Final Gathering时直接将SkyLight当作二次反射的光源进行光照收集。",[11,149,150],{},"对于场景中窗口过小导致收集到的间接光照不足时，可以添加LightMass Portal以放出更多的收集射线。",[11,152,153],{},[58,154],{"alt":60,"src":155},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-6.png",[48,157,159],{"id":158},"indirect-light","Indirect Light",[11,161,162],{},"天空光的间接光照则是对光照进行一个更小规模的MiniFinalGather。",[11,164,165],{},"不过这个说法可能不适用于当前版本，因为从4.18开始，天空光也可以接收多次反弹的间接光照了。",[35,167,169],{"id":168},"shadow-map","Shadow Map",[11,171,172],{},"这个系列并没有介绍阴影贴图，Shadow Map并不是为Static Light准备的，而是为Stational Light准备的。",[11,174,175],{},"在进行光照计算时，每一个动态的物体，都会根据自己的bound box与stational light的朝向关系，将Shadow Map合成到光照运算结果中去。",[11,177,178],{},"因此，如果Stational Light影响的动态物体特别多的时候，其效率是非常低下的。有时候考虑直接换为Dynamic Light反而更好。",[35,180,182],{"id":181},"precomputed-light-volume","Precomputed Light Volume",[11,184,185],{},"这个主要是在场景中生成预计算的间接光照缓存点，这样动态的物体就可以从中取得数据并插值得到自己的间接光照。",[11,187,188],{},"插值的方式中，ILCQ Point是根据物体当前的位置进行的，所以如果物体有一定的大小且移动速度较慢的话，就容易产生可见的阴影跳变。相对的ILCQ Volume由于使用多个点进行插值处理，运算成本会变高，尤其是对于非常大的物体。",[43,190,191],{"id":191},"缓存数据",[11,193,194],{},"PLV的数据是具有方向性的球谐函数",[11,196,197],{},[58,198],{"alt":60,"src":199},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-7.png",[11,201,202],{},"在计算的时候分为上下两个半球进行计算",[11,204,205],{},[58,206],{"alt":60,"src":207},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-8.png",[11,209,210],{},"计算方法是，在进行光照预计算的时候，对指定的缓存点，将直接光照与Final Gathering的值缓存起来。",[43,212,213],{"id":213},"缓存点的生成",[11,215,216],{},"生成方式总共分为三种",[48,218,220],{"id":219},"surface-light-sample","Surface Light Sample",[11,222,223],{},"这个是最单纯的，从每个Mesh的表面沿着法线方向进行缓存点添加。",[11,225,226],{},[58,227],{"alt":60,"src":228},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-9.png",[11,230,231],{},"可以通过配置文件进行行为修改。",[48,233,235],{"id":234},"detail-volume-sample","Detail Volume Sample",[11,237,238],{},"在世界中拖放Lightmass Character Indirect Detail Volume生成的缓存点。",[11,240,241],{},"这个Volume拖放之后会在内部生成缓存点。",[11,243,244],{},[58,245],{"alt":60,"src":246},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-10.png",[48,248,250],{"id":249},"uniform-volume-sample","Uniform Volume Sample",[11,252,253],{},"Lightmass Importance Sample这个Volume是在场景内全局性的生成缓存点",[11,255,256],{},[58,257],{"alt":60,"src":258},"\u002Fwp-content\u002Fuploads\u002F2018\u002F01\u002Fimage_thumb-11.png",[35,260,262],{"id":261},"usage","Usage",[11,264,265],{},"演讲中介绍了不少静态光照的配置技巧，这里只列出之前没有列出过的。",[11,267,268],{},[124,269,270],{},"反光板",[11,272,273],{},"直接将聚光灯打到一块板子上，只让间接光照计算影响到静态光照计算。",[11,275,276],{},[124,277,278],{},"Compress Lightmaps",[11,280,281],{},"这个光照贴图的压缩是有损的，如果关掉的话效果会变好，但是贴图体积会放大4倍左右。",[11,283,284],{},[124,285,286],{},"Lightmap Resolution",[11,288,289],{},"光照贴图的分辨率在配置时要注意，比最小的纹素小的光照细节无法被捕捉。",[11,291,292],{},"Static Lighting Level Scale",[11,294,295],{},"这个配置会影响到整个LightMass的计算，同样的如果导致小于RecordRadius的光照细节无法被捕捉。",[11,297,298],{},[124,299,300],{},"Use Emissive For Static Lighting",[11,302,303],{},"这个的光照计算和天空光一样是不会进行Photon Mapping的。",[11,305,306],{},"以及最后给出的配置和性能影响",[308,309,310,314,317,320,323],"ul",{},[311,312,313],"li",{},"Static Lighting Level Scale = 1→ 0.1",[311,315,316],{},"Num Indirect Lighting Bounces 👨→20",[311,318,319],{},"Indirect Lighting Quality = 1→10",[311,321,322],{},"Indirect Lighting Smoothness=1.0→1.0",[311,324,325],{},"Lighting Quality = Production Build Time",[11,327,328],{},"光照计算时间15m57s →4h10m24s",[11,330,331],{},"不过这个的演讲者是做建筑展示的，所以对静态光照的要求比较高，并没有考虑到游戏运行的成本。",[35,333,334],{"id":334},"总结",[11,336,337],{},"了解了静态光照的计算方法之后，在对其进行调整，尤其是要修改config.ini的时候非常的有帮助。",[11,339,340],{},"至少比盲目的调节选项然后等待漫长的光照计算之后来观察结果要好很多。",{"title":342,"searchDepth":343,"depth":344,"links":345},"",2,3,[346,357,358,366,367],{"id":37,"depth":343,"text":38,"children":347},[348,353],{"id":45,"depth":344,"text":46,"children":349},[350,352],{"id":50,"depth":351,"text":51},4,{"id":64,"depth":351,"text":65},{"id":137,"depth":344,"text":138,"children":354},[355,356],{"id":144,"depth":351,"text":51},{"id":158,"depth":351,"text":159},{"id":168,"depth":343,"text":169},{"id":181,"depth":343,"text":182,"children":359},[360,361],{"id":191,"depth":344,"text":191},{"id":213,"depth":344,"text":213,"children":362},[363,364,365],{"id":219,"depth":351,"text":220},{"id":234,"depth":351,"text":235},{"id":249,"depth":351,"text":250},{"id":261,"depth":343,"text":262},{"id":334,"depth":343,"text":334},"2018-01-01","md",{"layout":371,"status":372,"published":373,"author":374,"author_login":376,"author_email":377,"wordpress_id":378,"wordpress_url":379,"date_gmt":380,"excerpt":381},"post","publish",true,{"display_name":375,"login":376,"email":377,"url":342},"风铃","flinkor","flinkor@foxmail.com",2239,"\u002F\u002F?p=2239","2018-01-01 15:59:33 +0000",{"type":8,"value":382},[383],[11,384,13],{},"\u002F2018-01-01-note-lightmass-deep-dive",{"title":6,"description":13},"_legacy\u002F2018\u002F2018-01-01-note-lightmass-deep-dive",[389,390],"UE4","Lighting","lNxcndA-W2UxZRHbVV_MbKunnp78cQrGi-WboMRX8J8",{"id":393,"title":394,"body":395,"date":1043,"description":399,"extension":369,"meta":1044,"navigation":373,"path":1053,"seo":1054,"stem":1055,"tags":1056,"__hash__":1057},"blogs\u002F_legacy\u002F2017\u002F2017-10-21-ue4-lighting-troubleshooting-note.md","UE4光照问题排查指南",{"type":8,"value":396,"toc":1010},[397,400,408,411,415,418,424,428,431,434,440,443,449,453,456,462,465,471,474,478,481,484,487,490,496,499,502,505,511,515,518,524,527,531,534,540,543,546,549,552,555,558,581,589,593,596,602,606,614,617,620,624,630,633,639,642,645,648,657,661,668,671,677,680,684,687,695,698,701,704,710,713,719,723,726,732,735,741,744,747,750,753,756,759,762,765,768,771,775,781,784,787,790,793,796,799,807,811,814,822,826,829,835,838,841,844,847,850,856,859,862,868,871,874,877,880,883,889,892,895,898,902,905,911,915,918,921,924,928,934,937,941,944,950,953,956,959,970,973,977,980,986,989,996,999],[11,398,399],{},"这个是官方Wiki中光照问题排查指南的总结，对于排查光照问题很有帮助。",[11,401,402,403,24],{},"由于文章实在太长，所以并不是逐字翻译。但是会尽量保留所有的内容，之前的文章有重复的部分会导向以前的部分。官方Wiki的原始文章地址在[",[18,404,407],{"href":405,"rel":406},"https:\u002F\u002Fwiki.unrealengine.com\u002FLightingTroubleshootingGuide",[22],"这里",[35,409,410],{"id":410},"通用设定",[43,412,414],{"id":413},"为何我的阴影是黑色的","为何我的阴影是黑色的？",[11,416,417],{},"通常阴影纯黑是由于没有辅助的填充光照造成的，这种情况通常发生在开放场景中只有一个代替日光的直射光时。这时需要在场景中添加一个Sky Light作为全局光照，由于光照的反射模拟是有限的，天光可以有效的对现实中的光照进行模拟。",[11,419,420],{},[58,421],{"alt":422,"src":423},"clip_image001","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image001_thumb.png",[43,425,427],{"id":426},"将bsp转化为static-mesh时光照贴图设置错误","将BSP转化为Static Mesh时光照贴图设置错误",[11,429,430],{},"这个似乎是早期版本的问题，现在（4.18）已经不会有这个问题了。不过光照贴图的自动设置Index是0，出现问题时可以排查这里。",[11,432,433],{},"当将BSP物体转化为模型体时，可能会看到这样的错误",[11,435,436],{},[58,437],{"alt":438,"src":439},"clip_image002","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image002_thumb.png",[11,441,442],{},"这个是由于光照贴图没有完全的自动设定造成的，需要在SM的设定中手动的指定光照贴图分辨率和光照贴图的UV Channel。",[11,444,445],{},[58,446],{"alt":447,"src":448},"clip_image003","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image003_thumb.png",[43,450,452],{"id":451},"如何停止使用光照贴图","如何停止使用光照贴图？",[11,454,455],{},"如果整个项目都不使用的话，可以在项目设定中关闭静态光照：",[11,457,458],{},[58,459],{"alt":460,"src":461},"clip_image004","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image004_thumb.png",[11,463,464],{},"或者只是在单独的地图的世界设置中禁用预计算光照：",[11,466,467],{},[58,468],{"alt":469,"src":470},"clip_image005","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image005_thumb.png",[11,472,473],{},"会有提示，需要重新构建一次光照才会清除当前地图内的光照数据。",[43,475,477],{"id":476},"为何我的模型一部分不见了","为何我的模型一部分不见了？",[11,479,480],{},"和在建模软件中不同，UE4会对模型的面进行可见度裁剪。如果模型的一部分在UE4中不可见，可以按Alt+2进入线框模式，查看导入是否正确。",[11,482,483],{},"通常的情况下对模型进行修改比较好。",[11,485,486],{},"如果不想修改模型的话有两个解决方案：",[11,488,489],{},"选中对应的物体，打开双面光照",[11,491,492],{},[58,493],{"alt":494,"src":495},"clip_image006","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image006_thumb.png",[11,497,498],{},"Lightmass中的是静态光照的开关，Shadow Two Sided则决定了是否作为双面物体进行动态光照阴影计算。",[43,500,501],{"id":501},"将物体材质设定为双面的",[11,503,504],{},"在对应物体的材质中将其修改为双面材质",[11,506,507],{},[58,508],{"alt":509,"src":510},"clip_image007","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image007_thumb.png",[43,512,514],{"id":513},"为何突然光照效果变得不一样了","为何突然光照效果变得不一样了？",[11,516,517],{},"编辑器内部有自动调整渲染级别的设定，在渲染帧率下降时，编辑器会提示是否下调渲染等级，如果没有留意的话会发现渲染结果突然变得不一样了。直接对设置进行修改就好了",[11,519,520],{},[58,521],{"alt":522,"src":523},"clip_image008","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image008_thumb.png",[11,525,526],{},"去掉“显示器编辑器偏好设置？”的勾选，就不会自动进行渲染级别调整了",[43,528,530],{"id":529},"为何光照上有个红叉","为何光照上有个红叉？",[11,532,533],{},"Stationary Light在同一个被覆盖区域中只能有4个",[11,535,536],{},[58,537],{"alt":538,"src":539},"clip_image009","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image009_thumb.png",[11,541,542],{},"当超过这个数目时，范围最小的那个Stationary Light会被转化为动态光源。",[11,544,545],{},"由于动态光源拥有更高的运行时开销，所以需要注意。",[11,547,548],{},"这里的修正上只能对光源的布局进行重新规划。",[43,550,551],{"id":551},"光照贴图错误",[11,553,554],{},"光照贴图在设定上必须在0~1的UV空间内，超过的话就会在烘焙时提示警告Lightmap Overlapping by xx%。",[11,556,557],{},"当然还有一些其他的报错，光照贴图需要注意以下问题：",[308,559,560,563,566,569,572,575,578],{},[311,561,562],{},"不要有重叠的部分",[311,564,565],{},"不要超过0~1的UV空间",[311,567,568],{},"Flag-Mapping并不是最好的方式且经常导致光照贴图错误",[311,570,571],{},"尽量占满UV空间",[311,573,574],{},"如果模型很大而且复杂，最后分成数个物体，这样也能有助于裁剪等机制",[311,576,577],{},"尽量减小光照贴图分辨率以减少贴图尺寸",[311,579,580],{},"相互不接触的线之间要保持至少2像素的距离，以防止光照污染",[11,582,583,584,24],{},"更多的内容可以参照官方的[",[18,585,588],{"href":586,"rel":587},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FINT\u002FEngine\u002FContent\u002FTypes\u002FStaticMeshes\u002FLightmapUnwrapping\u002F",[22],"光照贴图指南",[43,590,592],{"id":591},"post-process中gi的设定","Post Process中GI的设定",[11,594,595],{},"PP中的GI设定可以对光照效果产生很大的影响，官方有一个示例就是通过两个PP的动态切换来实现灯光效果的变更。",[11,597,598],{},[58,599],{"alt":600,"src":601},"clip_image010","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image010_thumb.png",[43,603,605],{"id":604},"capsule-shadows","Capsule Shadows",[11,607,608,609,613],{},"这个是4.11版本的新特性，似乎和问题排查关系不大，可以参考之前的",[18,610,612],{"href":611},"\u002F2017-08-23-ue4-lighting-and-optimize\u002F#Capsule_Shadows","介绍","。",[35,615,616],{"id":616},"动态光照",[11,618,619],{},"动态光照在使用上比静态光照直观些，不需要每次都重新构建就能看到效果。",[43,621,623],{"id":622},"直射光独有属性csm","直射光独有属性：CSM",[11,625,626],{},[58,627],{"alt":628,"src":629},"clip_image011","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image011_thumb.png",[11,631,632],{},"这些属性都是决定动态光照级联切换的，在显示中打开",[11,634,635],{},[58,636],{"alt":637,"src":638},"clip_image012","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image012_thumb.png",[11,640,641],{},"可以更直观的看到效果",[11,643,644],{},"Dyamic Shadow Distance为光照的覆盖的范围，设置为0的话等于禁用这个光照。Stational光照的默认设定为0，也就是不开启动态光照。",[11,646,647],{},"Num Dynamic Shadow Cascades为动态贴图的过渡级别，越多的话动态光照的效果就越好，但是也更消耗性能，设置为0的话等同于禁用动态光照。",[11,649,650,651,656],{},"由于原文章中能够很直观的看到各个属性的调节的",[18,652,655],{"href":653,"rel":654},"https:\u002F\u002Fwiki.unrealengine.com\u002FLightingTroubleshootingGuide#Directional_Light_ONLY:_Cascaded_Shadow_Maps_Settings:",[22],"效果","，打开Shadow Frustrums就可以很好的进行观察，这里就不继续介绍了。",[43,658,660],{"id":659},"far-shadow","Far Shadow",[11,662,663,664,667],{},"远景物体的阴影投射，这一部分之前有总结过，可以移步以前",[18,665,660],{"href":666},"\u002F2017-08-23-ue4-lighting-and-optimize\u002F#Far_Shadow","的文章。",[11,669,670],{},"这里官方提到了额外的注意事项，就是Far Shadow Distance应当比CSM的距离要远，在运算上Far Shadow会在设定距离与CSM距离之间进行Cascade Count次级联运算。",[11,672,673],{},[58,674],{"alt":675,"src":676},"clip_image013","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image013_thumb.png",[11,678,679],{},"同时尽量只给大的物体投射Far Shadow，因为对于小的物体而言，Far Shadow其实是不是很必要却有额外消耗的。",[43,681,683],{"id":682},"csm调整","CSM调整",[11,685,686],{},"动态光照的污染等问题，通常通过调整CSM的属性来进行排查。",[11,688,689,694],{},[18,690,693],{"href":691,"rel":692},"https:\u002F\u002Fwiki.unrealengine.com\u002FLightingTroubleshootingGuide#Adjusting_Cascades_for_better_Quality:",[22],"官方的示例","中是通过调整Cascade Distribution Exponent来解决问题的，但是由于室外场景比较多变，并没有",[11,696,697],{},"统一的解决方案，通过Shadow Frustrums工具的配合，对上面的几个属性进行调整比较好。",[43,699,700],{"id":700},"动态光照通用属性",[11,702,703],{},"Shadow BIas通常用于调整动态阴影导致的自投影问题，一个过小的值将会导致阴影从很近的地方开始计算。",[11,705,706],{},[58,707],{"alt":708,"src":709},"clip_image014","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image014_thumb.png",[11,711,712],{},"Shadow Filter Sharpness则用于调整阴影的边缘是否尖锐",[11,714,715],{},[58,716],{"alt":717,"src":718},"clip_image015","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image015_thumb.png",[43,720,722],{"id":721},"为何光照在远处时穿过物体","为何光照在远处时穿过物体？",[11,724,725],{},"这个问题是由于用于遮挡动态光照的物体在距离很远时已经被裁剪造成的。",[11,727,728],{},[58,729],{"alt":730,"src":731},"clip_image016","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image016_thumb.png",[11,733,734],{},"比较直观的解决方案是直接拉大那个物体的Bound来避免其被裁剪。可以直接在物体实例中设置",[11,736,737],{},[58,738],{"alt":739,"src":740},"clip_image017","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image017_thumb.png",[11,742,743],{},"放大Bounds Scale，在显示中打开Bounds的预览可以很好的对其进行规划。",[11,745,746],{},"但是这里通常情况下的建议是避免这种光照使用方式，这里可以使用聚光灯或者光照函数、IIES来更加高效的实现这个效果。",[11,748,749],{},"使用物体遮挡来对光源的形状进行控制并不是一个好主意。",[35,751,752],{"id":752},"静态光照",[11,754,755],{},"光照贴图分辨率\u002F阴影质量",[11,757,758],{},"这里的建议虽然是官方的，但是并不能对所有的情况通用，只是作为光照问题排查的基础。",[11,760,761],{},"光照贴图分辨率用于调整阴影的质量，这里需要注意的是，这个分辨率是决定投影在其上的阴影的精度的，并不是决定其自身的阴影精度的。也就是说物体的阴影的质量是更加这个阴影投射到的物体的光照贴图分辨率决定的。",[11,763,764],{},"网格物体的分辨率必须是POT的，且数值越大阴影质量越高",[11,766,767],{},"BSP物体的分辨率则相反，数值越低阴影质量越高",[11,769,770],{},"Landscapes的分辨率调节则是一个乘数，越大质量越高",[43,772,774],{"id":773},"seams","Seams",[11,776,777],{},[58,778],{"alt":779,"src":780},"clip_image018","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image018_thumb.png",[11,782,783],{},"就是物体接合处的光照效果不真实的问题，这个问题通常是由间接光照引起的，因为间接光照计算时各个物体相互之间是独立的，因此计算的结果就会不合理。",[11,785,786],{},"官方的建议之一是调整世界设置中的静态光照参数",[11,788,789],{},"Indirect Lighting Quality设置到2或者更高",[11,791,792],{},"Indirect Lighting Smoothness设置到0.65~0.75之间",[11,794,795],{},"Static Lighting Level Scale这个属性由于是对计算单位进行缩放，虽然调小会有更好的阴影过度，但是会明显的提高光照计算量。通常应用于建筑展示领域，不建议在游戏开发中使用。",[11,797,798],{},"通常上面的调整效果是有限的，其实这个问题更多的应该从关卡构建上入手：",[308,800,801,804],{},[311,802,803],{},"不要过分的将关卡模块化，当可以有一整面墙的时候就不要将其拆分为好几个部分。这样可以防止问题的同时减少绘制调用次数。",[311,805,806],{},"使用物体对接缝处进行遮蔽。",[43,808,810],{"id":809},"构建光照时报错overlapping-uv-error","构建光照时报错Overlapping UV error",[11,812,813],{},"这个之前就有提到，大概是专门又详细的说明一次。",[11,815,816,817,821],{},"Overlapping和Wrapping都是UV错误的形式，可以使用",[18,818,820],{"href":819},"\u002F2017-08-23-ue4-lighting-and-optimize\u002F#Error_Coloring","错误着色","进行可视化排查，但是通常直接查看UV就能看出问题。",[43,823,825],{"id":824},"如何使用编辑器生成光照uv","如何使用编辑器生成光照UV",[11,827,828],{},"在Mesh的编辑窗口",[11,830,831],{},[58,832],{"alt":833,"src":834},"clip_image019","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image019_thumb.png",[11,836,837],{},"勾选生成光照贴图UV后，设置下面三个属性就可以了。",[11,839,840],{},"通常源光照贴图索引使用的应当是用于贴图渲染的那个UV通道。",[11,842,843],{},"目标索引则是要生成的UV索引。",[11,845,846],{},"点击应用修改后就会生成光照UV。",[11,848,849],{},"这时候就可以在上面的通用设定中对光照UV的索引进行设置了。",[11,851,852],{},[58,853],{"alt":854,"src":855},"clip_image020","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image020_thumb.png",[43,857,858],{"id":858},"间接光照回弹次数",[11,860,861],{},"可以在世界设定中对间接光照的回弹次数进行设定，回弹计算的次数越多，间接光照的效果越好。",[11,863,864],{},[58,865],{"alt":866,"src":867},"clip_image021","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image021_thumb.png",[11,869,870],{},"设定上拖动只能在1~4之间，但是可以手动输入更大的值。",[11,872,873],{},"回弹计算在第一次计算时成本最高，之后计算的话成本不高，但是也不会有什么太大的结果变化。通常4次计算就足够了。",[11,875,876],{},"为何间接光照产生了很多“斑点”？",[11,878,879],{},"通过调节光照贴图分辨率可以缓解这个问题。",[11,881,882],{},"虽然调整光照贴图质量以及平滑度也能解决这个问题",[11,884,885],{},[58,886],{"alt":887,"src":888},"clip_image022","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image022_thumb.png",[11,890,891],{},"但是通常会导致过高的光照构建消耗，并不推荐。",[11,893,894],{},"提高间接光照回弹次数能够起到比提高光照贴图分辨率更好的效果。",[11,896,897],{},"一个更好的解决方案是，不要让区域只受间接光照的影响，添加一个不投影的光源就能很好的防止斑点的出现。",[43,899,901],{"id":900},"lighting-needs-to-be-rebuilt是什么","\"Lighting needs to be rebuilt\"是什么？",[11,903,904],{},"光照需要重新构建，点击构建按钮下的仅构建光照即可。",[11,906,907],{},[58,908],{"alt":909,"src":910},"clip_image023","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image023_thumb.png",[43,912,914],{"id":913},"unbuilt-actors-list","Unbuilt Actors List",[11,916,917],{},"如果构建后依然出现这个提示，可以在输出日志中敲入命令DumpUnbuiltLightInteractions来列出未构建的物体。",[11,919,920],{},"通常会出现这类物体可能还是由于蓝图或代码在物体摆放后对其移动造成的。",[11,922,923],{},"通过这个列表对问题进行排查即可。",[43,925,927],{"id":926},"statistics-window","Statistics Window",[11,929,930],{},[58,931],{"alt":932,"src":933},"clip_image024","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image024_thumb.png",[11,935,936],{},"这个窗口可以排查是哪些物体过度的消耗了光照构建的时间。",[43,938,940],{"id":939},"lanscape上草的阴影问题","Lanscape上草的阴影问题",[11,942,943],{},"可以在GrassType上找到一个选项，",[11,945,946],{},[58,947],{"alt":948,"src":949},"clip_image025","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image025_thumb.png",[11,951,952],{},"让草直接使用Landscape的光照贴图即可。",[43,954,955],{"id":955},"通过命令行构建构造",[11,957,958],{},"4.10.2后的功能",[11,960,961,962,966,967],{},"UE4-Editor.exe ",[963,964,965],"span",{},"Project Folder Path"," -run=resavepackages -buildlighting -MapsOnly -ProjectOnly -AllowCommandletRendering -Map=",[963,968,969],{},"Name of map",[11,971,972],{},"其中-Map是可选项，不过去掉的话会转而构建所有的地图。",[43,974,976],{"id":975},"foliage的光照","Foliage的光照",[11,978,979],{},"在Foliage中可以使用Light Map Resolution选项覆盖掉Mesh本身的光照贴图分辨率。",[11,981,982],{},[58,983],{"alt":984,"src":985},"clip_image026","\u002Fwp-content\u002Fuploads\u002F2017\u002F10\u002Fclip_image026_thumb.png",[11,987,988],{},"由于Foliage实际上是被打包在一起的，所以所有的FoliageInstance的光照贴图将会合在一张里面，所以缩小其分辨率是有一定必要的。",[11,990,991,992,995],{},"尤其是在构建时出现提示Instanced_Foliage_Actor_",[963,993,994],{},"X"," lightmap is too large and should be reduced的时候，就可以在这里进行修改。",[11,997,998],{},"另外还有一些官方的Foliage官方建议：",[308,1000,1001,1004,1007],{},[311,1002,1003],{},"如果要让Foliage使用风相关的特性的话，要避免对Foliage使用静态光照，因为阴影不会随风而动。",[311,1005,1006],{},"减少光照贴图分辨率以减小贴图空间消耗",[311,1008,1009],{},"在Grass上禁用静态光照，因为通常Grass是数目极大，会造成明显的构建消耗",{"title":342,"searchDepth":343,"depth":344,"links":1011},[1012,1024,1031],{"id":410,"depth":343,"text":410,"children":1013},[1014,1015,1016,1017,1018,1019,1020,1021,1022,1023],{"id":413,"depth":344,"text":414},{"id":426,"depth":344,"text":427},{"id":451,"depth":344,"text":452},{"id":476,"depth":344,"text":477},{"id":501,"depth":344,"text":501},{"id":513,"depth":344,"text":514},{"id":529,"depth":344,"text":530},{"id":551,"depth":344,"text":551},{"id":591,"depth":344,"text":592},{"id":604,"depth":344,"text":605},{"id":616,"depth":343,"text":616,"children":1025},[1026,1027,1028,1029,1030],{"id":622,"depth":344,"text":623},{"id":659,"depth":344,"text":660},{"id":682,"depth":344,"text":683},{"id":700,"depth":344,"text":700},{"id":721,"depth":344,"text":722},{"id":752,"depth":343,"text":752,"children":1032},[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042],{"id":773,"depth":344,"text":774},{"id":809,"depth":344,"text":810},{"id":824,"depth":344,"text":825},{"id":858,"depth":344,"text":858},{"id":900,"depth":344,"text":901},{"id":913,"depth":344,"text":914},{"id":926,"depth":344,"text":927},{"id":939,"depth":344,"text":940},{"id":955,"depth":344,"text":955},{"id":975,"depth":344,"text":976},"2017-10-21",{"layout":371,"status":372,"published":373,"author":1045,"author_login":376,"author_email":377,"wordpress_id":1046,"wordpress_url":1047,"date_gmt":1048,"excerpt":1049},{"display_name":375,"login":376,"email":377,"url":342},2031,"\u002F\u002F?p=2031","2017-10-21 05:49:23 +0000",{"type":8,"value":1050},[1051],[11,1052,399],{},"\u002F2017-10-21-ue4-lighting-troubleshooting-note",{"title":394,"description":399},"_legacy\u002F2017\u002F2017-10-21-ue4-lighting-troubleshooting-note",[389,390],"o1IWVGPJuUDTqsLwdahOGRXsZxnTw16Zw2Dxk2LTmUU",{"id":1059,"title":1060,"body":1061,"date":1799,"description":1065,"extension":369,"meta":1800,"navigation":373,"path":1809,"seo":1810,"stem":1811,"tags":1812,"__hash__":1814},"blogs\u002F_legacy\u002F2017\u002F2017-08-23-ue4-lighting-and-optimize.md","UE4光照及优化",{"type":8,"value":1062,"toc":1759},[1063,1066,1069,1090,1092,1095,1098,1103,1107,1110,1113,1116,1120,1123,1128,1131,1134,1139,1142,1145,1148,1151,1154,1157,1160,1163,1168,1171,1174,1177,1180,1189,1192,1197,1200,1205,1208,1210,1213,1218,1221,1226,1229,1232,1235,1239,1242,1247,1250,1253,1258,1261,1264,1268,1271,1274,1277,1280,1285,1288,1293,1297,1300,1305,1308,1311,1314,1318,1321,1325,1328,1331,1334,1342,1345,1348,1353,1356,1360,1363,1366,1369,1375,1378,1383,1386,1391,1394,1399,1402,1406,1409,1412,1417,1420,1423,1427,1430,1435,1438,1444,1447,1452,1455,1459,1468,1471,1476,1479,1482,1484,1487,1491,1494,1500,1503,1506,1511,1514,1517,1521,1524,1527,1533,1537,1540,1545,1548,1552,1555,1560,1563,1567,1570,1575,1578,1581,1584,1589,1593,1596,1602,1605,1608,1611,1615,1618,1623,1626,1630,1633,1639,1642,1646,1649,1652,1660,1662,1665,1668,1671,1674,1679,1682,1685,1690,1693,1696,1700,1703,1706,1711,1714,1717,1720,1723,1727,1730,1735,1738,1746,1751,1754,1756],[11,1064,1065],{},"UE4的光照系统很强大，效果也很好，但是在场景复杂度较高或者开放世界的情况下，很容易造成性能瓶颈。",[11,1067,1068],{},"当前UE4版本为4.17.1。",[11,1070,1071,1072,1077,1078,1083,1084,1089],{},"光照系统的大部分应用都可以在[",[18,1073,1076],{"href":1074,"rel":1075},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FRendering\u002FLightingAndShadows\u002Findex.html",[22],"官方文档","]中找到，这里的大部分内容是对官方Lighting系列[",[18,1079,1082],{"href":1080,"rel":1081},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=jCsrWzt9F28",[22],"视频1","][",[18,1085,1088],{"href":1086,"rel":1087},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=nm1slxtF_qA",[22],"视频2","]的总结。",[35,1091,752],{"id":752},[11,1093,1094],{},"UE4的静态光照是在光照构建中进行预计算的部分，会对预计算的光照结果进行存储，例如光照贴图、阴影贴图这样的形式，可以在运行时支付较低的效率而获得较好的光照结果。",[11,1096,1097],{},"静态光照可以在世界设置中可以进行关闭",[11,1099,1100],{},[58,1101],{"alt":60,"src":1102},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-7.png",[43,1104,1106],{"id":1105},"lightmass-importance-volume","Lightmass Importance Volume",[11,1108,1109],{},"这个是预计算光照用的Volume，LightMass的光照计算在点击“构建光照”之后会产生光照贴图。",[11,1111,1112],{},"控制良好的预计算光照可以让场景变得美观的同时降低动态光照的成本，但是在控制不好的时候就会造成贴图空间爆炸。",[11,1114,1115],{},"LightMass Importance Volume是用来控制预计算精度的，很明显的一点是，加上之后在空间内部会生成更多的间接光照缓存点，使得间接光照的效果变得更好。",[43,1117,1119],{"id":1118},"ssao","SSAO",[11,1121,1122],{},"世界设定中还有一个LightMass相关的功能",[11,1124,1125],{},[58,1126],{"alt":60,"src":1127},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-8.png",[11,1129,1130],{},"LightMass这里的AO就是SSAO，由于是工作在屏幕空间的后期计算，要进行探索的话可以在PostProcess中进行调整测试。",[11,1132,1133],{},"还有一个额外的选项",[11,1135,1136],{},[58,1137],{"alt":60,"src":1138},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-9.png",[11,1140,1141],{},"打开之后可以使得PrecompoutedAOMask材质节点变为有效，这样就可以使用AO的数据来对场景内物体之间的混合效果进行控制。",[11,1143,1144],{},"详细的可以看这个选项的注释。",[11,1146,1147],{},"更正：",[11,1149,1150],{},"这里是错误的，LightMass选项里的AO选项是给预计算光照的，Generate Ambient Occlusion Material这个选项打开的PrecompoutedAOMask也是预计算光照的结果反映到材质中的方式。SSAO是工作在屏幕空间的一种PostProcess效果，与预计算光照是不同的。",[11,1152,1153],{},"感谢@裕 的指正~",[43,1155,1156],{"id":1156},"间接光照缓存",[11,1158,1159],{},"间接光照缓存的作用是通过缓存某个点的间接光照，将其作用于经过该处的动态物体上，以获得好的间接光照效果。",[11,1161,1162],{},"在Movable的物体以及角色上可以对间接光照的计算类型进行设定",[11,1164,1165],{},[58,1166],{"alt":60,"src":1167},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-10.png",[11,1169,1170],{},"ILCQ为Point的时候就是一个点，Volume就是很多点。",[11,1172,1173],{},"在物体移动时，这些生成的点将根据自己所处的位置，通过周围的间接光照缓存点进行插值并计算出间接光照。",[11,1175,1176],{},"虽然插值点多的话间接光照效果会变好，但使用何种形式需要根据性能和需求进行权衡。",[11,1178,1179],{},"可以使用",[1181,1182,1183,1186],"blockquote",{},[11,1184,1185],{},"r.cache.drawinterplotionpoint 1",[11,1187,1188],{},"r.cache.updateeveryframe 1",[11,1190,1191],{},"这两条指令来预览缓存插值点的生成。",[11,1193,1194],{},[58,1195],{"alt":60,"src":1196},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-11.png",[11,1198,1199],{},"对于角色的光照缓存还有一个另外的",[11,1201,1202],{},[58,1203],{"alt":60,"src":1204},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-12.png",[11,1206,1207],{},"用于提高区域计算精度的体积。",[43,1209,605],{"id":604},[11,1211,1212],{},"这个是专门为骨骼模型设计的投影优化方式，在骨骼的Lighting属性中能够看到相关的选项：",[11,1214,1215],{},[58,1216],{"alt":60,"src":1217},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-13.png",[11,1219,1220],{},"要使用必须在骨骼网格中指定用于投影的Physics Asset。",[11,1222,1223],{},[58,1224],{"alt":60,"src":1225},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-14.png",[11,1227,1228],{},"使用这种方式可以防止一般较为复杂的角色模型在进行投影计算时产生过多的消耗，尤其是同一个场景内有很多角色模型的情况。",[35,1230,1231],{"id":1231},"光照问题",[11,1233,1234],{},"在光照的结果上，有时会出现并非预期的结果。在进行场景构建、模型制作时需要预先做好一些预防工作。",[43,1236,1238],{"id":1237},"indirect-seams","Indirect Seams",[11,1240,1241],{},"间接光照的运算结果在模型之间的接缝处会出现不自然的裂缝",[11,1243,1244],{},[58,1245],{"alt":60,"src":1246},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-15.png",[11,1248,1249],{},"这种的主要原因是两个Mesh之间虽然是平滑的，但是在间接光照进行阴影计算时并不知道这些信息。",[11,1251,1252],{},"可以通过在世界设置中调节间接光照的质量和平滑度来减少这种现象",[11,1254,1255],{},[58,1256],{"alt":60,"src":1257},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-16.png",[11,1259,1260],{},"提高间接光照质量会加重光照构建的成本，而如果过于提高平滑度的话，会导致间接光照的很多细节被丢弃。",[11,1262,1263],{},"所以一个更好的解决方案是，在构建关卡时，如果是一个平滑的面的话就直接使用一个整体的模型来做，而不是用好几个模型拼接而成。",[43,1265,1267],{"id":1266},"uv-seams","UV Seams",[11,1269,1270],{},"这个是由于模型的UV没有很好的接合造成的，由于邻近的顶点在UV上并不连接，在进行间接光照计算时，产生的结果就没有办法很好的利用这些信息。",[11,1272,1273],{},"根据官方的说明，提高间接光照质量并不会解决UV Seams的问题。",[11,1275,1276],{},"这个问题更多的是在建模上进行解决。",[11,1278,1279],{},"不要生成这样的UV",[11,1281,1282],{},[58,1283],{"alt":60,"src":1284},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-17.png",[11,1286,1287],{},"而是尽量保持邻接信息",[11,1289,1290],{},[58,1291],{"alt":60,"src":1292},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-18.png",[43,1294,1296],{"id":1295},"bleeding","Bleeding",[11,1298,1299],{},"光照泄露的主要原因是光照贴图的分辨率造成的",[11,1301,1302],{},[58,1303],{"alt":60,"src":1304},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-19.png",[11,1306,1307],{},"像这样室外的光照感觉上就像直接透过到了室内，显然不符合预期。",[11,1309,1310],{},"虽然通过修改光照贴图的分辨率来进行应对，但是这样就相当于绕过了问题的来源。",[11,1312,1313],{},"更根本的解决方法是，让“地板”与房间的尺寸匹配，这样在光照计算时，房间的地板就不会接收到外部的光的光照计算。",[35,1315,1317],{"id":1316},"tips","TIPS",[11,1319,1320],{},"UE4的光照系统中有一些通用的工具和功能，可以方便的对光照进行布置。",[43,1322,1324],{"id":1323},"lpv","LPV",[11,1326,1327],{},"Light Propagation Volumes目前处于开发阶段，但是在光照相关的属性的很多部分都能看到它的对应属性。",[11,1329,1330],{},"这个体积主要的作用是，在动态光照中对间接光照之类的效果进行光线传播运算。",[11,1332,1333],{},"功能上非常的有用，因为有时候确实会需要在动态光照中有间接光照这样的效果来加强场景的真实性。",[11,1335,1336,1337,24],{},"更多的内容可以参考官方的[",[18,1338,1341],{"href":1339,"rel":1340},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FRendering\u002FLightingAndShadows\u002FLightPropagationVolumes\u002Findex.html",[22],"LPV文档",[11,1343,1344],{},"这里需要注意的是LPV虽然从命名上看起来像是一个体积控件，但是其实并不存在这样一个Volume，其属性是在PostProcess中进行修改的。",[11,1346,1347],{},"在开启之后可以在",[11,1349,1350],{},[58,1351],{"alt":60,"src":1352},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-20.png",[11,1354,1355],{},"打开LPV的属性可视化。",[43,1357,1359],{"id":1358},"csm","CSM",[11,1361,1362],{},"Cascade Shadow Map是UE4阴影贴图的使用方式，在Far Shadow、Dynamic Shadow和Static Shadow中使用了这个机制。",[11,1364,1365],{},"这个机制的主要作用是，在不同的距离层级，使用不同精度的阴影贴图。",[11,1367,1368],{},"在设定CSM的同时，还可以对过渡效果进行调节",[11,1370,1371],{},[58,1372],{"alt":1373,"src":1374},"clip_image00115","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image00115_thumb.png",[11,1376,1377],{},"对应的CSM数量被设置为0的话，就相当于关闭了相应的阴影类型。",[11,1379,1380],{},[58,1381],{"alt":60,"src":1382},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-21.png",[11,1384,1385],{},"CSM的计算范围可以通过在显示中打开",[11,1387,1388],{},[58,1389],{"alt":60,"src":1390},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-22.png",[11,1392,1393],{},"这个选项来进行预览",[11,1395,1396],{},[58,1397],{"alt":60,"src":1398},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-23.png",[11,1400,1401],{},"类似这样，可以在调节相关属性的时候有一个好的可视化工具。",[43,1403,1405],{"id":1404},"emissive-material","Emissive Material",[11,1407,1408],{},"自发光颜色的材质是通过HDR来实现泛光效果的，因此它本身并不参与光照运算。",[11,1410,1411],{},"通过在使用了自发光颜色材质的物体上打开",[11,1413,1414],{},[58,1415],{"alt":60,"src":1416},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-24.png",[11,1418,1419],{},"可以让其能够照亮周围环境，但仅限于静态光照。当物体是Movable时，没有办法开启这个选项。",[11,1421,1422],{},"视频中实现的类型于动态照亮的效果是通过在物体上绑定一个改变GI的PP来实现的，然后两个PP之间的Blending就会改变空间内的灯光造成的影响，形成类似于被物体本身照亮的效果。",[43,1424,1426],{"id":1425},"error-coloring","Error Coloring",[11,1428,1429],{},"错误着色可以用于排查静态光照计算时报出的UV方面的错误，因为光照构建时只是提示物体上有UV的Overlapping和Wrapping有时候还是很难找到对应的问题的，尤其是模型并不是自己构建的情况下。",[11,1431,1432],{},[58,1433],{"alt":422,"src":1434},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image001_thumb.png",[11,1436,1437],{},"打开这个选项之后要将光照质量调整为预览，才能看到错误着色。",[11,1439,1440],{},[58,1441],{"alt":1442,"src":1443},"clip_image0015","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image0015_thumb.png",[11,1445,1446],{},"重新构建一次光照，就能看到",[11,1448,1449],{},[58,1450],{"alt":60,"src":1451},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-25.png",[11,1453,1454],{},"橙色的部分是Overlapping而绿色的部分是Wrapping。",[43,1456,1458],{"id":1457},"volumetric-lighting","Volumetric Lighting",[11,1460,1461,1462,1467],{},"这是类似于聚光灯的[",[18,1463,1466],{"href":1464,"rel":1465},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FRendering\u002FLightingAndShadows\u002FLightShafts\u002Findex.html",[22],"Light Shaft","]的效果，官方的Blueprint示例工程中也有类似的名为GodRay的效果实现。",[11,1469,1470],{},"在引擎内容中搜索LightBeam就能找到",[11,1472,1473],{},[58,1474],{"alt":60,"src":1475},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-26.png",[11,1477,1478],{},"这里的模拟方式是在类似光束效果的模型上贴上一个Translucent贴图。",[11,1480,1481],{},"虽然半透明材质的消耗比普通的材质高，但是在实现光束效果上却是很高的成本节约。",[35,1483,616],{"id":616},[11,1485,1486],{},"动态光照是实时计算的光照，如果关闭了光照预计算的话，所有的光照计算都是实时生成的。如果没有启用LPV的话，静态光照中的间接光照缓存无法使用的情况下，有时候也会造成画面质量的下降。",[43,1488,1490],{"id":1489},"distance-filed","Distance Filed",[11,1492,1493],{},"距离场在动态光照的优化和填补中有相当大的作用，距离场的基本原理就是在模型的周围向外扩散而成的距离场。",[11,1495,1496],{},[58,1497],{"alt":1498,"src":1499},"clip_image0017","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image0017_thumb.png",[11,1501,1502],{},"距离场的生成需要在项目设置中进行开启，虽然距离场生成后会产生额外的存储成本，但是可以在动态光照优化中起到很大的作用。",[11,1504,1505],{},"利用距离场生成的阴影的成本会比动态光照的阴影低很多，通常情况下，将动态光照的作用范围调小",[11,1507,1508],{},[58,1509],{"alt":60,"src":1510},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-27.png",[11,1512,1513],{},"然后在基本上看不到阴影差别的距离上使用距离场生成的阴影进行替代可以很好的降低动态光照对场景的消耗。",[11,1515,1516],{},"事实是，大部分情况下，动态光照的阴影和距离场的阴影，在中距离上基本上没有什么太大的差别。",[48,1518,1520],{"id":1519},"distance-field-resolution","Distance field resolution",[11,1522,1523],{},"Distance field resolution这个属性是用于调整距离场的精细度的，在Mesh自己的设置里面可以找到。",[11,1525,1526],{},"稍微增加一点就会有明显的提升，重要的是平衡的选择，远距离物体完全没有必要性。",[11,1528,1529],{},[58,1530],{"alt":1531,"src":1532},"clip_image0019","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image0019_thumb.png",[48,1534,1536],{"id":1535},"raytraced-distahcefield-shadows","RayTraced DistahceField Shadows",[11,1538,1539],{},"对于需要柔和的渐变光照的情况，可以使用",[11,1541,1542],{},[58,1543],{"alt":438,"src":1544},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image002_thumb.png",[11,1546,1547],{},"打开只有在下面的属性可以调节因距离而变化的边缘阴影的效果。",[48,1549,1551],{"id":1550},"selfshadow","SelfShadow",[11,1553,1554],{},"当物体的自身投影出问题的时候可以试着调节",[11,1556,1557],{},[58,1558],{"alt":447,"src":1559},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image003_thumb.png",[11,1561,1562],{},"来进行修正。",[48,1564,1566],{"id":1565},"two-sided-distance-field-generation","Two-Sided Distance Field Generation",[11,1568,1569],{},"一般在Foliage上会使用到的属性，如果觉得生成的DF数据形成的投影不够浓密的话，可以打开这个选项。",[11,1571,1572],{},[58,1573],{"alt":60,"src":1574},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-28.png",[11,1576,1577],{},"双面计算会产生额外的成本，在有必要的情况下使用即可，不过也可以考虑使用下面的替代物品。",[48,1579,1580],{"id":1580},"距离场替代物品",[11,1582,1583],{},"使用一个替代的物品来计算距离场，通常也是在Foliage中使用到，可以降低树的面多造成的性能影响。",[11,1585,1586],{},[58,1587],{"alt":60,"src":1588},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-29.png",[43,1590,1592],{"id":1591},"contact-shadow","Contact Shadow",[11,1594,1595],{},"这个是Light Source中的属性",[11,1597,1598],{},[58,1599],{"alt":1600,"src":1601},"clip_image00111","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image00111_thumb.png",[11,1603,1604],{},"设置成0以上的值的话就会进行接触阴影的计算，这个计算时工作在屏幕空间的。",[11,1606,1607],{},"由于是工作在屏幕空间，在物体距离较远时阴影的损失也不会变的严重。",[11,1609,1610],{},"可以用于填补默认的级联阴影的距离损失，也就是说，可以调低级联阴影，降低阴影消耗。",[43,1612,1614],{"id":1613},"light-function","Light Function",[11,1616,1617],{},"光照函数相对阴影计算而言的成本是很低的，所以在实现云的投影的时候通常会使用光照函数。",[11,1619,1620],{},[58,1621],{"alt":60,"src":1622},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-30.png",[11,1624,1625],{},"官方的优化建议中也有说明，如果多个组合光源的效果可以用光照函数来替代的话，可以很好的提高效率。",[43,1627,1629],{"id":1628},"distance-filed-ao","Distance Filed AO",[11,1631,1632],{},"这个是天空光特有的功能，天空光可以利用距离场的生成数据进行环境光的投影计算",[11,1634,1635],{},[58,1636],{"alt":1637,"src":1638},"clip_image00113","\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fclip_image00113_thumb.png",[11,1640,1641],{},"只有当天空光是可移动的时候才能使用。",[43,1643,1645],{"id":1644},"ies","IES",[11,1647,1648],{},"IES的成本比光照函数还低一些，可以实现一些低成本的投影效果。",[11,1650,1651],{},"有助于关闭不必要的光照投影，例如只是用于模拟灯罩、遮挡的投影，或者干脆是车灯这样的效果。",[11,1653,1654,1655,24],{},"IES的使用可以参照官方的[",[18,1656,1659],{"href":1657,"rel":1658},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FRendering\u002FLightingAndShadows\u002FIESLightProfiles\u002Findex.html",[22],"IES文档",[43,1661,660],{"id":659},[11,1663,1664],{},"这是与通常的静态光照和动态光照相反的一种阴影模式，主要是为了保持在远景上的投影来使得场景看起来更有真实感。",[11,1666,1667],{},"通常在Landscape上开启使用，对于需要的物体，也可以开启使用。注意，要在对应的光源上也开启Far Shadow才行。",[43,1669,1670],{"id":1670},"设置",[11,1672,1673],{},"在项目设置中个，有一个关闭静态光照的总开关",[11,1675,1676],{},[58,1677],{"alt":60,"src":1678},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-31.png",[11,1680,1681],{},"不过通常在对应的地图的世界设置中进行关闭更加具有可控制性一些。",[11,1683,1684],{},"还有针对移动端CSM的专有设定",[11,1686,1687],{},[58,1688],{"alt":60,"src":1689},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-32.png",[35,1691,1692],{"id":1692},"优化",[11,1694,1695],{},"UE4提供了一些用于场景优化的工具，像是LOD和Mipmap这样的机制在场景优化的时候就比较实用。",[43,1697,1699],{"id":1698},"cull-distance-volume","Cull Distance Volume",[11,1701,1702],{},"这个是一个用于裁剪的体积，其内部的物体在远离玩家的时候回直接被裁剪掉，不参与渲染。",[11,1704,1705],{},"由于动态光照的性能消耗与参与计算的面数成比例，这样就可以起到一定的优化作用了，思路基本和LOD相同。",[11,1707,1708],{},[58,1709],{"alt":60,"src":1710},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-33.png",[11,1712,1713],{},"CullDistance的属性比较简单，每个数组的元素表示的是物体大小小于该值的，应该在里玩家多少距离处隐藏。这里的数据虽然会被按照顺序使用，但是实际上打乱顺序也没有关闭。",[11,1715,1716],{},"不过有两个问题需要留意",[11,1718,1719],{},"首先，必须在PIE以上的状态Cull Distance Volume才会起作用。在编辑器内必须按G进入游戏预览模式才能看到效果。",[11,1721,1722],{},"然后，必须有一个cull distance为0的设置赋给一个大的size，如上面的(1000,0)，否则当距离到达最远的Distance时，会裁剪掉内部的所有物体，包括天空球、大气雾这些实际上没有Size的物体。",[43,1724,1726],{"id":1725},"foliage-culling","Foliage Culling",[11,1728,1729],{},"Foliage的Culling属性可以在每一个独立的Foliage上进行设置",[11,1731,1732],{},[58,1733],{"alt":60,"src":1734},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-34.png",[11,1736,1737],{},"如上面的Cull Distance设定，在没有使用PerinstanceFadeAmount的情况下，采用的裁剪距离时1000。",[11,1739,1740,1741,1745],{},"从500",[1742,1743,1744],"del",{},"1000的范围内PerInstanceFadeAmount由1","0进行变化，这样就可以在材质中对Foliage进行一个Fade的过程，而不是直接突兀的从边界消失。",[11,1747,1748],{},[58,1749],{"alt":60,"src":1750},"\u002Fwp-content\u002Fuploads\u002F2017\u002F08\u002Fimage_thumb-35.png",[11,1752,1753],{},"使用PerInstanceFadeAmount配合Translucent的Mask替代方案DitherTemporalAA，可以实现较好的过渡效果。",[35,1755,334],{"id":334},[11,1757,1758],{},"光照是渲染中的一个很重要的部分，如果没有处理好的话，不仅场景不好看，还极其的影响效率，是非常需要注意的一个部分。",{"title":342,"searchDepth":343,"depth":344,"links":1760},[1761,1767,1772,1779,1794,1798],{"id":752,"depth":343,"text":752,"children":1762},[1763,1764,1765,1766],{"id":1105,"depth":344,"text":1106},{"id":1118,"depth":344,"text":1119},{"id":1156,"depth":344,"text":1156},{"id":604,"depth":344,"text":605},{"id":1231,"depth":343,"text":1231,"children":1768},[1769,1770,1771],{"id":1237,"depth":344,"text":1238},{"id":1266,"depth":344,"text":1267},{"id":1295,"depth":344,"text":1296},{"id":1316,"depth":343,"text":1317,"children":1773},[1774,1775,1776,1777,1778],{"id":1323,"depth":344,"text":1324},{"id":1358,"depth":344,"text":1359},{"id":1404,"depth":344,"text":1405},{"id":1425,"depth":344,"text":1426},{"id":1457,"depth":344,"text":1458},{"id":616,"depth":343,"text":616,"children":1780},[1781,1788,1789,1790,1791,1792,1793],{"id":1489,"depth":344,"text":1490,"children":1782},[1783,1784,1785,1786,1787],{"id":1519,"depth":351,"text":1520},{"id":1535,"depth":351,"text":1536},{"id":1550,"depth":351,"text":1551},{"id":1565,"depth":351,"text":1566},{"id":1580,"depth":351,"text":1580},{"id":1591,"depth":344,"text":1592},{"id":1613,"depth":344,"text":1614},{"id":1628,"depth":344,"text":1629},{"id":1644,"depth":344,"text":1645},{"id":659,"depth":344,"text":660},{"id":1670,"depth":344,"text":1670},{"id":1692,"depth":343,"text":1692,"children":1795},[1796,1797],{"id":1698,"depth":344,"text":1699},{"id":1725,"depth":344,"text":1726},{"id":334,"depth":343,"text":334},"2017-08-23",{"layout":371,"status":372,"published":373,"author":1801,"author_login":376,"author_email":377,"wordpress_id":1802,"wordpress_url":1803,"date_gmt":1804,"excerpt":1805},{"display_name":375,"login":376,"email":377,"url":342},1952,"\u002F\u002F?p=1952","2017-08-23 07:00:16 +0000",{"type":8,"value":1806},[1807],[11,1808,1065],{},"\u002F2017-08-23-ue4-lighting-and-optimize",{"title":1060,"description":1065},"_legacy\u002F2017\u002F2017-08-23-ue4-lighting-and-optimize",[389,1813,390],"Rendering","ImEbV9hxl70JgN620bn2U_qJFuejFQ8rUEAkeajNxaU",1788763179464]