VR+全景播放器+头控讲解-02

VR+全景播放器+头控讲解-01-知识储备
VR+全景播放器+头控讲解-02-创建球体
VR+全景播放器+头控讲解-03-渲染视频
VR+全景播放器+头控讲解-04-滑动手势
VR+全景播放器+头控讲解-05-伸缩画面
VR+全景播放器+头控讲解-06-头控实现
VR+全景播放器+头控讲解-07-分屏技术

学习目标

如何创建一个渲染全景视频的球体

实现步骤:

  • 第一步 创建一个应用工程(略了)

  • 第二步 创建一个渲染视图 继承SCNView


    VR+全景播放器+头控讲解-02_第1张图片
    DFA47D5C-AE21-4A3A-8E53-858CBA60B647.png
  • 第三步 导入框架SceneKit

    #import 
    
  • 第四步 创建一个3D场景

    self.scene = [SCNScene scene];
    
  • 第五步 创建一个球体 然后将其添加到场景中去

    SCNNode *sphereNode = [SCNNode node];
    sphereNode.geometry = [SCNSphere sphereWithRadius:SHPERE_RADIUS];
    sphereNode.rotation = SCNVector4Make(1, 0, 0, -M_PI/2);
    [self.scene.rootNode addChildNode:sphereNode];
    
  • 第六步 我们知道现在球体是有了,但是我们还需要一个眼睛去观察球体,在全景下,眼睛是根据重力感应,来调节观察的角度,所以我们下面创建一个眼睛节点,然后将其放入场景的中心点

     SCNNode *eyeNode = [SCNNode node];
     eyeNode = [SCNNode node];
     eyeNode.camera = [SCNCamera camera]; // 创建照相机对象 就是眼睛
     eyeNode.camera.automaticallyAdjustsZRange = true; // 自动添加可视距离
     eyeNode.camera.xFov = CAMERA_FOX; 
     eyeNode.camera.yFov =CAMERA_HEIGHT;
     eyeNode.camera.focalBlurRadius = 0;
    

xFov 和 yFov 看下图理解一下


VR+全景播放器+头控讲解-02_第2张图片
5226E55E-4FB9-48B2-9D07-9E3B84D65B37.png

思考问题1:

球体有两个表面 一个外表面一个内表面,在vr 模式下,我们的眼睛是在球体中间的,如何让球体只渲染内表面

       sphereNode.geometry.firstMaterial.cullMode = SCNCullModeFront;// 设置剔除外表面
       sphereNode.geometry.firstMaterial.doubleSided = false; // 设置只渲染一个表面

思考问题2:

球体的半径设置多大?

不要设置太小即可,我设置的是10 注意这里没有单位,根据屏幕的宽度和高度进行相对运算,屏幕上边为1 下边为-1 左边为 -1 右边为 1 根据照相机的视角就可以计算出几何模型在视图中的呈现的画面大小了

本节的任务就算完成了

SceneKit 中文教程

你可能感兴趣的:(VR+全景播放器+头控讲解-02)