2017-06-15 7 views
14

में छाया कलंक मैं एक नोड जोड़ सकते हैं और छाया SceneKit साथ धुंधला की स्थापना करने की कोशिशनरम छाया, SceneKit

यहाँ मेरी प्रकाश config है, मैं shadowRadius

light = [SCNLight light]; 
light.type = SCNLightTypeDirectional; 
light.castsShadow = true; 
light.shadowMode = SCNShadowModeForward; 
light.shadowRadius = 5; 
light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=25; 
light.zNear=1; 
light.zFar=1000; 

सेट करने का प्रयास किया था, लेकिन परिणाम नरम नहीं है की तुलना में जब मैं shadowRadius सेट नहीं यह यहाँ: enter image description here

मैं samplecount

जोड़ने की कोशिश की थी
light = [SCNLight light]; 
light.type = SCNLightTypeDirectional; 
light.castsShadow = true; 
light.shadowMode = SCNShadowModeForward; 
light.shadowRadius = 5; 
// add samplecount 
light.shadowSampleCount = 5; 
light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=25; 
light.zNear=1; 
light.zFar=1000; 

परिणाम निम्नलिखित enter image description here

छाया की तरह लग रहे मुलायम लग रहे हैं, लेकिन यह छाया नोड के नीचे से शुरू (जेड समन्वय 0 है)। मैं नोड के किनारे पर नरम छाया सेट करने के लिए बहुत समय बिताता हूं, न कि नीचे से। लेकिन कोई परिणाम नहीं। जब जोड़ने दो नोड पार (न केवल नोड और SCNFloor के रूप में ज्यामिति)

मेरे समस्या कैसे दिशा प्रकाश के साथ छाया कलंक (नरम छाया) प्राप्त करने के लिए है

यह समस्या उत्पन्न हुई।

किसी भी मदद की सराहना की जाएगी!

उत्तर

1

मैं वास्तव में orthographicScale के साथ छाया धुंधला कर सकता हूं। मुझे नहीं पता क्यों, लेकिन यह चाल मेरे लिए काम करती है। आशा है कि मदद कर सकता है किसी को

light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=100; // bigger is softer 

मैं भी बड़ा मूल्य और स्थापित करने isJitteringEnabledantialiasingMode अलियासिंग को कम करने के लिए shadowMapSize बदल जाते हैं।

1

स्विफ्ट 4/Xcode 9.2

मैं इन सेटिंग्स के साथ एक बहुत अच्छी परिणाम मिला:

light2.castsShadow = true 
light2.automaticallyAdjustsShadowProjection = true 
light2.maximumShadowDistance = 20.0 
light2.orthographicScale = 1 

light2.shadowMapSize = CGSize(width: 2048, height: 2048) 
light2.shadowMode = .forward 
light2.shadowSampleCount = 128 
light2.shadowRadius = 3 
light2.shadowBias = 32 

12 को shadowRadius बढ़ाने से अपने मॉडल के साथ एक बहुत मदद की, लेकिन फिर मैं की जरूरत कलाकृतियों को प्राप्त करने के लिए shadowSampleCount और shadowBias बढ़ाने के लिए।