Questions tagged «scenekit»

2
如何在代码中创建SceneKit SCNSkinner对象?
我有一个使用SceneKit for iOS 8的Swift应用程序。我从.dae文件加载了一个场景,该文件包含由骨架控制的网格。在运行时,我需要修改纹理坐标。不能使用变换-我需要为网格中的每个顶点计算一个不同的全新UV。 我知道几何体在SceneKit中是不可变的,并且我已经读到建议的方法是手动制作副本。我正在尝试这样做,但是在尝试重新创建SCNSkinnerin代码时,我总是以崩溃告终。飞机坠毁是EXC_BAD_ACCESS内部的C3DSourceAccessorGetMutableValuePtrAtIndex。不幸的是,目前还没有源代码,因此我不确定为什么它会崩溃。我将其范围缩小到SCNSkinner连接到网格节点的对象。如果不设置该值,则不会崩溃,并且一切正常。 编辑:这是崩溃的更完整的调用堆栈: C3DSourceAccessorGetMutableValuePtrAtIndex C3DSkinPrepareMeshForGPUIfNeeded C3DSkinnerMakeCurrentMesh C3DSkinnerUpdateCurrentMesh __CFSetApplyFunction_block_invoke CFBasicHashApply CFSetApplyFunction C3DAppleEngineRenderScene ... 我没有找到有关如何SCNSkinner手动创建对象的任何文档或示例代码。由于我只是基于以前工作的网格来创建它,所以它应该不太困难。我正在SCNSkinner根据Swift文档创建,并将所有正确的内容传递给init。但是,SCNSkinner我不确定如何设置中的骨骼属性。我将其设置为SCNSkinner要复制的网格物体原件上的骨架,我认为该骨架可以工作……但事实并非如此。设置骨架属性时,它似乎没有分配。分配后立即检查它仍然为零。作为测试,我尝试将原始网格物体的骨架属性设置为其他属性,并且在分配后也保持不变。 任何人都可以对正在发生的事情有所了解吗?或者如何正确地SCNSkinner手动创建和设置对象? 这是我用来手动克隆网格并将其替换为新网格的代码(我在这里没有修改任何源数据-我只是想确保此时可以创建一个副本) : // This is at the start of the app, just so you can see how the scene is set up. // I add the .dae contents into its own node in …
89 swift  xcode  ios8  scenekit 

2
iOS恢复相机投影
我正在尝试估计与QR码在太空中相关的设备位置。我正在使用均在iOS11中引入的ARKit和Vision框架,但该问题的答案可能并不取决于它们。 使用Vision框架,我可以获得在相机框架中界定QR码的矩形。我想将此矩形与从标准位置转换QR码所需的设备平移和旋转进行匹配。 例如,如果我观察框架: * * B C A D * * 而如果我距QR码1m,以QR码为中心,假设QR码的边长为10cm,我会看到: * * A0 B0 D0 C0 * * 这两个帧之间的设备转换是什么?我了解可能无法获得确切的结果,因为观察到的QR码可能略微不是平面的,因此我们正在尝试估算并非完美的事物的仿射变换。 我猜sceneView.pointOfView?.camera?.projectionTransform它比有用,sceneView.pointOfView?.camera?.projectionTransform?.camera.projectionMatrix因为后面已经考虑了从ARKit推断出的转换,我对此问题不感兴趣。 我要如何填充 func get transform( qrCodeRectangle: VNBarcodeObservation, cameraTransform: SCNMatrix4) { // qrCodeRectangle.topLeft etc is the position in [0, 1] * [0, 1] of A0 // expected real world position …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.