Transformace souřadnic 3D modelů

Stránky aktualizovány :
Datum vytvoření stránky :

hmota

Nejdřív ze všeho

Ve hrách můžete často vidět 3D obrázky na televizních obrazovkách a displejích, ale jak zobrazit objekty, které existují ve 3D prostoru, jako jsou postavy a budovy, které se pohybují na obrazovce, na 2D obrazovce?

Ve 2D hrách jsou jako hodnoty souřadnic pouze dvourozměrné prvky "X a Y" a displej je také 2D, takže pokud nakreslíte objekt zadáním polohy souřadnic X a Y, intuitivně pochopíte, jak bude nakreslen na které pozici.

Ve 3D to však není tak snadné. Jak název napovídá, 3D je "3rozměrné" a má tři souřadnicové informace: "X, Y a Z". Protože se souřadnice liší od zobrazení, které je 2D, není možné nakreslit objekt tak, jak je.

Pak je třeba "převést trojrozměrnou informaci na dvourozměrnou informaci". To se běžně označuje jako "transformace souřadnic". Mějte na paměti, že tato transformace souřadnic je pro 3D programování nezbytná.

Existuje několik typů transformací souřadnic pro převod 3D do 2D, ale existují tři hlavní typy transformací souřadnic, které programátoři zpracovávají: "transformace světa", "transformace pohledu" a "transformace projekce". Zde si vysvětlíme vše, co souvisí s transformací souřadnic.

Levotočivé a pravotočivé souřadnicové systémy

Ve 3D existují dva souřadnicové systémy, "levotočivý souřadnicový systém" a "pravý souřadnicový systém", které mají pro každou souřadnici jinou orientaci, jak je znázorněno na obrázku níže.

Direct3D primárně používal levoruký souřadnicový systém, ale existují i funkce pro výpočty pro pravotočivé souřadnicové systémy. Formát XNA ale poskytuje výpočtové metody pouze pro pravotočivé souřadnicové systémy. Zdá se, že to je v souladu s faktem, že jiné aplikace často používají pravotočivé souřadnicové systémy.

Všechny tipy XNA na této stránce používají souřadnicový systém pro pravou ruku.

Lokální souřadnicový systém (souřadnicový systém modelu)

Každý model má souřadnicový systém vycentrovaný na počátek. Při vytváření modelu pomocí modelovacího softwaru si myslím, že je snazší to pochopit, když si představíte, že ho vytváříte s počátkem jako středem.

Globální souřadnicový systém

Globální souřadnicový systém umožňuje umístit model kamkoli. Pokud v této transformaci světa neuděláte nic, model bude umístěn v počátku stejným způsobem jako místní souřadnice. Umístění neznamená jen posun od počátku, ale také otočení a změnu měřítka.

Zobrazit souřadnicový systém

Jakmile umístíte model do světových souřadnic, potřebujete informace o tom, kam se díváte a kam se díváte na 3D prostor. Tomu říkáme "transformace zobrazení". Transformace pohledu jsou obecně často reprezentovány jako kamery.

Parametry požadované pro tento převod jsou "poloha kamery", "bod zájmu kamery" a "směr kamery nahoru". Orientace kamery je určena těmito třemi parametry. Na obrázku níže je kamera z pohledu třetí strany.

Obrázek níže je ve skutečnosti viděn z pohledu kamery s uspořádáním znázorněným na obrázku výše (v tomto bodě jsme ještě nepřevedli souřadnice na obrazovku, takže se jedná pouze o obrázek).

V předchozím vysvětlení se zdá, že kamera je umístěna a souřadnice jsou transformovány, ale ve skutečném výpočtu jsou světové souřadnice převedeny podle polohy a orientace kamery. Počátek je tedy poloha kamery, jak je znázorněno na obrázku níže.

Projektivní souřadnicový systém

Jakmile se rozhodnete, z jaké pozice se na 3D prostor budete dívat, dalším krokem je zpracování zobrazení "malých objektů, které jsou daleko" a "velkých věcí, které jsou poblíž". Tomu se říká projektivní transformace. Existují dvě metody transformace projekce, "perspektivní projekce" a "ortografická projekce", ale běžně používaný obraz "perspektivní projekce" je následující.

Perspektivní promítání používá následující parametry: Úhel pohledu, Poměr stran, Poloha předního klipu a Poloha zadního klipu. Oblast označená jako "komolý kužel" na obrázku výše se konečně objeví na obrazovce.

"Úhel pohledu" určuje rozsah pohledu viditelný z kamery. Zmenšením úhlu se úhel přiblíží, zvětšením se oddálí. Úhel pohledu bude vertikální hodnota komolého kužele.

Poměr stran se používá k určení vodorovného úhlu pohledu, zatímco úhel pohledu je svislý úhel. Horizontální úhel je obvykle určen "pozorovacím úhlem × poměrem stran" a poměr stran je v podstatě hodnota "šířky ÷ výšky" obrazovky, kterou se pokoušíte zobrazit. Pokud tuto hodnotu změníte, zobrazený 3D objekt se bude jevit jako roztažený vodorovně nebo svisle.

Hodnoty Poloha předního oříznutí a Zadní poloha oříznutí určují, zda je objekt zobrazen v předním nebo zadním rozsahu. Vzhledem k povaze počítače není možné zobrazit až do nekonečna, proto si nastavíme limit. Tato hodnota má vliv i na přesnost Z-bufferu, proto se nedoporučuje vkládat jej do kreslicí plochy mimo rozsah, který nemusí být zobrazen.

Perspektivně transformovaný objekt se převede na prostor podobný tomu níže. Objekty, které byly blízko kamery, se přiblíží a objekty, které byly daleko, se zmenší.

To je znázorněno na snadno srozumitelném diagramu níže.

Pokud se na to podíváte skutečně z pohledu kamery, vypadá to jako níže.

Další metodou projektivní transformace je ortografická projekce, která promítá viditelnou oblast, jako je ta níže. Protože šířka a výška jsou konstantní bez ohledu na hloubku, velikost objektu se s hloubkou nemění.

Souřadnicový systém obrazovky

Po transformaci projekce se převede na souřadnice skutečné obrazovky. I když se jedná o obrazovku, poloha a rozsah displeje se mění v závislosti na nastavení výřezu nastaveném na zařízení. V případě her jsou však klientské souřadnice okna často výřezem tak, jak jsou, takže si nemyslím, že byste si měli příliš dělat starosti.

Souřadnice projekční plochy (0, 0) se převedou ze souřadnic promítání (-1, 1, z). Podobně se ze souřadnic projekce (1, -1 ,z) převádí souřadnice obrazovky (šířka, výška).