Obsah:

3D prohlížeč: 4 kroky
3D prohlížeč: 4 kroky

Video: 3D prohlížeč: 4 kroky

Video: 3D prohlížeč: 4 kroky
Video: Elegoo Neptune 4 Pro - Cura 5.4 a český jazyk 2024, Listopad
Anonim
3D prohlížeč
3D prohlížeč

Ahoj! Abych uspokojil svůj zájem o programování a doufám, že pomůže uspokojit ten váš, rád bych vám ukázal 3D prohlížeč, který jsem zakódoval v javascriptu. Pokud byste chtěli dále porozumět 3D hrám nebo si dokonce vytvořit vlastní 3D hru, tento prototyp 3D prohlížeče je pro vás ideální.

Krok 1: Teorie

Teorie
Teorie

Abyste porozuměli teorii tohoto 3D prohlížeče, můžete jednoduše prozkoumat způsob, jakým se díváte na své okolí (pomáhá mít pouze jeden významný zdroj světla). Všimněte si, že:

  1. Předměty, které jsou od vás dále, zabírají menší část vašeho zorného pole.
  2. Objekty, které jsou dále od zdroje světla, vypadají tmavší.
  3. Jak se povrchy stávají více rovnoběžnými (méně kolmými) se zdrojem světla, vypadají tmavší.

Rozhodl jsem se reprezentovat zorné pole se spoustou čar pocházejících z jednoho bodu (analogicky s oční bulvou). Stejně jako kulička s hroty musí být čáry rovnoměrně rozmístěny, aby byla zajištěna stejná zastoupení každé části zorného pole. Na výše uvedeném obrázku si všimněte, jak se čáry vycházející z hrotové koule více rozestupují, když se pohybují dále od středu koule. To pomáhá vizualizovat implementaci pozorování 1 v programu, protože hustota čar klesá, když se objekty pohybují dále od středového bodu.

Čáry jsou základní jednotkou vidění v programu a každý z nich je mapován na pixel na displeji. Když čára protíná objekt, jeho odpovídající pixel je zbarven na základě jeho vzdálenosti od zdroje světla a jeho úhlu od zdroje světla.

Krok 2: Implementační teorie

Implementační teorie
Implementační teorie

Pro zjednodušení programu je světelný zdroj stejný jako středový bod (oční bulva: bod, ze kterého je zobrazena mapa a odkud pocházejí čáry). Analogicky k držení světla přímo u vašeho obličeje to eliminuje stíny a umožňuje jasnější výpočet jasu každého pixelu.

Program také používá sférické souřadnice se středovým bodem vidění na počátku. To umožňuje snadné generování čar (každá s jedinečnou theta: horizontální úhel a phi: svislý úhel) a poskytuje základ pro výpočty. Řádky se stejnou theta jsou mapovány na pixely ve stejném řádku. V každé řadě pixelů se zvětší phis odpovídajících úhlů.

Pro zjednodušení matematiky je 3D mapa složena z rovin se společnou proměnnou (společné x, y nebo z), zatímco další dvě neobvyklé proměnné jsou uzavřeny v určitém rozsahu, čímž je definice každé roviny dokončena.

Chcete -li se rozhlížet myší, zohledňují rovnice programu vertikální a horizontální rotaci během převodu mezi sférickými a xyz souřadnicovými systémy. To má za následek předběžné otáčení na sadě viditelných linií „spike ball“.

Krok 3: Matematika

Následující rovnice umožňují programu určit, které přímky protínají každý objekt, a informace o každé křižovatce. Tyto rovnice jsem odvodil ze základních rovnic sférických souřadnic a rovnic 2D rotace:

r = vzdálenost, t = theta (horizontální úhel), p = phi (vertikální úhel), A = rotace kolem osy Y (vertikální rotace), B = rotace kolem osy Z (horizontální rotace)

Kx = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*cos (B) -sin (p)*sin (t)*sin (B)

Ky = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*sin (B)+sin (p)*sin (t)*cos (B)

Kz = -sin (p)*cos (t)*sin (A)+cos (p)*cos (A)

x = r*Kx

y = r*Ky

z = r*Kz

r^2 = x^2+y^2+z^2

osvětlení = Klight/r*(Kx nebo Ky nebo Kz)

p = arccos ((x*sin (A)*cos (B)+y*sin (A)*sin (B)+z*cos (A))/r)

t = arccos ((x*cos (B)+y*sin (B) -p*sin (A)*cos (p))/(r*cos (A)*sin (p)))

Krok 4: Program

Program
Program

Doufám, že vám tento prototyp 3D prohlížeče pomohl porozumět fungování 3D virtuálních realit. S trochou zdokonalování a kódování má tento divák určitě potenciál využít při vývoji 3D her.

Doporučuje: