草庐IT

ARKit-SceneKit

全部标签

ios - Scenekit PhysicEngine跟随滚球

我想跟随Apple的SceneKit中的旋转球体。我已经为相机添加了一个LookAt约束,当球体落下时,凸轮会指向它,但如果球体滚开,相机会停留在当前位置。我希望摄像头像第三人称射击游戏一样跟随这个球体,并与它保持预定的距离。如果我将凸轮设为球体的子节点,则当球滚动时,凸轮将围绕它“旋转”。有什么想法可以让我用摄像头跟踪球吗? 最佳答案 这很简单。您只需要将摄像机节点在每一帧的位置更改为球的presentationNode。加上一个偏移量以避免在其中。我对Swift不太熟悉,但代码看起来像这样:funcrenderer(aRende

swift - SceneKit 相机动画 move 和减速

我正在使用以下代码沿z轴moveSCNScene场景的相机节点:letmoveTo=SCNAction.moveTo(SCNVector3(x:0,y:0,z:-40),duration:40);cameraNode.runAction(moveTo)我希望给定一个事件(比如我的游戏触发的GameOver事件)顺利进行使相机减速直到停止。如何才能平稳地停止move相机? 最佳答案 SCNAction有一个“timingMode”属性,您可以将其设置为“EaseOut” 关于swift-S

swift - SCNNode 从 SceneKit 中的任何相机位置具有恒定比例

我想实现一个SCNNode(由几何支持),它从任何相机位置(即使在放大或缩小时)保持恒定比例。这些类型的对象的示例在SceneKit编辑器中,例如相机或3D操纵器。靠近这些对象不会改变它们显示的大小。类似于MKAnnotation在MapView上的工作方式。我想每次相机位置发生变化时您都必须修改比例,但我不确定如何实现。 最佳答案 在您的相机上使用正交投影对您有用吗?这将使每个节点大小不变,而不管与相机的距离如何。有点像view.pointOfView.usesOrthographicProjection=true(pointOf

ios - 从 SceneKit 中的 SCNNode 中提取几何信息

我正在尝试为场景中的每个节点提取几何体。我使用.obj文件创建了一个场景,它呈现得非常完美。但是,我想从每个节点中提取几何图形,但我被卡住了。我的代码在下面letscn=SCNScene(named:"d.obj")foriinscn!.rootNode.childNodes{foraini.childNodes{forbina.childNodes{letelement=b.geometry!.geometryElementAtIndex(0)letsource=b.geometry!.geometrySources[0]varz:Float=0source.data.getByte

swift - 为什么 SceneKit 的 physicsWorld didBeginContact 会为一次碰撞触发多次?

我正在使用SceneKit的physicsBody系统来检测对象之间的碰撞,并得到一些非常奇怪的结果。为了说明这一点,我有一个最小的示例,它生成两个具有运动学physicsBodies的球体并沿直线移动它们,以便它们短暂重叠。我希望看到physicsWorld(:didBeginContact:)在球体第一次重叠时被调用一次,而physicsWorld(:didEndContact:)在它们停止重叠时被调用一次。相反,我看到每个函数被调用了25次!下面是要重现的代码:在Xcode8.0中,使用“游戏”模板创建一个全新的项目。将GameViewController.swift的内容替换为

ios - 如何将固定的 SCNNode 附加到 ARKit 的 pointOfView?

我正在尝试做一些简单的事情,但我遇到了一个破坏ARKit体验的问题。我想将3d模型(SCNNode)固定到手机屏幕上的某个位置。我能够做到这一点,但目前的体验似乎很糟糕。当我将我的节点添加到场景中时,我的节点在它卡住到位之前有大约一秒钟左右的时间移动。这种初始移动非常糟糕,因为节点可能会卡住在相机的视野之外(因此您不会在屏幕上看到它)。我使用的代码:letscene=SCNScene(named:"resources.scnassets/model.scn")!letnode=scene.rootNode.childNode(withName:"model",recursively:t

ios - ARKit——Xcode 9 Beta 6 中的错误

今天早上,我已将我的Xcode9beta1更新为Xcode9beta6。我正在使用ARKit,我的应用程序在beta1上运行良好,但现在,当我运行我的应用程序时,出现此错误:////dyld:Symbolnotfound:_OBJC_CLASS_$_ARConfiguration//Referencedfrom:/var/containers/Bundle/Application/5B74AF4C-011C-45B0-8BAD-DEF3DA7C0DFA/testARKit.app/testARKit//Expectedin:/System/Library/Frameworks/ARKi

swift - ARKit:通过添加 anchor 将 USDZ 模型放置在平面上,但它总是在我的头顶上方

我是ARKit的新手,正在做一个小项目,向平面添加对象。我正在按照Apple演示项目的步骤进行操作:在增强现实中处理3D交互和UI控件。如果我加载scn模型(或dae、obj)并放置在平面中使用添加anchor,它工作完美。但是当我更改时使用USDZ模型(从Apple下载)加载并将它始终放在我的头顶上。我更改使用添加子节点并设置位置但不起作用,结果与添加anchor相同。//Testaddusdzobjectguardleturl=Bundle.main.url(forResource:"wheelbarrow",withExtension:"usdz"),letobject=Virt

swift - GameplayKit + SceneKit, GKAgent 旋转转换

我在Scenekit(和ARKit,尽管这对这个问题并不重要)应用程序中使用GameplayKit一直很有趣。具体来说,我一直在为行为使用实体、组件和代理,除了一件事外,它们都运行良好。我已经设法在组件内使用GKAgent在场景中四处移动,并避开其他对象。这一切似乎都在起作用。但是,我只能让GKAgent位置工作,而不是“旋转”属性。importFoundationimportSceneKitimportGameplayKitclassMoveComponent:GKScnComponent,GKAgentDelegate{//thisclassisabbreviatedforperf

ios - 在 ARKIT 中为 3D 对象添加阴影

任何人都可以建议我如何以编程方式向3D对象添加阴影。请看下图。我想以同样的方式以编程方式在椅子下添加阴影. 最佳答案 //ToAddShadowon3DModelJustCopyPastethiscodeanditwillappearashadowof3DModelonGroundletflourPlane=SCNFloor()letgroundPlane=SCNNode()letgroundMaterial=SCNMaterial()groundMaterial.lightingModel=.constantgroundMater