专栏首页每日一篇技术文章SceneKit-Camera之HDR开篇01

SceneKit-Camera之HDR开篇01

本节学习

1.High Dynamic Range (HDR) 的概念 2.介绍SCNCameraHDR相关属性的使用方法

HDR

1.由来

当我们使用数码相机拍摄一张图片保存成jpg或者png的时候,这张照片保存的图片亮度值只有0-255的范围,但是人眼的能够分辨的亮度 最亮和最暗之为 10^5,如果我们要合成一张这样的照片,就需要在不同的曝光度下对同一个场景进行拍摄,让后将照片进行合成,不过这样需要的图片数量过于巨大,不太现实,然后聪明的人类发明了一种新的技术叫做色调映射,解决了这个难题

2.色调映射(Tone-Mapping)

发现人的眼睛对色彩的对比度比较敏感,所以人类通过 对比度映射,保留了对比度细节,所以通常会产生非常锐利的图像,这样做使得图片整体变得平缓

下面来看一张HDR照片张什么样子

15EDD41B-63E5-4202-B241-7C32060D5917.png

普通的图片调节曝光度 是没有办法看到图片这部分细节的,但是hdr格式的图片,通过调节曝光度是可以看到细节如下

IMG_0521.PNG

在scenekit 如何使用它

HDR图片可以作为模型的纹理图片或者天宫盒子

下面就一天空盒子为例子写个demo 讲解一下常用的几个属性

第一步 初始化

   // 下面都是通用的一些配置,就不一一讲解了
    sceneView.delegate = self
    sceneView.showsStatistics = true
    sceneView.allowsCameraControl = true
    let scene = SCNScene()
    sceneView.scene = scene

第二步 增加一个照相机

    cameraNode.camera = SCNCamera()
    cameraNode.camera?.automaticallyAdjustsZRange = true
    sceneView.scene?.rootNode.addChildNode(cameraNode)
     // 上面都是通用的一些配置,就不一一讲解了

第三步 将hdr格式的图片渲染在天空盒子上

    sceneView.scene?.background.contents = "art.scnassets/hdr.hdr"

成功运行的效果如下

IMG_0565.PNG

功能-1 设置场景渲染的饱和度(默认值为1)

self.cameraNode.camera?.saturation = 0

效果如下

IMG_0566.PNG

功能-2 控制场景的整体对比度 (默认值为0)

self.cameraNode.camera?.contrast = 10

效果如下

IMG_0567.PNG

功能 -3 如果要使用HDR(高动态)功能,需要开启,默认是关闭的

    cameraNode.camera?.wantsHDR = true

功能 -4 调节曝光度偏移量(默认为0)

 self.cameraNode.camera?.exposureOffset = -5

IMG_0568.PNG

功能 -5 让摄像机动态调节曝光度(模式是开启的)

 self.cameraNode.camera?.wantsExposureAdaptation = true

功能 -6 当摄像机动态调节曝光,从亮至暗的变化步伐(默认是0.4)

 self.cameraNode.camera?.exposureAdaptationBrighteningSpeedFactor = 0.5

功能 -7 当摄像机动态的调节曝光度从暗到亮变化调节的步伐(默认是0.6)

self.cameraNode.camera?.exposureAdaptationDarkeningSpeedFactor = 0.5

下面三个属性需要结合一个动态的调节的例子演示,目前还没有写,等写好了会发到群里

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件

    增强现实(Argument Reality)来啰!记得宝可梦(Pokemon Go)吗?它当然也是增强现实的代表之一!Apple终于在iOS11将增强现实带进来...

    iOSDevLog
  • ARKit上手 添加3D物体

    之后,填写完项目信息后,选择Content Technology为SceneKit,当然也可以选择SpriteKit,不过在3D空间中就不是那么立体了。 开发语...

    Charlie_W
  • ARKit by Example - 第1部分:AR立方体

    这篇第一篇文章将使用ARKit创建一个非常简单的hello world AR应用程序。最后,我们将能够在增强的世界中定位3D立方体,并使用我们的iOS设备移动它...

    iOSDevLog
  • 聊聊Google Camera Go

    Android Go是Google针对入门级手机优化的轻量级系统。它享有与Android相同的安全更新,并且可以在低端设备上运行。在过去两年多的时间里,Goog...

    小驰笔记
  • Ultimate SLAM?利用事件相机解锁高速运动、高动态范围场景

    Rosinol Vidal, A., Rebecq, H., Horstschaefer, T., Scaramuzza, D., Ultimate SLAM?...

    3D视觉工坊
  • ARKit浅析V1.0

    一、ARKit介绍 苹果公司在WWDC2017 上发布了ARKit,开发者可以使用这套框架在iPhone和iPad上创建属于自己的AR体验。 增强现实技术(A...

    MelonTeam
  • ARKit示例 - 第3部分:添加几何和物理乐趣

    在上一篇文章中,我们使用ARKit来检测现实世界中的水平平面,然后将这些平面可视化。在本文中,我们现在将开始为我们的AR体验添加虚拟内容,并开始与检测到的平面进...

    iOSDevLog
  • Google Jetpack 新组件 CameraX 介绍与实践

    顾名思义:CameraX 就是用来进行 Camera 开发的官方库了,而且后续会有 Google 进行维护和升级。这对于广大 Camera 开发工程师和即将成为...

    glumes
  • ARKit介绍

    Apple在WWDC17上宣布了一个名为ARKit的新iOS框架。它是一个“允许您轻松为iPhone和iPad创建无与伦比的增强现实体验”的框架。该框架随iOS...

    iOSDevLog

扫码关注云+社区

领取腾讯云代金券