मैं एक साधारण 3 डी इंजन (एपीआई के किसी भी प्रयोग के बिना) विकसित करता हूं, सफलतापूर्वक अपने दृश्य को दुनिया में बदल देता हूं और अंतरिक्ष देखता हूं लेकिन परिप्रेक्ष्य का उपयोग करके मेरे दृश्य (दृश्य स्थान से) को प्रक्षेपित करने में परेशानी होती है प्रक्षेपण मैट्रिक्स (ओपनजीएल शैली)। मुझे एफओवी, पास और दूर मूल्यों के बारे में निश्चित नहीं है और मुझे जो दृश्य मिलता है वह विकृत हो जाता है। मुझे आशा है कि अगर कोई मुझे निर्देश दे सकता है कि उदाहरण कोड के साथ परिप्रेक्ष्य प्रक्षेपण मैट्रिक्स का निर्माण और उपयोग कैसे करें। किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।परिप्रेक्ष्य प्रोजेक्शन मैट्रिक्स (कोई एपीआई) कैसे बनाएं
मैट्रिक्स का निर्माण:
double f = 1/Math.Tan(fovy/2);
return new double[,] {
{ f/Aspect, 0, 0, 0 },
{ 0, f, 0, 0 },
{ 0, 0, (Far + Near)/(Near - Far), (2 * Far * Near)/(Near - Far) },
{ 0, 0, -1, 0 }
};
मैट्रिक्स उपयोग:
foreach (Point P in T.Points)
{
.
. // Transforming the point to homogen point matrix, to world space, and to view space (works fine)
.
// projecting the point with getProjectionMatrix() specified in the previous code :
double[,] matrix = MatrixMultiply(GetProjectionMatrix(Fovy, Width/Height, Near, Far) , viewSpacePointMatrix);
// translating to Cartesian coordinates (from homogen):
matrix [0, 0] /= matrix [3, 0];
matrix [1, 0] /= matrix [3, 0];
matrix [2, 0] /= matrix [3, 0];
matrix [3, 0] = 1;
P = MatrixToPoint(matrix);
// adjusting to the screen Y axis:
P.y = this.Height - P.y;
// Printing...
}
http://www.scratchapixel.com/lessons/3d-basic-rendering:
यह एक/छोड़ दिया सही/ऊपर/नीचे// के पास अब तक मापदंडों (ओपन में प्रयोग किया जाता) पर आधारित है/परिप्रेक्ष्य-और-ऑर्थोग्राफिक-प्रोजेक्शन-मैट्रिक्स मैं पिछले पाठों (प्रोजेक्टिंग पॉइंट्स और 3 डी व्यूइंग) की भी सिफारिश करता हूं। – user18490