Skip navigation

Vonalszakasz geometria és anyagok

Vonalcsík objektum felépítése

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!