English Welcome Kecy Programování 3D - Engine Guestbook Odkazy Downloady O autorovi Napiš mi Mailform
box_cz 3D - Engine 01 - začínáme box_cz

Ahoj ! Tak tohle je první díl našeho dlouhého seriálu o 3D Enginech. Předem bych rád vyjasnil několik věcí. Zdrojáky budou v Céčku tak aby šly spustit pokud možno všude, jediným omezením bude asi modul, spolupracující s DirectX, který pod DOSem nebo Linuxem nepoběží. Takoví lidé si musí napsat něco svého, nebo něco stáhnout z internetu - však se toho všude válí :-)... Možná že některé teď zklamalo co jsem napsal - buď píšou v Pasquilu, nebo čekali že se bude psát supernamakanej engine kterej poběží jen na GeForce 4. To ne ! Skoro všechno, co tady bude je jen software rendering, až ke konci pár věcí pod OpenGL, ale nemyslete si že se vám to při psaní enginu pro GF4 nebo jinou kartu nebude hodit. Tak ! Pomalu jdeme na věc. V tomhle díle ještě nenapíšeme žádný program, jen si ujasníme co takový 3D Engine je. 3D Engine je něco co dokáže převést trojrozměrný lineární geometrické útvary na obraz. Co se těmi útvary v praxi myslí ? To asi ví každý druhý pařan - polygony. Přesněji řečeno "svět". Svět je složen z objektů, světel a podobných nesmyslů. My se zatím zaměříme jen na ty objekty. Každý objekt je složený z vrcholů (vertexů) a polygonů. Každý polygon je definován třemi vertexy, které může mít společné s jinými polygony. Ono se mu vlastně říká face, pokud má jen tři vrcholy, ale polygon je trochu známější. Objekt je potom graficky vlastně reprezentován jen facy, které se hezky osvětlí, práskne se na ně textura (obrázek) a je tu 3D Engine ! Tak jednoduché to zase není. Jak už jsem říkal svět je lineární prostor, ale my ho jako lineární moc nevnímáme (to co je v dálce je menší než to co je blízko atd.) a tak se musí provádět různé kejkle aby to tak vypadalo. Nejjednodušší a také nejčastěji používaný systém jsou matice. Maticí se myslí normální matematická matice, to si vysvětlíme příště. Teď jen tak na okraj. Každý objekt a kamera má svoji matici, která určuje jeho pozici a rotaci podle vlastních os objektu. Tak se vezme matice kamery, matice objektu a vertexy se tzv. transformují z objectspace (nebo worldspace) do cameraspace. Potom se ještě udělá perspektivní korekce a můžou se kreslit polygony. Ale právě tady je trochu háček - polygonů nesmí být moc. Jestli jste hráli třeba Quaka, tak jste si určitě všimli že některé objekty byly hranaté, to je právě problém rychlosti. Nyní to částečně řeší karty pomocí Hardwarové transformace a osvětlování (HW T&L) ale od doby Q1 vzniklo už pěkná řada metod jak určit co nejpřesněji které polygony budou vidět. Kdybyste kreslili třeba otáčející se krychli, tak vlastně nemusíte kreslit polygony, které jsou k vám odvráceny (jsou na druhé straně krychle) - tahle metoda je asi nejjednodušší a jmenuje se Backface culling. Funguje na principu rovnice roviny. Jo, ještě jsem to asi neřekl. 3D Engine jsou samá matematika (ze začátku) a pokud něčemu nerozumíte tak pište (pro každou kapitolu bude samostatná stránka otázek a odpovědí) a nebo si pořiďte středoškolskou učebnici matiky, tam to je všechno hezky dopodrobna vysvětlené. Tuhle metodu budeme používat od prvního engine tak se na to zatím můžete kouknout sami. Nno, zdá se mi že už bylo dost kecání tak nashle příště !

zpět


Valid HTML 4.01!
Valid HTML 4.01