Vonalszakasz geometria és anyagok
Különálló vonalszakaszok felépítése
Vonal geometria
A ponthalmazhoz hasonlóan itt is egy új geometriát hozunk létre, amelyhez térbeli pontokat adunk hozzá. Opcionálisan minden pont kaphat önálló színt is, mint a ponthalmaznál. A térbeli pontokat egyenes szakaszokkal összekötve rajzolja majd ki a rendszer. A pontoknál látotton túl itt index tömb megadására is lehetőség van, ha csúcspontokat újra fel szeretnénk használni más egyenes szakaszok definiálásához. Az indexeléssel a háromszögek kapcsán fogunk részletesebben foglalkozni.
let vertices = [];
vertices.push(
1, 0, 0, // V0
4, 6, 5, // V1
7, 3, 3, // V2
10, 7, -3 // V3
);
let vertexColors = [];
vertexColors.push( // float RGB
1.0, 1.0, 0.0,
1.0, 1.0, 0.0,
1.0, 0.0, 0.0,
0.0, 0.0, 1.0
);
// Geometria + attribútum beállítások
let geometry = new THREE.BufferGeometry();
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
geometry.setAttribute( 'color', new THREE.Float32BufferAttribute( vertexColors, 3 ) );
Vonal anyagok
A vonalhoz kétféle anyag közül választhatunk. A LineBasicMaterial folytonos vonalat, a LineDashedMaterial szaggatott megjelenítést biztosít. Mindkettő konstruktorának egy paraméterhalmazt adhatunk át, amelyek utólagosan az attribútum nevének segítségével is módosíthatók.
LineBasicMaterial attribútumok:
color | Vonalszakaszok (globális) színe. |
linewidth | Vonalvastagság. Alapérték 1.0. |
linecap | Vonalvégek megjelenése. Lehet butt, round (alapértelmezés), vagy square. |
linejoin | Vonalak csatlakozásának megjelenése. Lehet round (alapértelmezés), bevel, vagy mitter. |
vertexColors |
A Three.js r114 verzió óta logikai érték. Alapértéke false (minden pont az anyag color attribútum színét kapja), true esetén minden ponthoz külön színt rendelhetünk. Korábbi Three.js verziókban THREE.NoColors (alapértelmezés, minden pont a color attribútum színét kapja), THREE.FaceColors, és THREE.VertexColors értékeket vehetett fel. Ha a vonalszínek nem jól jelennek meg, állítsunk be maximális intenzitású fehér (0xffffff) színt a color attribútumnak! (Az anyag szín és a pontonkénti szín elegyítésre kerül egymással.) |
fog | Ködhatás befolyásolja-e a vonalpontok színét? (A távolság növekedésével halványuljon-e a szín?) |
LineDashedMaterial attribútumok:
color | Vonalszakaszok (globális) színe. |
linewidth | Vonalvastagság. Alapérték 1. Windows rendszer alatt más érték hatása nem is érvényesül! |
scale | A szaggatás skálája. Alapértéke 1. |
dashSize | A szaggatás mérete. Alapértéke 3. |
gapSize | A kihagyás mérete. Alapértéke 1. |
vertexColors | Mint fent. |
fog | Mint fent. |
A vonalszaggatás helyes működéséhez létrehozása után meg kell hívni a vonal objektum computeLineDistances() függvényét is!
Példa
let material = new THREE.LineBasicMaterial( { color: 0xffff00 } );
Dokumentáció
Vonalcsík
A geometriánál megadott pontokat köti össze összefüggő vonalszakaszokkal, tehát N-1 darab szakaszt kapunk, ahol N a pontok száma. Meg kell adnunk a vonal anyagát is.
let line = new THREE.Line( geometry, material );
scene.add( line );
Különálló vonalszakaszok
A geometria pontjai felváltva a vonalszakaszok kezdő- és végpontját jelentik, vagyis N/2 darab szakaszt kapunk, ahol N a pontok száma. Páros számú pontot kell megadnunk a geometriánál.
let line = new THREE.LineSegments( geometry, material );
scene.add( line );
Példaprogram
Négy pont által definiált vonal geometria (04_03_ThreeJsLine). A színtérhez adunk egy AxesHelper objektumot is, ami szintén vonalszakaszokból épül fel. A kamera az egér segítségével körülforgatható.
Teendők:
- Próbáljuk ki a különálló vonalszakaszok modellezését is!
- Módosítsunk a vonal anyag paraméterein!
- Figyeljük meg és magyarázzuk meg a vonalak színezését!