Výpočet souřadnic pro aktuální rozlišení – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet souřadnic pro aktuální rozlišení – .NET – Fórum – Programujte.comVýpočet souřadnic pro aktuální rozlišení – .NET – Fórum – Programujte.com

 

Kubas1290
Stálý člen
18. 9. 2021   #1
-
0
-

Ahoj,

snažím se o to přizpůsobit všechny textury ve hře aktuálnímu rozlišení displeje. Aktuální rozlišení displaje získat není problém, na to už je zabudovaná funkce, která to už zjistí. Problém, ale mám že hru mám navrženou fixně na Full HD (1920 x 1080) a potřeboval bych všechny komponenty přepočítat na toto aktuální rozlišení.

Například 2D obdelníkoví vektor herní desky je (420, 0, 1080, 1080), kde první dvě číslice udávají pozici od horního levého roku a poslední dvě číslice udávají velikost (sizeX, sizeY). Převést první dvě hodnoty například na rozlišení 2K (2560x1440) by mělo jít lehce pomocí trojčlenky:

X:

1920.............................................420

2560.............................................x

-----------------------------------------------------

(1920/2560) = (x/420) => x= (2560/1920)*420

x= 560

Podobně pro Y:

1440...........................................y

1080...........................................0

----------------------------------------------------

y=(1080/1440)*0

y=0

-------------------------------------------------------

S čím mám ovšem problém je převést poslední dvě čísla. Potřeboval bych najít mezi nimi a rozlišením nějakou závislost, pomocí které by se dali snadno přepočítat.

Nevěděl by si prosím s tímto někdo rady?

Správný výsledek pro tu herní desku z tohoto Full HD(420,0,1080,1080) by měl vyjít na 2K (560,0,1440,1440)

Zkoušel jsem to přes poměr k_x=x_původní/size_x_původní

k_x = 1920/1080 =>1,77

a pak pomocí trojčlenky:

1920......................1,77

2560,,,,,,,,,,,,,,,,,,,,,,,,k_x_2K

---------------------------------

k_x_2K = 2,36 

Size_x_2K = 2560/2,36 => 1084,74 což jak je vidět nevychází :(( (mělo by vyjít 1440)

Snad jestli počítám správně, tak pro tyto rozlišení by ta deska měla mít tyto hodnoty:

HD (1280x720) => (320,0,720,720)

Full HD (1920, 1080) => (420,0,1080,1080)

2K (2560x1440) => (560,0,1440,1440)

Nahlásit jako SPAM
IP: 62.141.28.–
Kubas1290
Stálý člen
18. 9. 2021   #2
-
0
-

#1 Kubas129
Super už jsem na to snad přišel pomocí procent :-)

Nahlásit jako SPAM
IP: 62.141.28.–
Seth
~ Anonymní uživatel
6 příspěvků
18. 9. 2021   #3
-
0
-

#2 Kubas129
malý dotaz - a jak si to budou lidi pouštět na monitorech které mají rozlišení v poměru 4:3? protože i když to přepočítáš na dejme tomu 1024x800 nebo 1280x1024 budeš to mít 'sprzněné'. a to nepočítám rozlišení jako 1600x768 (např sony vaio p21) či jiné atypické rozlišení :-)

nehledě na to - nevím zda se ti to pouští jako fullscreen nebo v okně - protože pokud v okně tak nemůžeš přepočítávat rozlišení monitoru, ale velikost spuštěného okna. a možná ti bude ještě dělat problém i další věc - někdo může mít rozlišení 4k - tam je přepočet z fullHD v pohodě, ale pokud počítáš i s nastavením windows - tak např u mne mám nativní rozlišení 4k, používám ho ale vzhledem k tomu že to je na 15.6 '' lcd tak mám ve win nastaveno 150%

Nahlásit jako SPAM
IP: 2a00:1028:919d:32ba:3d37:d72e:7848:f571...–
Kubas1290
Stálý člen
18. 9. 2021   #4
-
0
-

#3 Seth
spouštím to na Full screen, ale s tím poměrem stran si nejsem jistý jestli to bude ok, ale tak beru, že většina používá 16:9

Nahlásit jako SPAM
IP: 62.141.28.–
Seth
~ Anonymní uživatel
6 příspěvků
18. 9. 2021   #5
-
0
-

#4 Kubas129
oki, fullscreen
a s monitory/lcd na ntb - máš pravdu že dnes je většina v poměru 16:9 nebo 16:10, ale z vlastní zkušenosti vím že někde musí být právě kvůli - hlavně starším app - monitory s poměrem 4:3 a taky existuje hromada lidí kteří mají sic nové pc které zvláda 4k i lepší ale používají např monitor s rozlišením 1280x1024 nebo třeba 1680x1050 jen z důvodu že funguje a jde připojit tak nepořizují nový a nebo ho použijí jako druhý pokud to jeho možnosti připojení povolí.
jinak resize byl problém - ještě když jsem dělal ve visual basic 6 (cca 25 roků zpátky, ale bohužel v něm musím ještě i dnes něco opravovat) tak se to řešilo přes modul který vše přepočítal - bohužel problém byl v tom že se to bralo přes Win API a i tak nějako fungovalo ale mělo to mouchy - protože přepočty nebyly nikdy přesné a ještě zaokrouhluješ. a k tomu musíš případně myslet na zvětšení písma. u vb.net - u wpf to je jednoduché tam použiješ grid, u win forms použiješ tablelayoutpanel a controls nastavíš dock na fill a nebo jim nastavíš margin (ale zase schází zvětšení fontu), u c# to bude podobné - ale psals v jiných threadech že to děláš v nějakém enginu :-( 

Nahlásit jako SPAM
IP: 2a00:1028:919d:32ba:3d37:d72e:7848:f571...–
BDS+3
Věrný člen
18. 9. 2021   #6
-
0
-

#3 Seth
Aby se vyřešil problém poměru monitoru ku poměru zobrazení hry, doporučuji počítat přepočet z menší strany vzhledem k poměru a nevyužitou část monitoru vyplnit třeba černou barvou. Tak nedojde ke zkreslení objektů (ze čtverců nebudou obdélníky apd.).

Nahlásit jako SPAM
IP: 185.69.68.–
W11 :)
JerryM0
Věrný člen
19. 9. 2021   #7
-
+1
-
Zajímavé

ten tvuj výpočet se počítá z poměru stran ve Frustu

https://en.wikipedia.org/wiki/Viewing_frustum

https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/projection-matrices-what-you-need-to-know-first

chápeš jo ? pak už se žádná další korekce nedělá ... tim to jenom zprzníš ... a to co si napsal je stejně blbě ...obraz se ořezává... nemužeš 16:9 přemrdat na 4:3 ... tim se ti jedna strana nesymetricky roztáhne nebo smrskne... možná by sis měl něco přečíst o základech počítačový grafiky

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:f0bf:33f2:65b5:d57d...–
peter
~ Anonymní uživatel
4016 příspěvků
20. 9. 2021   #8
-
+1
-
Zajímavé

U nas mame v praci asi 200 monitoru s rozlisenim 1440 x 900. Dalsich 30, kde je to kazdy jinak, i 16:9
Pak asi 200 notebooku, kde to ma kazdy jinak.

16:9 = 1.777
4:3 = 1.333
1400/900 = 1.6

Kde teda beres tu jistotu, ze ma vetsina u nas v praci 16:9? :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:3cfa:a195:5073:18dd...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý