小编Li *_*Jin的帖子

如何在代码中创建SceneKit SCNSkinner对象?

我有一个使用SceneKit for iOS 8的Swift应用程序.我从包含由骨架控制的网格的.dae文件加载场景.在运行时,我需要修改纹理坐标.使用变换不是一个选项 - 我需要为网格中的每个顶点计算一个不同的,全新的UV.

我知道几何在SceneKit中是不可变的,我读过建议的方法是手动制作副本.我正在尝试这样做,但在尝试重新创建SCNSkinner代码时,我总是崩溃.崩溃是一个EXC_BAD_ACCESS内部C3DSourceAccessorGetMutableValuePtrAtIndex.不幸的是,没有源代码,所以我不确定为什么它崩溃了.我把它缩小到SCNSkinner连接到网格节点的对象.如果我没有设置,我不会发生崩溃,事情似乎正在发挥作用.

编辑:这是一个更完整的崩溃调用堆栈:

C3DSourceAccessorGetMutableValuePtrAtIndex
C3DSkinPrepareMeshForGPUIfNeeded
C3DSkinnerMakeCurrentMesh
C3DSkinnerUpdateCurrentMesh
__CFSetApplyFunction_block_invoke
CFBasicHashApply
CFSetApplyFunction
C3DAppleEngineRenderScene
...
Run Code Online (Sandbox Code Playgroud)

我没有找到任何关于如何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 the scene. This seems to be the …
Run Code Online (Sandbox Code Playgroud)

xcode scenekit swift ios8

89
推荐指数
1
解决办法
3965
查看次数

“ this @ classname”在Kotlin中是什么意思?

我正在为Android制作自定义视图。我将通过调用clone(this)来克隆布局,但是当我使用clone(this@mycustomclassname)时,它会显示错误。

仍然很困惑。有人知道this@classnamekotlin 的含义吗?

android this kotlin

1
推荐指数
1
解决办法
126
查看次数

标签 统计

android ×1

ios8 ×1

kotlin ×1

scenekit ×1

swift ×1

this ×1

xcode ×1