在SceneKit中显示3D模型,SpriteKit节点纹理中的视频不起作用

时间:2016-01-04 22:25:07

标签: ios 3d sprite-kit scenekit

我已经制作了一个3D视频播放器,它运行得很好。当我去插入一个3D物体(在我的情况下是一个立方体)时,立方体闪烁并且只是部分可见(见下文)。

我用来插入多维数据集的代码非常简单:

let box = SCNBox(width: 0.25, height: 0.25, length: 0.25, chamferRadius: 0)
let boxNode = SCNNode(geometry: box)
boxNode.categoryBitMask = StereoCategoryMask.BothEyes.rawValue
boxNode.position = SCNVector3(x: 1.0, y: 0.5, z: 0.5)

编辑:

视频是用360相机拍摄的,所以我创建了一个球体(SCNode),由于缺乏一个更好的术语,它就成了我的世界。在它里面,相机是0,0,0;我需要与它保持相同的距离以防止桶形失真。

我正在使用SKNode,因此我可以通过SKVideoNode播放视频,然后将其作为纹理映射到SCNode上。它看起来像这样:videoGeomNode.geometry?.firstMaterial?.diffuse.contents = texture其中texture是SKNode,videoGeomNode是我的球体。

这是一个放大的结果:

enter image description here

2 个答案:

答案 0 :(得分:0)

[编辑:不,不是答案,见评论;保持完整,以防它慢慢某人的大脑寻找正确的答案]

看起来你的相机的Z接近限幅zNear太远了。你的立方体的一部分在相机的平截头体内,而部分则不是。

zNear默认为1.0。将其减少到接近0.0的值,或使用

camera.automaticallyAdjustsZRange = true

答案 1 :(得分:0)

事实证明我已将zNear设为0.0; zNear不能为0.将它设置为0.1解决了我的问题。

这很奇怪,因为如果我在视频上放置一个立方体,它会闪烁,而如果它把它放在空白区域,它看起来会很好。我想如果它是一个zNear问题,那么它会以同样的方式影响这两个立方体。