J'essaie de créer un spot qui éclaire un cube. La surface en dessous devrait alors montrer une ombre. Malheureusement, je n'étais pas capable d'y parvenir. La lumière ignore le cube et jette la lumière sur les deux - la surface et le cube - indépendamment du fait que le cube est dans le chemin.SceneKit - Eclairage et coulée d'ombres
Comment ça ressemble:
Le code, je viens de définir castsShadow YES sur chaque nœud pour le test, mais rien à ce jour aidé:
BOOL shadows = YES;
_baseNode.castsShadow = shadows;
_scene.rootNode.castsShadow = shadows;
SCNBox *box = [SCNBox boxWithWidth: 50 height: 50 length: 50 chamferRadius: 10];
box.firstMaterial.diffuse.contents = [UIColor colorWithRed: 0.0 green:0.0 blue: 0.8 alpha: 1.0];
box.firstMaterial.doubleSided = YES;
SCNNode *boxNode = [SCNNode nodeWithGeometry: box];
boxNode.position = SCNVector3Make(100, 100, 100);
boxNode.castsShadow = shadows;
[_baseNode addChildNode: boxNode];
SCNBox *plane = [SCNBox boxWithWidth: 1000 height:1000 length: 40 chamferRadius: 10];
plane.firstMaterial.diffuse.contents = [UIColor colorWithWhite: 0.2 alpha: 1.0];
SCNNode *planeNode = [SCNNode nodeWithGeometry: plane];
planeNode.position = SCNVector3Make(100, 100, 0);
planeNode.castsShadow = shadows;
[_baseNode addChildNode: planeNode];
SCNNode *lightNode = [SCNNode node];
lightNode.light = [SCNLight light];
lightNode.light.type = SCNLightTypeSpot;
lightNode.light.spotInnerAngle = 0;
lightNode.light.spotOuterAngle = 45;
lightNode.light.shadowRadius = 10.0;
lightNode.light.zFar = 10000;
lightNode.light.shadowColor = [UIColor colorWithRed: 0.0 green: 1.0 blue:0.0 alpha: 1.0];
lightNode.castsShadow = shadows;
lightNode.position = SCNVector3Make(100, 100, 170);
[_baseNode addChildNode:lightNode];
SCNNode *lightNode2 = [SCNNode node];
lightNode2.light = [SCNLight light];
lightNode2.light.type = SCNLightTypeAmbient;
lightNode2.light.color = [UIColor colorWithRed: 0.3 green: 0.3 blue:0.3 alpha: 1.0];
[_baseNode addChildNode: lightNode2];
[_scene.rootNode addChildNode: _baseNode];
}
Je le fais déjà dans le code fourni ici. J'ai maintenant essayé de tourner castShadow sur tout sauf le spot Light, mais cela ne fonctionne pas non plus. – Max
êtes-vous? Je vois 'lightNode.castsShadow = shadows;' au lieu de 'lightNode.light.castsShadow = ombres;' – mnuages
Désolé, j'étais stupide. Maintenant, cela fonctionne comme un charme. Au début, je n'ai pas compris ce que les docs voulaient, alors je n'ai pas compris que vous vouliez dire la lumière réelle. Je vous remercie!! – Max