ARKit (三)

Lighting models (shaders)

Lighting models 本质上是一个着色器,他通过不同的数学模型,来计算物体表面的光的折射,如何渲染在场景中,控制最终你看到的东西,SceneKit 提供了下面几种不同的 LM,他们有着不同的纹理属性,结合了不同的纹理属性,光和光的信息来生成各种材质和效果


image.png
  • Constant: 这个一个平面灯光模型,只包含了对环境灯光的整合
  • Lambert: 这个模型整合了环境光和漫射光的信息
  • Phong: 这个模型结合了环境光,漫反射和镜面光信息
  • Blinn: 这个模型结合了环境光,漫反射和镜面光信息,但使用的算法和上面的不一样,更加高效
  • Physical Based: 这个模型整合了漫反射和物理灯光和材质的现实抽象

Materials

给 LM 配置不同的特殊的材质,会有不同的效果。材质由不同的纹理层组成。每个 layer 会产生特点的颜色等


image.png

Textures

纹理是 2D 的图形,用来作为 3D 几何的一些表达,纹理可以由不同的 layers 组成,每层有它自己特殊的属性,颜色,镜面反射,光泽,粗糙程度和透明度等,当他们组合的时候能产生真实的纹理

Environment map

在了解环境图之前,先来了解 cube maps, cm 它有六个面,如下图

image.png

SceneKit 支持不同模式的 cm,常用的有 horizontal strip 模式,它有一行的 6 个面组成,相当于有 6 个纹理

image.png

  • +X 和 -X 是左右两个面
  • +Y 和 -Y是上下面
  • +Z 和 -Z 是前后面

Environment map 有两个目的,它和反射图相似,利于反射,它通常用来为 PBR 提供灯光信息,给他们逼真的灯光环境

image.png

Diffuse map

diffuse map 为 3D 模型提供了基本的颜色,表面了这个是什么物体,不管其他灯光或者特效的效果,通过平面 2D 图包裹球体,它将球体定义为地球

image.png

可以通过 alpha 通道来改变球体

image.png

Normal map

Normal maps 简单的说就是创建凹凸感,而不需要在该表面添加很多多边形,应用它能为地球添加山脉和平原等凹凸感

image.png

Height map

height map 不是 PBR 中的一部分,但是 hm 是一个黑白图,白色代表,白色是渲染的最高点,黑色为最低,可以把他转换为 normal map


image.png

Occlusion map

它类型与遮挡图,用于阻挡环境光到达狭窄的角落区域,例如石墙上的裂缝等,这是黑白纹理图,黑色代表阻挡灯光的区域,白色代表允许灯光通过,最终用来模拟环境光的效果


image.png

Emission map

在没有光的地方,地球看上去是黑的,在用灯光的地方,在外太空看起来是亮的,emission map 涵盖了灯光和阴影的信息以创建发光的效果


image.png

Self-illumination map

应用其他效果后,可以给他上色了。


image.png

Displacement map

normal 使用像素来添加高度变化的错觉,displacement map 使用像素来实际改变表面


image.png

Metalness and roughness maps

PBR能够将微观细节可视化,并由两个属性表示:材料粗糙度和金属度。

image.png

Metalness map

金属度接近物理表面特性,如低角度下的折射,反射和菲涅耳反射。 它产生金属或电介质外观。 这些贴图是灰度纹理。 黑色表示完全电介质,而白色表示完全金属表面。


image.png

Roughness map

粗糙度接近现实世界表面的微观细节。 它产生光泽或无光泽的外观。 这些贴图是灰度纹理,其中黑色表示非常粗糙的表面,而白色表示非常光滑的表面。

ARAnchor 包含了位置和方向对真实世界的转换,它是看不见的元素。

ARPlaneAnchor 是一个特殊的锚点,它包含了位置和方向,平面的信息,包括中点,方向和平面的范围。

Detecting surfaces

为了让 ARKit 能检测到平面,需要设置

config.planeDetection = .horizontal
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容

  • 版本记录 前言 OpenGL 图形库项目中一直也没用过,最近也想学着使用这个图形库,感觉还是很有意思,也就自然想着...
    刀客传奇阅读 5,178评论 0 10
  • 相关 到底有多强?苹果的增强现实框架:ARKitARKit进阶:物理世界ARKit实战:如何实现任意门 Scene...
    皮皮Warrior阅读 3,967评论 1 11
  • 已经想不起上次给外婆打电话是多久的事了,而最近一次见她,也是三个月前。今天过节,给她打了个电话,打完心里一直酸酸的...
    吴声吴息阅读 371评论 0 0
  • ”命名和缓存失效是计算机科学里面最难应对的两件事“ 1. 前言 无数前辈告诉我们要去读源码,理解里面的思想,设计理...
    夫礼者阅读 767评论 2 5
  • 课间,趁老师走出门。 拎上包,拿上本子,悄悄地从那后门溜出来,之后飞快地向前奔去,像是个从未逃过学的孩子,那样紧张...
    ShellydeDiary阅读 221评论 0 0