2015-04-21 13 views
5

Küpü aydınlatan bir spot ışığı oluşturmaya çalışıyorum. Altındaki yüzey daha sonra bir gölge göstermelidir. Ne yazık ki bunu başaramadım. Işık küpü göz ardı eder ve ışığı hem küp hem de küp üzerinde, küpün yolunda olmasına rağmen açar.SceneKit - Işıklandırma ve gölgelendirme gölgeleri

benzediğini nasıl

enter image description here

kod, sadece test için her düğümde EVET castsShadow ayarlanır, ancak hiçbir şey şimdiye kadar yardımcı:

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]; 

}

cevap

6

SCNLight numaralı telefona castsShadow'u ayarlamanız yeterlidir (bunun yerine, ışık tutan SCNNode yerine t).

+0

Bunu zaten yaptığım kodda yapıyorum. Ben de şimdi her şey üzerinde ama her şey üzerinde farları çevirmeyi denedim, ama bu da işe yaramıyor. – Max

+0

musunuz? LightNode.lightsShadow = shadows; 'lightNode.light.castsShadow = shadows yerine' – mnuages

+0

Üzgünüm, aptalım. Şimdi bir çekicilik gibi çalışır. İlk başta, doktorların ne istediğini anlamadım, sonra gerçek ışığı kastettiğinizi anlamadım. Teşekkür ederim!! – Max

İlgili konular