में कैमरा विमान की दूरी के रूप में गहराई मेरे पास जीएलएसएल शेडर्स की एक जोड़ी है जो मुझे मेरे दृश्य में वस्तुओं का गहराई का नक्शा देती है। अब मुझे जो मिलता है वह प्रत्येक पिक्सेल से कैमरे की दूरी है। मुझे पिक्सेल से कैमरे के विमान तक दूरी प्राप्त करने की आवश्यकता है। मुझे थोड़ा ड्राइंगजीएलएसएल
* |--*
/ |
/ |
C-----* C-----*
\ |
\ |
* |--*
3 तारांकन पिक्सल हैं और सी कैमरा है। तारों से रेखाएं "गहराई" हैं। पहले मामले में, मुझे पिक्सेल से कैमरे की दूरी मिलती है। दूसरे में, मैं प्रत्येक पिक्सेल से विमान तक दूरी प्राप्त करना चाहता हूं।
कुछ प्रोजेक्शन मैट्रिक्स का उपयोग करके ऐसा करने का एक तरीका होना चाहिए, लेकिन मैं स्टंप हो गया हूं।
यहां दिए गए शेडर्स हैं जिनका मैं उपयोग कर रहा हूं। ध्यान दें कि eyePosition camera_position_object_space है।
शीर्ष shader:
void main() {
position = gl_Vertex.xyz;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
पिक्सेल Shader:
uniform vec3 eyePosition;
varying vec3 position;
void main(void) {
vec3 temp = vec3(1.0,1.0,1.0);
float depth = (length(eyePosition - position*temp) - 1.0)/49.0;
gl_FragColor = vec4(depth, depth, depth, 1.0);
}
प्रक्षेपण किस तरह का प्रयोग कर रहे हैं: आप इस के लिए एक अलग modelview और प्रक्षेपण मैट्रिक्स का उपयोग करने की जरूरत नहीं है? यदि आप गहराई के मानचित्र को प्रस्तुत करते समय ऑर्थोग्राफिक प्रक्षेपण का उपयोग करते हैं, तो आपको किसी भी गणना के बिना जो चाहिए उसे प्राप्त करना चाहिए। – Ani
मैं प्रतिपादन करते समय परिप्रेक्ष्य प्रक्षेपण कर रहा हूं, लेकिन मुझे ऑर्थोग्राफिक प्रक्षेपण से आने वाले गहराई मूल्यों की आवश्यकता है। विस्तृत प्रतिक्रिया के लिए – Lucian