我已经制作了一个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是我的球体。
这是一个放大的结果:
答案 0 :(得分:0)
[编辑:不,不是答案,见评论;保持完整,以防它慢慢某人的大脑寻找正确的答案]
看起来你的相机的Z接近限幅zNear
太远了。你的立方体的一部分在相机的平截头体内,而部分则不是。
zNear
默认为1.0。将其减少到接近0.0的值,或使用
camera.automaticallyAdjustsZRange = true
答案 1 :(得分:0)
事实证明我已将zNear设为0.0; zNear不能为0.将它设置为0.1解决了我的问题。
这很奇怪,因为如果我在视频上放置一个立方体,它会闪烁,而如果它把它放在空白区域,它看起来会很好。我想如果它是一个zNear问题,那么它会以同样的方式影响这两个立方体。