рд╣реЛрд░ + рд▓рдВрдм + FOV, рдпрд╛ рджреЗрдЦрдиреЗ рдХреЗ рдЕрдиреБрдХреВрд▓ рдХреНрд╖реЗрддреНрд░



рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЖрдЬ, рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдЯреИрдмрд▓реЗрдЯ рдкрд░ рдЕрдкрдиреЗ рдХреНрд╡реЗрдХ рдкреЛрд░реНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдВрдХреАрд░реНрдг рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХрд╛рд░рдг рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ рдбреЗрдореЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЪрд┐рддреНрд░ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рджреЛрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рджреЗрдЦ рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рддрдп рдХрд┐рдпрд╛ред

рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣реЙрд░ + рд╡рд░реНрдЯрд┐рдХрд▓ + рдПрдлрдУрд╡реА рдХрд╣рд╛ рд╣реИред


рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдереА


рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдПрдХ рд╡рд╛рдЗрдбрд╕реНрдХреНрд░реАрди рдореЙрдирд┐рдЯрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╡рд░реНрдЯ рдХреЗ рдмрдЬрд╛рдп рд╣реЛрд░ + рдПрдлрдУрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреНрд╡реЗрдХ рд╡рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ- рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдПрдХ рдЖрд╡рд░реНрдзрдХ рдХрд╛рдВрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ред

рдПрдХ рд╡рд╛рдЗрдбрд╕реНрдХреНрд░реАрди рдореЙрдирд┐рдЯрд░ рдкрд░ рд╡рд░реНрдЯ-рдПрдлрдУрд╡реА рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрдХред


рдЬрдм рддрдХ рдореБрдЭреЗ рдЧреЛрд▓реА рдирд╣реАрдВ рдорд┐рд▓реА рддрдм рддрдХ рд╣реЛрд░ рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рд▓реИрдВрдбрд╕реНрдХреЗрдк рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪрд┐рддреНрд░рдг рдореЗрдВ рдпрд╣ рдЕрдм рд╕рдиреНрдирд┐рдХрдЯрди рдирд╣реАрдВ рдерд╛, рдмрд▓реНрдХрд┐ рдмрд╕ рднреАрдбрд╝ рдереАред

рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ рд╣реЛрд░ + рдПрдлрдУрд╡реА рдХреЗ рд╕рд╛рде рдХреНрд╡рд┐рдХ рдХрд░реЗрдВред


рдирд┐рд░реНрдгрдп


рдФрд░ рд╕рдорд╛рдзрд╛рди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдерд╛ред

рджреЛ FOV рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЪреВрдВрдХрд┐ рдХреНрд╡реЗрдХ рдХреЛ 4: 3 рдХреЗ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде рдореЙрдирд┐рдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдЕрдиреБрдкрд╛рдд рдХреЛ рджреЛ рдореЛрдб рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдпрджрд┐ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд 4: 3 (рд╡рд┐рд╕реНрддреГрдд рд╕реНрдХреНрд░реАрди) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ - рд╣реЛрд░ + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрджрд┐ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд 4: 3 рд╕реЗ рдХрдо рдпрд╛ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рд╕реНрдХреНрд░реАрди рд╕рдВрдХреАрд░реНрдг рдпрд╛ рд╡рд░реНрдЧ рдХреЗ рдХрд░реАрдм рд╣реИ) - рдКрд░реНрдзреНрд╡рд╛рдзрд░- рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдп FOV рдХреЛ рд╕рдВрдХреАрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдерд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдЬрд┐рддрдиреА рд╕рдВрдХреАрд░реНрдг рд╣реЛрдЧреА, рдЙрддрдиреА рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╡рд░реНрдЯ- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрдЯ + рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдПрдХ рдПрдХрд▓ рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред

рдореИрдВ WebQuake рд╕реЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рджреВрдВрдЧрд╛ред
if ((vrect.width * 0.75) <= vrect.height) { R.refdef.fov_x = SCR.fov.value; R.refdef.fov_y = Math.atan(vrect.height / (vrect.width / Math.tan(SCR.fov.value * Math.PI / 360.0))) * 360.0 / Math.PI; } else { R.refdef.fov_x = Math.atan(vrect.width / (vrect.height / Math.tan(SCR.fov.value * 0.82 * Math.PI / 360.0))) * 360.0 / Math.PI; R.refdef.fov_y = SCR.fov.value * 0.82; } 


рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:


рдХреНрдпрд╛ рдЖрдпрд╛:
рд▓реИрдВрдбрд╕реНрдХреЗрдк рдУрд░рд┐рдПрдВрдЯреЗрд╢рди - рд╣реЙрд░ + рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреЛрд░реНрдЯреНрд░реЗрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди - рд╡рд░реНрдЯ + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдЕрдЪреНрдЫреА рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рддреНрд░реБрдЯрд┐ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдерд┐рдпрд╛рд░ рдореЙрдбрд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рддрдм рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИ рдЬрдм рд╡рд░реНрдЯ + рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣реЛрд░ + рдореЗрдВ рдпрд╣ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдХреНрд╡реЗрдХ рдореЗрдВ рд╣рдерд┐рдпрд╛рд░ рдореЙрдбрд▓ рдмрд╛рдХреА рдореЙрдбрд▓реЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреБрдЫ рднреА рд╣рдореЗрдВ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрдЯ + рд╕реЗ рд╣реЛрд░реЛ + рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

рджреБрдирд┐рдпрд╛ рд╡рд░реНрдЯ + рдореЗрдВ рдЦреАрдВрдЪреА рдЧрдИ рд╣реИ, рдФрд░ рд╣реЙрд░ + рдореЗрдВ рд╣рдерд┐рдпрд╛рд░ред


рдмрдЧ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖


рдирддреАрдЬрддрди, рдпрд╣ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓рд╛ред



рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдХрдиреАрдХ рдирдИ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рднреА рдЦреЗрд▓ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡ рд╣реИред рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдпреБрдЧ рдореЗрдВ рдЕрдиреБрдХреВрд▓реА FOV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреЛрдИ рднреА рдЖрдпрддрд╛рдХрд╛рд░ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рдФрд░ рдЯреИрдмрд▓реЗрдЯ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In168077/


All Articles