/ / प्रोजेक्शन मैट्रिक्स स्केलिंग, राइट से अधिक है? - जावा, ओपेंग्ल, lwjgl, प्रोजेक्शन-मैट्रिक्स

प्रक्षेपण मैट्रिक्स स्केलिंग से अधिक है, है ना? - जावा, ओपनएलएल, lwjgl, प्रक्षेपण-मैट्रिक्स

जैसा कि मैंने समझा है, एक प्रोजेक्शन मैट्रिक्स एक बहुभुज को मापता है कि यह कैमरे से कितनी दूर या बंद होता है। हालांकि मैं पूरी तरह से गलत हो सकता हूं। मेरा सवाल यह है कि, प्रक्षेपण मैट्रिक्स निम्नलिखित के पक्षों को दिखाने के लिए "कैसे" जानता है घनक्षेत्र, जैसा कि कैमरा चलता है, जब मैट्रिक्स केवल "स्केल" बहुभुज माना जाता है?

छवि में सूचना, दाईं ओर घन बंद हैस्क्रीन के बाईं ओर, कैमरा बाईं ओर ले जाकर। यदि घन को केन्द्रित करने के लिए कैमरे को विपरीत दिशा में (दाईं ओर) ले जाया जाए, तो घन का पक्ष अपेक्षा के अनुसार गायब हो जाएगा।

यहाँ मेरा मैट्रिक्स कोड है:

private void createProjectionMatrix(){
float aspectRatio = (float) Display.getWidth() / (float) Display.getHeight();
float y_scale = (float) ((1f / Math.tan(Math.toRadians(FOV/2f))) * aspectRatio);
float x_scale = y_scale / aspectRatio;
float frustum_length = FAR_PLANE - NEAR_PLANE;
projectionMatrix = new Matrix4f();
projectionMatrix.m00 = x_scale;
projectionMatrix.m11 = y_scale;
projectionMatrix.m22 = -((FAR_PLANE + NEAR_PLANE) / frustum_length);
projectionMatrix.m23 = -1;
projectionMatrix.m32 = -((2 * NEAR_PLANE * FAR_PLANE) / frustum_length);
projectionMatrix.m33 = 0;
}

उत्तर:

जवाब के लिए 2 № 1

एक प्रक्षेपण मैट्रिक्स का कार्य (ग्राफिक्स एपीआई के संदर्भ में, जैसे ओपनजीएल) दृश्य-स्थान से क्लिप-स्पेस में शीर्ष स्थान को बदलने के लिए है।

क्लिप स्पेस आम तौर पर एक इकाई बॉक्स होता है (हालांकि मेंडी 3 डी यह "सा हाफ यूनिट बॉक्स) है। यदि क्लिप-स्पेस में तब्दील होने के बाद एक शीर्ष स्थान उस यूनिट बॉक्स के भीतर नहीं होता है, तो यह क्लिप किया जाता है। यह अनिवार्य रूप से सिस्टम" जानता "है कि क्यूब स्क्रीन पर दिखाई देता है ।