2011-04-01 24 views
6

मेरे पास मेरे कोड में कहीं भी एक बग है, यह सोच रहा था कि यह गलत है या नहीं।3 डी एफ़िन रूपांतरण मैट्रिक्स को 3 डी एफ़िन रूपांतरण मैट्रिक्स में कनवर्ट करें

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

| a b c |  | a b c 0 | 
| d e f | => | d e f 0 | 
| g h i |  | g h i 0 | 
       | 0 0 0 1 | 

यह काम करता है जब मैं 2 डी मैट्रिक्स के लिए एक पहचान मैट्रिक्स का उपयोग करें, लेकिन जैसे ही मैं 2 डी मैट्रिक्स मेरे सभी वस्तुओं तैयार किया जा रहा गायब हो जाने की किसी भी रूपांतरण लागू होते हैं।

_basicEffect.Projection = Matrix.CreateOrthographicOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 0, 1); 

3 डी के लिए 2 डी मैट्रिक्स को बदलने के लिए सही तरीका क्या है:

2 डी में ड्राइंग 3 डी का उपयोग कर के लिए, मैं इस प्रक्षेपण मैट्रिक्स का उपयोग करें?

उत्तर

14

एफ़िन ट्रांसफॉर्मेशन अनुवाद के लिए रूपांतरण मैट्रिक्स की अतिरिक्त पंक्ति/कॉलम का उपयोग करते हैं। इसलिए मुझे लगता है कि आप क्या करना चाहते हैं अंतिम पंक्ति/कॉलम को नीचे/दाएं स्थानांतरित करना है और फिर नए अक्ष के लिए बस पहचान परिवर्तन डालना है।

| a b c |  | a b 0 c | 
| d e f | => | d e 0 f | 
| g h i |  | 0 0 1 0 | 
       | g h 0 i | 

मुझे यकीन नहीं है, लेकिन इसे कम से कम प्रयास करें।

+0

+1 आप सही हैं। –