Sto provando a creare un punto luce che illumina un cubo. La superficie sottostante dovrebbe quindi mostrare un'ombra. Sfortunatamente non ero in grado di raggiungere questo obiettivo. La luce ignora il cubo e proietta la luce su entrambi - la superficie e il cubo - indipendentemente dal fatto che il cubo sia nel modo.SceneKit - Illuminazione e ombre di lancio
come sembra:
Il codice, ho appena impostato castsShadow su YES su ogni nodo per il test, ma niente finora ha aiutato:
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];
}
Lo sto già facendo nel codice che ho fornito qui. Ora ho anche provato a girare le castsShadow su tutto tranne il spotLight, ma anche questo non funziona. – Max
sei tu? Vedo 'lightNode.castsShadow = shadows;' invece di 'lightNode.light.castsShadow = shadows;' – mnuages
Scusa, ero stupido. Ora funziona perfettamente. All'inizio non capivo cosa volessero i dottori, quindi non capivo che intendevi la luce vera. Grazie!! – Max