2009-05-26 19 views
7

मैं अपने 2 डी आइसोमेट्रिक इंजन में दुनिया को प्रस्तुत करते समय पर्दे 3 डी सिमुलेशन के पीछे कर रहा हूं। मैंने पहले कभी एक आइसोमेट्रिक इंजन नहीं किया है, और मेरा मैट्रिक्स गणित सामान्य रूप से जंगली है इसलिए मुझे समस्याएं आ रही हैं।एक स्क्रीन पर एक अप्रत्याशित रूप से अनुमानित दुनिया पर वापस प्रोजेक्ट

मैं एक प्रक्षेपण मैट्रिक्स, जो अपने सरलतम रूप में यह है:

0.7  0.35  0 
0  -0.87  0 
-0.71  0.35  1 

संकेतों में से एक जोड़े को फ़्लिप कर रहे हैं, क्योंकि मेरी इंजन समन्वय प्रणाली ऊपर बाईं ओर स्थित 0,0 है, करने के लिए + X के साथ दाएं/पूर्व और दक्षिण में + जेड। , इन मैट्रिक्स ज्यादातर काम

1.4080 0.5670 0.0000 
0.0000 -1.1490 0.0000 
1.0000 0.8050 1.0000 

अब:

अब, उस का उल्टा होता है।

उदाहरण के लिए

WC: 500,0,500 = स्क्रीन: -1.44, 350, 500 (एक्स और वाई सही हैं)

WC: 0,0,500 = स्क्रीन: -355, 175, 500 (एक्स और वाई फिर से सही हैं)

लेकिन, अब यदि आप अन्य तरीका जाने की जरूरत है, तो आप अब है कि काम जेड मूल्य, इसलिए

स्क्रीन: -1.44, 350, 0 = WC: -2, -402.97, 0 (। तो, कचरा)

और बहुत अधिक - जैसे ही मैं अब कि जेड मूल्य है, मैं स्क्रीन कॉर्ड से विश्व कोर को पुनः प्राप्त नहीं कर सकता।

यहां क्या कामकाज है?

संपादित

मैं कहना चाहिए कि unproject की बात माउस पिकिंग के लिए एक किरण प्राप्त करने के लिए है ..

ऐसा लगता है कि यह सिर्फ है कि मैं क्या कर रहा था कि पंगा लेना था की मेरी misperception है जैसे मुझे यहाँ

+0

यहां तक ​​कि आप कैसे पहुंचे इस पर कोई संदर्भ वह बहुत उपयोगी होगा! मैं 2 डी प्रतिपादन करते समय कुछ चीज खुद को पीछे छोड़ने की कोशिश कर रहा हूं - पर्दे 3 डी सिमुलेशन। –

+0

मैं इसे समझने में सक्षम था - एक्सएनए के अंदर आप उन मैट्रिक्स को आसानी से मैट्रिक्स के साथ बना सकते हैं। क्रेट ऑर्थोग्राफिक, आदि फ़ंक्शंस। –

उत्तर

8

जैसा कि आपने पाया, 3 डी स्पेस में आपके रूपांतरण को किसी भी तरह की समझ करने के लिए किसी प्रकार का ज़ेड समन्वय की आवश्यकता होती है।

मैं सुझाव दूंगा कि आप रिवर्स रूपांतरण दो बार करते हैं।एक बार स्क्रीन के पास एक जेड समन्वय (पर्यवेक्षक के सबसे नज़दीकी) के साथ, और एक बार आपके 3 डी दृश्य के पीछे एक जेड समन्वय के साथ। ये दो 3 डी अंक आपको एक 3 डी लाइन देंगे, जो कि 2 डी पॉइंट "पीछे" सभी पदों पर कब्जा करेगा।

2

आप नहीं कर सकते। आप स्क्रीन पर प्रक्षेपित कर रहे हैं जो जानकारी खो देता है।

यदि आप इसके बारे में सोचते हैं, तो स्क्रीन पर एक ही बिंदु पर कई 3 डी निर्देशांक प्रक्षेपित होते हैं, और केवल यह जानते हुए कि स्क्रीन समन्वय मूल समन्वय को पुनर्प्राप्त करने के लिए पर्याप्त नहीं है।

[संपादित करें] अपने स्क्रीन निर्देशांक को देखते हुए, आप उन्हें सभी जेड-वैल्यू 0 देते हैं। जिसका अर्थ है कि आपके प्रोजेक्शन मैट्रिक्स के अंतिम कॉलम में सभी शून्य होना चाहिए, जिससे मैट्रिक्स गैर-परिवर्तनीय हो।

2

स्क्रीन पर प्रत्येक पिक्सेल स्क्रीनर के पीछे काल्पनिक 3 डी दुनिया में दर्शक की आंख से एक रेखा का प्रतिनिधित्व करता है। 3 डी निर्देशांक प्राप्त करने के लिए आपको इस पंक्ति को छेड़छाड़ करना होगा कि जो भी वस्तुएं उस दुनिया में रह सकती हैं।