2017-05-14 12 views
5

में एक पारदर्शी मंजिल/विमान पर एक छाया दिखा रहा है यह पता लगाने की कोशिश कर रहा हूं कि मैं एक अदृश्य विमान पर छाया कैसे प्रस्तुत कर सकता हूं, इसलिए मेरे sceneView की पृष्ठभूमि के माध्यम से दिखाया गया है।दृश्यात्मक

THREE.js में ShadowMaterial है जो वास्तव में यह करता है - केवल छाया ही प्रदान की जाती है।

वर्तमान सोच एक कस्टम धातु शेडर बनाना है जो सीधा दिखता है, लेकिन मुझे यकीन नहीं है कि छाया से अलग सब कुछ दिखाने के लिए फर्श को खटखटाए जाने के बारे में कैसे जाना है।

यहाँ एक छाया पकड़ने का एक उदाहरण है: https://knowledge.autodesk.com/search-result/caas/sfdcarticles/sfdcarticles/Maya-2015-Shadow-Catching-with-Use-Background-material.html

+0

आप किस प्रकार की छाया का उपयोग कर रहे हैं? छाया मानचित्रण, छाया खंड? साथ ही, क्या आप वर्तमान में अपने 'दृश्य दृश्य' 3 डी ऑब्जेक्ट्स को आकर्षित करने में सक्षम हैं? –

+0

परिवेश और स्पॉटलाइट 'एसएनएनओड्स' का उपयोग करके डायनैमिक छाया, सुनिश्चित करें कि हुड के नीचे सेब क्या कर रहा है। मैं अपने दृश्य दृश्य दृश्य पर 'UIView' रखने में सक्षम हूं – jfisk

उत्तर

4

ठीक है, तो Github पर इस उदाहरण परियोजना की जाँच:

https://github.com/carolight/Metal-Shadow-Map/blob/master/Shadows/Shader.metal#L67

वह लिंक शेडर कि छाया नक्शा परीक्षण करता है। असल में, यह टुकड़े की जेड स्थिति को सामान्यीकृत करता है और इसे छाया मानचित्र के जेड-बफर से तुलना करता है। यदि यह छाया-जेड से कम है, तो पिक्सेल पूरी तरह से जलाया जाता है (लाइन 67) अन्यथा यह थोड़ा रंगा हुआ है (रेखा 69)।

इसके बजाय आप लाइन 67 के लिए लाइन 69 और (0,0,0,0) के लिए लिखना चाहते हैं (0,0,0, shadow_opacity)। यह पारदर्शी पिक्सल उत्सर्जित करना चाहिए। [0.0.1.1.0] से वर्दी के रूप में shadow_opacity सेट करें।

शेष सेटअप example में दिखाया गया है। वांछित सेटिंग में विमान/कैमरा को झुकाएं, अगर आप वास्तव में दृश्य में नहीं चाहते हैं तो लाइन () में main pass में घन/फूलदान/जो भी हो, उसे खींचें। (हालांकि, shadow pass पर ध्यान दें और इसे वहां रखें)।