Tôi đang cố gắng tạo ra ánh sáng điểm chiếu sáng khối lập phương. Bề mặt bên dưới sẽ hiển thị một cái bóng. Thật không may tôi đã không thể đạt được điều này. Ánh sáng lờ đi khối lập phương và tạo ánh sáng trên cả hai - bề mặt và khối lập phương - bất kể khối lập phương đang cản đường.SceneKit - Chiếu sáng và đổ bóng
Làm thế nào nó trông giống như:
Mã này, tôi chỉ cần đặt castsShadow YES trên mỗi nút để thử nghiệm, nhưng không có gì cho đến nay đã giúp:
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];
}
Tôi đã làm điều đó trong mã mà tôi đã cung cấp ở đây. Tôi bây giờ cũng đã cố gắng biến castsShadow tắt trên tất cả mọi thứ nhưng spotLight, nhưng cũng điều này không hoạt động. – Max
là bạn? Tôi thấy 'lightNode.castsShadow = shadows;' thay vì 'lightNode.light.castsShadow = shadows;' – mnuages
Xin lỗi, tôi đã ngu ngốc. Bây giờ nó hoạt động như một sự quyến rũ. Lúc đầu, tôi không hiểu những gì các tài liệu muốn, sau đó tôi không hiểu rằng bạn có nghĩa là ánh sáng thực tế. Cảm ơn bạn!! – Max