基于SceneKit的3D模型触碰事件

作者: 小沛2016 | 来源:发表于2017-12-08 13:46 被阅读262次

流程如下:

1.获取到手指在屏幕的位置
2.然后转换到SCNView上
3.然后返回与手指点击方向的所有3D物体

主要代码如下
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

    // 获取到手势的对象
    UITouch *touch = [touches allObjects].firstObject;
    
    // 手势在SCNView中的位置
    CGPoint touchPoint = [touch locationInView:self.jpARSCNView];
    
    //该方法会返回一个SCNHitTestResult数组,这个数组中每个元素的node都包含了指定的点(CGPoint)
    NSArray *hitResults = [self.jpARSCNView hitTest:touchPoint options:nil];
    
    if (hitResults.count > 0) {
        
        SCNHitTestResult * hit = [hitResults firstObject];
        
        SCNNode *node = hit.node;

        if (node.geometry == self.jpBox) {
            NSLog(@"点击了箱子");
            [self removeBox];
            [self addBox];
            
        }
        
    }

}
设置物理仿真代码如下
SCNBox * box = [SCNBox boxWithWidth:0.18 height:0.18 length:0.18 chamferRadius:0];
        
        self.geometry = box;
        
        SCNPhysicsShape * shape = [SCNPhysicsShape shapeWithGeometry:box options:nil];
        
        self.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:shape];
        
        [self.physicsBody setAffectedByGravity:NO];
        
        self.physicsBody.categoryBitMask = 1;
        self.physicsBody.contactTestBitMask = 2;

代码

相关文章

  • 基于SceneKit的3D模型触碰事件

    流程如下: 1.获取到手指在屏幕的位置2.然后转换到SCNView上3.然后返回与手指点击方向的所有3D物体 主要...

  • 触控事件的学习笔记(待修稿)

    iOS的触控事件是基于多点触控模型。 一、触控可以概述为: 1.触控是用户手指触碰屏幕,或触碰屏幕并在屏幕上移动时...

  • SceneKit框架使用总结(一)

    一、认识SceneKit SceneKit 是基于OpenGL 的苹果原生 3D框架,伴随AR、VR在国内的升温,...

  • SceneKit 自定义手势

    最近有用到SceneKit来展示3D模型,目前SceneKit的学习资料有不少,但发现没有讲自定义手势的文章(可能...

  • .dae 格式的3D模型的动画大战

    最近在看利用Scenekit显示3D模型,选用了自带动画的模型。需求是要求能自己控制模型的动画。 .dae格式模型...

  • iOS原生3D渲染--SceneKit框架学习笔记

    1、ios 3D引擎 SceneKit 开发(1) --起始篇 2、ios 3D引擎 SceneKit 开发(2)...

  • iOS基于SceneKit的3D汽车改色

    基于SceneKit的汽车改色,需要修改模型文件可以去 https://www.turbosquid.com/[h...

  • ios - 3D

    SceneKit iOS - SceneKit显示与交互3D建模(一)https://yiweifen.com/h...

  • 3D全景-SceneKit

    SceneKit是用来构建3D场景的框架。包含了如光照、模型、材质、摄像机等高级引擎特性。 概述 每个SCNVie...

  • iOS事件响应

    1.系统响应阶段 a).手指触碰屏幕,屏幕感应到触碰后,将事件交由IOKit处理。 b).IOKit将触摸事件封装...

网友评论

    本文标题:基于SceneKit的3D模型触碰事件

    本文链接:https://www.haomeiwen.com/subject/dwjeixtx.html