前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VR+全景播放器+头控讲解-02

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

作者头像
酷走天涯
发布2018-09-14 15:05:11
6010
发布2018-09-14 15:05:11
举报
学习目标

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

实现步骤:
  • 第一步 创建一个应用工程(略了)
  • 第二步 创建一个渲染视图 继承SCNView

DFA47D5C-AE21-4A3A-8E53-858CBA60B647.png

  • 第三步 导入框架SceneKit #import <SceneKit/SceneKit.h>
  • 第四步 创建一个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 看下图理解一下

5226E55E-4FB9-48B2-9D07-9E3B84D65B37.png

思考问题1:

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

代码语言:javascript
复制
       sphereNode.geometry.firstMaterial.cullMode = SCNCullModeFront;// 设置剔除外表面
       sphereNode.geometry.firstMaterial.doubleSided = false; // 设置只渲染一个表面

思考问题2:

球体的半径设置多大?

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

本节的任务就算完成了

SceneKit 中文教程

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.03.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习目标
  • 实现步骤:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档