English Welcome Kecy Programování 3D - Engine Guestbook Odkazy Downloady O autorovi Napiš mi Mailform |
3D - Engine 01 - začínáme
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ě !
|