Skip navigation

További felszínháló tudnivalók

Gyorsítótárazás

A Three.js a gyorsabb modellezéshez a felszínháló adatokat gyorsítótárazza, a grafikus kártyára küldi. Emiatt a "menet közben" a csúcspontokat, színeket, normálvektorokat érintő változtatások nem jelennek meg a modellben. Ha ilyen történik, azt jelezni kell a rendszernek a geometria objektum verticesNeedUpdate(), colorsNeedUpdate(), normalsNeedUpdate() függvényhívásaival!

Ha a csúcspontok darabszáma vagy a lapok felépítése változik, akkor érdemes új felszínháló objektumot létrehozni!

Feladat: Kockamodell készítése

Írjunk programot, amely egy kocka modellt állít elő!

  • Először a kocka nyolc sarokpontját, mint pontot modellezük!
  • Módosítsuk a programot a kocka éleinek vonalakból történő modellezésére! Próbáljunk minél kevesebb csúcspont megadással célt érni!

Térbeli felszínháló feladat

Mivel a felszínt definiáló háromszögeket tetszőlegesen helyezhetjük el, nincs akadálya térbeli felszínek közelítésének sem.

Feladat

  • Készítsünk nyitott tetejű doboz! Vagyis a kocka hat határoló lapja közül csak ötöt kell modelleznünk, a 2, 7, 3 és a 2, 6, 7 csúcspontok által megadott háromszögeket nem.
  • Figyeljünk a hátlapok megjelenítésére is, mert a tetején keresztül belelátunk a dobozba, így azokat is modellezni kell, valamint a normálvektorok megfelelő beállítására!

Kiindulás a nyitott tetejű doboz megvalósításához

  • A nyitott tetejű doboz modellezéséhez használhatjuk a 04_05_ThreeJsOwnBoxSkeleton.html kiindulási programot!
  • Célszerű először egy lapra felrajzolni a kockát, és megszámozni a csúcsait! (Lásd lentebb az ábrát.)
  • Figyeljük meg, hogy minden számozott csúcspont kettő (2, 3, 6 és 7 indexűek) vagy három (0, 1, 4 és 5 indexűek) különböző síkon elhelyezkedő síkidom létrehozásában is szerepet játszik. Az indexelt csúcspont megadást így érdemben nem használhatjuk, mivel a síkok között túl nagy a bezárt szög, átlagolással nem kapunk jó eredményt. Így 20 darab csúcspontra (pozíció és hozzá tartozó normálvektor) megadásra van szükség. (8 térbeli pozíció, mindegyik kettő vagy három irányú normálvektorral: (4 x 2) + (4 x 3) = 20.)

Az ábrán a 6-os és 1-es sorszámú sarokra láthatjuk a kettő, illetve a három eltérő normálvektor irányt, ami miatt kettő és három csúcspont definícióra van szükség az adott pozícióban.