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

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

作者头像
酷走天涯
发布2018-09-14 15:12:44
5870
发布2018-09-14 15:12:44
举报
文章被收录于专栏:每日一篇技术文章
本节学习目标

捏合手势如何缩放画面

实现步骤

1.创建捏合手势添加到视图中去,这个视图也是最外层的视图

代码语言:javascript
复制
self.pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGesture:)];
[view addGestureRecognizer:self.pinchGesture];

2.算法处理,改变Camera属性的xFov ,yFov

代码语言:javascript
复制
   -(void)pinchGesture:(UIPinchGestureRecognizer*)pinchGesture{
    if (pinchGesture.state != UIGestureRecognizerStateEnded &&   pinchGesture.state != UIGestureRecognizerStateFailed) {
      if (pinchGesture.scale != NAN && pinchGesture.scale != 0.0) {
          float scale = pinchGesture.scale - 1;
          if (scale < 0) scale *= (sScaleMax - sScaleMin);
          _currentScale = scale + _prevScale;
          _currentScale = [self validateScale:_currentScale];
          CGFloat valScale = [self validateScale:_currentScale];
          double xFov = CAMERA_FOX * (1-(valScale-1)*0.15);
          double yFov = CAMERA_HEIGHT * (1-(valScale-1)*0.15);
      }
    } else if(pinchGesture.state == UIGestureRecognizerStateEnded){
      _prevScale = _currentScale;
    }
    }
-(float)validateScale:(float)scale{
  if (scale < sScaleMin)
      scale = sScaleMin;
  else if (scale > sScaleMax) scale = sScaleMax;
  return scale;
}

3.改变照相机节点的属性xFov,yFov

代码语言:javascript
复制
self.eyeNode.camera.xFov = xFov;
self.eyeNode.camera.yFov = yFor;

问题:

为什么缩放不是改变球体的半径呢? 答:因为照相机的视野范围不改变,无论球体半径多大,呈现出来的部分都不会改变,如下

理解一下

本节讲解完毕 SceneKit 中文教程

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

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

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

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

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