使用SceneKit提供3D内容
使用SceneKit来添加逼真的3D对象到你的AR体验中
概述
在AR中放置SpriteKit内容,你首先需要一个运行中的AR会话对象(参考创建一个基本的AR体验)。
因为ARKit可以自动匹配SceneKit空间到现实空间中,所以放置一个虚拟对象以便可以维持真实世界中的位置,只需要适当地设置这个对象的SceneKit位置就可以。举例来说,在一个默认配置中,下面的代码放置一个10cm的立方体,初始位置在相机前方20厘米处:
|
|
以上代码直接在视图的SceneKit场景中放置了一个物体,由于ARKit匹配了SceneKit空间到现实空间中,该物体会自动追踪其在现实世界的位置。
追踪现实位置,你不仅可以使用ARAnchor类,或通过创建你自己的锚点并把他们添加到会话对象中,还可以监听ARKit自动创建的锚点。比如,当物体检测功能已打开,ARKit会为
每一个检测到的物体添加并更新锚点。要为这些锚点添加可见内容,可以向下面这样实现ARSCNViewDelegate的方法:
|
|
设计3D资源遵循的最好实践
- 使用SceneKit自身的光照模型创建资源以便可以有更逼真的外观。(查看SCNMaterial类和獾:SceneKit高级渲染示例代码工程)
- 烤周围的遮罩阴影以便所有物体都可以在大场景的光照条件下都有合适的光照。
- 在AR中如果你想要创建一个虚拟物体并把它放置到外界的水平面上,你需要在3D资源中包含一个带有温和的阴影纹理的透明物体,并把它放到虚拟物体下面。
另请参阅
session
在视图内容中管理着运动追踪和相机图像处理的AR会话对象
scene
视图中显示的SceneKit场景