Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

I Vertici

siamo i vertici per modificare un modello 3D esistente o per crearne uno nuovo
siamo i vertici per modificare un modello 3D esistente o per crearne uno nuovo
Link copiato negli appunti

Fino ad ora abbiamo visto la possibilità di creare primitive e importare modelli, ma possiamo introdurre un nuovo sistema per generare i nostri solidi, un sistema che passa per la definizione di vertice come mattone dei nostri modelli.

Il Package org.papervision3d.core.geom.renderables ci mette a disposizione una serie di classi per la manipolazione dei vertici, linee e facce di una struttura 3D.

Vertex3D

Creiamo un nuovo oggetto vertice impostando le coordinate x,y e z. Un oggetto vertice può essere molto utile, sia per memorizzare un punto all'interno di un DisplayObject3D più facilmente rintracciabile, sia per creare o manipolare oggetti 3D.

Costruttore di Vertex3D

Vertex3D(x:Number, y:Number, z:Number)

Nel caso in cui abbiamo importato un modello dall'esterno, abbiamo la possibilità di modificare i singoli vertici. Possiamo pensare che l'oggetto 3D abbia in sé una collezione di vertici e scorrere i vari punti in un ciclo:

for each (var vertex:Vertex3D in solido.geometry.vertices) 
{
	trace (vertex.x+" "+vertex.y+" "+vertex.z);
}

I vertici di un solido non sono istanze di primo grado, ma vengono richiamate dalla classe geometry.

La classe Vertex3D ci mette a disposizione alcuni interessanti metodi tra cui clone(), getPosition() e calculateNormal().

Line3D

Una volta definto un vertice possiamo utilizzarlo per creare strutture ed oggetti direttamente in ActionScript. Vediamo come definire una semplice linea grazie alla classe Line3D.

Costruttore di Line3D

public function Line3D(instance:Lines3D, material:LineMaterial, size:Number, 
                       vertex0:Vertex3D, vertex1:Vertex3D)

Triangle3D

Questa classe è molto interessante perché ci consente di creare una superficie minimale, una "faccia" (o sarebbe meglio dire sfaccettatura) costituita da un triangolo.

Costruttore di Triangle3D

public function Triangle3D(do3dInstance:DisplayObject3D, vertices:Array, 
                           material:MaterialObject3D = null , uv:Array = null)

Esempio

Le tre classi si comportano in modo simile per cui faremo un solo esempio con Line3D.

Per prima cosa creiamo un nuovo DisplayObject3D che utilizzeremo come contenitore generico.

var Container = new DisplayObject3D("Contenitore Generico");

Successivamente dobbiamo impostare i due vertici che comporranno i punti di inizio e di fine del segmento

var v0:Vertex3D = new Vertex3D(-30, 0,0);
var v1:Vertex3D = new Vertex3D(300,0,0);

Ora decidiamo il colore della nostra linea e creiamo un istanza della classe Lines3D

var lm:LineMaterial = new LineMaterial(0x8000ff,1); 
var lines3D:Lines3D = new Lines3D(lm,"Linea");

Infine assegniamo i due vertici così da disegnare il segmento vero e proprio e lo aggiungiamo al nostro contenitore

lines3D.addNewLine(1,v0.x,v0.y,v0.z,v1.x,v1.y,v1.z); 
Container.addChild(lines3D); 

Ovviamente sia la linea che il contenitore possono essere modificati cambiando le solite proprietà come ad esempio

lines3D.rotationY = 45; 
lines3D.rotationZ = 125;  


Ti consigliamo anche