怎么用htc vive看酷家乐怎么用

&p&错,不是不喜欢x64,而是不喜欢没用的东西。&/p&&br&&blockquote&1. office在安装的时候默认是32位的,即使你是64位的&/blockquote&&p&那是因为几乎所有第三方插件是32位的,装了64位office后插件失效。所以默认用了32位的office。&/p&&blockquote&2. vcpkg默认安装32位的lib文件,即使你是64位的&/blockquote&&p&因为开发者在编译的时候基本都会编译32位的exe,vcpkg就得给个32位的lib。&/p&&blockquote&3. vs中的默认项目类型是32位的;&/blockquote&&p&同样是因为开发者会需要编译一个32位的。而且,这个事情多年前我提过bug,因为用cmake生成项目的时候,可以只有64位。这破坏了一些假设,比如profiler。结果就是profiler开不起来。VS的人告诉我,只有64位的项目是不可想象的。&/p&&blockquote&4. 老生常谈的vs是32位的,用知乎上几位微软员工的说法是界面无所谓;&/blockquote&&p&因为这就是正确答案。只是UI的话无所谓。&/p&&blockquote&5. 64位win10上自带的win32 onedrive客户端是32位的;&/blockquote&&p&同样,onedrive客户端只是个UI,无所谓。&/p&&blockquote&6. 截止,vscode stable版本仍然是32位的,github上大家千呼万唤,终于在insider发布了64位,但是默认下载仍然是32位。哦对了,差点忘了,vscode在linux上可是早就有64位的版本了。&/blockquote&&p&相信是遇到了某个win上的依赖库出问题了。&/p&&br&&p&归根到底,为什么要64位?只有一个主要原因,&b&可用内存大小&/b&。另一个次要原因是SSE/浮点速度,这个影响非常小。&/p&&br&&p&实际上,在x86/x64架构里,除了SSE/浮点之外,64位并不会比32位代码快,代价却是更大的内存占用和二进制大小。所以,如果一个程序并不需要用到超过4G的内存,或者并没有太多浮点运算,那完全没必要上64位。常见的x64程序,大部分是游戏、3D建模工具、数据库,等,都符合这个情况。盲目上64,完全就是浪费。&/p&&br&&p&好了,那么现在可以再看一遍你说的问题。&/p&&blockquote&vs是32位&/blockquote&&p&VS是个UI,本身并没有多少浮点运算,绝大部分情况下也不耗4G+内存,而且本身又多个进程组成。所以目前看来没有64的必要。但这个情况会随着数据而改变。如果大项目越来越多,不是没可能超过4G。&/p&&blockquote&onedrive客户端是32位的;&/blockquote&&p&这又是一个典型的不用浮点,也不可能超过4G内存的程序。所以没必要啰嗦吧。&/p&&blockquote&vscode stable版本仍然是32位的&/blockquote&&p&同理可证。&/p&
错,不是不喜欢x64,而是不喜欢没用的东西。 1. office在安装的时候默认是32位的,即使你是64位的那是因为几乎所有第三方插件是32位的,装了64位office后插件失效。所以默认用了32位的office。2. vcpkg默认安装32位的lib文件,即使你是64位的window…
&p&转载请注明出处。&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&原文链接:
&a href=&///?target=https%3A//ixulin.github.io//talk-bake-in-unity/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&谈光照图烘焙技巧 - 徐小厨 | 大道至简&i class=&icon-external&&&/i&&/a&&/p&&p&最近给美术整理的,这是知乎上最类似的问题了,所以挂在这,一个是看是否有人有类似的问题可以参考,二来刷一下自己网站的外链,增加被爬虫抓到的几率。。。&/p&&p&知乎貌似不能像markdown或者引用html代码样外链图片,大家点上面的链接看吧。&/p&&p&-------------------------------------------------------------------------------------&/p&&p&第二次更。周末在科目二集训和考试的时候发现忽然被很多人点赞和关注,受宠若惊,感谢大家认可和支持。之前因为知乎不支持直接粘贴图片,又怕麻烦,只放了第一张图片,既然大家这么捧场,还是把配图都加上~~
~~ [捂脸][允悲]&/p&&p&另外更多文章请访问我的博客,还有一些文章的补充和更新,还是会以博客为主,知乎上的回答尽量过来修改~~&/p&&p&--------------------------------------------------------------------------------------&/p&&p&&b&LightMap烘焙技巧&/b&&/p&&blockquote&前言:弱弱的说我是一个程序猿。
科普名词解释:
全局照明(GI):是指除了直接光之外包括天空,物件之间间接光照的总和。
环境闭塞(AO):是指间接光在物件间相互遮挡反射不充分导致的微弱阴影。通常在直接光照的暗部才会比较明显。
天光:从头顶来的天空颜色造成的间接照明,特别是在晴朗的天气。
LightMap:光照贴图
HDR:颜色高动态区间,指颜色亮度可以超过1,移动平台暂且不支持
间接照明(间接反射):指光源照亮A物体,A物体变亮以后充当间接光源对近距离内B物体有照亮的作用。这种现象只有当物体B在直接光照(比如阳光)的阴影里才会明显。&/blockquote&&h2&&b&足够多的明暗对比&/b&&/h2&&ul&&li&&b&适当&/b&打平灯光以增加阴影面积(暗部更多更容易做效果) &/li&&/ul&&img src=&/v2-6ef9c62eaeeae71bbfd8d4_b.jpg& data-rawwidth=&894& data-rawheight=&669& class=&origin_image zh-lightbox-thumb& width=&894& data-original=&/v2-6ef9c62eaeeae71bbfd8d4_r.jpg&&&p&&br&&/p&&ul&&li&&b&适当&/b&增大模型增加阴影面积(暗部更多更容易做效果)&/li&&/ul&&img src=&/v2-a3f77893afb51b893ad7dd_b.jpg& data-rawwidth=&988& data-rawheight=&695& class=&origin_image zh-lightbox-thumb& width=&988& data-original=&/v2-a3f77893afb51b893ad7dd_r.jpg&&&p&&br&&/p&&ul&&li&通过&b&只投射不接收&/b&来增加假阴影(作假)(不接受投影是因为看不见所以可以节省这种物体的渲染和它占用的litmap面积)&/li&&/ul&&img src=&/v2-38f7cf3ac3b232e_b.jpg& data-rawwidth=&1036& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1036& data-original=&/v2-38f7cf3ac3b232e_r.jpg&&&p&&br&&/p&&h2&&b&模拟全局光照&/b&&/h2&&ul&&li&足够&b&充分&/b&的&b&暗部&/b&照明(暗部会有一种明快的感觉,用美术语言说就是暗部很“通透”)&/li&&/ul&&img src=&/v2-61d5db56acdd4e4f6bcce2_b.jpg& data-rawwidth=&1168& data-rawheight=&784& class=&origin_image zh-lightbox-thumb& width=&1168& data-original=&/v2-61d5db56acdd4e4f6bcce2_r.jpg&&&p&&br&&/p&&img src=&/v2-05ac093d9b2dfa45a8738027_b.jpg& data-rawwidth=&1166& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&1166& data-original=&/v2-05ac093d9b2dfa45a8738027_r.jpg&&&p&&br&&/p&&ul&&li&天光的使用:&/li&&ul&&li&理论上越晴朗的天气阴影暗部越偏蓝(同理也是为了有全局照明的效果,用美术语言说就是暗部很“通透”)(哪天北京晴空万里的时候去大楼的阴影里看看是不是有蓝色,为了对比饱和度的覆盖问题,可以拿一张白纸)&/li&&/ul&&/ul&&img src=&/v2-2f3b24a55c7c8c62d036c075b69a315c_b.jpg& data-rawwidth=&940& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&940& data-original=&/v2-2f3b24a55c7c8c62d036c075b69a315c_r.jpg&&&p&&br&&/p&&ul&&li&对&b&间接反射&/b&的&b&夸张&/b&:&/li&&ul&&li&比如守望先锋花村的樱花树下会有很强烈的蓝紫色,实际上是模拟粉红的樱花与天光蓝色的叠加造成的视觉,不过暴雪的美术有更加夸张的表达。(实现方法实际是在暗部增加与区域环境颜色相似的点光,实时GI现在效率跟不上,另外也不可能这么强。)&/li&&li&小幅&b&夸张&/b&:&/li&&/ul&&/ul&&img src=&/v2-f570e8d447bb1ff09eb6f_b.jpg& data-rawwidth=&1078& data-rawheight=&741& class=&origin_image zh-lightbox-thumb& width=&1078& data-original=&/v2-f570e8d447bb1ff09eb6f_r.jpg&&&p&&br&&/p&&ul&&ul&&li&&b&更夸张&/b&的做法:现实世界中不会有这么强烈的间接反射,就像叶子把光间接反射出来了一样,守望先锋就是例子&/li&&/ul&&/ul&&img src=&/v2-79cd0e59331cc46ebbb4e1eba6eb6fb1_b.jpg& data-rawwidth=&1166& data-rawheight=&712& class=&origin_image zh-lightbox-thumb& width=&1166& data-original=&/v2-79cd0e59331cc46ebbb4e1eba6eb6fb1_r.jpg&&&p&&br&&/p&&ul&&li&其实以上技巧都是借鉴自守望先锋&/li&&ul&&li&这是一个人的分析,只要&b&有心去找,仔细去看,去思考&/b&,网上有很多文章有可以借鉴的地方(因为实时GI还开销太大,暴雪真是能通过技巧把能用的东西用到最好)
&a href=&/p/& class=&internal&&原文链接&/a&&/li&&/ul&&/ul&&img src=&/v2-96281dac58f267dd097ffd657f75e576_b.jpg& data-rawwidth=&856& data-rawheight=&492& class=&origin_image zh-lightbox-thumb& width=&856& data-original=&/v2-96281dac58f267dd097ffd657f75e576_r.jpg&&&p&&br&&/p&&ul&&ul&&li&还有一个对&b&环境光源&/b&的理解
&a href=&/question//answer/& class=&internal&&原文链接&/a&&/li&&/ul&&/ul&&img src=&/v2-b3c32aad4ed3dd6cd658a7_b.png& data-rawwidth=&682& data-rawheight=&897& class=&origin_image zh-lightbox-thumb& width=&682& data-original=&/v2-b3c32aad4ed3dd6cd658a7_r.png&&&p&&br&&/p&&ul&&li&祭上守望先锋的场景,很夸张的暗部间接光照,实际上是通过&b&暗部打烘焙点光&/b&来实现的。更多细节请&a href=&///?target=https%3A//ixulin.github.io//talk-scene-design& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&参考我的另外一篇文章&i class=&icon-external&&&/i&&/a&。&/li&&/ul&&img src=&/v2-702eb17eb0e0c1ea5f0e5db0e20cccd0_b.jpg& data-rawwidth=&1474& data-rawheight=&848& class=&origin_image zh-lightbox-thumb& width=&1474& data-original=&/v2-702eb17eb0e0c1ea5f0e5db0e20cccd0_r.jpg&&&p&&br&&/p&&h2&&b&AO的使用&/b&&/h2&&ul&&li&AO能更真实的模拟现实世界,能使暗部有&b&更明显的立体感&/b&,用美术的话说就是暗部足够“实”,“不飘”&/li&&ul&&li&基础知识请参考&a href=&///?target=https%3A///blog/lightmapping-in-unity-5/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这篇文章&i class=&icon-external&&&/i&&/a&,这里讲了什么是AO,什么是间接反射等&/li&&li&暗部的&b&接缝处&/b&AO效果最明显&/li&&/ul&&/ul&&img src=&/v2-49b79ea3d749a02a4ca546d532f80036_b.png& data-rawwidth=&1150& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&1150& data-original=&/v2-49b79ea3d749a02a4ca546d532f80036_r.png&&&p&&br&&/p&&h2&&b&LightMap面积的优化&/b&&/h2&&ul&&li&LightMap面积(精度)说明:(&b&一个格子就是一个像素点&/b&,也就是占用在lightmap上面的面积)&/li&&/ul&&img src=&/v2-af348f2d6d68e9c7ceec62_b.jpg& data-rawwidth=&1178& data-rawheight=&819& class=&origin_image zh-lightbox-thumb& width=&1178& data-original=&/v2-af348f2d6d68e9c7ceec62_r.jpg&&&ul&&ul&&li&通过&b&Scale In LightMap&/b&这个参数可以单独调整单个物体的精度&/li&&/ul&&/ul&&img src=&/v2-ed2d78e88dd20ce546157f_b.jpg& data-rawwidth=&617& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&617& data-original=&/v2-ed2d78e88dd20ce546157f_r.jpg&&&p&&br&&/p&&ul&&li&更合理的分配LightMap面积(想要好效果又要节省lightmap面积,就是&b&要研究,并总结经验,没有捷径&/b&)&/li&&ul&&li&只投射不接受的物件Scale In Lightmap填0就行&/li&&li&地面 & 物件,重要物件 & 一般物件, 视觉中心 & 边远地区,大物件 & 小物件&/li&&/ul&&/ul&&img src=&/v2-aef8fc7d13c3ff0d305f249d_b.jpg& data-rawwidth=&1006& data-rawheight=&813& class=&origin_image zh-lightbox-thumb& width=&1006& data-original=&/v2-aef8fc7d13c3ff0d305f249d_r.jpg&&&p&&br&&/p&&ul&&ul&&li&&b&全部&/b&(或者几乎全部)在明处或者&b&全部&/b&在暗处的可以用&b&最低分辨率&/b&烘焙(比如当前光线下的这个椅子和不管影子多么正都是在暗处的这面墙壁,这种情况下,这两个lightmap精度可以填0.01),需要注意的是必须参加烘焙只是精度可以很低(因为纯白或者纯黑被压缩大小是不会损失精度的)&/li&&/ul&&/ul&&img src=&/v2-8ccd576f46c07fab8df64a1efe4a08f8_b.jpg& data-rawwidth=&986& data-rawheight=&598& class=&origin_image zh-lightbox-thumb& width=&986& data-original=&/v2-8ccd576f46c07fab8df64a1efe4a08f8_r.jpg&&&p&&br&&/p&&ul&&ul&&li&地面以下,地图的侧面,或者根本看不见的东西,烘焙占用面积请控制到最小(最惨的情况请参考下面说的浪费)&/li&&/ul&&li&避免完全没有必要的浪费&/li&&ul&&li&像这种&b&完全在别的物体以下&/b&,还参加烘焙的完全没有必要,而且浪费很大&/li&&/ul&&/ul&&img src=&/v2-e12c19ed3e70dfbd73de5_b.jpg& data-rawwidth=&1034& data-rawheight=&713& class=&origin_image zh-lightbox-thumb& width=&1034& data-original=&/v2-e12c19ed3e70dfbd73de5_r.jpg&&&p&&br&&/p&&ul&&ul&&li&树叶花草等透贴类似的推荐&b&只投射,不接受&/b&,而且接受烘焙阴影效果不见得好,会很“脏”&/li&&/ul&&/ul&&img src=&/v2-1d84c1da3e352_b.jpg& data-rawwidth=&1048& data-rawheight=&713& class=&origin_image zh-lightbox-thumb& width=&1048& data-original=&/v2-1d84c1da3e352_r.jpg&&&p&&br&&/p&&h2&&b&技巧及问题&/b&&/h2&&ul&&li&发现阴影比较虚,不实&/li&&ul&&li&检查是否间接光照反弹次数过大(可以理解成有过大的衍射效果)&/li&&li&增加&b&被投影物体&/b&的大小(比如放大花盆)(很显然)&/li&&li&增加&b&投影至物体&/b&所占lightmap面积(比如树叶投影到地面比较虚,则提高地面的精度)&/li&&/ul&&li&效果不好或者黑点、漏光过多&/li&&ul&&li&检查2u是否打开&/li&&li&检查顶点分布是否有异常,uv分布是否均匀或过少&/li&&li&如果都没问题而且这个物件很重要,则增加精度&/li&&li&自定义2u(高级,不推荐使用)&/li&&/ul&&li&过小物体效果太差&/li&&ul&&li&如果确实过小,先看能不能放大,或者说这么小的东西有没有存在的必要或者是否可替代(很显然)&/li&&li&如果确实需要,可以不参加litmap烘焙,而直接去diffuse贴图上花盆贴图的底部蹭两笔黑的&/li&&li&这个花盆之前参加烘焙会有很大的漏光和黑点,其实不需要参加烘焙,而且效果比烘焙更好,还能节省lightmap&/li&&/ul&&/ul&&img src=&/v2-e5f068ad4ab810a3ce60_b.jpg& data-rawwidth=&602& data-rawheight=&542& class=&origin_image zh-lightbox-thumb& width=&602& data-original=&/v2-e5f068ad4ab810a3ce60_r.jpg&&&p&&br&&/p&&h2&&b&压缩的效果优化&/b&&/h2&&ul&&li&通过我烘焙的经验,以kasaierxueyuannew场景为例,发现烘焙10-12张1024压缩到512,比直接烘焙2-3张1024的贴图来的精度和效果都更好&/li&&ul&&li&10张512 = 2.5张1024,而以之前的烘焙策略烘焙3-4张1024效果没有我这个好&/li&&li&此外通过合理分配lightmap精度,&b&能节省2-3张lightmap&/b&,没有仔细分配之前,保证效果的情况下能烘焙14张左右,现在这版只使用了11张,如果还细抠还能省1张甚至更多&/li&&/ul&&/ul&&img src=&/v2-f00e8f430c419ed4617cebf_b.png& data-rawwidth=&433& data-rawheight=&329& class=&origin_image zh-lightbox-thumb& width=&433& data-original=&/v2-f00e8f430c419ed4617cebf_r.png&&&p&&br&&/p&&ul&&li&从1024压缩到512肯定会损失精度,但是通过&b&仔细的分配lightmap精度&/b&能使这种&b&损失达到最小&/b&&/li&&ul&&li&方法一:&b&地面最有用&/b&,所以怎么省都&b&不要吝啬地面的精度&/b&,地面不管接受多少阴影,所占用的lightmap面积是一样的,所以多打点阴影(不增加消耗,还可以做效果,何乐而不为)&/li&&li&方法二:&b&纯背光&/b&和&b&纯亮光&/b&区域可以减少lightmap精度,因为压缩不影响(就像纯黑纯白的贴图压缩大小没有损失一样),而&b&复杂的结构&/b&并且能&b&同时受到阳光和阴影&/b&的影响,则也不需要节省精度,因为如果本来精度就不高,则压缩更惨&/li&&li&方法三:压缩大小比压缩格式带来的损失小,如果压缩格式影响巨大,可以&b&不压缩格式&/b&,而在&b&其他地方想想办法怎么省&/b&(省的办法参考上面)。所以推荐烘焙高质量的光照图来&b&压大小&/b&。&/li&&li&方法四(重要):&b&尽量使用大阴影&/b&,在不压缩情况下本来就很小很虚的阴影,被压缩了只会更惨,优化方法参考以上&/li&&li&方法五:&b&不推荐&/b&使用&b&复杂的结构&/b&,酌情使用,在压缩的时候很容易损失过大&/li&&/ul&&/ul&&h2&&b&个人经验&/b&&/h2&&ul&&li&暗部补光,感觉上并&b&不是光越多越好&/b&,最好灯光颜色来表达周围环境的间接光照,过多颜色的灯光会让人觉得没有重点和乱&/li&&li&点光通过&b&减小光照强度&/b&、&b&增加照明范围&/b&能得到更好的环境间接光的效果,还能防止有比较突兀的亮斑&/li&&li&个人倾向于用&b&天空材质球&/b&来代替全局环境光来烘焙,如果是晴朗天气,用默认纯蓝的天空即可&/li&&li&白模的情况下感觉lightmap很舒服而且很干净,而最终效果图的lightmap效果没有那么明朗。所以猜测为diffuse贴图的饱和度问题,因此推荐使用&b&较低饱和度的颜色&/b&,否则lightmap的颜色很容易被盖掉(不保证正确,希望美术同学尝试)&/li&&/ul&&h2&&b&跨平台的问题&/b&&/h2&&ul&&li&因为烘焙Lightmap用的exr,也就是HDR颜色编码,而现在手机平台不支持HDR编码,导致在手机平台和PC平台的解码方式不一样,所以不能使用过强的光来烘焙光照图,否则会造成android与pc差异巨大,因此&b&不推荐使用光照强度超过3&/b&的灯光来渲染。&/li&&/ul&&h2&&b&演示&/b&&/h2&&ul&&li&可以从&a href=&///?target=https%3A//ixulin.github.io/attach/demo/test-bake3.rar& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&此处下载&i class=&icon-external&&&/i&&/a&演示场景&/li&&ul&&li&给一张全貌&/li&&/ul&&/ul&&img src=&/v2-be7ad83ebcb8_b.png& data-rawwidth=&1270& data-rawheight=&789& class=&origin_image zh-lightbox-thumb& width=&1270& data-original=&/v2-be7ad83ebcb8_r.png&&
转载请注明出处。原文链接: 最近给美术整理的,这是知乎上最类似的问题了,所以挂在这,一个是看是否有人有类似的问题可以参考,二来刷一下自己网站的外链,增加被爬虫抓到的几率。。。知乎貌似…
&img src=&/29b7abc4ba1ff542a0745c0_b.jpg& data-rawwidth=&1921& data-rawheight=&906& class=&origin_image zh-lightbox-thumb& width=&1921& data-original=&/29b7abc4ba1ff542a0745c0_r.jpg&&&p&通过前两篇文章,大家应该对色彩管理的一些基础知识和基本概念有了比较清晰的认识,也对色彩管理及显示器色彩校正的原理、目的和必要性有了直观的感触。&/p&&p&第三篇文章将着重对整个色彩管理的流程,也就是从显示器校准到最终的Profile输出过程做详细说明。&/p&&p&在进入正题之前,先公布上一期中的那个悬念:&b&什么设备会出现严重的色阶丢失?&/b&&/p&&p&&img data-rawheight=&896& data-rawwidth=&1024& src=&/fc19cfcd215bb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/fc19cfcd215bb_r.jpg&&&b&答案是配备了AMOLED以及Super AMOLED屏幕、以及其他广色域屏幕的Android设备。这里要恭喜&/b&&a data-title=&@HUGO LEE& data-editable=&true& class=&member_mention& href=&/people/32ab56f73a& data-hash=&32ab56f73a& data-tip=&p$b$32ab56f73a& data-hovercard=&p$b$32ab56f73a&&@HUGO LEE&/a& 同学在上一篇文章的评论中答对此问题。看来群众对这个问题的意见还是很大的。&/p&&p&由于Android系统在4.0之前,色彩管理能力几乎为0甚至小于等于0,因此在配备了广色域屏幕的手机、平板等设备上,会出现十分明显的色阶丢失现象,直观感受就如上图,出现明显色阶断层(Color Gradient/Banding)。&/p&&p&上面这张图是Nexus One与Samsung Galaxy S II的显示效果对比(点击图片放大观看,现象更明显)。可以明显看出,在色彩过渡明显的场景下,搭配非广色域屏幕的Nexus One色彩过渡平滑,而SGSII由于搭配了色域过于广泛的Super AMOLED屏幕,因此在显示sRGB色彩空间的图片或程序时,由于无法正确将sRGB色彩空间映射到屏幕的Native Gamut上,因此出现了色彩丢失和灰阶丢失。此情况在Android 4.1(Jelly Bean)之前尤为突出。&/p&&p&别认为IPS屏幕的设备能好到哪儿去,搭载广色域IPS屏幕的Nexus 7的实际情况如下:&/p&&p&&img data-rawheight=&1280& data-rawwidth=&800& src=&/ee301dfc3c32c1ef1f5b0b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/ee301dfc3c32c1ef1f5b0b_r.jpg&&相比Super AMOLED稍好,但仍然有明显色阶/灰阶丢失的现象发生。&/p&&p&而即使是在目前的Android 4.4(KitKat)有所改善的情况下,相较于iOS和Windows Phone而言,广色域屏幕Android设备的色彩表现也十分糟糕,而Super AMOLED依然是重灾区。&/p&&p& 下面这张图是我自己实拍的Nexus 5升级至最新的4.4.2官方系统之后,在CSR Racing游戏中的色彩表现:&br&&img data-rawheight=&1477& data-rawwidth=&2563& src=&/58c071ab2cb8bdeaf10c5b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&2563& data-original=&/58c071ab2cb8bdeaf10c5b_r.jpg&&&/p&&p& 虽然又稍微有了点好转,但放大到100%后仍然有明显的色阶能被观察到。由此可见Google真是没救了。。。。&/p&&p&同样的问题也会出现在PC环境下的广色域显示器上。因此,对广色域显示器做色彩校正和色彩管理,能够保证显示器正确显示出图像应有的色彩和色阶。&/p&&p& 接下来就进入本篇的正题:显示器色彩校正以及系统色彩管理。&/p&&h2&&b&一. 回顾&/b&&/h2&&p&在开讲之前,先回顾一下前面一篇文章的一些概念:&/p&&blockquote&&p&&b&要实现完整的色彩管理,共需要三个步骤:&/b&&/p&&p&&b&1. Calibration:设备校准&/b&&/p&&p&&b&2. Profile/Characterization:特性化&/b&&/p&&p&&b&3. Mapping/Conversion:色彩映射/转换&/b&&/p&&p&这三个步骤缺一不可。其中,Calibration可以通过软件或硬件的方式来实现,而Profile/Characterization由于需要对色彩输出进行量化,因此只能借助专用设备(色度计或光度计)完成。&/p&&/blockquote&&p& 其
中Calibration可以由软件层面或硬件层面完成,Profile由于需要对屏幕色温、灰阶和色彩的表现做评估,因此需要专用设备完成。
Mapping/Conversion是依靠色彩管理系统,也就是Windows色彩管理或Mac
OS的ColorSync,以及支持色彩管理的软件半自动完成的。&/p&&p&下面的流程图是EIZO校色软件使用手册中的校色流程及详细过程释义,对于详细了解校色过程中的每个步骤的目的和原理十分有帮助(EIZO在这方面确实做得十分出色):&/p&&p&&img data-rawheight=&1141& data-rawwidth=&719& src=&/66b7bbdcb1b16d6aa4d692fc731f3509_b.jpg& class=&origin_image zh-lightbox-thumb& width=&719& data-original=&/66b7bbdcb1b16d6aa4d692fc731f3509_r.jpg&&(注:由于EIZO大部分显示器都配备了硬件LUT,因此几乎所有EIZO显示器都可以通过软件完成任何硬件层面的自动调整。因此对于普通民用显示器来说,在开始校色前,还需手动调整部分显示器参数。) &/p&&p&这里还需要啰嗦两句解释一下图中的一些细节:选择目标步骤,会有印刷用、相片用和Web制作三种选项。对于NEC和DELL显示器用户而言,软件没有直接提供这三种选项,因此这三种选项的实际操作是:&/p&&p&1. 印刷用:ARGB色域,D65(6500K)色温,亮度120cd/m?。&/p&&p&2. 相片用:ARGB色域,D50(5500K)色温,亮度120cd/m?。&/p&&p&3. Web制作:sRGB色域,D65(6500K)色温,亮度120cd/m?。&/p&&p&直接选择这三种目标的用户,一般是对工作基本状态有严格要求的用户,选择后,请不要再改变任何默认参数(例如亮度、色温、Gamma、增益等)。而除这类用户之外,其他用户可以在后续阶段按照自己的实际使用环境调整亮度、黑阶、色温。 &br&&/p&&p&接下来就按流程中的先后顺序来讨论每个步骤的详细方法。&/p&&h2&&b&二. Monitor Calibration&/b&&/h2&&p&第
一篇文章中就提到过,目前绝大部分的显示器,唯一的硬件控制项目就是亮度。一些中端消费级显示器可能会在OSD中提供对RGB三原色的调整项,但这些调整
项依然是基于显卡LUT完成的,并不会改变显示器自身的特性。通俗点说,如果我把一台DELL
U2410的RGB三原色在我自己的电脑上调整平衡了,再把这台显示器接上朋友的电脑,用校色器分析的结果可能又会变得不平衡。这种情况甚至会发生在同一
台机器上,重新开机后色彩可能就变了。&/p&&p&因此,在Monitor Calibration阶段,如果你的显示器没有搭载硬件LUT,而你又希望调整显示器参数,建议只调节硬件选项,即亮度这一项参数。&/p&&p&(&b&注:显示器在进行任何色彩调整之前,都应该进行充分的开机预热,对于CCFL背光的显示器尤为如此。视显示器档次和校色准确度要求而定,预热时间一般需要10~60分钟。&/b&)&/p&&h2&&b&1. 亮度的调节&/b&&br&&/h2&&p&目
前普遍认可的,在光照充足的环境下的显示器亮度值是120cd/m?。设置为120cd/m?亮度的优势有两个:一是在环境亮度较高的情况下,用户依然能
看到清晰可辨的图像。二是120cd/m?亮度下,色温更容易被控制在K范围内。但这并不代表亮度值就一定要被设定在120cd
/m?才正确。以我自己的使用环境而言,无论在家里还是在办公室,环境光都不是十分明亮,仅有不太刺眼的背景灯光。&b&因此在一般情况下,调节显示器亮度,都应该以使用者自己觉得舒适、长时间使用也不易产生疲劳为先决条件。&/b&&/p&&p&&b&有一个例外,就是印刷行业。由于印刷行业,特别是杂志等彩色印刷对色彩精度要求十分苛刻,因此无论在何种条件下,都应该以120cd/&/b&&b&m?以及6500K色温(色温的调节后面讲)作为基础工作标准。如果感觉屏幕过亮刺眼,就只能忍一忍,毕竟修图出图的时间是少数。如果环境太亮看不清屏幕,请选购原厂或副厂的显示器遮光罩。&/b&&/p&&p&以
上是不搭载硬件LUT的显示器的调整情况。而对于内置了硬件LUT的专业显示器或商用/行业用显示器而言(例如上面提到的EIZO以及NEC、DELL等
真正的专业级显示器),这项工作要轻松许多。你只需要安装显示器附带的校色软件,输入目标亮度值和色彩空间,接上显示器到机箱的USB线,并挂上校色仪,
剩下的工作就是点击“下一步”按钮了,其余测量及调整功能由软件和校色仪协同完成:&br&&/p&&p&&img data-rawheight=&718& data-rawwidth=&996& src=&/37a462cc0d2f2b1b93100_b.jpg& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&/37a462cc0d2f2b1b93100_r.jpg&&(图为DELL UltraSharp Uxx14系列显示器随机附带的校色软件)&/p&&p&这
里插句话。有部分准专业显示器,例如HP
ZR2740w以及ZR30w,由于是面向高端商用用户,并且两款显示器虽然使用广色域面板,但通过驱动电路将显示器限制在近乎标准的sRGB色彩空间
内,因此严格遵循了只提供硬件调整选项,其余一律不让用户调整的教科书式理念:显示器没有任何OSD菜单,仅在显示器上以及随机附带的软件中提供对亮度的
控制。&/p&&p& 这样的做法我个人是十分赞同的,因为一是降低用户对色彩管理的困惑简便流程,二是降低成本,将成本花在更有意义的方面。&b&但这样做的前提是:显示器厂家有足够的信心和能力,让显示器的默认出厂状态就十分优异:&/b&&/p&&p&&img data-rawheight=&617& data-rawwidth=&631& src=&/ce55b6d14cb3efd7e4f80c1f4b540c27_b.jpg& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/ce55b6d14cb3efd7e4f80c1f4b540c27_r.jpg&&对
于这一点,HP做到了,ZR2740w在全默认的开箱状态下,色彩空间几乎与sRGB完全重叠(色彩空间比sRGB略微大一点,造成了右边的Delta
E分析结果是三原色的色差都偏高,但后续校色有足够空间可以修正),对比度也维持在1000:1左右,Gamma值偏离仅为3%,只是色温距离6500K
差距有5%但无伤大雅。在这点上,HP甚至做得比EIZO和NEC都要出色得多,因此不得不单独提出来赞叹一下。&/p&&h2&&b&2. 对出厂状态差,或天赋本就不好的显示器的补救措施&/b&&/h2&&p&有那么一大堆显示器,尤其是笔记本显示器,由于色域本来就十分有限,外加色差、色温偏差很夸张,因此已经不具备做严格校色的意义了。但色彩管理仍然是必要的,因此有了下面的补救建议。&/p&&p&对
于这部分显示器而言,花上千元买一个校色仪,或上百元请人上门做一次校色显然是不划算的。但我们仍然可以通过一些简单且免费的手段来做一下适当的补救。网
上能找到很多种方法,例如Adobe出品的Gamma调节工具、各种色阶图和灰阶图以及调整方法等,但最方便、最有效的方式却被大部分人忽略
了:Windows自带了显示器简单校色工具。&/p&&p&&b&在继续介绍之前要说明的是,这个工具仅限于对普通色域的显示器进行校正(大部分需要用到这个工具的显示器也只有普通色域) &/b&&/p&&img src=&/87d7dcf3bb3_b.jpg& data-rawwidth=&366& data-rawheight=&179& class=&content_image& width=&366&&&p&要使用Windows自带的显示器颜色校准,只需要在Windows7及以上版本的系统桌面空白处点击右键,选择”个性化“,并点击左下角的”显示“链接,之后在左上角会出现”校准颜色“的项目,点击即可。&/p&&img src=&/c1b4bddf8dc35aab46ebf9_b.jpg& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/c1b4bddf8dc35aab46ebf9_r.jpg&&&p&这是一个Step by Step的工具,根据界面上每个步骤的提示和说明,即可完成对&b&系统色彩&/b&的基本校准。如果觉得界面上的提示和说明还不够详细,可以点击”如何校准我的显示器“,打开Windows帮助文档进一步了解相关知识。&/p&&img src=&/accf16995cfc86ff8a801d_b.jpg& data-rawwidth=&1128& data-rawheight=&775& class=&origin_image zh-lightbox-thumb& width=&1128& data-original=&/accf16995cfc86ff8a801d_r.jpg&&&p&过多的步骤这里就不做说明了,这不是本篇文章的重点。总之,利用这个小工具,能让显示质量不怎么好的显示器也获得尽量正确的显示结果,同时这个工具还会生成显示器Profile(特性化文件),虽然不精确,但也还是凑合用吧。(&b&一切通过软件手段实现的色彩、色温及Gamma调节,都是利用显卡驱动的软件LUT实现的&/b&,因此对于这部分用户而言,后续的色彩管理步骤显得更加重要,切记!!)&/p&&h2&&b&3. 翠花,上校色仪 &br&&/b&&/h2&&p&对于刚刚提到的死马当活马医的用户而言,这部分你们可以略过,或权当普及知识看着玩。对于中高端显示器用户,并且有意购买或能够使用校色仪的用户而言,请多加注意。&/p&&p&目前出品主流校色仪的厂家是DataColor和X-Rite。从知名度上讲,由于DataColor产品的价格略低,定位也略低,因此被更多国内用户所知,也就是所谓的蜘蛛校色仪。而X-Rite由于拥有&b&Pantone&/b&这个行业标准制定者以及研究色彩的权威机构(全资子公司),因此面向的用户是更加高端和专业的。当然,其校色仪的价格也就比DataColor的Spyder贵不少。&/p&&p&关
于校色仪的选择,对于普通用户而言,特别是民用非广色域显示器用户,选择一个二手Spyder3已经绰绰有余了。对于广色域显示器用户、准专业及专业单一
显示器用户而言,超值的选择是Spyder 4 Express,图方便的可以选Spyder 4
Elite(附带的软件有差别,硬件无区别,主要是对多显示器色彩一致性、色彩验证上的功能的多寡之分,这个问题不难解决)。而对于色彩准确度、可玩性要
求更高,以及要适配带硬件LUT以及内置光度计(EIZO)的用户而言,建议选择X-Rite的i1 Display Pro、i1 Pro
2、Color Munki等产品。更高端的用户,你们不需要看我的文章,因为你们已经有自己的土豪选择了.........&/p&&p&需要说明的是,Spyder和i1 Display Pro都是色度计,i1 Pro 2和Color Munki是光度计,因此这两个光度计的价格会比色度计高不少。建议选择光度计的用户就用Color Munki,并跟第三方开源校色软件搭配使用效果更佳。&/p&&h2&&b&4. 校色软件选择问题上的纠结&/b&&/h2&&p&由于对校色目标、校色准确度等等的要求不同,可以选择的校色软件也是玲琅满目。校色仪自带的软件是最方便最傻瓜式的选择,普通用户只需要装上软件,输入序列号,按界面上的提示按部就班就可完成校色工作。&/p&&p&但
对于更高阶的用户而言,校色仪自带的软件未免功能太单一,适用性太窄了,也不符合Geek和DIYer的”生命在于折腾“的口号。因此,dispcalGUI和basICColor Display这两个开源软件(开源≠免费)成为了更多人的选择。basICColor
Display是开源的商业软件,需要支付钞票来购买授权。但在付钱之前,你能申请15天的试用期(仍然坑爹,试用也需要申请序列号)。&/p&&img src=&/a2f62cae1a3f4c455b6b9a5_b.jpg& data-rawwidth=&813& data-rawheight=&717& class=&origin_image zh-lightbox-thumb& width=&813& data-original=&/a2f62cae1a3f4c455b6b9a5_r.jpg&&&p&鉴于校色需要定期进行,并且也不主张使用盗版软件,因此dispcalGUI成为更多人的选择。dispcalGUI能完成Monitor
Calibration、Monitor Profile、Profile/Monitor Verify以及Profile
Loading等一系列步骤,涵盖了几乎整个色彩管理流程。当然,在Profile
Loading之后,接下来的工作仍然要交给Windows的颜色管理和相关软件的颜色配置来完成。&/p&&p&有一点又要说明.....使用软件进行Calibrate和Profile,能够得到比硬件LUT层面的Calibrate更准确的结果,有点奇葩是不是?因为硬件LUT虽然能改变显
示器的面板色彩特性,却无法做到根据环境光和用户对色彩感知的差异进行个性化调整。因此拥有这类显示器的用户,选择权在于自己。是要更方便呢,还是要更准
确呢?反正我选了更方便的那条路........&/p&&p&&b&由于dispcalGUI拥有更强大的功能、更个性化的选项以及更广的适用范围,因此本文将以dispcalGUI为准进行校色和特性化步骤的说明。其他软件虽然未能提供过多选项,但原理、主要步骤及最终校色结果都与之相差无几。&/b&&/p&&h2&&b&5. 终于进入正题中的正题:显示器校准及特性化&/b&&/h2&&p&对不住各位,由于我认为需要解释的地方实在太多,才在前面花了2又1/2篇文章的口舌来讲这么多东西。但在了解上面那么多基础之后,大家才能对后续步骤的原理和目的有更清晰的理解。&/p&&img src=&/556a4d21f12fb3f9cb024_b.jpg& data-rawwidth=&861& data-rawheight=&782& class=&origin_image zh-lightbox-thumb& width=&861& data-original=&/556a4d21f12fb3f9cb024_r.jpg&&&p&dispcalGUI
只是一个GUI,其后端是一个名为Argyll
CMS的开源软件,也是大家喜闻乐见的免费软件。因此在使用DispcalGUI之前,我们需要先下载Argyll CMS(分Windows
x86/x64、Mac OSX以及Linux版本),这里提供Windows版本的下载链接:&a class=& wrap external& href=&/?target=http%3A///downloadwin.html& target=&_blank& rel=&nofollow noreferrer&&Download Argyll CMS Win32 Executables&i class=&icon-external&&&/i&&/a&&/p&&p&下载并解压后,请将Argyll CMS的文件夹放在合适位置(例如C:\Program Files,或适合自己的路径) &br&&/p&&p&之后,就是下载和安装dispcalGUI:&a class=& wrap external& href=&/?target=http%3A//dispcalgui.hoech.net/download/dispcalGUI-Setup.exe& target=&_blank& rel=&nofollow noreferrer&&Download dispcalGUI from SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&&blockquote&注意,链接是跳转到SourceForge的,所以别把上面的链接直接扔到迅雷里面。 &/blockquote&&p&安装完毕,打开DispcalGUI主程序后,还需要先手动指定前一步下载并存放好的Argyll CMS的执行文件:&/p&&img src=&/db6ad07bbd9bc79eacad6_b.jpg& data-rawwidth=&328& data-rawheight=&235& class=&content_image& width=&328&&&p&点击左上角File按钮,选择Locate Argyll CMSexecutables,然后找到Argyll CMS文件夹,定位到bin子目录,点击确定:&/p&&img src=&/da6bbbc2ead11dca0e2b0d7_b.jpg& data-rawwidth=&324& data-rawheight=&318& class=&content_image& width=&324&&&p&由于Argyll CMS是开源软件,而各厂家的校色仪及驱动程序为闭源软件,因此要使用dispcalGUI校色,还需要手动安装Argyll CMS提供的开源驱动程序。驱动程序存放在Argyll CMS目录下的usb子目录当中,文件名是ArgyllCMS.inf:&/p&&img src=&/5c4c93a254beb_b.jpg& data-rawwidth=&571& data-rawheight=&436& class=&origin_image zh-lightbox-thumb& width=&571& data-original=&/5c4c93a254beb_r.jpg&&&p&上图是以X-Rite i1 Display Pro为例(因为本人的DELL U3014只有搭配这货才能实现硬件校准),Spyder和Color Munki的驱动安装步骤与此相同。&/p&&p&64位系统的用户可能还会遇到驱动没有数字签名而无法被安装的问题,需要开机过程中按F8,选择禁止驱动程序签名验证,或按以下步骤执行(此操作不会对系统或硬件带来损坏或风险):&/p&&blockquote&1、在win7 运行窗口里或者cmd下&br&&br&bcdedit/set testsigning on&br&&br&2、
运行gpedit.msc&br&&br&用户配置-&管理模板-&系统-&驱动程序安装&br&&br&最后一个选项配置禁用驱动签名验证&/blockquote&&br&&p&安装完成后,设备管理器中即可看到这样的设备描述:&/p&&img src=&/3d2295bcebea0bbd331ad2b_b.jpg& data-rawwidth=&438& data-rawheight=&494& class=&origin_image zh-lightbox-thumb& width=&438& data-original=&/3d2295bcebea0bbd331ad2b_r.jpg&&&p&忍耐一下,最后一步准备工作:&/p&&p&为了方便起见,还需要点击dispcalGUI的Options菜单,将&b&Automatically detect instruments&/b&以及&b&Show advanced calibration options选中&/b&,以方便后面步骤中使用:&/p&&img src=&/f6af6e79c80ce708f3fcdf_b.jpg& data-rawwidth=&531& data-rawheight=&484& class=&origin_image zh-lightbox-thumb& width=&531& data-original=&/f6af6e79c80ce708f3fcdf_r.jpg&&&p&以上就是使用DispcalGUI的准备工作。&/p&&p&接下来就要进入显示器校准和特性化的环节了。&/p&&p&由于大部分中高端显示器用户的校色目的都是为了在看图、游戏、视频等方面获得更好的体验,因此在Calibration Settings这一栏当中,Whitepoint(白点)、White Level(亮度)、Tone Curve这些选项上,请按下图进行设置:&/p&&p&&img src=&/8dda5cf54fd2d65b93df3afea3058ccc_b.jpg& data-rawwidth=&845& data-rawheight=&548& class=&origin_image zh-lightbox-thumb& width=&845& data-original=&/8dda5cf54fd2d65b93df3afea3058ccc_r.jpg&&解释:将白点设置为As measured(强烈建议),或选择Color Temperature并将色温设置在6500K(如果你只用这台显示器处理图片,不用来上网看电影什么的,也可以选5500K这个色温),环境设置为Daylight(这个根据自身环境情况,也可选择Blackbody);亮度设置为Custom,并手动指定成适合自己的亮度值(我一般设置为85~90cd/m?,也可以选择As
measured,然后将显示器亮度调整到合适水平);Black Level与White Level在LCD上是互相矛盾的,亮度越高,黑场表现越差,因此只需要选择As
measured即可;Tone
curve是选择校色曲线,对于sRGB色域的显示器用户而言,可以选择sRGB,对于处理视频(比如非编)以及只用来观看视频的用户(比如投影仪校色),可以选择Rec.
709(绝大多数高清电影都是用这个色彩空间拍摄的)。而对于几乎所有用户而言,选择Gamma,并手动指定Gamma值为2.2,选择
Relative(相对色域)是最可靠的方法。&/p&&p&如果环境光多变,比如灯光变化较大或自然光变化较大,需要选中Ambient light
level adjustment,软件会根据当前环境光情况自动进行一些调整。Black point
correction一般是用在环境光很强烈的地方,在需要很高亮度的时候,选择这个选项有助于提升校色后的对比度,但通常情况下不需要选中(sRGB以及Rec. 707等色彩空间是必选)。&/p&&p&&b&对于确实需要调整显示器OSD中RGB色彩的用户来说(比如大部分非专业级广色域显示器都严重偏色),选中Interactive display
adjustment,可以在下一步操作中通过软件来衡量RGB三原色是否被调整到绝对平衡的状态(当然这个步骤因人而异,个人建议如果显示器质量较好,
这一步可以省略,后续可通过Profile过程被校正,而HKC之流的还是选上吧,这种显示器别太对校色结果的精确度较真)。&/b&&/p&&p&在Profiling
settings这一栏下面,Profile type需要选择XYZ LUT + matrix。注意,这已经是Profile步骤的选项了,跟上面Calibration是分开的,因此选择XYZ
LUT而不是Gamma,不会影响校色精确度,而无论Windows还是Mac OSX或Linux,其LUT都是以CIE
xy坐标体系为基准的,所以要选择XYZ LUT,除非你很清楚你选择其他选项的目的和后果。&/p&&p&Profile type右边的Advanced选项中也需要调整:&/p&&img src=&/79bbdd4fbee036_b.jpg& data-rawwidth=&540& data-rawheight=&238& class=&origin_image zh-lightbox-thumb& width=&540& data-original=&/79bbdd4fbee036_r.jpg&&&p&Source
Profile是你的常用标准工作色彩空间。比如你的显示器的Native Gamut是104%
NTSC,那么最适合你的标准色彩空间就是ARGB。如果你的显示器Native Gamut是75%
NTSC,那么这里就需要选择sRGB的icc文件。dispcalGUI已经提供了若干icc文件备选,我们只需要按需选择对应的标准色域描述文件即可。&/p&&p&&b&这里会牵扯出前篇中的一个问题:Absolute
colorimetric/appearance、Relative
colorimetric/appearance以及Perceptual等色彩空间映射/转换方式,也就是绝对色域、相对色域、可感知等。这个环节又需
要花较多篇幅来说明,因为它很重要。&/b&&/p&&p&Perceptual和Relative是两种在日常使用情况下最最常用的映射方式,包括处理
图像、网页浏览和设计等等。简单来说,Relative
colorimetric是将色彩一对一的映射到另一个色彩空间,即便是源色彩空间比目标色彩空间更大,它也会不顾一切去做映射,不关心目标是否有对应坐标。Perceptual与之不同,是将源色彩空间与目标色彩空间进行比对,并按照标准的算法将源色彩空间的所有色彩全部映射到目标色彩空间的坐标体系
中。&b&由于前面讲到过,色域的大小不能代表色彩数量的多少,&/b&因此即使用Perceptual将广色域的色彩空间映射到非广色域的色彩空间(比如将ARGB映射到
sRGB),在视觉上也不会感到色彩丢失的问题。但这两者都有劣势之处:Relative能保证映射的绝对精确,但只能一对一进行映射,超出目标空间的色彩将被压缩到最近似的目标上。
Perceptual虽然不会出现色彩丢失,但由于算法问题,无法保证完全的精确。下面这张图将形象地表示两种映射方式的差异:&/p&&img src=&/dccc525ea9c5abfee2e75_b.jpg& data-rawwidth=&595& data-rawheight=&353& class=&origin_image zh-lightbox-thumb& width=&595& data-original=&/dccc525ea9c5abfee2e75_r.jpg&&&p&由于原图的色彩空间超过了目标色彩空间,因此使用任何一种映射方法得到的目标图像都是失真的。但从上图也可以看出,虽然Perceptual是将超过目标色
域的色彩压缩到目标色域当中,但对于没有超过目标色域的色彩来说,Perceptual依然可以比较精确的进行映射。因此Perceptual的算法,也就是色域压缩的算法,取决于用户使用哪种色域转换引擎。目前常见的色域转换引擎有三种:Windows默认的Microsoft
ICM、Adobe的ACE以及Apple的Colorsynch。不过谢天谢地,这三家公司在这个方面都做得不错,最终得到的映射效果可以被认为是没有
任何差异。&/p&&p&由于Perceptual映射方式不会造成任何色彩信息的丢失,而Relative则不同,因此Perceptual从主观上
看,转换过程是可逆的(因为信息都还在),但要特别强调的是,所谓可逆,不是指广色域转非广色域,再重新转广色域后,还能得到与源文件毫无差别的东西,因
为此时的色彩坐标已经被重新映射过两次了,即使看起来差不多,实际上其中大部分颜色的精确坐标也已经发生了改变。只能说相对于Relative直接压缩超出范围的色彩而言,Perceptual在感官上能给使用者带来更能被接收的结果。&/p&&p&而另一种映射方式:Absolute
colorimetric,情况又有不同。Absolute
colorimetric与Relative colorimetric都不会改变能够直接映射到目标空间中的色彩值。不同之处在于Absolute colorimetric会丢弃超出目标空间的色彩(Clipping),并且其对于Whitepoint(白点)的处理方式上也有所不同。
Relative将源色域映射到目标色域时,如果源色域与目标色域白点的&b&相对坐标&/b&不一致(比如将ARGB映射到sRGB上,&b&白点坐标都是0,0,0,但两个坐标在同一个CIE xy体系中的相对位置是不同的&/b&),则会将ARGB色域先进行”&b&扭曲“&/b&,
使源和目标的白点坐标完全对应(确实符合Relative的风格,只要能找到准确对应的位置就奔着去了)。而Absolute的作风不一样,它不是通过扭
曲,而是将整个源色域进行偏移,使目标色域的白点与源色域的白点重合(注意此处说法,Relative是对应,Absolute是重合)。&/p&&p&如果我们将色域看做是一个3D的立体模型的话,将源色域和目标色域的白点和黑点连起来,能形成一条贯穿整个3D模型的直线。&/p&&img src=&/033de7ebff2cd73cefacc87e03d0183f_b.jpg& data-rawwidth=&611& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&611& data-original=&/033de7ebff2cd73cefacc87e03d0183f_r.jpg&&&p&Relative
在映射后,会将目标色域这条直线拉斜或弯曲,但整个目标色域中的色彩都还能被保留在精确的位置。而Absolute在映射后,由于是将整个目标色域进行了
偏移,因此目标色域中的一部分空间将会被移动到它自己都不知道的位置,只关注白点是否准确。如果上面的概念太抽象,下面这幅图将能形象表达两者的区别:&/p&&img src=&/170b938d940c26a6bfe8aaca0c6d3668_b.jpg& data-rawwidth=&609& data-rawheight=&189& class=&origin_image zh-lightbox-thumb& width=&609& data-original=&/170b938d940c26a6bfe8aaca0c6d3668_r.jpg&&&p&上图的含义是,将Color Space #1通过Absolute和Relative两种方式分别转换到Color Space #2之后,其白点位置以及色彩空间整体的变化对比。&/p&&p&可以看到,Absolute做转换后,白点的位置依然&b&与源色彩空间&/b&重合,即在正中心,而Relative转换后,是将目标色域进行了扭曲,使白点位置与&b&目标空间&/b&标准的白点位置对应。&/p&&p&两者的不同,将造成通过Absolute
colorimetric方式进行转换后图像,色彩可能会发生严重偏移,红色不再是纯正红色,一个橘子可能会被显示成葡萄的颜色。这对于绝大部分用户而言
都是不可接受的。但另一方面,在某些应用场景下,对白点的绝对位置的要求是最重要的,因此Absolute
colorimetric仅在特定的行业及情况下才需要被使用。&/p&&p&另一个需要被提及的转换方式是Saturation。Saturation
也是一个在特定场合才需要被用到的转换方式。其目的与上面三种都不同,是严格保留色彩的饱和度。还记得上一篇文章中,我们提到的使用广色域显示器,不做色
彩管理将会遇到欠饱和的情况么?Saturation就只是用来解决较小的色彩空间的色彩要映射到更大范围色彩空间时,可能出现的欠饱和问题的。听起来很
诱人,但Saturation只适配CMYK色彩空间,也就是说它被印刷行业,特别是不注重色彩还原度的印刷行业所使用(比如报纸)。因为
Saturation无法保证所有色彩的饱和度都能被还原,仅能针对纯色的饱和度做还原。我们用CMYK中cyan,blue,magenta和red四
种纯色作为例子(CMYK是青色、洋红、黄色和黑色的简写,之所以这里不用黑色,是因为黑色的饱和度最不容易丢失,即使丢失后也不容易被人眼察觉)。由于
CMYK的色彩空间比sRGB还小,本身能显示的色彩范围就不怎么样,再通过Saturation做转换后,我们看到的实际图片往往就变成了这样:&/p&&img src=&/22e663d8bbf374ba605a4cbe_b.jpg& data-rawwidth=&635& data-rawheight=&302& class=&origin_image zh-lightbox-thumb& width=&635& data-original=&/22e663d8bbf374ba605a4cbe_r.jpg&&&p&是的,没有色彩过渡一说,只有每个纯色的饱和度被完整保留了。因此,Saturation只适合用于印刷等场景时,对色彩真实性要求较低,只强调物体能被清楚辨别的情况。&/p&&p& 更加详细的资料在这里提供给希望深入了解每一种色彩转换方式的Geek:&a href=&/?target=http%3A///tutorials/color-space-conversion.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Color Management: Color Space Conversion&i class=&icon-external&&&/i&&/a&&/p&&p&&b&总之,绝大部分用户只需要使用Perceptual来做色彩映射/转换就可保证转换结果在视觉上的正确了。&/b&&/p&&p&&b&恭喜各位,讲起来以及理解起来最费神的部分已经结束了,下面就继续是行云流水的校色和色彩管理过程。&/b&&/p&&p&完成Advanced菜单中的配置后,还需要选择校色样本类型。这里为了保证校色准确度,我们一般会选择Massive testchart for LUT profiles, optimized for Gamma 2.2 with &b&xxx&/b& primaries(D65),其中xxx是你的目标校准色彩空间。&/p&&p&sRGB
有些特殊。由于是非广色域,也就是我们做校色的最小色彩空间(CMYK太小了,随便找台显示器也能满足,不用做校准,只需要做Profile),因此在面
向sRGB为目标的Calibrate和Profile时,Gamma是恒定不发生变化的,也就是Profiling过程不会对Calibrate后的
Gamma值做任何修正。&br&&/p&&p&现在,我们可以开始进行正式的Calibration和Profiling了。&/p&&p&dispcalGUI此时提供了三个选择:Calibrate only、Calibrate & profile以及Profile only。&/p&&p&1.
only的作用是仅对显示器亮度、色彩做校准。目的是方便曾经做过校准和特性化的显示器,在后续定期维护时,不需要再做Profile了,只需要调整发生
轻微变化的亮度、偏色等情况(一般只调亮度,除非显示器有硬件LUT,可通过除了OSD之外的其他途径调整RGB的)。&/p&&p&2. Calibrate & Profile是所有第一次做校色的用户的唯一选择。&/p&&p&3.
only仅在你确认你的显示器不会出现严重偏色和偏离目标亮度的情况下才使用。对于显示器自带了硬件LUT的用户而言,可以先用附带的硬件校准软件做一次
Calibrate(往往Profile也必须一同做完不能中断),保证显示器自身处于较为完美的状态,再用Profile only做精确的特性化。&/p&&p&点击Calibrate & profile,将会出现下面的窗口:&/p&&img src=&/4197f30affb05f30f8f451ec52899d7c_b.jpg& data-rawwidth=&739& data-rawheight=&739& class=&origin_image zh-lightbox-thumb& width=&739& data-original=&/4197f30affb05f30f8f451ec52899d7c_r.jpg&&&p&此时我们需要把校色仪放置在窗口中央。窗口可以根据需要进行大小和位置的调整。如果你只有一台显示器,请不要勾选Black background,否则亮瞎狗眼。对
于光度计用户来说,你们还需要保证校色仪与屏幕间没有任何缝隙,或没有任何环境光的影响,因为相较于色度计,光度计对光线的变化极为敏感,任何一丝外界光
线进入校色仪视野范围,都会影响校色精确度。因此EIZO官方给出的建议是:你需要用窗帘、桌布等较厚的东西搭在显示器和校色仪上
面...........不过一般来说,我们只要保证房间的环境光在校色过程中不发生明显变化即可。&/p&&p&最后点击Start measurement开始正式校色。&/p&&img src=&/f5b697faae01f_b.jpg& data-rawwidth=&519& data-rawheight=&477& class=&origin_image zh-lightbox-thumb& width=&519& data-original=&/f5b697faae01f_r.jpg&&&p&如果前面选择了Interactive display
adjustment的话,首先就会看到上图界面。这个界面能让你直观调节显示器RGB色彩平衡度以及亮度。如果你的显示器偏色本来就很严重,那么即使不
带硬件LUT,你也只能用显示器OSD甚至显卡驱动中的色彩调节选项,来使显示器各项参数尽量达到界面上小箭头的位置(我的Surface
Pro就是用显卡驱动面板中的色彩调节来做的调整,因为不这样做就没办法让色彩尽量正常)。&br&&/p&&p&调节完毕后,点击右下角Continue on to calibration,然后就等着吧。&/p&&img data-rawheight=&826& data-rawwidth=&783& src=&/9e9f81aac12c84c06ddcbe_b.jpg& class=&origin_image zh-lightbox-thumb& width=&783& data-original=&/9e9f81aac12c84c06ddcbe_r.jpg&&&p& 由于我们为了保证Calibrate和Profile的准确度,因此选择了Massive testchart,这意味着校色仪将分次从屏幕上读取2527个不同色块.........WTF!!!&/p&&p&更
要命的是,如果使用的是X-Rite校色仪还好,等待一两个小时就能搞定,而Spyder用户们,由于Spyder会先在校色仪内对色彩做一次自身比对验
证,因此需要的时间是翻倍的,也就是说Spyder用户完成一次Massive
testchart的校色,需要至少4个小时时间。因此我建议这部分用户,睡觉之前再进行这项工作应该是最佳选择。&/p&&p&经过漫长的等待,dispcalGUI终于完成了Calibrate和Profile的步骤,并且将自动在C:\Windows\system32\spool\driver\color目录下生成与主界面下方Profile name对应的icc文件。&/p&&p&软件此时会弹出对话框以供选择:&/p&&img src=&/42ca0af5eea37ee6a03c88cf20e2632e_b.jpg& data-rawwidth=&432& data-rawheight=&304& class=&origin_image zh-lightbox-thumb& width=&432& data-original=&/42ca0af5eea37ee6a03c88cf20e2632e_r.jpg&&&p& 首先是校色的简报,包括平均ΔE和最大ΔE的值,以确定本次校色是否达到预期目标。此处选择Load Calibration on login,并选中Let the operating system handle calibration loading即可。&/p&&p& 接下来是关于覆盖色域的的情况。上面一排是校色后的色域覆盖情况,也是目前显示器的实际状态。这里即使覆盖率没有达到100%也不用沮丧,因为我们前面不是
选择了Perceptual嘛,因此肯定会有部分色彩被压缩,因此无法达到100%也十分正常,只要不差太远就行。下面一行是显示器初始状态,未校色时的
测量情况,如果你没在任何步骤上限制显示器的色彩空间(比如通过显示器OSD强制广色域显示器模拟sRGB空间,限制硬件最大色彩范围),那么这个结果就
是Native Gamut的参数。&/p&&p&通过我的截图作为例子可以看出,在Native
Gamut时,如果直接显示sRGB色彩空间的图像,将会不可避免出现过饱和,因为原始色彩空间已经到了156.7%
sRGB和107.9% ARGB了。而经过校准后,变成了97.5% ARGB,也就是有2%的色彩可能会出现丢失。这是个什么概念呢?一般广色域
显示器都是8bit、8bit+Dither或10bit显示面板(6bit面板就不用纠结有多少色彩丢失了),也就是至少能显示1670万种颜色,而
10bit显示面板更是能显示10.7亿种色彩(当然要搭配支持10bit输出的软件和输出接口以及显示器驱动电路)。因此即使是1670万种色彩中丢失2%,也比什么都不丢失,但色温和色彩偏差过大要更容易接受。&/p&&p&通过上面的窗口还可点击Show profile information,查看icc文件对显示器的校正情况:&/p&&img src=&/0a7c7bf349f31295c66d_b.jpg& data-rawwidth=&448& data-rawheight=&562& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&/0a7c7bf349f31295c66d_r.jpg&&&p&可以看出Profile过程对RGB三种基色都做了不同程度的修正。这也是我一直强调的,如果显示器底子够好,千万不要通过OSD做Interactive adjustment的原因,交给Profile就可以了。 &/p&&img src=&/4aaae132143deea6b5f248_b.jpg& data-rawwidth=&448& data-rawheight=&562& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&/4aaae132143deea6b5f248_r.jpg&&&p&这是色域对比图,虚线部分是目标色域,可以在Comparison profile选项中进行更改,彩色区域是Profile的校色结果。需要注意,Rendering intent需要对应我们之前在Advanced菜单中的选项,这里当然是选Perceptual。&/p&&p&上面的报告还不足以验证Calibrate和Profile后,显示器是否已经被正常校准和特性化,因此我们还需要通过Verify Calibration和Verify Profile来验证前面的步骤。&/p&&p&Verify calibration不是必须的,除非你用Interactive adjustment调整了RGB。Verify Profile将是一份详细报告,文件类型是一个html网页。&/p&&p& 由于报告篇幅较长,这里就分段截图说明:&/p&&p&&img src=&/51babcaa43461d9ece5d4fa57b93daab_b.jpg& data-rawwidth=&1067& data-rawheight=&624& class=&origin_image zh-lightbox-thumb& width=&1067& data-original=&/51babcaa43461d9ece5d4fa57b93daab_r.jpg&&首先是总览,包括设备名称,校色时间以及目标参数,实际测量参数等。由于前面自定义亮度为90cd/m?,并且选择了Perceptual映射方式,因此可以看到色温和白点被偏移到了6702K,而校准后的实际测量值是6689K,应该是基本准确了。对比度925.2:1也说明黑场够黑,白点够白,接近1000:1的标准对比度(很多非专业广色域屏幕校色后,对比度无法完全达到1000:1,而sRGB色域校色后,几乎能与1000:1持平,因为这类显示器不需要大范围做色彩空间的扭曲)。&/p&&p&&img src=&/09a155ebcbb5f97f6c6b9b_b.jpg& data-rawwidth=&1062& data-rawheight=&999& class=&origin_image zh-lightbox-thumb& width=&1062& data-original=&/09a155ebcbb5f97f6c6b9b_r.jpg&&这部分是对灰阶的验证,看在校色后是否丢失了灰阶。截图中红色部分是我一直纠结的问题。从实际感官上看,白点的偏离不可察觉,但软件的检测结果告诉我白点的ΔE高达13.99!!!!苦苦寻找后有了答案:由于DELL U3014使用了新的GB-LED背光,背光的波长及色彩曲线特性与以往的W-LED和CCFL都不同。而搭配的i1 Display Pro校色仪是色度计,无法对光度进行准确评判,造成了其在检测白点时会出现很大误差。&/p&&p&无视上面的设备误差后,看看Average ΔE和Maximum ΔE,平均色差为0.26,最大色差为1.23。等等,刚刚校色结束的简报不是说平均0.34,最大2.21么?这里的平均0.26是说显示器跟Profile搭配后的校色结果,上面是单指Profile结果,两者不相同。&/p&&p&接下来就是冗长的几百个色块分别的色差值。&/p&&p&&img src=&/e9dac5a297eb4d_b.jpg& data-rawwidth=&1024& data-rawheight=&591& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/e9dac5a297eb4d_r.jpg&&图中的色块其实是分左右两部分的。如果校色结果足够成功,则肉眼无法分辨其区别,如果你能用眼睛看出区别,说明校色不成功,也就是校色后显示器仍然存在较大色差。造成校色不成功的原因一般是三种可能:要么是软件的配置选择错误,或是在校色过程中环境光影响了校色仪,另一种常见可能是:显示器确实烂到无药可救了。&/p&&br&&p&从Calibrate和Profile的结果来看,本次针对DELL U3014的校色及特性化是成功的,icc文件可被用于色彩管理。至此,显示器的校正与特性化步骤也就告一段落。&/p&&p&本篇文章为了让大家尽可能理解每个步骤的意义和原因,因此较长,理解起来也会有小小的难度。大家感兴趣的话还需要仔细揣摩,如果只希望以结果为导向,则不必纠结太多。&/p&&p&下一集,将对Windows色彩管理系统以及Photoshop等软件的色彩管理配置进行说明,并将做好色彩管理的结果,与不做色彩管理的情况进行直观对比。&/p&&p&&b&接下来是每期一次的竞猜环节:&/b&&/p&&p&前段时间在网上搜资料的时候发现,某些”高人“表示,根据砖家的说法,经过校色的显示器,色彩丢失最高能达到恐怖的40%!!&/p&&p&而经过我们上面的校色和验证发现,一般来说校色后色彩丢失不会超过5%。那么40%是怎样得来的? &/p&
通过前两篇文章,大家应该对色彩管理的一些基础知识和基本概念有了比较清晰的认识,也对色彩管理及显示器色彩校正的原理、目的和必要性有了直观的感触。第三篇文章将着重对整个色彩管理的流程,也就是从显示器校准到最终的Profile输出过程做详细说明。在进…
&b&1.渲染&/b&&br&&ul&&li&利用reflect probe代替反射、折射,尽量不用RTT、GrabPass、RenderWithShader、CommandBuffer.Blit (BuiltinRenderTextureType.CurrentActive...)&/li&&li&建立统一后处理框架(bloom、hdr、DOF等)代替多后处理,可以共用模糊函数,减少多次blit;另外要注意RTT的尺寸。&/li&&li&空气折射、热浪扭曲等使用GrabPass不是所有硬件都支持,改为RTT或者后处理来优化。&/li&&li&建立统一shader材质代替单一shader,充分利用shader_feature、multi_compile,并将宏开关显示于界面。&/li&&li&图像混合代替多通道纹理,阴影投射、阴影接收、MetaPass、forwardadd 等pass不需要时要剔除。&/li&&li&少用alpha test、discard、clip、Alpha Converage等,因为会影响Early-Z Culling、HSR的优化。&/li&&li&避免Alpha Blend穿透问题(权重混合、深度剥离等透明排序方法代价太大了)。&/li&&li&光照贴图代替动态阴影、尽量不用实时光;阴影贴图、环境贴图用16位代替32位;利用projector+rtt或者光圈代替实时阴影。&/li&&li&将环境参数(风、雨、太阳)等shader全局参数统一管理。&/li&&li&非主角可以用matcap代替pbr、无金属不一定要用pbr,仔细选择物理渲染所用的FDG(F:schlick、cook-torrance、lerp、要求不高用4次方,D:blinn-phong、beckmann、GGX、GGX Anisotropic,G:neumann、cook-torrance、Kelemen、SmithGGX;standard shader要注意选择BRDF1-BRDF3),渲染要求不高时不用GGX;可以用LH来优化GGX。&/li&&li&用fixed、half代替float,建立shader统一类型(fixed效率是float的4倍,half是float的2倍),小心选择shader变量的修饰(uniform、static、全局),选择Mobile或Unlit目录下shader&/li&&li&使用高低配渲染,内存足够时可以考虑开启mipmap&/li&&li&使用surface shader注意关掉不用的功能,比如:noshadow、noambient、novertexlights、nolightmap、nodynlightmap、nodirlightmap、nofog、nometa、noforwardadd等&/li&&li&standard shader的变体太多(3万多),导致编译时间较长,内存占用也很惊人(接近1G),如果使用要关掉没用的shader_feature,比如:_PARALLAXMAP、SHADOWS_SOFT、DIRLIGHTMAP_COMBINED DIRLIGHTMAP_SEPARATE、_DETAIL_MULX2、_ALPHAPREMULTIPLY_ON;另外要去掉多余的pass&/li&&li&shaderforge、Amplify Shader Editor生成的shader有多余代码要程序专门优化,Amplify Shader Editor功能更强大一些,而且开源,建议学习。&/li&&li&不要用unity自带terrian,因为即使只用3张splat图,shader也是对应4个的,建议T4M或者转为mesh。&/li&&li&模型和材质相同且数量巨大时用Instance来优化,比如草。&/li&&li&利用查找纹理(LUT)来优化复杂的光照渲染,比如:皮肤、头发、喷漆等。&/li&&li&尽量不要使用Procedural Sky,计算瑞丽散射和米氏散射效率比较低。&/li&&li&尽量不要使用speedtree,改为模型加简单树叶动画,不过SpeedTreeWind.cginc里面的动画函数很丰富,TerrianEngine中的SmoothTriangleWave很好用。&/li&&li&多用调试工具检查shader性能,常用工具有:FrameDebug、Nsight、RenderDoc 、AMD GPU ShaderAnalyzer / PVRShaderEditor、Adreno Profiler 、腾讯Cube、UWA等;另外可以内置GM界面,比如开关阴影,批量替换shader等方便真机调试。&/li&&/ul&&b&2.脚本&/b&&br&&ul&&li&减少GetComponent、find等查找函数在Update等循环函数中的调用、go.CompareTag代替go.tag 、&/li&&li&减少SendMessage等同步函数调用;减少字符串连接;for代替foreach,5.5以后版本foreach已经优化过了;少用linq;&/li&&li&大资源改为异步加载&/li&&li&合理处理协程调用&/li&&li&将AI、网络等放在单独线程&/li&&li&发布优化:关闭log、剔除代码&/li&&li&伪随机&/li&&li&脚本挂载类改为Manager等全局类实现&/li&&li&lua中尽量不实现update、fixedupdate等循环函数,lua和csharp互调用的效率比较低。&/li&&/ul&&b&3.内存管理&/b&&br&&ul&&li&池子管理粒子、float UI等小资源,频繁地GC会造成卡顿&/li&&li&必要时主动调用GC.Collect()&/li&&li&按照不同资源、不同设备管理资源生命周期,Resources.Load和Assetbundle统一接口,利用引用计数来管理生命周期,并打印和观察生命周期。保证资源随场景而卸载,不常驻内存,确定哪些是预加载,哪些泄漏。&/li&&li&内存泄漏(减少驻留内存):Container内资源不remove掉用Resources.UnloadUnusedAssets是卸载不掉的;对于这种情况,建议直接通过Profiler Memory中的Take Sample来对其进行检测,通过直接查看WebStream或SerializedFile中的AssetBundle名称,即可判断是否存在“泄露”情况;通过Android PSS/iOS Instrument反馈的App线程内存来查看;&/li&&li&堆内存过大:避免一次性堆内存的过大分配,Mono的堆内存一旦分配,就不会返还给系统,这意味着Mono的堆内存是只升不降的。常见:高频调用new;log输出;&/li&&li&CPU占用高:NGui的重建网格导致UIPanel.LateUpdate(按照静止、移动、高频移动来切分);NGUI锚点自身的更新逻辑也会消耗不少CPU开销。即使是在控件静止不动的情况下,控件的锚点也会每帧更新(见UIWidget.OnUpdate函数),而且它的更新是递归式的,使CPU占用率更高。因此我们修改了NGUI的内部代码,使锚点只在必要时更新。一般只在控件初始化和屏幕大小发生变化时更新即可。不过这个优化的代价是控件的顶点位置发生变化的时候(比如控件在运动,或控件大小改变等),上层逻辑需要自己负责更新锚点。
加载用协程;
控制同一个UIPanel中动态UI元素的数量,数量越多,所创建的Mesh越大,从而使得重构的开销显著增加。比如,战斗过程中的HUD血条可能会大量出现,此时,建议研发团队将运动血条分离成不同的UIPanel,每组UIPanel下5~10个动态UI为宜。这种做法,其本质是从概率上尽可能降低单帧中UIPanel的重建开销。 &/li&&li&资源冗余:AssetBundle打包打到多份中;动态修改资源导致的Instance拷贝多份(比如动态修改材质,Renderer.meterial,Animation.AddClip)。&/li&&li&磁盘空间换内存:对于占用WebStream较大的AssetBundle文件(如UI Atlas相关的AssetBundle文件等),建议使用LoadFromCacheOrDownLoad或CreateFromFile来进行替换,即将解压后的AssetBundle数据存储于本地Cache中进行使用。这种做法非常适合于内存特别吃紧的项目,即通过本地的磁盘空间来换取内存空间&/li&&/ul&&b&4.美术&/b&&br&&ul&&li&建立资源审查规范和审查工具:PBR材质贴图制作规范、场景制作资源控制规范、角色制作规范、特效制作规范;利用&a href=&/?target=http%3A///ScriptReference/AssetPostprocessor.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AssetPostprocessor&i class=&icon-external&&&/i&&/a&建立审查工具。&/li&&li&压缩纹理、优化精灵填充率、压缩动画、压缩声音、压缩UI(九宫格优于拉伸);严格控制模型面数、纹理数、角色骨骼数。&/li&&li&粒子:录制动画代替粒子、减少粒子数量、粒子不要碰撞&/li&&li&角色:启用Optimize Game Objects减少节点,使用(SimpleLOD、Cruncher)优化面数。&/li&&li&模型:导入检查Read/Write only、Optimize Mesh、法线切线、color、禁用Mipmap&/li&&li&压缩纹理问题:压缩可能导致色阶不足;无透明通道用ETC1,现在安卓不支持ETC2已不足5%,建议放弃分离通道办法。&/li&&li&UI:尽可能将动态UI元素和静态UI元素分离到不同的UIPanel中(UI的重建以UIPanel为单位),从而尽可能将因为变动的UI元素引起的重构控制在较小的范围内; 尽可能让动态UI元素按照同步性进行划分,即运动频率不同的UI元素尽可能分离放在不同的UIPanel中; 尽可能让动态UI元素按照同步性进行划分,即运动频率不同的UI元素尽可能分离放在不同的UIPanel中; &/li&&li&ugui:可以充分利用canvas来切分不同元素。&/li&&li&大贴图会导致卡顿,可以切分为多个加载。&/li&&li&iOS使用mp3压缩、Android使用Vorbis压缩&/li&&/ul&&b&5.批次&/b&&br&&ul&&li&开启static batch&/li&&li&开启dynamic batch:要求模型小于900顶点,用法线小于300,用切线小于180,缩放不一致、使用lightmap、多通道材质等会使dynamic batch无效。&/li&&li&减少GameObject,场景模型数量对fps影响巨大。&/li&&li&批次不是越少越好,过大的渲染数据会给总线传输带来压力。&/li&&/ul&&b&6.物理&/b&&br&&ul&&li&不需要移动的物体设为Static&/li&&li&不要用Mesh碰撞,角色不用碰撞体&/li&&li&触发器逻辑优化&/li&&li&寻路频率、AI逻辑频率 、Fixed Timestep、降帧到30&/li&&li&出现卡顿的复杂计算,例如寻路、大量资源加载 可以用分帧或者协成异步来处理&/li&&/ul&
1.渲染 利用reflect probe代替反射、折射,尽量不用RTT、GrabPass、RenderWithShader、CommandBuffer.Blit (BuiltinRenderTextureType.CurrentActive...)建立统一后处理框架(bloom、hdr、DOF等)代替多后处理,可以共用模糊函数,减少多次blit;另外要注意RT…
全文大致参考视频:&a href=&///?target=https%3A///watch%3Fv%3D-mcXAMDch7s& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=-mcXAMDch7s&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&另外我这篇是界面相关的,如果你想看VR设计相关,可看《&a href=&/question//answer/& class=&internal&&VR设计中是如何建立用户模型的? &/a&》&br&—————————————————————————————————————&br&1、产品经理绘制流程图:&br&&ul&&li&给什么样的用户群设计的?&br&&/li&&li&用户想在你的VR 应用中获得怎样的目标(满足怎样的需求)?在最下面的结尾处则为用户将要完成的目标(获得的结果&满足的需求)&/li&&/ul&……&br&&img src=&/3b83ece90be9d4b24be273a_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/3b83ece90be9d4b24be273a_r.png&&—————————————————————————————————————&br&2、产品助理&策划 手绘线框图:&br&&img src=&/dccd838dbb0c_b.jpg& data-rawwidth=&272& data-rawheight=&433& class=&content_image& width=&272&&&br&—————————————————————————————————————&br&3、产品设计师制作静态低保真原型&br&把上面的草图在unity中做出来,比如平面上的方形做成unity中的方块。&br&&img src=&/f9bdac899e123428_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f9bdac899e123428_r.png&&定义每个产品模块的功能。&br&比如添加图片、标题和交互功能。&br&&img src=&/e1fb7e8c_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/e1fb7e8c_r.png&&戴上HMD查看效果:&br&因为VR里的相对像素密集度太低了,而且又有一定程度的畸变,所以简单地把界面放到VR里就会看不清,也就是所谓的可读性太低。&br&(&a href=&/question//answer/& class=&internal&&VR中如何保证文字的『可读性』?&/a&)&br&&img src=&/2dce9dca72f6c_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/2dce9dca72f6c_r.png&&将页面『卷起来』:&br&正如我在《&a href=&/question//answer/& class=&internal&&为什么VR的界面要放在一张『弧面』上?&/a&》中所说的问题,此时得将页面卷过来一点儿——让你的视角到每个页面的距离相等,从而保证每个字有相同的『可读性』。&br&&img src=&/f9d8b6c57d3d85a1658ba_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f9d8b6c57d3d85a1658ba_r.png&&将整个界面缩小到用户FOV能够一览无余的范围内:&br&所以将页面控件放大,字放大,看起来整个显得小了?正如我在《&a href=&/question//answer/& class=&internal&&VR中的界面和文字,该怎么排版?受什么因素影响和制约吗?&/a&》提到的,因为FOV的限制,用户需要转头、转眼来看到整个页面,那多累啊,于是将控件集中到这一块区域内。&br&&img src=&/46bc6ce9ccbc73b070a79e9_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/46bc6ce9ccbc73b070a79e9_r.png&&这种布局叫做volumetric layout。&br&&img src=&/31a8b47be73dc9b2a40ae10_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/31a8b47be73dc9b2a40ae10_r.jpg&&—————————————————————————————————————&br&4、交互设计师制作高保真原型&br&尝试着在页面控件上添加材质(贴上可能用到的内容缩略图)。&br&可以看到,即使放上高质量的图片,因为分辨率限制,能显示出来具有一定可读性的并不多。&br&(&a href=&/question//answer/#& class=&internal&&理想的VR头显需要达到多少分辨率,才能消除纱门效应?现在做到了什么程度? &/a&)&br&&img src=&/b4bf8c0e5f590be13f0bdbb_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b4bf8c0e5f590be13f0bdbb_r.png&&—————————————————————————————————————&br&5、用户研究员和测试工程师进行用户研究和用户测试&br&按照《&a href=&/question//answer/& class=&internal&&VR中该如何进行用户研究(研究用户是怎么玩的)?&/a&》中所说的方法:&br&(1)首先测试用户能否在360°的球面上找到一块不到100°的弧形平面?(那块弧形平面就是我们的主界面。)&br&&img src=&/69bf33ff3ca4fced6a8b73b63cd5766b_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/69bf33ff3ca4fced6a8b73b63cd5766b_r.png&&(2)用户知道icon的功能吗?&br&(3)用户知道如何滚动页面吗?&br&……&br&—————————————————————————————————————&br&6、视觉设计师进行美术制作&br&这个时候视觉设计师(注:VR时代的视觉设计师为游戏美术师,比如场景设计师、角色设计师等)将界面放入场景中查看是否舒适。&br&&img src=&/73a5077ac6_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/73a5077ac6_r.png&&&br&场景设计中最大的限制在于手机的性能,比如daydream的性能限制是:&br&&ul&&li&draw call要小于100(&a href=&/question/& class=&internal&&为什么应该尽量减少draw call?&/a&)&br&&/li&&li&polygon要小于100K(&a href=&/question/& class=&internal&&如何简化包围多边形?&/a&)&br&&/li&&li&pixel fill要低(&a href=&/question/& class=&internal&&三角形填充算法的主要实现细节和注意点是什么?&/a&)&br&&/li&&/ul&……&br&是不是听得头都晕了?所以最好的解决办法是用模板着色器(stencil shader)——生成了一个ODS(omnidirectional stereo,全方位立体)。一个球面的mask,最后得到一张三自由度的全景图,这也就是整个play store VR的背景360°图。&br&用全景图代替即时渲染的几何体,极大地降低了实时渲染的工作量。&br&&img src=&/bc30fb447fd325a4c5981_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/bc30fb447fd325a4c5981_r.png&&&br&不过它的问题是只有一张单薄的球形曲面(当然普通用户看不出来),所以UI控件只能挡在它前面,而不能放上去。&br&&img src=&/e8bd5f99ca04d7a80d59f89_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/e8bd5f99ca04d7a80d59f89_r.png&&(那实时渲染的三维动画和一个提前渲染的全景视频,在用户看起来有什么区别呢?小白用户可能看不出来,而我们内行有一种分辨的方法:那就是倾斜你的头部,马上就发现它只是张单薄的球面~)&br&—————————————————————————————————————&br&7、动效设计师设计动效&转场动画&br&&img src=&/6bfcd34b9fdaacd13cfa6_b.jpg& data-rawwidth=&1280& data-rawheight=&595& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/6bfcd34b9fdaacd13cfa6_r.jpg&&交互设计师和工程师讨论系统层级的设定,将不同层级的页面产生不同的层级关系,并设定页面滚动方式(&a href=&/question//answer/& class=&internal&&VR的滚动视图『横向』滚动好还是『纵向』滚动好?&/a&)。&br&&img src=&/b52c3c6c56fa5e1a13cec1cf3c5ff375_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b52c3c6c56fa5e1a13cec1cf3c5ff375_r.png&&动效设计师根据页面层级的设定设计动效,并用动效引导用户视线(&a href=&/question//answer/& class=&internal&&VR页面动效设计中如何引导用户视线?&/a&)&br&这是正常的界面,两个同级页面之间保持在同一Z轴上。《&a href=&/question/& class=&internal&&VR界面设计中为什么前后两个页面之间的Z轴深度差不能过大?&/a&》&br&&img src=&/b85d1a1d4bfff_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b85d1a1d4bfff_r.png&&当一个页面被raycast戳中时,它微微向前抬起&br&&img src=&/2ddfeaa7ba35fa107d2ed_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/2ddfeaa7ba35fa107d2ed_r.png&&这里动效设计师设计了parallel effect(这种交互的特点是,通过动画产生深度错觉):&br&当raycast戳到jump页面的左上角时,页面右下角抬起。&br&&img src=&/7edf3ae1c63dcf6fd244e_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/7edf3ae1c63dcf6fd244e_r.png&&当raycast戳到jump页面右上角时,左上角微微抬起。&br&&img src=&/9d35c52250fab89f285f2d70b6fa2623_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/9d35c52250fab89f285f2d70b6fa2623_r.png&&动效设计师展示交互动效——&br&未hover on的状态:&br&&img src=&/e4a6eb432e7_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/e4a6eb432e7_r.png&&当被cursor选中时,整个icon相对于整个画面向前移动,icon的背景层和图形层分离,icon下面显示出APP的名称。&br&&img src=&/784a9003b73eab511e6b_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/784a9003b73eab511e6b_r.png&&&img src=&/e297fa7c040e3aee3ef755_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/e297fa7c040e3aee3ef755_r.png&&&img src=&/6bd6ede62bbbac7dedf04f8_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/6bd6ede62bbbac7dedf04f8_r.png&&&br&然后就可以交给开发团队了。&br&&img src=&/f6c2ae3ba53fa128d4151a3_b.png& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f6c2ae3ba53fa128d4151a3_r.png&&
全文大致参考视频: 另外我这篇是界面相关的,如果你想看VR设计相关,可看《》 ————————————————————————————————————— 1、产品经理绘制流程图: 给什么样的用户…
首先那是个愚人节视频啦,不过还是一本道一下。&br&&br&1.如果是全景视频,用来干这个真没个鸟用。&br&&br&2.如果是三维模型,那2009年跟阿里聊过这事,一般的CG圈民工做一个小模型可能收个几十元(人工计件)。阿里的概念应该是千个几十元。这个只能摊手了。&br&&br&3.有说可以照片重建的,对,现在游戏行业和电影特效行业已经广泛在用了,总体上是一个非常成熟的技术了。但

我要回帖

更多关于 酷家乐软件怎么用 的文章

 

随机推荐