Előismeret
Mint már említettük, a tárgyak színe a fény és az anyag kölcsönhatásából áll elő. A fényekkel megismerkedtünk az előző részben, ahol érintőlegesen már találkoztunk az anyagokkal. Most részletesebben tárgyaljuk ezek közül az alábbiakat.
- Material ősosztály és alap anyagjellemző (MeshBasicMaterial).
- Lambert (diffúz) megvilágítás képpontonkénti (per-fragment) árnyalással (MeshLambertMaterial).
- Phong (diffúz + spekuláris) megvilágítás képpontonkénti (per-fragment) Phong árnyalással (MeshPhongMaterial).
- Fizikai alapú leképezésre épülő, fémes-érdes megvilágítás számítás képpontonkénti árnyalással (MeshStandardMaterial).
A megértést segíti, ha tisztában vagyunk a megvilágítási modell és árnyalás fogalmakkal. Ezeket az oldal végén, a kiegészítő anyagrészben mutatjuk be.
Fontos!
A MeshLambertMaterial működése alapvetően megváltozott az r144 kiadásban! A korábbi csúcspont-alapú (per-vertex) árnyalásról képpontonkénti (per-fragment) árnyalásra írták át! A korábbi működésnek megfelelő anyag osztályt elérhetjük a példák között található MeshGouraudMaterial.js fájlban. Ha használni szeretnénk, a fájlt külön importálni kell a programunkba. Erre a 03_02_ThreeJsMaterialTester.html programban találhatunk példát. Akkor érdemes ezt a régi megközelítést használnuk, ha a megvilágítási számítások miatt nagyon lelassulna a programunk futása, ugyanis a per-vertex megközelítés sokkal kevesebb számítást igényel, és szerencsés esetben nem látunk nagy különbséget a MeshLambertMaterial-hoz képest.
A Three.js Material oszálynevekben keveredik az árnyalási algoritmus és a megvilágítási algoritmus megjelenése. A Gouraud árnyalás, a Lambert megvilágítási egyenlet, a Phong pedig mindkettő. MeshLambertGouraudMaterial (vagy MeshLambertPerVertexMaterial), MeshLambertPhongMaterial (vagy MeshLambertPerFragmentMaterial) és MeshPhongPhongMaterial (vagy MeshPhongPerFragmentMaterial) egyértelműbb megnevezések lennének.