草庐IT

ARKit-SceneKit

全部标签

swift - 使用 SceneKit 进行 hitTesting 不返回 SCNNode 的命中

XCode中的文档明确指出,当计划测试3D线段时,可以使用SCNRender、SCNView或SCNNode本身对SceneKit中的几何体进行hitTesting。我有一个SCNScene的用途,它的节点没有渲染器或View,因此我打算使用SCNNodehitTesting。我创建了一个SCNScene,在其中放置了一个SCNNode并测试了一个简单的光线,但我总是得到一个空的hitList,我不明白为什么:importSwiftimportSceneKitletboxGeometry=SCNBox(width:1.0,height:1.0,length:1.0,chamferRad

swift - SceneKit 物理在局部空间中添加速度

我正在尝试使用physicsBody.velocity对不同方向的轴增加或减少速度来操纵玩家节点。问题是我无法找到将其应用到局部空间的方法,或者至少应用与对象所面对的方向相关的速度。换句话说,如果我没有旋转对象的节点,它就可以正常工作。如果我这样做,它仍会将速度添加到未旋转的空间。我知道有一种方法可以为当前的SCNVector3添加速度,但我无法弄清楚。ifisZThrustPositive{ifletvelocity=self.physicsBody?.velocity{ifvelocity.z*100我也在尝试以类似的方式使用angularVelocity旋转节点。只要节点没有移动

swift - SceneKit 自定义几何体产生 “double not supported”/“invalid vertex format” 运行时错误

我不明白下面的代码有什么问题:classTerrain{privateclassfunccreateGeometry()->SCNGeometry{letsources=[SCNGeometrySource(vertices:[SCNVector3(x:-1.0,y:-1.0,z:0.0),SCNVector3(x:-1.0,y:1.0,z:0.0),SCNVector3(x:1.0,y:1.0,z:0.0),SCNVector3(x:1.0,y:-1.0,z:0.0)],count:4),SCNGeometrySource(normals:[SCNVector3(x:0.0,y:0.

swift - 显示较大的模型 Swift SceneKit

如何“放大”模特的脸?我想要达到的效果是让模特的脸占满整个圆圈。Linktopic我曾尝试将cameraNode.position的Z值更改为小于2,但随后模型发生了剪辑。我也尝试过更改cameraNode.camera.zNear和cameraNode.camera.zFar但没有任何显示。cameraNode.camera.xFov和cameraNode.camera.yFov如果我不更改它们,它们都是0.0。//GetthemodelheightvarminPoint=SCNVector3ZerovarmaxPoint=SCNVector3ZeromodelNode.getBou

swift - SceneKit 渲染器功能不能 Swift 工作?

我目前正在使用Swift3和SceneKit。我的问题似乎是我的渲染器功能无法正常工作。我不知道我做错了什么。该程序运行但没有代码:funcrenderer(_renderer:SCNSceneRenderer,updateAtTimetime:TimeInterval)似乎执行。这是渲染器函数之前的代码。导入UIKit导入QuartzCore导入SceneKitGameViewController类:UIViewController、SCNSceneRendererDelegate{letscene=SCNScene()letcameraNode=SCNNode()varperson

ios - SceneKit物理接触

我正在尝试为iPhone创建一个测试3D游戏,但我受困于物理学。当汽车和救护车相互接触时,汽车不会消失?我以前使用过SpriteKit,我知道我必须将PhysicsWorldContactDelegate设置为self但我不知道如何在SceneKit中执行此操作,也许这就是问题所在?代码:ambulance.physicsBody?.categoryBitMask=PhysicsCategory.ambulanceambulance.physicsBody?.contactTestBitMask=PhysicsCategory.carcar.physicsBody?.categoryB

swift - 如何更新 ARKit 中的 pointOfView

我正在尝试构建我的第一个ARKit应用程序。该应用程序的目的是在相机朝向的方向拍摄小块。现在,这是我的代码。sceneView.scene.physicsWorld.gravity=SCNVector3(x:0,y:0,z:-9.8)@IBActionfunctapScreen(){ifletcamera=self.sceneView.pointOfView{letsphere=NodeGenerator.generateCubeInFrontOf(node:camera,physics:true)self.sceneView.scene.rootNode.addChildNode(s

swift - SCNBox 使正面旋转到 ARKit 中的相机

我有一个简单的ARKit应用程序。当用户触摸屏幕时overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){guardlettouch=touches.firstelse{return}letresult=sceneView.hitTest(touch.location(in:sceneView),types:[ARHitTestResult.ResultType.featurePoint])guardlethitResult=result.lastelse{return}lethitTrasform=SCNMatrix4(hi

swift - 使用 Swift SceneKit 的享元设计模式。对象重用

我正在构建一个增强现实iPhone应用程序,它需要渲染大量SceneKit节点。我想集成Gamma、Helm、Johnson和Vlissides在设计模式中描述的享元设计模式。这里还有教程FlyweightDesignPattern但是,我在实现以及Swift如何处理对象方面遇到了问题。TL;DR:在Swift中有没有一种方法可以将相同的SCNNode多次添加到ARSCNView并拥有它显示在不同的位置?我有一个名为Box的类,它构建了我想利用Flyweight的SCNBox;Box的内在状态是维度。外在状态是它的颜色和位置。盒子类classBox{varsize:CGFloatvar

swift - 使用 SceneKit 和模型 I/O 中的多个子对象、纹理、 Material 将 .obj 加载到 .scn?

我目前在Apple的SceneKit/ModelI/O中处理大型.obj文件,其中包含多个对象,每个对象都有单独的纹理和Material。这意味着我不能像许多其他表单帖子所建议的那样将一个单一的纹理应用于文件。有什么好的方法可以导入Material和贴图吗?我将我的objmtl和jpg都放在一个目录中,我也将scn场景放在该目录中。代码目前遵循这种设计,我从它各自的位置访问它,将它加载到MDLAsset中,然后将它放入SCNScene中,它被保存回一个文件,以便稍后在代码中加载。//...//Getthemeshfromtheobjobjectletasset=MDLAsset(url