दृश्य का डिफ़ॉल्ट FPS फ़ील्ड 90 ° क्षितिज / 60 ° लंबवत क्यों है?


14

जहां तक ​​मैं इसे समझता हूं, वर्टिकल फील्ड ऑफ व्यू को इसके साथ समायोजित किया जाना चाहिए:

fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen);

यानी फील्ड ऑफ व्यू को उपयोगकर्ता की स्क्रीन की दूरी और आकार से मेल खाना चाहिए।

कई एफपीएस में, क्षैतिज FoV के लिए 90 ° या ऊर्ध्वाधर FoV के लिए 60 ° (16: 9 मानकर) का डिफ़ॉल्ट मान है। एक उदाहरण क्राइंगजाइन है। लेकिन एक 16: 9 20 "स्क्रीन (दृश्य क्षेत्र के विकर्ण, यानी लगभग 40 सेमी x 25 सेमी) के लिए, इस डिफ़ॉल्ट मान के लिए उपयोगकर्ताओं को स्क्रीन से अपनी आँखें 20 सेमी होनी चाहिए ताकि एक स्पष्ट रूप से सही दृश्य मिल सके।

इसलिए या तो मैंने अपनी गणना में गलती की है, या एक कारण होना चाहिए कि आप उद्देश्य पर अपर्याप्त FoV मान क्यों चुनेंगे।

९ ० ° हॉर्ज़ / ६० ° के लंबवत FoV के कारण क्या है?


मुझे पता है कि उच्च FOVs गेम को तेजी से महसूस कर सकते हैं जैसे कि दृश्य चाल चलते हैं । यह एक डिजाइन विकल्प प्रतीत होता है, यह उस डिवाइस पर भी निर्भर करता है जिस पर आप इसे खेल रहे हैं। आपने क्या FPS मापे?
एको

@ एंको वेल मैंने कुछ "शोध" किए हैं और विभिन्न फ़ॉर्म्स के लिए बहुत सारे फ़ोरम पोस्ट पाए हैं जो कि डिफ़ॉल्ट फ़ॉवी 90 ° होरज़ है। इसके अलावा, मैंने कुछ CryEngine डॉक्स पढ़े और इसके उदाहरण गेम में FoV के साथ खेला।
dyp

FOV का जो भी मूल्य निर्धारित किया गया है, उसके लिए डिफ़ॉल्ट होने का कारण यह है कि यह आम तौर पर एक मूल्य निर्धारित करने के लिए कोई मतलब नहीं है जो स्थिर नहीं है। अधिकांश डिस्प्ले में सेंसर नहीं होते हैं जो बताते हैं कि उपयोगकर्ता का सिर कितना दूर है। इसलिए 90 डिग्री एक "अच्छा अनुमान" है। मुझे लगता है कि आप कह सकते हैं कि यह "हमारे सभी 20" स्क्रीन यूजर्स को इससे 20 सेंटीमीटर दूर बैठना चाहिए। " और आप अपने आस-पास के वातावरण को देखने के लिए अधिक से अधिक पैन लें। यह मेरे लिए एक खेल को अधिक चूसना है।
स्टीवन लू

सरल उत्तर: क्योंकि यह खेलते समय काफी अच्छा लगता है और उत्तरोत्तर व्यापक FOV करते हुए अनुचित विकृति का परिचय नहीं देता है। किसी भी 3 डी एडिटर में कैमरा एंगल्स के साथ मैसेज करना आसान है, विभिन्न मूल्यों को आज़माएं और अपने लिए देखें। सरल उत्तर नहीं: यह एक मेसोनिक षड्यंत्र है।
पैट्रिक ह्यूजेस

जवाबों:


6

मुझे लगता है कि 90deg का एक FoV होना स्वाभाविक है जब आप 'मानव आंखों से देखने' की नकल करने की कोशिश करते हैं। आपकी गणना सही होगी यदि आप स्क्रीन का उपयोग एक आभासी दुनिया में खिड़की का अनुकरण करने के लिए करेंगे, न कि किसी पहले व्यक्ति के परिप्रेक्ष्य में। छवि आपको दुनिया को अपने सिर से 80 सेमी दूर 20 "गर्त" देखना होगा ...


1
लेकिन "एक आभासी दुनिया में एक खिड़की के माध्यम से नहीं देख रहा है" एक परिप्रेक्ष्य प्रक्षेपण क्या है? ओह, और आप अपनी स्क्रीन पर स्क्रीन की सतह पर "चिपके हुए" चीजों को भी प्रोजेक्ट कर सकते हैं।
DYP

4
पहले व्यक्ति परिप्रेक्ष्य के खेल के लिए, एक बहुत ही सीमित FoV होने से परेशान हो सकते हैं और गेमप्ले और IMO को नुकसान पहुंचा सकते हैं, क्योंकि आप वास्तविक जीवन में उपयोग किए जाने की तुलना में बहुत कम देखते हैं। व्यक्तिगत रूप से, मुझे 90 ° अपर्याप्त के नीचे कुछ भी मिलता है। 65 ° के क्षैतिज FoV के साथ एक चौकोर कमरे के एक कोने में खड़े होने की कल्पना करें जैसा कि कंसोल गेम के लिए सामान्य है - आप पूरे कमरे को देखने में सक्षम नहीं होंगे, जिससे आप जागरूकता बनाए रखने के लिए बाएं और दाएं देखते रहें। यह मुझे वास्तविक जीवन में पागल कर देगा :)

1
हैं, निश्चित रूप से यह है। इसे हम करें। 1323f.com/400wm/400/400/ronstik/ronstik1112/ronstik111200016/… अपनी उंगलियों के साथ और आपके सामने (80cm दूर) एक 20 "स्क्रीन का अनुकरण करें। अब कल्पना कीजिए कि आप सब देख सकते हैं। melak47 बताया गया है, जो परेशान करने वाला होगा। अपने सिर से 20 सेंटीमीटर दूर इस सिम्युलेटेड 20 "स्क्रीन / फ्रेम को स्थानांतरित करें और यह आपके वास्तविक क्षेत्र के साथ मोटे तौर पर मेल खाना चाहिए।
डिर्क

3
दरअसल, कृत्रिम रूप से विस्तृत क्षेत्र से प्रेरित गलत दृष्टिकोण पूरी तरह से अप्राकृतिक है, और मैं व्यक्तिगत रूप से अक्सर विकृति का पता लगाता हूं जो तनावपूर्ण और कष्टप्रद बनाता है। लेकिन यह अभी भी असीम रूप से बेहतर है कि 20 ° -30 ° peephole के माध्यम से सब कुछ देखने की कोशिश की जाए, जो कि एक विशिष्ट एकल मॉनिटर पर "यथार्थवादी" परिप्रेक्ष्य के बारे में है। टनल विजन के बारे में बात करो!
इल्मरी करोनें

3

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 को बनाए रखता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.