Está en la página 1de 21

Shape3D

Java 3D
Java 3D Appearance

crear Geometry

GEOMETRIAS
Prof. Andrés E. Castillo R.
Geometry Recuerde:
j
Existen tres formas de crear objetos
visibles.
• Preconstruidas.
• Creando nuestras geometrias.
• Utilizando un cargador.
g

• Geometry es un nodo componente.
• Permite crear nuestra propias Geometrías
Permite crear nuestra propias Geometrías.
• Junto con Appearance, caracteriza una Shape3D.

Prof. Andrés E. Castillo R.
class Geometry

Geometry es una clase abstracta


Geometry es

Prof. Andrés E. Castillo R.
La descendencia de Geometry

Geometry genera una descendencia directa de 4 tipos


de clases:
de clases:
• Compressed Geometry
• GeometryArray
• Raster Shape3D
• Text3D

Geometry
En esta presentación nuestro interés
se concentra en GeometryArray
Prof. Andrés E. Castillo R.
GeometryArray

GeometryArray es la cabeza de una fami‐


lia de geometrías definidas por vertices.

Algunas geometrias reuti‐


lizan los vertices, son las
del tipo indexado.

Prof. Andrés E. Castillo R.
Panorámica del árbol de descendencia de GeometryArray

El árbol de GeometryArray

G
GeometryArray
t A es una clase
l abstracta.
bt t

Prof. Andrés E. Castillo R.
Subclases de GeometryArray y los puntos, lineas y poligonos rellenos.
EExisten
i subclases
b l d Geometry
de G array, para crear puntos, líneas
lí y poligonos
li en ell espa‐
cio virtual.

La clase abstracta GeometryArray, define métodos, para definir


las coordenadas de los puntos vertices, asi como el color (méto‐
dos del tipo setCoordinates, setColor) y para obtener informa‐
ción de los vertices (getColor,
(getColor getTextures,
getTextures etc.).
etc )
Los elementos descendientes de la clase GeometryArray, aparte
de mantener arreglos
g para alojar
p j los componentes
p de los ver‐
tices, opcionalmente puede incluir arreglos,para incluir informa‐
ción del color de cada vertice, la normal a la superficie formada
por tres punto de un triangulo,
triangulo y las coordenadas de la textura.
textura
Se denomina arreglos de datos, a los arreglos mencionados
arriba.

Prof. Andrés E. Castillo R.
3 pasos para crear un objeto GeometryArray

Los pasos para crear un objeto instancia de una clase que


descienda de GeometryArray:

• Se construye un objeto del tipo GeometryArray, este objeto


esta vacio de coordenadas.
• Se rellena el objeto con datos, (array de puntos, uno por cada
cualidad elegida: coordenadas de posición, color, normales y
texturas).
)
• Asociar (referenciar) este objeto (de clases descendientes de
GeometryArray) a un Shape3D.
Shape3D
GeometryARray Shape3D

Recuerde: Con el descendiente apropiado de GeometryArray, podemos crear


puntos, lineas , poligonos, en el espacio virtual (VirtualUniverse).
Prof. Andrés E. Castillo R.
Como se le asocia una geometria a Shape3D.

Shape3D tiene
p un método denominado setGeometry.
y

Se crea un Shape3D vacio: Shape3D forma = new Shape3D();


Se determina el numero de vertices y el formato de la geometria.
Se crea una geometria vacia:
QuadArray ga = new QuadArray(nroVertices, formatoVertices);
S
Se rellena
ll l
la geometria,
i
Se asocia la geometria al Shape3D:  forma.setGeometry(ga);

Recuerde:  Este es uno de los tres casos, para crear Shape3D, este es el caso


de cuando se crea la goemetria.

Prof. Andrés E. Castillo R.
Paso 1
Construcción de objetos GeometryArray vacios
La construcción de un objeto GeometryArray requiere la determinación de 
dos cosas:
A la definición de los elemen
elemen‐
Numero de vértices que se requeriran. tos que requiere el vertice, se
le denomina, formato del ver‐
El tipo de datos que requerirá cada vertice:
tice.
• Coordenadas
d d de localización.
d l li ió
• Color.
• Superficie normal.
normal
• Coordenadas de textura.
Se debe
d b definir
d fi i un arreglo
l por cada
d cualidad,
lid d la
l cantidad
id d de
d arreglos,
l depen‐
d
derá del formato del vertice. Ejemplo: una geometria de 30 puntos, y se
definen Coordenadas de localización y color, se requeriran dos arreglos.

Prof. Andrés E. Castillo R.
Constructor de la clase GeometryArray
Solo existe un constructor para GeometryArray.
GeometryArray es una clase abstracta, sin embargo sus descendientes
heredan su método constructor.

public GeometryArray( int nroVertices, int formatoVertices) {}

El constructor crea entonces un elemento


l vacio,
i pero con un nú‐
ú
mero de vertices predeterminado y fomato predeterminado.
El fomato,
fomato es un valor entero,
entero que se forma por la combinación
boolean Or de hasta 5 elementos, que representan las
coordenadas, el color, la normal a la superficie y la textura.
De las anteriores, solo es obligatorio, la inclusión de las coorde‐
nadas.

Prof. Andrés E. Castillo R.
Creación del formato del vertice.
Para especificar
ifi el formato
lf d l
del vertice, GeometryArray
i G di
dispone d
de una
serie de constantes:
• COORDINATES
Es obligatorio, e indica que el arreglo del vertice, contiene
coordenadas.
• NORMALS
Especifica que el arreglo de vertice contiene normales a la superficie.
• COLOR_3
Especifica
p que los vertices tienen colores sin transparencia.
q p
• COLOR_4
Especifica vertices coloreados con transparencia.
• TEXTURE_COORDINATE_2
TEXTURE COORDINATE 2
Especifica que el arreglo de vertices contiene coordenadas de textura
2D.
• TEXTURE_COORDINATE_3
TEXTURE COORDINATE 3
Especifica que el arreglo de vertices contiene coordenadas de textura
2D.
Prof. Andrés E. Castillo R.
Ejemplo
SSuponga que un TringleArray
i l requerirá
i á de
d 30 vertices
i y que cada
d
vertices tendrá definido sus colores pero sin transparencia.
nroVertices = 30
30*33 // 3 coordenadas por vertices;
formatoVertices = GeometryArray.COORDINATES |
GeometryArray.COLOR_3;
Ti
TriangleaArray
l A ga = new TriangleArray(90,
Ti l A (90 formatoVertices);
f V i )

• El símbolo | indica la operación booleana OR.


• Se requieren 3 puntos, para definir las coordenadas de un
vertices.
• En la definición de formato,, siempre
p aparecerá
p como com‐
ponente obligatorio, la constante COORDINATES.
• GeometryArray dispone de métodos especificos, tales como
setColors setCoordinates,
setColors, setCoordinates setNormals y setTexturesCoor‐
dinates, para rellenar los objetos vacios que crea el
constructor. Prof. Andrés E. Castillo R.
Paso 2.  Llenado de datos.

Si ya existe el GeometryArray (LineArray, TriangleArray ,


QuadArray,
y etc),
) se p
procede a darle valores a los arreglos,
g lo q
que se
puede hacer vertice x vertice, o usando un arreglo para la
asignación directa, de vertices en bloque.
Existen
i métodos
é d para rellenar
ll cada
d aspecto: Coordenadas,
C d d Color
C l o
Textura.

RECUERDE: GeometryArray es una clase abstracta que no se


instancia, pero sus descendientes si, y lo tratado hasta ahora
tiene que ver con los descendientes.
descendientes

Prof. Andrés E. Castillo R.
Llenado de coordenadas

Métodos para la asignación de coordenadas.

Modo vertice x vertice


x vertice

Point, {X1f ,Y1f ,Z1f } ó {X1d , Y1d, Z1d } 

index
Arreglo en GeometryArray

Modo asignación por bloques de vertices.

index float[], double[] ,Point3f[] ó Point3d[]
Arreglo en GeometryArray
Prof. Andrés E. Castillo R.
Llenado de colores Opcional

Modo vertice x vertice

{Crojo,Cverde, Cazul}, {byte1,byte2,byte3}, color3f ó color3d.

index
Arreglo en GeometryArray

Modo asignación por bloques de vertices.

index float[], byte[] ,Color3f[] ó Color3d[]
Arreglo en GeometryArray
Prof. Andrés E. Castillo R.
Prof. Andrés E. Castillo R.
Llenado de Normales Opcional

Las normales, están
Las normales están representados, por
representados por vectores
representados por las clases Vector3f y Vector3d

Modo vertice x vertice


x vertice

{x1,y1,z1}, vector3f ó vector3d

index
Arreglo en GeometryArray

Modo asignación por bloques de vertices.

index {x1,y1,z1,x2,y2,z2,‐‐‐‐‐‐‐,Xn,Yn,Zn}, {vector1*, vector2*, ……,vectorn*
Arreglo en GeometryArray
Llenado de Texturas Opcional

Modo vertice x vertice

M d asignación
Modo i ió por bloques
bl d
de vertices.
ti

Prof. Andrés E. Castillo R.
Un ejemplo

Demo en Java

En el demo se utilizan objetos Line‐


Array y los métodos setCoordinate y
setColor, vertice x vertice.

Este Libro recopila el programa DemoLineArray

Demo utilizando LineArray, setCoordinate y setColor


Prof. Andrés E. Castillo R.
Contrucción de los objetos LineArray

Especificación de las coordenadas y colores de cada vertice.

Prof. Andrés E. Castillo R.
Relleno de los vertices, coordenadas y color.

Prof. Andrés E. Castillo R.

También podría gustarte