在SceneKit ios中,光线不会照在立方体的所有边上

时间:2016-03-17 14:38:48

标签: ios objective-c scenekit

我用SceneKit做了一个旋转的立方体,并把它放在(0,0,0)。我希望立方体是黄色的,但我不想将立方体染成黄色。相反,我想要一个黄色的光照在旋转的立方体上。我的问题是,立方体的两侧只有黄色,其他4个侧面都是黑色的,即使立方体面对着光线也是如此。谁能告诉我我做错了什么。

以下是我创建多维数据集的代码

SCNBox *myBox = [SCNBox boxWithWidth:8 height:8 length:8 chamferRadius:0];
SCNNode *myBoxNode = [SCNNode nodeWithGeometry:myBox];
myBoxNode.position = SCNVector3Make(0, 0, 0);
[scene.rootNode addChildNode:myBoxNode]

以下是灯光的代码

SCNLight *light = [SCNLight light];
light.color = [UIColor yellowColor];
light.type = SCNLightTypeOmni;
SCNNode *lightNode = [SCNNode node];
lightNode.light = light;
lightNode.position = SCNVector3Make(0, 10, 10);
[scene.rootNode addChildNode:lightNode];

修改

好的,所以我发现了问题,但没有解决方案。当立方体旋转时,它实际上不是立方体移动而是相机,并且光被固定以照射在正面上。因此,由于实际的立方体不移动,其他4个面不会暴露在光线下。那么如何将光线与相机一起移动?或者,如果有任何其他解决方案。

1 个答案:

答案 0 :(得分:1)

要将灯光与相机一起移动,您需要将灯光添加到与相机相同的节点(作为子节点,或直接通过设置light属性)。

如果您使用的是默认摄像头(即您没有在代码中明确设置摄像头),则可以通过pointOfView的{​​{1}}属性访问其节点({{ 3}})。