2011-08-05 8 views
9

में छायाएं यदि मैं गणित दस्तावेज को सही समझता हूं (उदाहरणों को नहीं मिला है) ग्राफिक्स 3 डी 3 डी ऑब्जेक्ट्स की छाया का उत्पादन नहीं करता है, हालांकि ग्राफिक्स 3 डी में प्रकाश-> विकल्प है।गणित ग्राफिक्स 3 डी

प्रश्न: क्या आपने कभी छाया के साथ गणित 3 डी ऑब्जेक्ट्स बनाने की कोशिश की है? यदि आपने गणित में ऐसा हल किया है? या आपने ग्राफिक्स को अन्य 3 डी (दृश्य-ग्राफ) दर्शकों के लिए निर्यात किया है जैसे उदाहरण जे-रियलिटी?

+1

जहां तक ​​मुझे पता है, सबसे आसान समाधान कुछ बाहरी रेट्रैसर प्रोग्राम का उपयोग कर रहा है, और अपनी ज्यामिति निर्यात कर रहा है। मैंने Kerkythea (सरल चीजों के लिए सीखने/उपयोग करने में आसान, फ्रीवेयर) का उपयोग करके ऐसा किया। – Szabolcs

+0

बहुत अच्छा लगता है। मैं वर्तमान में एक मंच/अभिनेता/निर्देशक वास्तुकला का उपयोग कर विकास कर रहा हूं, जहां वर्तमान में मंच 'ग्राफिक्स 3 डी' है। आपको लगता है कि केवल एक दृश्य के लिए काम करता है। फिर भी कोशिश करने लायक, धन्यवाद। –

उत्तर

14

छायांकन मॉडल used by MMA, तथाकथित Phong shading, स्थानीय सतह अभिविन्यास, प्रकाश स्रोत दिशाओं, कैमरा दिशा और सतह के प्रसार और specular गुणों के बीच एक साधारण संबंध के आधार पर पिक्सेल तीव्रता निर्धारित करता है। ज्यामिति का कोई अन्य पहलू ध्यान में नहीं लिया जाता है, जिसका अर्थ यह है कि ऑब्जेक्ट्स अन्य ऑब्जेक्ट्स के पिक्सेल मानों को प्रभावित नहीं करते हैं, भले ही वे ऑब्जेक्ट और प्रकाश स्रोत के बीच हों।

इसका मतलब है कि मॉडल छाया उत्पन्न नहीं करता है। यह करने में सक्षम नहीं है।

आप जमीन के विमान या दीवार विमानों पर लागू होने पर अपने ऑब्जेक्ट के बहुभुज को प्रक्षेपित करके स्वयं को अनुकरण कर सकते हैं। यह बहुत मुश्किल नहीं होना चाहिए, लेकिन गैर-प्लानर सतहों पर छाया बहुत कठिन होगी।

उदाहरण:

polys = (PolyhedronData["GreatRhombicTriacontahedron", "Faces"] // 
     Normal // N) /. {x_, y_, z_}?VectorQ -> {x, y, z + 6}; 
    (* raise it slightly above ground plane*) 

shadow = polys /. {x_, y_, z_}?VectorQ -> {x - z, y, 0}; 
     (* projection from a directional light source at 45 deg elevation *) 

Graphics3D[{polys, EdgeForm[], FaceForm[[email protected]], shadow}, 
Lighting -> {{"Directional", White, {{1, 0, 1}, {0, 0, 0}}}}, 
Boxed -> False] 

enter image description here

बेशक

, तो आप यह सुनिश्चित करें कि प्रकाश स्रोतों (बिंदु, स्थान, दिशात्मक ...) और अपने छाया प्रक्षेपण संगत कर रहे हैं बनाने की जरूरत है।

+0

अच्छा लग रहा है! लेकिन, हमम ... छाया जोड़ना = होगा = मुश्किल हो जाएगा। वैसे भी मेरे (आगामी) ऐप में। - उत्तर देने के लिए धन्यवाद। –