Adsense Banner

Paperplane

Papervision3D - L'aereo di carta (paperplane)

logoPV3DNell'introduzione di questo capitolo abbiamo visto che l'aereo di carta è stato costruito all'avvio del progetto Papervision3D a scopo di test. Ciò che rende l'aereo di carta un oggetto così adeguato ai test è la sua specifica forma, e cioè il fatto che si può sempre vedere in quale direzione stia puntando e quale sia la suadirezione di rotazione. Questo può essere molto utile quando si sta costruendo un programma in cui gli oggetti 3D sono in movimento e in rotazione.


Supponiamo di avere una sfera nella scena con un materiale wireframe e supponiamo si voglia che la sfera ruoti di 270 gradi. Quando la rotazione è completata sarebbe difficile dire se la parte anteriore della sfera è allineata alla direzione che ci si aspettava. Sostituendo temporaneamente la sfera con un paperplane, probabilmente si avrebbe un'idea molto più chiara di ciò che sta accadendo all'l'oggetto, siccome si può vedere costantemente la posizione e la rotazione dell'aereoplano di carta.
Si dovrà importare la classe paperplane al fine di utilizzarla.

import org.papervision3d.objects.primitives.PaperPlane;

Il costruttore della classe paperplane accetta due parametri, materiale e dimensioni.
Nelle righe seguenti abbiamo un'istanza di un aeroplano di carta con le sue dimensioni in scala di un fattore  tre, che poi viene aggiunta alla scena:

var paperPlane:PaperPlane = new PaperPlane(null,3);
scene.addChild(paperPlane);

Il costruttore aereo di carta non ha né larghezza, né profondità, né altezza come parametri disponibili, né sono i loro valori di default elencati nella documentazione. Ma cosa succede se fosse necessario sapere questi valori, per esempio perché si vuole ridimensionare l'oggetto ad una dimensione che si adatti alle vostre esigenze? Ci sono più situazioni in cui non sai o non può esserci un rapido accesso alle dimensioni degli oggetti 3D, per esempio perché l'avete impostati in modo casuale.

Ottenere le dimensioni di un oggetto 3D

Il metodo Vertices3DboundingBox() calcola la delimitazione di un box 3D e ci permette di ottenere la larghezza, profondità e altezza di qualsiasi oggetto 3D che eredita da Vertices3D, e funziona per tutti gli oggetti incorporati in Papervision3D che è possibile visualizzare sullo schermo. Un riquadro di delimitazione è la più piccola scatola che possa racchiude un oggetto in essa inserito. l'illustrazione seguente mostra un aereo di carta con una rappresentazione visiva del suo rettangolo di selezione:
paperplaneSi ottiene la dimensione del riquadro di delimitazione di un oggetto come segue:

trace (paperPlane.boundingBox () dimensioni.);

La proprietà dimensioni restituisce tre numeri che rappresentano la differenza tra il massimo e il minimo vertice dell'oggetto su ciascun asse. La chiamata trace precedente visualizzerà questo:
x: 100  y: 33.33 z: 200
L'output mostra la dimensione in x, y, z e direzione. L'aereo di carta apparentemente ha una larghezza di default di 100, una altezza di default del 33,33, e un profondità di default di 200. È inoltre possibile ottenere la dimensione per ogni dimensione. la prossimo chiamata traccia uscite solo la larghezza:

trace (paperPlane.boundingBox () size.x.);

Quindi, se volete un aeroplano di carta della larghezza di 200 unità, si dovrebbe scalarlo di un fattore 2. Mentre l'aereo di carta eredita da DisplayObject3D, è anche possibile utilizzare scaleX e scaleY, per scalarlo nella direzione x e y in modo indipendente.


Filippo Porcari
Author: Filippo PorcariWebsite: http://filippo.porcari.oranjuice.org/Email: Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo.
designer freelance
Sono un graphic designer e mi occupo di pubblicità. Da più di 10 anni dedico le mie energie alla realizzazioni d'immagine aziendale e comunicazione visiva con un'attenzione alle nuove tecnologie del web. Da qualche anno ho scoperto il software open source e mi sono dedicato alla sua introduzione nel mio workflow produttivo ottenendo ottimi risultati.