Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ARKit 进阶:物理世界

ARKit 进阶:物理世界

原创
作者头像
郭艺帆
发布于 2018-01-15 10:31:50
发布于 2018-01-15 10:31:50
2.9K20
代码可运行
举报
文章被收录于专栏:郭艺帆的专栏郭艺帆的专栏
运行总次数:0
代码可运行

写在前面

ARKit的渲染能力是由其他框架实现的,除了苹果的SceneKit, Unity3D、UE, 或者其他自定义的OpenGL、Metal渲染引擎都可以与ARKit相结合。本文所介绍的技术都是基于SceneKit。

Demo

关于物理模拟

虽然物理引擎都具有真实的物理变量,如质量、重力、摩擦力等,但当我们说道物理模拟,不是要真的去用真实世界的数值去模拟物理行为,事实上那样反而会失真。我们要做的是维护好各种变量的相对关系,制造一种真实的物理感官即可。

SCNPhysicsWorld

游戏中的物理引擎用来模拟3D世界中的物理特效,使物体具备的真实的动态行为。SceneKit使用SCNPhysicsWorld来管理这种物理模拟,让物体的碰撞、连接、掉落等具有真实感。 ARSCNScene具有继承自SCNScene的默认SCNPhysicsWorld。任何添加到ARSCNScene的物理对象,都会注册到SCNPhysicsWorld中,维护其中的物理关系是重点。 利用SCNPhysicsWorld,我们主要做以下工作:

  • 管理全局的物理变量。
  • 利用其代理方法观察物理行为。
  • 使用contact/ray/convex test方法,检测物理之间的物理关系。

SCNPhysicsBody

想要一个SCNNode参与到物理模拟中,只需要给node.physicsBody赋值一个合适的值。 所有拥有physics body的node,会在render loop的physics simulation阶段,计算该node的物理行为,在接下来的渲染阶段对node做相应的变换。

image.png
image.png

一个合适的SCNPhysicsBody需要合理设置其typephysicsShapetype:

  • dynamic: 可以被碰撞、力影响。适合场景中物理引擎可以完全接管的类型,如掉落的石块。
  • static: 不受碰撞、力影响,且不能移动。适合场景中地面、墙体等。
  • kinematic: 不受碰撞、力影响,但移动的时候会影响其他body。适合场景中的角色,毕竟我们不想角色的移动不想被太多力影响。

physicsShape: 当physics body参与到物理模拟时,一个更贴合的形状能得到一个更令人满意的结果。但是对于一个比较复杂的几何体,简单的convex会显得过大,concave又会太复杂影响性能。这种情况可以使用若干个简单的形状拼装一个相似的形状,或者由设计给出一个合理的形状,总之形状的选择要平衡性能与真实感。

body category

一个场景中会有许多node,需要给他们设置category,让我们只关注感兴趣的碰撞、接触。尤其要注意的是它们各自的默认值,不然很容易出现bug。 categoryBitMask: 指定body的类型, dynamic/kinematic body默认为1,static body默认为2。 collisionBitMask: 指定能与该body产生碰撞的physics body类型。默认是-1,即每位都置1。 contactTestBitMask: 指定哪种类型的physics body与该body发生接触(几何体交叉)后,通知给physics world。 这个属性在OSX10.11和iOS9以上默认值是0,以下与collisionBitMask相同。

记住重设physics body时,要恢复这些值

注意SCNNode也有一个categoryBitMask,用法与这个类似。但在scene test时,这两个容易搞混。这里吐槽以下苹果的命名。

SCNPhysicsShape

当物理引擎检测碰撞时,使用的是SCNPhysicsShape来计算结果,除了性能,我碰到两个关于physicsShape的问题:

  1. 如果node.geometry是不可见的,那个虽然它有physics shape,在调试时也会显示,但不会参与物理模拟。
  2. SceneKit的物理引擎是不支持缩放变换的。如果一个node做缩放变换后,physics body将仍是原来的尺寸。这种情况看我的回答,重点是当attach body之前如果没有指定形状,那么SceneKit才会使用scale信息,使用SCNPhysicsShapeScaleKey也有一样的效果。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//still has identity scale
SCNPhysicsBody *body = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeKinematic shape:[SCNPhysicsShape shapeWithGeometry:ramp.geometry options:nil]];
//this did worked
SCNPhysicsBody *body = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeKinematic                                                     shape:nil];

SceneKit automatically creates a physics shape for the body when you attach it to a node, based on that node’s geometry property

物理模拟与其他动画的冲突

从SceneKit的render loop可以看到,物理模拟实际上也是一种动画,只不过动画的参数由物理引擎控制。SceneKit也遵循iOS的传统,具有隐式、显式动画,同时有SCNAction接口。由于物理引擎 是将所有的计算结果应用到动画层上,即node.presentationNode,这会让新加入的动画显得不正常。因为其他动画的初始值是从node.transform中读取的。对于这种问题,需要读出node.presentationNode.transform的值用于动画的初始值。

process of collision

对于简单的碰撞,只要设置好physics body和category bit mask,collision bit mask等参数,其他的就由物理引擎接管了。 碰撞的处理过程由3个部分组成。

collision detection

物理引擎会在渲染时检测物体之间的physics body是否发生重叠,这一过程我们可以通过中的方法观察。

collision determination

与操作两个物体的之间的categoryBitMask和collisionBitMask,若返回非0,则发生碰撞。

collision respond

物理引擎会在渲染之前,计算物理碰撞的结果并应用到物体上。

contact test

当有两个物体相接触,若categoryBitMaskcontactTestBitMask相与不为零,那么会调用的方法。很显然这个结果的集合是小于碰撞结果的。通过这个方法,我们能够控制两个物体之间的碰撞,这在物理引擎接管的碰撞动画不理想时,是非常有用的。 当接触发生时,代理方法会传来SCNPhysicsContact对象,它包含了接触的对象、部位、法线与重叠距离。通过它可以修正错误的动画。例如我将一个石块从高处坠落,如果速度特别大,那么它会直接穿过底部的平面。因为在render loop的渲染时,两者相接触的那一帧在物理模拟时,石块已经大部分穿过了平面,这样在下一帧石块会直接穿过去,而不是回弹。可以看我的回答

scene test

SceneKit与ARKit中共有以下几种scene test,用以观察世界中的物体关系,作用类似UIKit的 hitTest: 方法。

AR scene test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//ARSCNView
- (NSArray<ARHitTestResult *> *)hitTest:(CGPoint)point 
                                  types:(ARHitTestResultType)types;

根据ARSCNView中的点,构造一条3D世界的射线,搜索ARAnchor或真实物体(特征点或已检测出的平面)。 scene test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//SCNSceneRenderer
- (NSArray<SCNHitTestResult *> *)hitTest:(CGPoint)point 
                                 options:(NSDictionary<SCNHitTestOption, id> 
                                 
//SCNNode
- (NSArray<SCNHitTestResult *> *)hitTestWithSegmentFromPoint:(SCNVector3)pointA 
                                                     toPoint:(SCNVector3)pointB 
                                                     options:(NSDictionary<NSString *,id> *)options;

第一个方法:根据SCNSceneRenderer(SCNView等)中的点,构造一条3D世界的射线,搜索与射线相交的几何体,node.geometry为nil则忽视。 第二个方法:在目标node的局部空间中,搜索与pointA-pointB线段相交的子node。

physics body test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//SCNPhysicsBody
- (NSArray<SCNHitTestResult *> *)rayTestWithSegmentFromPoint:(SCNVector3)origin 
                                                     toPoint:(SCNVector3)dest 
                                                     options:(NSDictionary<SCNPhysicsTestOption, id> *)options;
- (NSArray<SCNPhysicsContact *> *)convexSweepTestWithShape:(SCNPhysicsShape *)shape 
                                             fromTransform:(SCNMatrix4)from 
                                               toTransform:(SCNMatrix4)to 
                                                   options:(NSDictionary<SCNPhysicsTestOption, id> *)options;

第一个方法:在物理世界中,返回在两点之间的physics body所属的node。 第二个方法:在物理世界中,按form-to变换滑动指定的形状,返回相交的physics body所属的node。

contact test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//contact test
- (NSArray<SCNPhysicsContact *> *)contactTestBetweenBody:(SCNPhysicsBody *)bodyA 
                                                 andBody:(SCNPhysicsBody *)bodyB 
                                                 options:(NSDictionary<SCNPhysicsTestOption, id> *)options;
- (NSArray<SCNPhysicsContact *> *)contactTestWithBody:(SCNPhysicsBody *)body 
                                              options:(NSDictionary<SCNPhysicsTestOption, id> *)options;

第一个方法:检测物理世界中,两个body是否发生接触,返回所有的接触点。 第二个方法:返回所有在物理世界中与指定body发生contact的node。

最后

物理引擎能够帮助我们模拟真实世界的效果,虽然高级的特效一般都是自己在渲染循环中实现的,但它大大减轻了我们计算成本。拥有良好的物理特效,能够让用户有真实的感受,希望本篇文章能够帮助大家。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
2 条评论
热度
最新
很好的文章,谢谢分享。
很好的文章,谢谢分享。
回复回复点赞举报
该怎么理解呢?“道物理模拟,不是要真的去用真实世界的数值去模拟物理行为,事实上那样反而会失真”
该怎么理解呢?“道物理模拟,不是要真的去用真实世界的数值去模拟物理行为,事实上那样反而会失真”
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
SceneKit_入门10_物理世界
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
7270
SceneKit_入门10_物理世界
SceneKit_入门12_物理行为
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
8280
SceneKit_入门12_物理行为
iOS版 使用ARKit和Swift创建交互式Domino游戏
在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。
iOSDevLog
2019/03/06
2.4K0
iOS版 使用ARKit和Swift创建交互式Domino游戏
ARKit 初探
今年7月Apple推出了AR工具ARKit,着实闪着了大家的眼睛。从目前的评测可以知道 ARKit已经非常成熟,完全可以进行商用了。
音视频_李超
2020/04/01
2.4K0
ARKit 初探
SceneKit_中级09_碰撞检测
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
4900
SceneKit_中级09_碰撞检测
碰撞以及如何检测碰撞详解
节点A 和节点B 都设置了物理身体(SCNPhysicsBody),那么如图所示,SCNPhysicsBody 有三个属性如下
酷走天涯
2022/05/13
1.2K0
碰撞以及如何检测碰撞详解
ARKit示例 - 第3部分:添加几何和物理乐趣
在上一篇文章中,我们使用ARKit来检测现实世界中的水平平面,然后将这些平面可视化。在本文中,我们现在将开始为我们的AR体验添加虚拟内容,并开始与检测到的平面进行交互。
iOSDevLog
2018/09/19
1K0
SceneKit_中级05_力的使用
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
6600
SceneKit_中级05_力的使用
SceneKit_入门04_灯光
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
1.3K0
SceneKit_入门04_灯光
SceneKit_中级04_约束的使用
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
6920
SceneKit_中级04_约束的使用
SceneKit_入门06_行为动画
a.移动相对于当前位置 + (SCNAction *)moveByX:(CGFloat)deltaX y:(CGFloat)deltaY z:(CGFloat)deltaZ duration:(NSTimeInterval)duration; + (SCNAction *)moveBy:(SCNVector3)delta duration:(NSTimeInterval)duration; b.移动到指定的位置
酷走天涯
2018/09/14
1.4K0
SceneKit_入门06_行为动画
ARKit:增强现实技术在美团到餐业务的实践
增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术。Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简单便捷的 API 来开发 AR 应用程序。
美团技术团队
2019/03/22
2.2K0
ARKit:增强现实技术在美团到餐业务的实践
SceneKit_入门07_几何体
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
8210
SceneKit_入门07_几何体
ARKit中控制.dae动画的播放
4.用时间控制动画--CAAnimation 里的 timeOffset 控制开始时间 duration控制播放时间
2018/05/07
2.2K1
基于ARkit和SceneKit检测相机位置和设置2个物体碰撞的事件
######和以往iOS的代理事件不同 它还要多设置categoryBitMask、contactTestBitMask属性的id 用于标志2个物体是否会发生碰撞
2018/05/04
1.6K8
SceneKit_入门05_照相机
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
9310
SceneKit_入门05_照相机
SceneKit_高级05 检测手势点击到节点
SceneKit_入门01_旋转人物 SceneKit_入门02_如何创建工程 SceneKit_入门03_节点 SceneKit_入门04_灯光 SceneKit_入门05_照相机 SceneKit_入门06_行为动画 SceneKit_入门07_几何体 SceneKit_入门08_材质 SceneKit_入门09_物理身体 SceneKit_入门10_物理世界 SceneKit_入门11_粒子系统 SceneKit_入门12_物理行为 SceneKit_入门13_骨骼动画 SceneKit_中级01_模型之间的过渡动画 SceneKit_中级02_SCNView 详细讲解 SceneKit_中级03_切换照相机视角 SceneKit_中级04_约束的使用 SceneKit_中级05_力的使用 SceneKit_中级06_场景的切换 SceneKit_中级07_动态修改属性 SceneKit_中级08_阴影详解 SceneKit_中级09_碰撞检测 SceneKit_中级10_滤镜效果制作 SceneKit_中级11_动画事件 SceneKit_高级01_GLSL SceneKit_高级02_粒子系统深入研究 SceneKit_高级03_自定义力 SceneKit_高级04_自定义场景过渡效果 SceneKit_高级05 检测手势点击到节点 SceneKit_高级06_加载顶点、纹理、法线坐标 SceneKit_高级07_SCNProgram用法探究 SceneKit_高级08_天空盒子制作 SceneKit_高级09_雾效果 SceneKit_大神01_掉落的文字 SceneKit_大神02_弹幕来袭 SceneKit_大神03_navigationbar上的3D文字
酷走天涯
2022/05/13
7940
SceneKit_高级05 检测手势点击到节点
PhysX SDK物理引擎开发包使用及获取c++源码教程
PS: 社区目前正在预演MMO类型的大型3D 服务器架构(Go实现),PX首选作为物理引擎使用。
李海彬
2018/07/26
2.7K0
PhysX SDK物理引擎开发包使用及获取c++源码教程
ARKit示例 - 第4部分:现实主义 - 照明和PBR
在本文中,我们将在场景中插入更逼真的虚拟内容。我们可以通过使用称为基于物理的渲染(PBR)的技术使用更详细的模型来实现这一点,并且还可以更准确地表示场景中的光照。
iOSDevLog
2018/09/20
1.3K0
ARKit示例 - 第4部分:现实主义 - 照明和PBR
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
增强现实(Argument Reality)来啰!记得宝可梦(Pokemon Go)吗?它当然也是增强现实的代表之一!Apple终于在iOS11将增强现实带进来,也因为iOS11,未来将会有数不清的iPhones和iPads就会搭载AR功能,这将会让ARKit成为世界最大的平台,是的,如果你对建置增强现实的Apps有兴趣,让你就来对地方了。
iOSDevLog
2018/08/22
1.8K0
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
相关推荐
SceneKit_入门10_物理世界
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档