FOV का बहुत अधिक प्रभाव इस बात पर है कि आप दुनिया में कितनी तेजी से आगे बढ़ते हैं (यह अभी भी वही गति है; यह विशुद्ध रूप से अवधारणात्मक है)। बहुत चौड़े क्षैतिज FOV के साथ आप बहुत तेज़ी से आगे बढ़ेंगे, बहुत संकीर्ण होने के साथ आप बहुत धीमी गति से चलते प्रतीत होंगे। 90 डिग्री क्षैतिज "स्वीट स्पॉट" प्रतीत होता है, और गेम डेवलपर वहां से व्यक्तिगत गेम के लिए एक वांछित आंदोलन गति को ट्यून कर सकता है।
यह भी मामला है कि 4 गुना 90 डिग्री 360 डिग्री है, जो एक सर्कल है। क्षैतिज FOV की स्थापना करना ताकि यह सामने की ओर / बाईं / पीछे / दाहिनी ओर चतुर्भुज का नक़्शा बनाए, जो समझ में आता है।
और अंत में पूर्वता और जड़ता का पुराना संदूक है। मुझे यकीन नहीं है कि किसी भी गेम ने क्वेक से पहले खिलाड़ी-एडजस्टेबल FOV की पेशकश की है, लेकिन क्वेक ने किया और यह 90 डिग्री क्षैतिज पर चूक गया; अन्य खेलों की कल्पना करना आसान है, बस वहां से 90 डिग्री पर उठा।
यह ध्यान देने योग्य है कि आजकल 90 डिग्री कम आम होता जा रहा है, खेल के साथ (विशेष रूप से आधुनिक एफपीएस) थोड़े कम मूल्य पर या 80 के आसपास।
यदि आप अपने FOV को पहलू में सुधारना चाहते हैं, तो आप इस तरह से कुछ का उपयोग कर सकते हैं (मैं इसका एकमात्र या सबसे अच्छा तरीका नहीं दिखा सकता, लेकिन यह http://www.emsai.net/projects/widescreen पर FOV कैलकुलेटर के अनुरूप है । / fovcalc / ; यह 4: 3 के आधार पहलू अनुपात के सापेक्ष मानता है (आप इसे कॉल कैल्सीफॉवाई में समायोजित कर सकते हैं)
float CalcFovX (float fov_y, float width, float height)
{
float a;
float y;
if (fov_y < 1) fov_y = 1;
if (fov_y > 179) fov_y = 179;
y = height / tan (fov_y / 360 * M_PI);
a = atan (width / y);
a = a * 360 / M_PI;
return a;
}
float CalcFovY (float fov_x, float width, float height)
{
float a;
float x;
if (fov_x < 1) fov_x = 1;
if (fov_x > 179) fov_x = 179;
x = width / tan (fov_x / 360 * M_PI);
a = atan (height / x);
a = a * 360 / M_PI;
return a;
}
फिर इसे कॉल करें जैसे:
// you should use #define of const instead of magic numbers here, which are just here for illustration purposes in this sample
fov_y = CalcFovY (playerAdjustableFOV, 4, 3); // this is your base aspect that adjusted FOV should be relative to
fov_x = CalcFovX (fov_y, width, height); // this is your actual window width and height
गणना की गई fov_x और fov_y को तब निम्नलिखित परिप्रेक्ष्य मैट्रिक्स (ओपनग्लल कन्वेंशन) में प्लग किया जा सकता है:
1.0f / tan (DEG2RAD (fov_x) * 0.5f),
0,
0,
0,
0,
1.0f / tan (DEG2RAD (fov_y) * 0.5f),
0,
0,
0,
0,
(zFar + zNear) / (zNear - zFar),
-1,
0,
0,
(2.0f * zFar * zNear) / (zNear - zFar),
0
यह आपको एक पहलू-समायोजित क्षैतिज FOV देगा जो रिज़ॉल्यूशन और पहलू अनुपात के बावजूद ऊर्ध्वाधर FOV को बनाए रखता है।