SceneKit 中的立方体所有面都没有光照 ios

Light not shining on all sides of cube in SceneKit ios

我用 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 个面不会暴露在光线下。那么我怎样才能让光线和相机一起移动呢?或者如果有任何其他解决方案。

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

如果您使用的是默认摄像头(即您没有在代码中明确设置摄像头),您可以通过 SCNViewpointOfView 属性 访问其节点] (Apple Developer Reference).