专栏首页每日一篇技术文章SceneKit-你其实不懂模型的物理身体

SceneKit-你其实不懂模型的物理身体

本节学习目标

1.如何查看几何模型物理身体 2.如何设置几何模型的物体身体形态 3.如何给几何模型自定义物体身体

如何查看几何模型的物理身体长什么样子呢?

scnView.debugOptions = .showPhysicsShapes// 打开调试模型即可

我们给物理身体设置一下动态物理身体查看一下模型的物理身体到底长是什么样子,下面以一个球体为例

sphereNode.physicsBody = SCNPhysicsBody.dynamic()

效果如下图,绿线的几何样子即模型的物体身体的形态,我们可以发现球体的物理身体和模型一致

gif1.gif

下面介绍SCNPhysicsBody一个初始化方法可以动态的改变物体身体的形态

public convenience init(type: SCNPhysicsBodyType, shape: SCNPhysicsShape?)

第一个参数 可以选择 static ,dynamic,kinematic 物理身体的类型 第二个参数 物理身体的形状

下面讲解一个物理身体形状的创建

1.形状的类型(.boundingBox)

通俗的将就是盒子形状的物理身体,如果你的模型是个球体,那么它的物理身体将会是一个外切的正方体,如下图

let shape = SCNPhysicsShape(geometry: sphereNode.geometry!, options: [SCNPhysicsShape.Option.type:SCNPhysicsShape.ShapeType.boundingBox])

gif2.gif

2.形状的类型(.凸面体)

物体身体的形状将会是一个凸面体

let shape = SCNPhysicsShape(geometry: sphereNode.geometry!, options: [SCNPhysicsShape.Option.type:SCNPhysicsShape.ShapeType.convexHull])

gif3.gif

3.形状的类型(.凹面体)

物理身体将会是一个凹面体

let shape = SCNPhysicsShape(geometry: sphereNode.geometry!, options: [SCNPhysicsShape.Option.type:SCNPhysicsShape.ShapeType.concavePolyhedron])

gif4.gif

发现没有和底面发生碰撞,为什么会这样,当凹面和地板接触时,物体已经插入地板力,碰撞此时已失效,所以我们千万不要讲凸面的物体设置成凹面物理身体

下面我们给球体自定义一个正方体的物理身体,主要把代码完整代码记录一下

    let sphereNode = SCNNode()
    sphereNode.geometry = SCNSphere(radius: 1)
    sphereNode.position = SCNVector3Make(0, 10, -20)
    sphereNode.geometry?.firstMaterial?.diffuse.contents = "box.gif"
    let box = SCNBox(width: 4, height: 4, length: 4, chamferRadius: 0)
    let shape = SCNPhysicsShape(geometry: box, options: [SCNPhysicsShape.Option.type:SCNPhysicsShape.ShapeType.convexHull])
    sphereNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: shape)
    self.scnView.scene?.rootNode.addChildNode(sphereNode)

效果如下

gif5.gif

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS版 使用ARKit和Swift创建交互式Domino游戏

    在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。

    iOSDevLog
  • ARKit上手 添加3D物体

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

    Charlie_W
  • SceneKit - AR换装应用解决方案

    由于今年是AR元年,在苹果推出的ARKit框架之后,各行各业都在马不停蹄的玩起了创意,希望在自己的应用基础上加入AR的元素

    酷走天涯
  • SwiftShot:为增强现实创建游戏

    了解Apple如何为WWDC18构建精选演示,并获得使用ARKit,SceneKit和Swift制作自己的多人游戏的技巧。

    iOSDevLog
  • SceneKit_入门03_节点

    我们已经完成了创建工程的任务,有的人就问了,你不是要将SceneKit 游戏开发,怎么创建的是应用工程,往下看,就这么任性!

    酷走天涯
  • ARKit示例 - 第4部分:现实主义 - 照明和PBR

    在本文中,我们将在场景中插入更逼真的虚拟内容。我们可以通过使用称为基于物理的渲染(PBR)的技术使用更详细的模型来实现这一点,并且还可以更准确地表示场景中的光照...

    iOSDevLog
  • iOS - SceneKit显示与交互3D建模(一)

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

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

    iOSDevLog
  • ARKit 简介

    ARKit 简介 苹果在AR一直布局VR,最近的苹果开发者大会上,果家终于放出大招:iOS移动端ARKit平台以及VR兼容新桌面操作系统macOS High S...

    xiangzhihong

扫码关注云+社区

领取腾讯云代金券