草庐IT

ARKit-SceneKit

全部标签

swift - SceneKit:位置音频不起作用

我试图让SceneKit在我的角色每次移动时播放脚步声。当他们靠近(靠近播放器)时,音频的音量应该会增加。这是我设置音频源的方式:privatelazyvarstepAudioSource:SCNAudioSource={lettempAudioSource=SCNAudioSource(fileNamed:"art.scnassets/Audio/step_enemy.wav")!tempAudioSource.volume=0.3tempAudioSource.rate=0.1tempAudioSource.loops=truetempAudioSource.shouldStrea

swift - 如何通过代码在 SceneKit 中设置基于物理的渲染?

我想用PBR呈现一些场景。我创建了金属度和粗糙度纹理并想将其应用于网格。当我尝试在Xcode中执行此操作时-一切都很好。我可以将这个模型添加到场景中,然后将这个纹理添加到模型中。但我想以编程方式进行。这是我的代码:NSData*vertices=[[NSDataalloc]initWithBytes:modelPly->verticeslength:modelPly->vertexCount*3*sizeof(float)];SCNGeometrySource*vertexSource=[SCNGeometrySourcegeometrySourceWithData:verticess

swift - SceneKit 自定义几何形状未显示

我是Swift和SceneKit的新手,我目前的问题是我尝试创建的自定义形状没有显示,即使框架中的原始形状显示正常。我一直在关注https://www.raywenderlich.com/1261-scene-kit-tutorial-with-swift-part-1-getting-started的教程.我还查看了关于SO的答案:SceneKit–Customgeometrydoesnotshowup.我在这里查看了其他答案,但没有一个对我有用。这是我的代码:importUIKitimportSceneKitimportQuartzCoreclassGameViewControll

swift - 为 ARKit(不是 QLPreview) Material 属性加载 USDZ

我正在尝试将usdz文件加载到ARKkit中,其中一种Material具有玻璃透明度。当我将模型放入QLPreviewController时,玻璃会正确呈现。问题是我想用ARKit在SCNScene中渲染玻璃,而不是QLPreview,当我将玻璃Material加载到SCNScene中时,它是黑色的。当我在Xcode中预览时它也是​​黑色的。不确定QLPreview在做什么,或者我的场景中的光照是否有问题。我删除了所有自定义灯,并将autoenablesDefaultLighting设置为true。然后我将每种Material的光照模型设置为PhysicallyBased。但仍然只是黑

swift - 如何重置 SceneKit pointOfView 相机

我是SceneKit的新手。试图找出如何将pointOfView相机重置为其原始缩放/位置,以便它覆盖场景中的所有节点? 最佳答案 @IBOutletweakvarsceneKitView:SCNView!//YourSCNViewvarmyCamera:SCNNode!//Anobjecttoholdyourscene'scamera在viewDidLoad中,使用您的相机名称加载它:myCamera:SCNNode=scene.rootNode.childNode(withName:"sceneCamera",recursive

ios - 如何从 ARKit 中的节点动画到实际 View

我想获得点击节点在场景View中的矩形位置,以便我可以使用该位置将另一个UIView从该位置设置为更大尺寸的动画(就像在Measure应用程序中一样):我使用此代码获得了点击节点,但我如何获得rect或尺寸或其他任何内容以实现从节点到View的平滑过渡?publicoverridefunctouchesBegan(_touches:Set,withevent:UIEvent?){super.touchesBegan(touches,with:event)guardlettouch=touches.firstelse{return}if(touch.view==self.sceneVie

ios - 何时在 ARKit 中使用 worldTransform() 以及何时使用 transform()

我一直在学习ARKit,有两个基础知识可以根据对象的相对位置来转换对象。想知道什么时候使用transform()方法和worldTransform()方法,通过示例清楚地区分会很有用。lettransform=result.worldTransformletisOnPlane=result.anchorisARPlaneAnchorobject.setTransform(transform,relativeTo:cameraTransform,smoothMovement:!isOnPlane,alignment:planeAlignment,allowAnimation:allowA

ios - GKAgent 不会更新在 ARKit/SCNScene/GamplayKit 游戏中注册为实体的 SCNNode 的位置

我正在使用GKAgent移动注册为实体的SCNNode,分配了一个团队组件和一个移动组件。正在触发agentWillUpdate和agentDidUpdate方法,但添加到场景的实体的位置拒绝更新它们的位置。有没有办法让GKAgent根据以下移动行为更新位置?亲切的问候,蒙特勒移动组件.swiftimportSceneKitimportGameplayKitextensionfloat3{varlength:Float{returnsqrt(x*x+y*y+z*z)}}classMoveComponent:GKAgent3D,GKAgentDelegate{letentityManag

swift - 使粒子系统仅受 SceneKit 中某些类别的物理场的影响?

在SceneKit中,可以使SCNPhysicsBody不受SCNPhysicsField的影响,方法是为它们提供categoryBitMask,当使用按位AND进行比较时,结果为零。与字段的类别位掩码相比,类别位掩码产生非零值的主体仍然受其影响。是否可以对SCNParticleSystem中的粒子执行相同的操作,以便粒子不受SCNPhysicsField的影响(编辑:并且粒子仍然受到影响受其他物理场影响),但某些物理体甚至其他粒子系统是否受其影响?澄清:我想要的是:受SCNPhysicsField(特别是线性重力场)影响的SCNParticleSystem。这可以通过将粒子系统的af

swift - 如何将 SceneKit 节点更新为 'automatically' 以反射(reflect)底层模型?

在更新模型时,定位、更新和/或添加或删除与底层模型对应的SceneKit节点的最明智方法是什么?我不确定如何最好地表达这个问题,所以举一个最小的例子可能更容易:我有一些东西,比方说彩色对象的集合,我可能想使用Quartz将其二维表示为正方形,或者使用SceneKit进行三维表示。由于两种情况下的基础数据相同,因此抽象出模型并定义如下内容似乎更合适:structFoo{varuid:Stringvarcolor:UIColorvarposition:[Float]//arrayof3floatsforx,y,z}然后我有:varcollectionOfFoo:[Foo]然后我可以通过遍历