我已经用SceneKit制作了一个旋转立方体,并将其放置在(0,0,0)处。我希望立方体为黄色,但是我不想将立方体染成黄色。取而代之的是,我希望黄色的光照在旋转的立方体上。我的问题是,即使立方体的面朝着光线,立方体的只有两个面是黄色的,其他四个面是黑色的。谁能告诉我我在做什么错。
这是我创建多维数据集的代码
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
属性)。
如果使用的是默认摄像头(即未在代码中显式设置摄像头),则可以通过pointOfView
(Apple Developer Reference)的SCNView
属性访问其节点。
关于ios - 无法在SceneKit iOS中将光照射到多维数据集的所有侧面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36063740/