225
INSTITUTO POLIT ´ ECNICO NACIONAL . CENTRO DE INNOVACI ´ ON Y DESARROLLO . TECNOL ´ OGICO EN C ´ OMPUTO MEJORAS EN EL DISE ˜ NO, E IMPLEMENTACI ´ ON DE UN TRADUCTOR DE VRML A JAVA 3D TESIS QUE PARA OBTENER EL GRADO DE: MAESTR ´ IA EN TECNOLOG ´ IA DE C ´ OMPUTO PRESENTA: ING. JOS ´ E MARCO ANTONIO RUEDA MEL ´ ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU ´ IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO exico, D.F. Julio 2011

T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

INSTITUTO POLITECNICO NACIONAL

. CENTRO DE INNOVACION Y DESARROLLO

. TECNOLOGICO EN COMPUTO

MEJORAS EN EL DISENO, E IMPLEMENTACION

DE UN TRADUCTOR DE VRML A JAVA 3D

T E S I S

QUE PARA OBTENER EL GRADO DE:

MAESTRIA EN TECNOLOGIA DE COMPUTO

PRESENTA:

ING. JOSE MARCO ANTONIO RUEDA MELENDEZ

DIRECTORES DE TESIS

M. EN C. MAURICIO OLGUIN CARBAJAL

M. EN C. EDUARDO VEGA ALVARADO

Mexico, D.F. Julio 2011

Page 2: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

ii

Page 3: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

iii

Page 4: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

iv

Page 5: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

v

Page 6: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

vi

Page 7: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Agradecimientos

Mi total agradecimiento a mi asesor, el M. en C. Mauricio Olguın Carbajal, quien

me dedico su valioso tiempo y me dio la confianza para realizar el presente trabajo,

demostrando siempre interes por lo que estaba realizando y me animo a seguir adelante.

Gracias por su ayuda.

Agradezco tambien de forma especial a mi co-asesor, el M. en C. Eduardo Vega Al-

varado, por su amistad y confianza.

Al Dr. Vıctor Manuel Silva Garcıa y al M. en C. Eduardo Rodrıguez Escobar, Direc-

tor y Subdirector Academico respectivamente del CIDETEC, por darme la oportunidad

de pertenecer a este Centro de Estudios.

A Monica, mi esposa, quien me animo y apoyo para que continuara con mis estudios,

y que siempre ha estado a mi lado tanto en las buenas como en las malas.

A mi madre y a la memoria de mi padre que me dieron su ejemplo y a mis hermanos

por ser como son.

A mis profesores del CIDETEC sin excepcion alguna, quienes siempre aportaron sus

conocimientos a mi formacion.

A todos mis companeros del CIDETEC, que desde su area de interes academico,

luchan por ser mejores.

vii

Page 8: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

viii

Al Centro de Innovacion y Desarrollo Tecnologico en Computo del IPN (CIDETEC-

IPN), por permitirme formar parte de sus egresados.

Al Instituto Politecnico Nacional por ser parte de esta gran familia politecnica.

Page 9: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Resumen

En la presente tesis se documenta el desarrollo de una herramienta software que

traduce codigo VRML a codigo Java 3D. La razon principal es porque existen muchas

aplicaciones en VRML que se han desarrollado a traves de los anos con probada fun-

cionalidad, pero con carencias en su conexion con el exterior a traves de dispositivos

hardware, debido a que VRML no cuenta con instrucciones para tal efecto.

Debido al gran auge que han tenido las diversas aplicaciones de realidad virtual, las

cuales se han convertido en potentes herramientas para la diversion, la educacion, la

simulacion, la milicia, etc., se propuso tomar las aplicaciones en VRML y reutilizarlas,

usando la API Java 3D, previa conversion a traves del traductor de VRML a Java 3D

producto de esta tesis.

De esta forma, esta tesis presenta el desarrollo e implementacion del traductor VRML

a codigo Java 3D, el cual tiene las siguientes caracterısticas destacables: renderizacion

de figuras regulares (Box, Cylinder, Cone y Sphere) e irregulares (SetPoint, Indexed-

LineSet e IndexedFaceSet), adecuado manejo de transformaciones (traslacion, rotacion

y escalamiento) y mejoramiento de la apariencia. Tambien incluye una interfaz grafica

de usuario amigable que tiene todos los pasos necesarios para dicha traduccion, la cual

incluye: apertura del archivo fuente en VRML, conversion de VRML a Java 3D, la inte-

ix

Page 10: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

x

gracion de la compilacion y ejecucion automatica del codigo de salida en Java 3D y la

exhibicion de la imagen en 3D. Ademas cuenta con un area de exhibicion de los nodos

del archivo VRML de forma grafica.

La herramienta se programo en el lenguaje Java debido a que ofrece conexion ex-

terna a dispositivos hardaware y porque se ha convertido en un estandar de facto en la

industria del software.

De esta forma, la herramienta disenada e implementada en esta tesis contribuye a

recuperar y reutilizar las aplicaciones realizadas en VRML, y apoyar a los desarrollado-

res de aplicaciones de realidad virtual para mejorar su productividad, si ya cuentan con

codigo VRML previamente probado y que por lo tanto es funcionalmente correcto.

Page 11: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Abstract

In this thesis, the development of a software tool for translation from VRML co-

de to Java 3D code is presented. The main justification for this work is the fact that

many VRML-based applications have been developed with proven functionality, but

with a lack of connection to the environment via hardware devices, because there are no

VRML instructions for this effect.

There has been a boom of virtual reality applications, and since these applications are

powerful tools for amusement, education, simulation, etc, a proposal for taking VRML

applications and reuse them, using the Java 3D API, is presented in this thesis, by a

conversion using a translator from VRML to Java 3D.

In this thesis, the development and implementation of a translator from VRML to

Java 3D is presented; this translator has the following characteristics: renderization of re-

gular (Box, Cylinder, Cone and Sphere) and irregular figures (SetPoint, IndexedLineSet

and IndexedFaceSet), appropiate handling of manipulations (translation, rotation and

scaling), and appearance improvement. It also includes a friendly graphical user interfa-

ce that is fully functional for the translation; this interface includes: opening of source

VRML file, conversion from VRML to Java 3D, compilation and automatic execution of

the resulting Java 3D code, and the 3D-displaying of the final image. In addition, there

xi

Page 12: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xii

is an area for the graphical display of the nodes in the VRML file.

This tool was programmed using Java, because this language offers an external con-

nection to hardware devices, and it is also a the facto standard in the software industry.

So, the tool designed and implemented in this thesis is a valuable contribution for

recovering and reusing previously developed VRML applications, as a way to support

virtual reality programmers in order to improve their productivity, if they have pre-

viously tested and functionality correct VRML code.

Page 13: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Indice general

Indice de figuras XVI

Indice de tablas XXII

1. Introduccion 1

1.1. Realidades alternas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2. Conceptos asociados con la realidad virtual . . . . . . . . . . . . . . . . . 4

1.3. La importancia y el alcance de la presente tesis . . . . . . . . . . . . . . 7

1.3.1. Organizacion de la tesis . . . . . . . . . . . . . . . . . . . . . . . 10

2. Estado del arte 13

2.1. Trabajos en realidad virtual . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.1.1. Introduccion y antecedentes . . . . . . . . . . . . . . . . . . . . . 13

2.1.2. Trabajos recientes en realidad virtual . . . . . . . . . . . . . . . . 14

2.1.3. Trabajos realizados en el CIDETEC . . . . . . . . . . . . . . . . . 15

2.1.4. Conclusiones del capıtulo . . . . . . . . . . . . . . . . . . . . . . . 18

3. Marco teorico 21

3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2. El lenguaje VRML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

xiii

Page 14: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xiv INDICE GENERAL

3.2.1. Nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.2. Figuras irregulares . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.3. Nodos de transformacion . . . . . . . . . . . . . . . . . . . . . . . 34

3.2.4. Conclusiones acerca de VRML . . . . . . . . . . . . . . . . . . . . 37

3.3. El lenguaje de programacion Java . . . . . . . . . . . . . . . . . . . . . . 37

3.4. La API Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.4.1. Pasos para desarrollar una aplicacion en Java 3D . . . . . . . . . 42

3.4.2. Conclusiones acerca de Java 3D . . . . . . . . . . . . . . . . . . . 45

4. Desarrollo 47

4.1. Diagrama a bloques del Traductor VRML a Java 3D . . . . . . . . . . . 47

4.2. Algoritmo del Traductor VRML a Java 3D . . . . . . . . . . . . . . . . . 49

4.3. Diagrama de clases del traductor VRML a Java 3D . . . . . . . . . . . . 51

4.4. Diagrama de actividades del traductor VRML a Java 3D . . . . . . . . . 51

4.5. Especificaciones del archivo VRML que se toma como entrada para Tra-

ductor VRML a Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.6. Especificaciones de diseno software de la herramienta: Traductor VRML

a Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.7. Ejemplo del uso del Traductor VRML a Java 3D . . . . . . . . . . . . . . 57

5. Experimentos y Resultados 65

5.1. Escenarios con una figura regular . . . . . . . . . . . . . . . . . . . . . . 66

5.1.1. Caja o cubo con rotacion . . . . . . . . . . . . . . . . . . . . . . . 66

5.1.2. Cilindro con apariencia . . . . . . . . . . . . . . . . . . . . . . . . 72

5.2. Escenarios con varias figuras regulares . . . . . . . . . . . . . . . . . . . 78

5.2.1. Cilindro y cono con texturas . . . . . . . . . . . . . . . . . . . . . 79

Page 15: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

INDICE GENERAL xv

5.3. Escenarios con figuras irregulares que usan:

PointSet, IndexedLineSet e IndexedFaceSet . . . . . . . . . . . . . . . . 88

5.3.1. Escenario con figuras irregulares con PointSet . . . . . . . . . . . 88

5.3.2. Escenario con figuras irregulares con IndexedLineSet . . . . . . . 94

5.3.3. Escenario con figuras irregulares con IndexedFaceSet . . . . . . . 101

5.4. Conclusiones acerca de las diferencias entre VRML y Java 3D . . . . . . 109

6. Conclusiones 111

6.1. Contribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

6.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

A. Comparacion entre la herramienta de esta tesis y [8] 119

B. Codigos en VRML y en Java 3D de figuras complejas 121

B.1. Codigos para renderizar la figura: Silla . . . . . . . . . . . . . . . . . . . 121

B.1.1. Codigo de entrada al Traductor VRML a Java 3D. Archivo: Silla-

Madera01.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

B.1.2. Codigo de salida del Traductor VRML a Java 3D. Archivo: Silla-

Madera01.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

B.2. Codigos para renderizar la figura: Sofa . . . . . . . . . . . . . . . . . . . 131

B.2.1. Codigo de entrada al Traductor VRML a Java 3D. Archivo: Sofa1.wrl131

B.2.2. Codigo de salida del Traductor VRML a Java 3D. Archivo: Sofa.java136

B.3. Codigos para renderizar la figura: Monitor de PC . . . . . . . . . . . . . 148

B.3.1. Codigo de entrada al Traductor VRML a Java 3D. Archivo: Mo-

nitorPC.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

B.3.2. Codigo de salida del Traductor VRML a Java 3D. Archivo: Moni-

torPC.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

B.4. Codigos para renderizar la figura: Florero con traslacion y textura . . . . 160

Page 16: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xvi INDICE GENERAL

B.4.1. Codigo de entrada al Traductor VRML a Java 3D. Archivo: Flo-

reroTrasladado1.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . 161

B.4.2. Codigo de salida del Traductor VRML a Java 3D. Archivo: Flore-

roTrasladado1.java . . . . . . . . . . . . . . . . . . . . . . . . . . 163

C. Renderizaciones en VRML y de salida generados por el Traductor

VRML a Java 3D 171

C.1. Renderizaciones para la figura: Silla de Madera . . . . . . . . . . . . . . 172

C.2. Renderizaciones para la figura: Sofa . . . . . . . . . . . . . . . . . . . . . 174

C.3. Renderizaciones para la figura: Monitor de PC . . . . . . . . . . . . . . . 176

C.4. Renderizaciones para la figura: Florero con traslacion . . . . . . . . . . . 178

D. Especificaciones de la herramienta Traductor de VRML a Java 3D 181

D.1. Requerimientos de hardware . . . . . . . . . . . . . . . . . . . . . . . . . 181

D.2. Requerimientos de software . . . . . . . . . . . . . . . . . . . . . . . . . 182

E. Instalacion del software requerido para trabajar con el Traductor VRML

a Java 3D 183

E.1. El plug-in Cortona 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

E.1.1. Instalacion del plug-in Cortona 3D . . . . . . . . . . . . . . . . . 184

E.2. Instalacion del compilador para Java 3D . . . . . . . . . . . . . . . . . . 188

E.2.1. Instalacion de la API para Java 3D . . . . . . . . . . . . . . . . . 192

F. Glosario de Terminos 195

Page 17: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Indice de Figuras

2.1. Apariencia de en Java 3D (izq.) y VRML(der), notese la apariencia plana

en Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1. Sımbolos estandar para Java 3D . . . . . . . . . . . . . . . . . . . . . . . 40

3.2. Rama de representacion y la rama de contenido de Java 3D . . . . . . . . 43

3.3. La clase SimpleUniverse de Java 3D . . . . . . . . . . . . . . . . . . . . . 44

3.4. Sentencias import necesarias para todo programa Java 3D . . . . . . . . 45

3.5. Codigo corespondiente a la rama de representacion . . . . . . . . . . . . 46

4.1. Diagrama conceptual del Traductor VRML a Java 3D . . . . . . . . . . . 48

4.2. Diagrama a bloques completo de la herramienta Traductor VRML a Java

3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.3. Diagrama de clases de la herramienta traductor VRML a Java 3D . . . . 52

4.4. Diagrama de Actividades de la herramienta Traductor VRML a Java 3D 53

4.5. Ejemplo que cumple con las especificaciones de la estructura de un archivo

valido para el Traductor VRML a Java 3D . . . . . . . . . . . . . . . . . 55

4.6. Pantalla de inicio de la herramienta traductor VRML a Java 3D . . . . . 58

4.7. Pantalla que muestra la seleccion de un archivo de entrada de la herra-

mienta traductor VRML a Java 3D . . . . . . . . . . . . . . . . . . . . . 59

xvii

Page 18: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xviii INDICE DE FIGURAS

4.8. Pantalla que muestra los nodos contraidos de la estructura de archivo

VRML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.9. Pantalla que muestra el contenido de los nodos del arbol del archivoVRML

expandidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.10. Pantalla que muestra la ventana de dialogo para guardar el archivo tra-

ducido a .java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.11. Pantalla que muestra la generacion de codigo Java que obtiene el Traduc-

tor VRML a Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.12. Pantalla que muestra la renderizacion del codigo Java . . . . . . . . . . . 64

5.1. Caja o cubo con rotacion y con apariencia. Archivo: CajaRotada01.wrl . 67

5.2. Arbol de la caja o cubo con rotacion y apariencia . . . . . . . . . . . . . 67

5.3. Paquetes de clases necesarios para compilar una aplicacion en Java 3D,

las cuales son siempre utilizadas por que el traductor VRML a Java 3D

en el codigo de salida en Java. . . . . . . . . . . . . . . . . . . . . . . . . 68

5.4. Constructor de la caja o cubo con rotacion y apariencia. Archivo: Caja-

Rotada01.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.5. main para la caja o cubo con rotacion. Archivo: CajaRotada01.java . . . 69

5.6. Rama del contenido (BranchGroup) para la caja o cubo con rotacion y

apariencia. Archivo: CajaRotada01.java . . . . . . . . . . . . . . . . . . . 70

5.7. Segmento de codigo que muestra la apariencia para la caja o cubo con

rotacion. Archivo: CajaRotada01.java . . . . . . . . . . . . . . . . . . . . 71

5.8. Segmento de codigo que realiza la rotacion para la caja o cubo con rota-

cion. Archivo: CajaRotada01.java . . . . . . . . . . . . . . . . . . . . . . 71

5.9. Renderizacion de la caja o cubo con rotacion en VRML . . . . . . . . . . 72

5.10. Renderizacion de la caja o cubo con rotacion en Java 3D . . . . . . . . . 73

5.11. Cilindro con apariencia. Archivo: CilindroApariencia01.wrl . . . . . . . . 73

Page 19: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

INDICE DE FIGURAS xix

5.12. Arbol del Cilindro con apariencia . . . . . . . . . . . . . . . . . . . . . . 74

5.13. Codigo que realiza la renderizacion de un cilindro. Archivo: CilindroApa-

riencia01.java (Parte 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.14. Codigo que realiza la renderizacion de un cilindro. Archivo: CilindroApa-

riencia01.java (Parte 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.15. Renderizacion de un cilindro con apariencia en VRML . . . . . . . . . . 78

5.16. Renderizacion de un cilindro con apariencia en Java 3D . . . . . . . . . . 79

5.17. Cilindro con apariencia. Archivo: CilindroCono01.wrl . . . . . . . . . . . 80

5.18. Arbol del Cilindro y cono con texturas . . . . . . . . . . . . . . . . . . . 81

5.19. Codigo que realiza la renderizacion de un cilindro y un cono con textura.

Archivo: CilindroCono.java (Parte 1) . . . . . . . . . . . . . . . . . . . . 83

5.20. Codigo que realiza la renderizacion de un cilindro y un cono con textura.

Archivo: CilindroCono.java (Parte 2) . . . . . . . . . . . . . . . . . . . . 84

5.21. Codigo que realiza la renderizacion de un cilindro y un cono con textura.

Archivo: CilindroCono.java (Parte 3) . . . . . . . . . . . . . . . . . . . . 85

5.22. Renderizacion de un cilindro y un cono con texturas de ladrillo en VRML 86

5.23. Renderizacion de un cilindro y un cono con texturas de ladrillo en Java 3D 87

5.24. Vertices de un cubo realizado con PointSet. Archivo: ConjuntoPuntos1.wrl 88

5.25. Arbol generado del cubo formado con puntos . . . . . . . . . . . . . . . . 89

5.26. Codigo que realiza la renderizacion de un conjunto de puntos. Archivo:

ConjuntoPuntos1.java (Parte 1) . . . . . . . . . . . . . . . . . . . . . . . 90

5.27. Codigo que realiza la renderizacion de un conjunto de puntos. Archivo:

ConjuntoPuntos1.java (Parte 2) . . . . . . . . . . . . . . . . . . . . . . . 91

5.28. Codigo que realiza la renderizacion de un conjunto de puntos. Archivo:

ConjuntoPuntos1.java (Parte 3) . . . . . . . . . . . . . . . . . . . . . . . 92

5.29. Renderizacion de un conjunto de puntos en VRML . . . . . . . . . . . . 92

Page 20: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xx INDICE DE FIGURAS

5.30. Renderizacion de un conjunto de puntos en Java 3D . . . . . . . . . . . . 93

5.31. Caja o cubo formado con lıneas. Archivo:ConjuntoLineas1.wrl . . . . . . 95

5.32. Arbol generado de una caja o cubo formado con lıneas . . . . . . . . . . 96

5.33. Codigo que realiza la renderizacion de un conjunto de lıneas. Archivo:

ConjuntoLineas1.java (Parte 1) . . . . . . . . . . . . . . . . . . . . . . . 97

5.34. Codigo que realiza la renderizacion de un conjunto de lıneas. Archivo:

ConjuntoLineas1.java (Parte 2) . . . . . . . . . . . . . . . . . . . . . . . 98

5.35. Codigo que realiza la renderizacion de las aristas de un cubo formado por

un conjunto de lıneas. Archivo: ConjuntoLineas1.java (Parte 3) . . . . . 99

5.36. Renderizacion de las aristas de un cubo formado por un conjunto de lıneas

en VRML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.37. Renderizacion de las aristas de un cubo formado por un conjunto de lıneas

en Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.38. Caja o cubo formada con un conjunto de caras. Archivo: ConjuntoCa-

ras1.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.39. Arbol generado de la caja o cubo formada con caras . . . . . . . . . . . . 103

5.40. Codigo que realiza la renderizacion de un conjunto de caras que forman

un cubo. Archivo: ConjuntoCaras1.java (Parte 1) . . . . . . . . . . . . . 104

5.41. Codigo que realiza la renderizacion de un conjunto de caras que forman

un cubo. Archivo: ConjuntoCaras1.java (Parte 2) . . . . . . . . . . . . . 105

5.42. Codigo que realiza la renderizacion de un conjunto de caras que forman

un cubo. Archivo: ConjuntoCaras1.java (Parte 3) . . . . . . . . . . . . . 106

5.43. Codigo que realiza la renderizacion de un conjunto de caras que forman

un cubo. Archivo: ConjuntoCaras1.java (Parte 4) . . . . . . . . . . . . . 107

5.44. Renderizacion de los lados de un cubo formado por un conjunto de caras

en VRML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Page 21: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

INDICE DE FIGURAS xxi

5.45. Renderizacion de los lados de un cubo formado por un conjunto de caras

en Java 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

C.1. Salida usando el navegador con el plug-in Cortona del archivo SillaMade-

ra01.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

C.2. Salida usando la herramienta Traductor VRML a Java 3D del archivo

SillaMadera1.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

C.3. Salida usando el navegador con el plug-in Cortona del archivo Sofa1.wrl . 174

C.4. Salida usando la herramienta Traductor VRML a Java 3D del archivo

Sofa1.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

C.5. Salida usando el navegador con el plug-in Cortona del archivo Moni-

torPC.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

C.6. Salida usando la herramienta Traductor VRML a Java 3D del archivo

MonitorPC.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

C.7. Salida usando el navegador con el plug-in Cortona del archivo Florero-

Trasladado1.wrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

C.8. Salida usando la herramienta Traductor VRML a Java 3D del archivo

FloreroTrasladado1.java . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

E.1. Sitio de descarga de cortona . . . . . . . . . . . . . . . . . . . . . . . . . 185

E.2. Inicio de la instalacion del plug-in Cortona . . . . . . . . . . . . . . . . . 186

E.3. Pasos en la instalacion (1) . . . . . . . . . . . . . . . . . . . . . . . . . . 186

E.4. Pasos en la instalacion (2) . . . . . . . . . . . . . . . . . . . . . . . . . . 187

E.5. Pasos en la instalacion (3) . . . . . . . . . . . . . . . . . . . . . . . . . . 187

E.6. Sitio de Descarga del compilador de Java . . . . . . . . . . . . . . . . . . 188

E.7. Sitio de Descarga del compilador de Java(2) . . . . . . . . . . . . . . . . 189

E.8. Sitio de Descarga del compilador de Java(3) . . . . . . . . . . . . . . . . 189

Page 22: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xxii INDICE DE FIGURAS

E.9. Instalacion del compilador de Java(1) . . . . . . . . . . . . . . . . . . . . 190

E.10.Instalacion del compilador de Java(2) . . . . . . . . . . . . . . . . . . . . 190

E.11.Instalacion del compilador de Java(3) . . . . . . . . . . . . . . . . . . . . 191

E.12.Instalacion del compilador de Java(4) . . . . . . . . . . . . . . . . . . . . 191

E.13.Sitio de Descarga de la API Java3D . . . . . . . . . . . . . . . . . . . . . 192

E.14.Sitio de Descarga de la API Java3D(2) . . . . . . . . . . . . . . . . . . . 193

E.15.Sitio de Descarga de la API Java3D(3) . . . . . . . . . . . . . . . . . . . 193

E.16.Sitio de Descarga de la API Java3D (4) . . . . . . . . . . . . . . . . . . . 194

Page 23: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Indice de Tablas

2.1. Comparacion entre Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2. Estado del arte, resumen del analisis de documentos . . . . . . . . . . . . 19

A.1. Comparacion entre ambos traductores . . . . . . . . . . . . . . . . . . . 120

xxiii

Page 24: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

xxiv INDICE DE TABLAS

Page 25: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 1

Introduccion

1.1. Realidades alternas

Durante la historia de la humanidad siempre ha existido la curiosidad por experi-

mentar situaciones mas alla de la realidad que se conoce y que se vive, creadas en la

gran mayorıa de las veces en la imaginacion. Desde la lectura de un libro de aventuras,

donde gracias a la narrativa del escritor, es posible experimentar emociones y recrear

lugares. Mas tarde surgio el teatro donde el espectador vive una experiencia cercana con

los actores, y con el apoyo de las coreografıas, se ofrece al espectador imagenes, sonidos

y emociones que inciden directamente en el cerebro del espectador creando una realidad

alterna.

Posteriormente con la aparicion del cine, se anadio realismo a las escenas donde se

mezclan personajes y efectos especiales que hacen vivir experiencias donde intervienen

los sentidos de la vista y del oıdo del espectador.

Cada uno de los casos anteriores forman parte de lo que se conoce como realidades

1

Page 26: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

2 Capıtulo 1. Introduccion

alternas, las cuales se caracterizan porque existe una trama bien definida, pero se carece

de una interaccion participativa del espectador.

Otra forma de experimentar una realidad alterna es a traves de la realidad virtual,

la cual nacio en los 60’s como consecuencia natural de los avances tecnologicos del hard-

ware y del software de las computadoras.

El campo de la realidad virtual surgio con los experimentos de un grupo de investi-

gacion de la Universidad de Harvard encabezado por Ian Sutherland, quienes disenaron

un casco de realidad virtual, conocido como incredible helmet (casco increıble), el cual

era un dispositivo rudimentario con dos tubos de rayos catodicos y que a pesar de ser

pequeno, era pesado y voluminoso. Su sensor de posicion se fijaba en el techo mediante

una barra rıgida, la cual traducıa los movimientos de la cabeza a desplazamientos de

unos potenciometros, cuya posicion era detectada por una computadora. El dispositivo

presento numerosos problemas de movilidad e incomodidad por su naturaleza mecanica.

En un inicio las aplicaciones de realidad virtual requerıan equipos caros y compli-

cados, pero los avances tecnologicos han hecho accesibles los cascos, los guantes y las

camaras de inmersion, los cuales han sido muy utiles para conseguir que el usuario sienta

la sensacion de estar en un escenario casi real.

Las limitaciones del hardware en cuanto a velocidad de procesamiento, capacidad de

memoria, tamano y costo de aquellas epocas ocasionaron que las primeras tecnologıas

resultaran poco atractivas para los usuarios. Los ambientes usaban el sistema de gene-

racion de graficos vectoriales, el cual producıa la sensacion de estar en un mundo irreal

donde los objetos parecıan de alambre.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 27: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

1.1. Realidades alternas 3

A pesar del poco exito, hubo interes en continuar su desarrollo por parte de ciertas

empresas, centros de investigacion civiles y militares.

En 1968 un grupo de investigadores de la Universidad de Carolina del Norte dirigido

por el profesor Frederick Rooks adapto un dispositivo que permitio simular reacciones

tactiles de fuerza, usando un dispositivo robotico similar a los que se usaban para la ma-

nipulacion remota de materiales radiactivos. En la actualidad se emplean dispositivos

similares a este.

Posteriormente, Jaron Lanier creo el guante de datos y fundo la empresa VPL Re-

search junto con Thomas Zimmerman. Su invento empezo a venderse en poco tiempo a

organismos como la NASA y el Pentagono.

En el Reino Unido se desarrollaron ambientes sinteticos de inmersion protagoniza-

do por Jonathon Waldern fundador de W. Industries y de Virtuality, quien lanzo al

mercado el primer producto basado en el uso del casco, cuyo diseno se inicio en 1981,

completandose el primer prototipo en 1988. En julio de 1991 aparecio Dactyl Nightmare,

el primer juego en el que varios usuarios podıan interactuar en un mismo espacio.

El campo del software se inicio con el GopherVR, un navegador que creaba una in-

terfaz al gopherespacio generando mundos virtuales. Desaparecio en 1993, con la llegada

de la World Wide Web (www).

El lenguaje de realidad virtual empleado actualmente en la web es el VRML (Virtual

Reality Modeling Language), cuyo inicio data desde 1994, con la Primera Conferencia

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 28: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4 Capıtulo 1. Introduccion

Internacional en la World Wide Web realizada en Mayo de ese ano. Mark Pesce y Tony

Parisi presentaron una herramienta de visualizacion llamada Labyrinth.

A partir de ese suceso, VRML mejora la navegacion en la red con un ciberespacio

consistente y definido. La discusion y la actividad se centro en la especificacion de un

lenguaje comun para definir las escenas tridimensionales mas que en la generacion de

una interfaz.

En Mayo de 1995 se presento VRML 1.0, un lenguaje para definir mundos virtuales

estaticos adecuada con el ancho de banda de la red, basados en el formato de archivo

OpenInventor ideado por Silicon Graphics. En Agosto de ese mismo ano se introdujo

VRML 2.0, un lenguaje mucho mas poderoso para definir mundos virtuales dinami-

cos, con animacion, interaccion con el usuario y scripts para programas. Posteriormente

aparecio VRML 97, el cual es una revision del VRML 2.0.

1.2. Conceptos asociados con la realidad virtual

Existe una gran cantidad de conceptos asociados con la realidad virtual:

"La realidad virtual es un sistema de computacion usado para crear un mundo artifi-

cial donde el usuario tiene la impresion de estar en ese mundo y la habilidad de navegar

y manipular objetos en el" [1].

"La realidad virtual te permite explorar un mundo generado por computadoras a

traves de tu presencia en el". [2].

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 29: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

1.2. Conceptos asociados con la realidad virtual 5

Otra definicion esta dada por Aukstakalnis et al en The Silicon Mirage [3]: "La reali-

dad virtual es un camino que tienen los humanos para visualizar, manipular e interactuar

con computadoras y con informacion extremadamente compleja".

Isdale[4] conceptualiza a la visualizacion como conexiones opticas, auditivas o de

cualquier otro tipo que existen entre el espectador y el mundo generado dentro de la

computadora, el cual permite al usuario interactuar y manipular objetos.

Por otra parte, la expresion realidad virtual tambien ha sido considerada como un

oximoron, es decir, una figura en la que un adjetivo de significado contrario es agregado a

una palabra. Otros terminos empleados para la misma acepcion son ambiente sintetico,

ciberespacio y realidad artificial.

La gran variedad de areas que forman la realidad virtual ha dado lugar a la subdivi-

sion en numerosas tipologıas. A continuacion se resena la clasificacion de Isdale.

Sistemas de Ventana al Mundo (Window on World. WoW) Michael Louka[5]

los define como sistemas de "realidad virtual de escritorio", cuya caracterıstica principal

es que usa un monitor de computadora para mostrar el mundo visual, Isdale menciona

que esta tipologıa ha existido desde el principio de la historia de los graficos compu-

tarizados. En 1965, Ivan Sutherland ideo un programa de investigacion para graficos

generados por computadoras en el texto The Ultimate Display que ha guiado el campo

durante los ultimos treinta anos.

Mapa de Video Es una variante del sistema de ventana al mundo, el cual combina

una conexion de video de la silueta del usuario con un grafico de computadora en dos

dimensiones, observandose en la pantalla el cuerpo del individuo interactuando con el

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 30: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

6 Capıtulo 1. Introduccion

mundo.

Sistemas de Inmersion Los mas avanzados sistemas de realidad virtual sumergen

completamente la vision del usuario en el mundo artificial. Suelen estar equipados con

un casco o mascara que contiene dispositivos visuales y auditivos conocidos como Head

Mounted Display o HMD.

Una variacion de estos sistemas emplea grandes pantallas de proyeccion para crear

un recinto o cuarto donde se encuentra el usuario. La primera aplicacion de este sistema

fue llamada el closet de la catedral por su capacidad de crear la ilusion de ambientes

gigantescos en un espacio fısico de pequenas dimensiones. Una extrapolacion de estos

sistemas de inmersion puede hallarse en el Holodek empleado en Star Trek: The Next

Generation(Viaje a las Estrellas: La Nueva Generacion).

Telepresencia Es una variante en la visualizacion de mundos generados por compu-

tadoras y funciona a traves de la conexion de sensores entre un operador humano y un

robot u otra clase de dispositivo.

Entre los usos de la telepresencia se encuentran los vehıculos controlados a distancia

por bomberos empleados para manejar situaciones peligrosas y los instrumentos emplea-

dos por los cirujanos para realizar intervenciones quirurgicas sin hacer cortes mayores

en los pacientes; estos instrumentos poseen una pequena camara de video al final.

Los robots equipados con sistemas de telepresencia han cambiado la exploracion

volcanica y marina. Por otra parte, la NASA planea usar telerobotica para la exploracion

espacial.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 31: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

1.3. La importancia y el alcance de la presente tesis 7

Realidad Aumentada Es la combinacion de sistemas de telepresencia y de realidad

virtual, las entradas generadas por la computadora se mezclan con telepresencia y/o con

la vision del usuario del mundo real.

Las aplicaciones de estos sistemas se encuentran en las intervenciones quirurgicas

del cerebro, donde se monitorean los procesos a traves de imagenes producto de scaneos

CAD y ultrasonido en vivo.

Dentro de la milicia los pilotos de aviones de combate observan mapas y datos ge-

nerados por computadora proyectandose en sus cascos visores o en las pantallas de la

cabina.

1.3. La importancia y el alcance de la presente tesis

Como se ha mencionado ver la realidad virtual es una tecnologıa que esta presente

en diferentes campos del conocimiento donde sus multiples aplicaciones la han hecho

accesible a usuarios de diferente nivel academico, en este afan de continuar con este

desarrollo tecnologico, la presente tesis es una contribucion en esta area de desarrollo

tecnologico.

Justificacion de la tesis En el CIDETEC se tiene un trabajo desarrollado en este

sentido, el cual tiene la limitante de que solo pueden usarse figuras geometricas basicas,

el escalamiento deforma las figuras geometricas complejas formadas de figuras basicas y

la apariencia da una sensacion de ver objetos planos. Por esta razon, es deseable con-

tinuar con este trabajo, adicionando otras funcionalidades al traductor para que pueda

generar objetos mas complejos. El uso de geometrıas irregulares imposibilita el uso de

primitivas basicas, y obliga a usar las primitivas: PointSet, IndexedLineSet e Indexed-

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 32: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

8 Capıtulo 1. Introduccion

FaceSet. La herramienta producto de esta tesis, se ha redisenado completamente. Se

decidio programarla con lenguaje de programacion Java, el cual no requiere licencia por

parte del programador y tiene la ventaja adicional de que puede ejecutarse en cualquier

plataforma. Se desarrollo un nuevo algoritmo el cual contempla adicionalmente los nodos

PointSet, IndexedLineSet e IndexedFaceSet, se elimino la deformacion en el escalamien-

to y se mejoraron sustantivamente las apariencias y las texturas. Las clases y metodos

fueron reescritos para cumplir las nuevas funcionalidades. Se implemento una interfaz

grafica de usuario, la cual contiene todos las funcionalidades para realizar todos los pasos

que requiere el traductor.

Otra razon de peso por la cual se escogio el lenguaje de programacion Java, es por su

amplio uso en la industria del software y porque proporciona al programador una gran

cantidad de bibliotecas, las cuales incrementan las funcionalidades de las aplicaciones.

Por otro lado, a pesar de la facilidad en su programacion y uso intuitivo del VRML,

este carece de la funcionalidad propia para realizar interfaces con hardware por lo que

el lenguaje Java 3D puede solventar dicha dificultad.

Objetivo general

Mejoras en el diseno, desarrollo e implementacion de una aplicacion software que

traduce un archivo VRML bien formado, es decir, que cumpla con la sintaxis del

lenguaje VRML, a un archivo Java 3D.

Objetivos particulares

Desarrollar una aplicacion de computo para aprovechar la funcionalidad de la

cabina de inmersion del CIDETEC.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 33: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

1.3. La importancia y el alcance de la presente tesis 9

El archivo fuente contendra las primitivas geometricas Box, Cone, Cylinder, Sphe-

re, PointSet, IndexedLineSet e IndexedFaceSet, los nodos de transformacion para

traslacion, rotacion y escalamiento, ademas los nodos para el manejo de la apa-

riencia y de la textura.

Aplicar tecnicas avanzadas de programacion (estructuras de datos y manejo de

clases) y de realidad virtual (API de Java 3D) para el desarrollo de aplicaciones

de realidad virtual.

Comparar y evaluar las aplicaciones implementadas con programas similares ya

existentes.

Alcances y contribuciones El presente trabajo tiene como finalidad:

El diseno y desarrollo de un traductor de codigo de escenarios en lenguaje VRML

a codigo en lenguaje Java 3D con el fin de reutilizar el codigo existente en VRML.

El sistema leera un archivo fuente en VRML bien formado y se obtendra a la salida

un archivo en Java 3D.

Crear ambientes virtuales acotados que puedan extenderse por parte del progra-

mador con una interfaz con mundo exterior.

El uso de primitivas geometricas basicas (cubo, cono, esfera y cilindro) para crear

figuras mas complejas.

La inclusion de los nodos: PointSet, indexedLineSet e IndexedFaceSet para crear

figuras irregulares.

La mejora del manejo de la apariencia.

El uso de nodos de transformacion: rotacion, translacion y escalamiento.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 34: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

10 Capıtulo 1. Introduccion

La representacion jerarquica grafica de los nodos de la aplicacion donde se podran

observarse las transformaciones de cada geometrıa.

Una interfaz grafica amigable con el usuario para la seleccion de los archivos de

entrada.

1.3.1. Organizacion de la tesis

Esta tesis esta dividida en seis capıtulos los cuales se resumen a continuacion:

Capıtulo 1 Este capıtulo introduce los conceptos basicos de la realidad virtual, su

desarrollo historico, su aplicacion en las diferentes ramas del conocimiento y su pertinen-

cia en la actualidad. Tambien se hace referencia a los objetivos, alcance y contribuciones

de la presente tesis.

Capıtulo 2 En este capıtulo se hace una revision del estado del arte, se analizan los

trabajos relacionados con los traductores de VRML a Java realizados hasta el momento,

se hacen comparaciones de sus funcionamientos y se analizan sus ventajas y desventajas.

Capıtulo 3 Se hace referencia a una revision de VRML, el cual es el lenguaje mas usado

en las aplicaciones de realidad virtual y que se ha convertido en un estandar. Asimismo

se aborda el lenguaje Java por ser el lenguaje en el que programara la aplicacion y

tambien se hace un estudio detallado de la API de Java 3D. Se describen las sintaxis de

ambos lenguajes y su estructura basica en el codigo estandar y se analiza como se llevan

a cabo las renderizaciones.

Capıtulo 4 Se explica el desarrollo de la presente tesis, se describe el algoritmo, las

estructuras de datos, las clases empleadas en el traductor y se explican los modulos de

los que consta el traductor VRML a Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 35: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

1.3. La importancia y el alcance de la presente tesis 11

Capıtulo 5 Se describen los experimentos realizados y los resultados obtenidos al

probar la aplicacion con ejemplos de diferente complejidad y se comparan los resultados

de Java 3D con los de VRML.

Capıtulo 6 En las conclusiones de describen los objetivos alcanzados en la presente

tesis y se proponen algunas extensiones para trabajos futuros.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 36: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

12 Capıtulo 1. Introduccion

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 37: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 2

Estado del arte

2.1. Trabajos en realidad virtual

2.1.1. Introduccion y antecedentes

Existen en el ambito academico y comercial aplicaciones de realidad virtual, en su

gran mayorıa se concentran en el area de los recorridos virtuales en museos, centros

turısticos, sitios arqueologicos por mencionar algunos, y por otro lado existen algunas

herramientas de apoyo para el desarrollo de este tipo de aplicaciones.

Cabe mencionar que a pesar de existir interes por esta area en los centros academi-

cos, en la realidad se puede observar que, aun falta mucho por realizar y aplicar en las

diferentes ramas del conocimiento en la Realidad Virtual.

13

Page 38: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

14 Capıtulo 2. Estado del arte

2.1.2. Trabajos recientes en realidad virtual

En este apartado se resumen los trabajos relacionados con la realidad virtual producto

de algunas publicaciones y trabajos de tesis que muestran la tendencia de las aplicaciones.

Simulacion en internet de un laboratorio virtual en su entorno mediante

VRML

En este trabajo [16] se desarrollo y se construyo un Edificio Virtual en internet seme-

jante al real que cuenta con oficinas, talleres y en particular se describe un laboratorio

virtual de robotica en donde los alumnos pueden realizar practicas utilizando equipos

muy similares a los reales, usando una conexion a Internet.

The interactive data visualization with Java 3D

Este trabajo [15] tiene como finalidad monitorear experimentos en tiempo real y su

representacion grafica usando Java 3D por sus caracterısticas de rapidez, interpretacion

interactiva y sus capacidades con internet para la captura y analisis de datos.

Hace una comparacion entre VRML y Java 3D, y resalta que al ser Java 3D una API

es mas facil hacer una aplicacion aunque se carece de herramientas para su realizacion

y muestra la tabla comparativa 2.1 que da un panorama de las caracterısticas acerca de

VRML y Java 3D.

Ultimas tendencias en graficos web 3D para internet

Este artıculo [14] presenta una panoramica de los graficos conocidos como WEB3D

que se usan actualmente, en base a sus ventajas, a los plug-ins que requieren y a sus

respectivas plataformas. Hace enfasis en la incorporacion de mundos tridimensionales

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 39: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

2.1. Trabajos en realidad virtual 15

interactivos para la ensenanza de materias basicas de ingenierıa de diseno y biomecanica.

Tabla 2.1: Comparacion entre LenguajesJava 3D VRML C/C++

Independencia del SOSI (Win32 y Solaris actual-mente)

Herramientas POCAS MUCHAS MUCHAS

Rendimiento RAPIDOEjecucion en navegado-res Web

SI SI NO

Programacion Actual SI NO SI

Programacion MEDIANAMENTE FACIL FACIL DIFICIL

Fecha de liberacion 1998 1994

Por otro lado, tambien se revisaron los artıculos que fueron citados por [8] y que se

resumen en la tabla 2.2.

2.1.3. Trabajos realizados en el CIDETEC

En el Centro de Innovacion y Desarrollo Tecnologico en Computo del IPN ha existido

un gran interes por desarrollar en esta area del conocimiento. Algunos de los trabajos

mas representativos en el area de la realidad virtual que se han desarrollado a la fecha

son los siguientes trabajos de tesis:

Diseno e implementacion de un traductor de lenguajes, VRML a Java 3D

Este trabajo [8] realiza la traduccion de escenarios VRML normalizados para las

primitivas: cubo, cilindro, cono y esfera, ası como sus respectivas apariencias. Tam-

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 40: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

16 Capıtulo 2. Estado del arte

bien realiza las transformaciones rotacion, traslacion y escalamiento. Por otro lado, esta

primera herramienta se desarrollo con Visual Basic .net, el cual es un lenguaje de pro-

gramacion que requiere licencia y ademas la interfaz grafica proporcionada no realiza

todos los pasos que se requieren para obtener la imagen resultante.

A continuacion se detallan las caracterısticas mas relevantes del trabajo.

El archivo de entrada debe cumplir con una estructura bien definida.

Si las primitivas no cuentan con apariencia, se invoca al constructor por omision,

de otra forma el constructor toma los valores de los parametros.

Cada elemento debe estar separado en una lınea.

Cada elemento debe estar definido en una lınea y las llaves que cierran los nodos

deben estar en cada lınea.

No debe haber lıneas en blanco.

Se hace hincapie en que no es un compilador, es decir no se aplico la teorıa de

lenguajes formales para su realizacion.

Se implemento con el lenguaje Visual Basic, el cual require licencia.

Pueden tener apariencia o sin apariencia.

Con textura o sin textura.

Rotacion de un objeto, de un conjunto de objetos o a otro nodo de transformacion.

Traslacion de un objeto, de un conjunto de objetos o a otro nodo de transformacion.

Escalamiento de un objeto, de un conjunto de objetos o a otro nodo de transfor-

macion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 41: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

2.1. Trabajos en realidad virtual 17

Solo renderiza figuras basicas usando Box, Cylinder, Cone y Sphere.

No renderiza escenarios.

El arbol que se genera solo es informativo.

Las transformaciones se hacen apoyandose en una bandera en los comentarios.

El proceso de compilacion y ejecucion se llevan a cabo fuera de la interfaz grafica.

El escalamiento deforma las figuras complejas formadas por figuras geometricas

basicas.

La apariencia final de las figuras ocasiona que los objetos renderizados tengan una

apariencia plana sin bordes intermedios claros. Como se muestra en la figura2.1

Figura 2.1: Apariencia de en Java 3D (izq.) y VRML(der), notese la apariencia plana en Java3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 42: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

18 Capıtulo 2. Estado del arte

Interfaz para el aprendizaje de la realidad virtual haciendo uso de un guante

de datos

Este trabajo [9] documenta el proceso de desarrollar una interfaz generica para recibir

informacion de un guante de datos, con el fin de retroalimentar un ambiente en tres

dimensiones aprovechando la interaccion intuitiva. El objetivo es ensenar a los alumnos

a que aprendan a manipular figuras geometricas en tres dimensiones, la navegacion en

ambientes de tres dimensiones, la rotacion en tres angulos y conocer el concepto de seis

grados de libertad.

2.1.4. Conclusiones del capıtulo

El trabajo de tesis propuesto esta enmarcado en las herramientas de apoyo para los

desarrolladores de aplicaciones de realidad virtual. La herramienta propuesta es mas que

una extension, es un rediseno que amplıa y mejora el trabajo hecho anteriormente por

[8]. El traductor propuesto en esta tesis difiere del anterior principalmente en que incluye

otras primitivas con el objetivo de crear figuras irregulares por lo que para su diseno se

incluira SetPoint, IndexeLineSet e IndexedFaceSet como parte medular del traductor.

Se usara el lenguaje nativo de Java 3D, es decir Java, lo cual permitira aprovechar las

caracterısticas propias de los lenguajes orientados a objetos tales como la abstraccion,

el encapsulamiento, la herencia y el polimorfismo.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 43: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

2.1. Trabajos en realidad virtual 19

Tabla 2.2: Estado del arte, resumen del analisis de documentosNombre delartıculo

Innovacion Ventajas Desventajas Notas

Analisis com-parativo deVRML, X3Dy Java 3D [13]

Primer anali-sis de estoslenguajes

Descripcionde sus forma-tos

No profundi-za en el anali-sis

Estudio muyescueto

Sistema de di-seno de en-tornos virtua-les en edifi-cios domotiza-dos con Java3D [18]

Plano en2D, permitevisualizarloen 3D

Se detallancaracterısti-cas de Java3D

Se centra soloen Java 3D

Propone laimportacionde escenariosen diferentesherramientas

Implementacionde camino sinfin para mun-dos virtualespor medio decaminadora[19]

Presentanuna interfazde VRML condispositivosexternos

De formapractica

La caminado-ra genera ace-leracion

Presentauna solucionalterna pararealizar unaconexion deVRML alexterior

Ambientesde realidadvirtual noinmersivamultiusuariocon herra-mientas desoftware libre[17]

Alternativapara un mo-delo teoricode comunica-cion web

Se adapta acualquier pro-blema

El modelo esmuy general

Diseno e im-plementacionde un tra-ductor delenguajes,VRML a Java3D [8]

Ver ApendiceA

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 44: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

20 Capıtulo 2. Estado del arte

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 45: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 3

Marco teorico

3.1. Introduccion

En esta seccion se hace una descripcion del lenguaje de entrada para el traductor

(VRML), ası como del lenguaje resultante (Java). La importancia de Java es doble y

radica en el hecho de ser el lenguaje en el que se programo la aplicacion y al mismo

tiempo porque es el lenguaje en el que se obtiene el codigo de salida del traductor. El

codigo de salida es un codigo fuente en Java que incluye la API Java 3D. Se analizan

tanto para VRML como para la API de Java 3D, las caracterısticas y estructuras que se

usan para renderizar las mismas figuras geometricas, para el manejo de transformaciones

y de la apariencia.

3.2. El lenguaje VRML

VRML (Virtual Reality Modeling Language) es el lenguaje mas usado en las apli-

caciones de realidad virtual y se ha convertido en un estandar. Para crear un archivo

VRML solo se necesita un editor de texto ascii y escribir codigo VRML. Los archivos

21

Page 46: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

22 Capıtulo 3. Marco teorico

fuente en VRML deben tener extension .wrl (world). Una vez creado el archivo VRML,

este se puede visualizar usando un navegador web que tenga instalado un plug-in (como

el Cortona 3D). El archivo VRML es un formato de archivo de descripcion textual para

mundos y objetos 3D interactivos y fue disenado para usarse en internet, intranets y

sistemas clientes locales y con la intencion de ser un formato universal intercambiable

para graficos 3D y multimedia. VRML puede usarse en una amplia variedad de apli-

caciones tales como la ingenierıa, la visualizacion cientıfica, presentaciones multimedia,

entretenimiento, educacion, paginas web y mundos virtuales compartidos.

Su fortaleza radica en que es un lenguaje de descripcion de escenas en la que cada

escena se compone de un numero de objetos. Los objetos pueden ser figuras geometricas

basicas (cubo, cilindro, cono y esfera) o complejas, las cuales tienen una apariencia y

estan orientados en determinadas posiciones. Estos objetos crean lo que se conoce como

mundo de realidad virtual.

Caracterısticas de VRML VRML puede representar tanto a objetos estaticos como

dinamicos animados en 3D con hiperenlaces a otros medios tales como texto, sonido,

pelıculas e imagenes. Los navegadores VRML y las herramientas de autorıa para la

creacion de archivos VRML se encuentran disponibles para diferentes plataformas.

Un archivo VRML esta formado por:

Cabecera: La cabecera es la lınea de inicio del archivo VRML y es siempre la

misma:

#VRML V2.0 utf8

donde VRML V2.0 indica el estandar empleado y utf8 indica el uso de caracteres

internacionales.

Comentarios: Se escriben en una sola lınea, la cual comienza con el sımbolo #.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 47: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 23

Nodos: Son las estructuras mınimas indivisibles las cuales definen las caracterısti-

cas de un objeto o bien las relaciones entre distintos objetos y estos en la mayorıa

de los casos pueden repetirse tantas veces como sea necesario en una escena. Se

deben tener en cuenta las siguientes consideraciones:

• Los nodos contienen campos que describen las propiedades de los objetos y

son de un tipo determinado.

• Cada tipo de nodo tiene una serie de valores predeterminados para cada uno

de sus campos.

• Los campos pueden tener valores simples o vectores.

• VRML es un lenguaje sensible a mayusculas y minusculas.

• Todos los nodos deben comenzar siempre con letra mayuscula.

• Los campos de los nodos deben comenzar siempre con letra minuscula.

• Los numeros se escriben en punto flotante.

• Se recomienda utilizar una lınea distinta para cada nodo, para cada campo y

para cada valor de cada campo.

3.2.1. Nodos

Como se menciono anteriormente, la estructura basica que usa VRML para modelar

un espacio virtual se denomina nodo. Un nodo es una abstraccion de un objeto o un

concepto del mundo real. Los nodos estan ordenados en estructuras jerarquicas deno-

minadas "grafos de escena" (scene graphs). Ejemplos tıpicos de nodos son: esfera, un

punto de luz, los atributos de un material, etc.

Cada nodo tiene las siguientes caracterısticas:

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 48: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

24 Capıtulo 3. Marco teorico

Un nombre tipo, ejemplos: Box, Color, Group, Sphere, Sound, o SpotLight.

Cero o mas campos que definen como cada nodo difiere de otros nodos del mismo

tipo.

Un conjunto de eventos que puede enviar y recibir, y cambian el estado del nodo.

Una implementacion para cada nodo, la cual define como reacciona a eventos.

Los nodos pueden nombrarse y pueden ser usados por otras sentencias como refe-

rencia a una instanciacion especıfica.

Nodo forma (Shape)

El nodo Shape asocia o agrupa un nodo geometry (el cual define la figura geometrica)

con un nodo appearance (que define la apariencia de la geometrıa). Los nodos Shape

pueden formar parte de una jerarquıa de transformacion. Un nodo Shape solo puede

contener un nodo geometry en su campo geometry, los cuales pueden ser: cubo, cono,

esfera y cilindro.

La apariencia de la forma geometrica se describe con el nodo appearance, el cual des-

cribe las propiedades de la apariencia (material y textura) para aplicarse a la geometrıa

de la figura. Los nodos del siguiente tipo pueden especificarse en el campo material del

nodo apariencia: Material. Los nodos de los siguientes tipos pueden especificarse en el

campo texture del nodo Appearance: ImageTexture, PixelTexture y MovieTexture. Los

nodos de los siguientes tipos pueden especificarse en el campo textureTransform del nodo

Appearance: TextureTransform.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 49: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 25

Geometrıa y apariencia

VRML utiliza el nodo Shape para definir la figura geometrica y la apariencia de la

figura. Las figuras geometricas son: cubo, cono, esfera y cilindro. La apariencia puede

ser un color. En otras palabras las formas (Shapes) son los elementos que se pueden

visualizar en forma de objetos visuales en los mundos VRML. La sintaxis del nodo

Shape es la siguiente:

Shape{

geometry ...

appearance ...

}

Los nodos geometricos primitivos son los siguientes:

Box

Cone

Cylinder

Sphere

El campo appearance especifica las propiedades en cuanto al material del objeto,

como color, transparencia, etc. y su textura, y que describe al campo geometry.

Nodo primitivo Box

Sintaxis:

Box{

size ancho altura profundidad

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 50: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

26 Capıtulo 3. Marco teorico

Ejemplo:

Box{

size 2.0 0.5 3.0

}

Las dimensiones que maneja VRML son dimensiones abstractas, pero por costumbre

se considera el metro como la unidad predeterminada. En el ejemplo anterior se definio un

cubo de 2 metros de ancho, 0.5 metros de alto y 3 metros de profundidad.

Nodo primitivo Cone

Sintaxis:

Cone{

height altura

bottomRadius radio_de_la_base

bottom valor_logico

side valor_logico

}

Los campos bottom y side indican que se dibuja la base y la superficie lateral res-

pectivamente. Por omision estos campos son TRUE.

Ejemplo:

Cone{

height 3.0

bottomRadius .75

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 51: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 27

Nodo primitivo Cylinder

Sintaxis:

Cylinder{

height altura

radius radio

bottom valor_logico

side valor_logico

top valor_logico

}

Los campos bottom, side y top indican si se dibujan la base inferior, la superfice

lateral y la base superior del cilindro. Por omision son TRUE.

Ejemplo:

Cylinder{

height 2.0

radius 1.5

}

Nodo primitivo Sphere

Sintaxis:

Sphere{

radius radio

}

Ejemplo:

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 52: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

28 Capıtulo 3. Marco teorico

Sphere{

radius 1.0

}

Observese que la definicion de un nodo primitivo implica la definicion de un objeto,

pero no su visualizacion y esta es la razon por la que se han de encapsular dentro de un

nodo Shape, la cual tambien encapsula su apariencia.

Ejemplo:

#VRML V2.0 utf8

Shape{

geometry Cylinder{

height 2.0

radius 1.5

}

appearance Appearance{

material Material {}

}

}

3.2.2. Figuras irregulares

Mediante la combinacion de las formas geometricas basicas cubo, cono, esfera y

cilindro se pueden obtener otras formas de mayor complejidad, pero siempre que estas

sean figuras regulares lo cual limita su complejidad. Para realizar objetos que no se

pueden hacer a partir de las figuras basicas, VRML proporciona nodos que facilitan el

diseno flexible de figuras irregulares. Se recomienda disenar la geometrıa de un objeto

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 53: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 29

en dos pasos aislados

Especificacion de las coordenadas

Creacion de la forma geometrica

Se indica mediante el nodo Coordinate la posicion de los puntos que se van a utilizar

para construir el objeto. Estos puntos no son visibles en el escenario virtual

Nodo Coordinate

Coordinate {

point [

Eje_x Eje_Y Eje_Z,

Eje_x Eje_Y Eje_Z,

...

Eje_x Eje_Y Eje_Z

]

}

El campo point puede poseer varios puntos, cuyas coordenadas estan separadas por

comas.

Coordinate {

point [

12.0 11.0 17.1,

20.5 13.8 5.3,

14.0 6.1 22.9

]

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 54: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

30 Capıtulo 3. Marco teorico

Creacion de la forma geometrica. Despues de definir los puntos que forman el esque-

leto del objeto, estos se unen. Existen tres formas de unir estos puntos, cada una de las

cuales esta asociada a un nodo diferente.

PointSet

IndexedLineSet

IndexedFaceSet

Estos tres nodos poseen un campo denominado coord que acepta como valor un nodo

Coordinate.

Nodo PointSet Representa un conjunto de puntos situados en las coordenadas indi-

cadas dentro del sistema de coordenadas del nodo padre.

PointSet {

coord Coordinate {

point [ . . . ]

}

color Color {

color [ . . . ]

}

}

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los

puntos que se desean representar. El campo color sirve para definir el color de cada uno

de los puntos. Este campo toma como valor un nodo Color, que a su vez contiene un

campo de tipo color de nuevo. Este ultimo campo describe una lista de colores RGB, de

forma que el primer color corresponde al primer punto descrito por el nodo Coordinate

del campo coord, el segundo color corresponde al segundo punto y ası sucesivamente

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 55: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 31

PointSet {

coord Coordinate {

point [

12.0 11.0 17.1, #1o punto

20.5 13.8 5.3, #2o punto

14.0 6.1 22.9 #3o punto

]

}

color Color {

color [

1.0 0.0 0.0, # 1o punto rojo

0.0 1.0 1.0, # 2o punto verde

1.0 1.0 0.0 # 3o punto amarillo

]

}

}

Si se incluyese este codigo, tal como esta, en un documento VRML, no podrıamos

ver ninguno de estos puntos, ya que como se ha visto anteriormente, para crear un

objeto visible se debe utilizar el nodo Shape, observese que se ha prescindido del campo

appearance del nodo Shape ya que no es necesario, pues los puntos no van a tener la

apariencia por defecto, sino la que se determina en el campo color.

Shape {

geometry PointSet {

coord Coordinate {

point [

12.0 11.0 17.1, #1o punto

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 56: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

32 Capıtulo 3. Marco teorico

20.5 13.8 5.3, #2o punto

14.0 6.1 22.9 #3o punto

]

}

color Color {

color [

1.0 0.0 0.0, # 1o punto rojo

0.0 1.0 1.0, # 2o punto verde

1.0 1.0 0.0 # 3o punto amarillo

]

}

}

}

Nodo IndexedLineSet Permite unir los diferentes puntos especificados en su campo

coord mediante lıneas poligonales.

IndexedLineSet{

coord Coordinate {

point [ . . . ]

}

coordIndex [...]

colorPerVertex valor_logico

color Color {

color [ . . . ]

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 57: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 33

colorIndex [...]

}

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los puntos

que sirven como esqueleto de la figura. El campo coordIndex se utiliza para especificar

entre que puntos se han de trazar las lıneas. Una lınea puede ser trazada utilizando mas

de dos puntos, de forma que se dibuja una lınea entre el primer y el segundo punto, otra

entre el segundo y el tercer punto, y ası sucesivamente.Un ındice con valor -1 indica que

ha finalizado la lınea actual y que comienza la siguiente. Para indicar el primer punto

definido en el nodo Coordinate se utiliza el 0, para el segundo el 1 y ası sucesivamente.

El campo colorPerVertex indica como se han de aplicar los colores sobre las lıneas.

Nodo IndexedFaceSet Permite unir los diferentes puntos especificados en su campo

coord mediante caras poligonales.

IndexedFaceSet{

coord Coordinate {

point [ . . . ]

}

coordIndex [...]

colorPerVertex valor_logico

color Color {

color [ . . . ]

}

colorIndex [...]

}

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los puntos

que sirven como esqueleto de la figura y utiliza los ındices de su campo coorIndex para

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 58: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

34 Capıtulo 3. Marco teorico

especificar las caras poligonales. Un ındice con valor -1 indica que ha finalizado la cara

actual y comienza la siguiente. El campo colorPerVertex indica como se han de aplicar

los colores.

3.2.3. Nodos de transformacion

Muchas figuras compuestas estan hechas con figuras basicas colocadas en diferente

posicion, ya sea que esten trasladadas o rotadas, ademas se pueden hacer mas chicas o

mas grandes aplicando un escalamiento. VRML maneja las transformaciones a traves

del nodo transformacion tal como se mueestra a continuacion.

Con rotacion:

#VRML V2.0 utf8

Transform {

rotation 1 0 0 0.872664625997165

children [

Shape{

geometry Cone{

bottomRadius 0.3 height 0.5

}

appearance Appearance{

material Material {

diffuseColor 0.5 0.9 0.3

}

}

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 59: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.2. El lenguaje VRML 35

]

}

Con traslacion:

#VRML V2.0 utf8

Transform {

translation -0.4 0 0

children [

Shape{

geometry Cone{

bottomRadius 0.5 height 0.7

}

}

]

}

Con escalamiento:

#VRML V2.0 utf8

Transform {

scale 0.5 0.5 0.5

children [

Shape{

geometry IndexedFaceSet{

coord Coordinate {

point [

-1.0 1.0 1.0,

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 60: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

36 Capıtulo 3. Marco teorico

1.0 1.0 1.0,

1.0 1.0 -1.0,

-1.0 1.0 -1.0,

-1.0 -1.0 1.0,

1.0 -1.0 1.0,

1.0 -1.0 -1.0,

-1.0 -1.0 -1.0,

]

}

coordIndex[

0,1,2,3,-1

7,6,5,4,-1

0,4,5,1,-1

1,5,6,2,-1

2,6,7,3,-1

3,7,4,0

]

}

appearance Appearance{

texture ImageTexture {

url "ladrillo1.jpg"

}

}

}

]

}

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 61: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.3. El lenguaje de programacion Java 37

3.2.4. Conclusiones acerca de VRML

Despues de esta revision al lenguaje VRML podemos resumir:

VRML es un lenguaje de realidad virtual intuitivo, flexible y poderoso.

Se pueden crear figuras complejas a partir de las primitivas basicas: cubo, cono,

esfera y cilindro.

No es muy difıcil la curva de aprendizaje, en pocas horas se puede empezar a

desarrollar aplicaciones.

Se requiere un plug-in para poder visualizarlo en un navegador web.

No existe forma de interconectar una aplicacion VRML a dispositivos hardware.

Su sintaxis no es muy estricta, lo cual causa que se escriba codigo no bien formado.

3.3. El lenguaje de programacion Java

Java es un lenguaje de programacion de proposito general disenado para producir

software de calidad y tiene como caracterısticas:

Es orientado a objetos: soporta las caracterısticas abstraccion, encapsulacion, he-

rencia y polimorfismo.

Multiplataforma: Los mismos binarios funcionan correctamente en Windows 7/Vis-

ta/NT/95 y Unix/Linux y Power/Mac.

Robusto: Los errores se detectan en el momento de producirse, lo que facilita la

depuracion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 62: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

38 Capıtulo 3. Marco teorico

Seguro: Applets recuperados por medio de la red no pueden causar dano a los

usuarios.

Confiable: Minimiza los errores que se escapan a la fase de prueba.

Posee bibliotecas de clases estandares: manejo de archivos, comunicacion de datos,

acceso a internet, a bases de datos e interfaces graficas.

Simple: no posee aritmetica de punteros, no se necesita liberar la memoria y no

tiene herencia multiple.

No se requiere licencia para su uso.

Existen IDE´s gratuitos.

3.4. La API Java 3D

¿Que es Java 3D? Java 3D es una interfaz que permite escribir programas para re-

presentar en interactuar en tres dimensiones y provee una jerarquıa sofisticada de clases

para crear y manipular objetos, y estructuras en 3D, a traves de una API que consta de

constructores que crean visualizaciones, animaciones y renderizados 3D.

La jerarquıa de clases Java 3D permite trabajar a un alto nivel de abstraccion para

crear y manipular objetos graficos en 3D. Los objetos residen en un mundo virtual se

renderizan muchas veces en forma automatica. Un programa 3D crea instancias de los

objetos de Java 3D y las situa dentro de una estructura denominada diagrama de la

escena (scene graph). El diagrama de escena es un conjunto de objetos 3D estructura-

dos en forma de arbol que especifica el contenido del universo virtual y a la vez como

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 63: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.4. La API Java 3D 39

sera representado (renderizado).

Java 3D usa los siguientes simbolos:

Universal Virtual y Local representan objetos de clases especıficas.

Group , Leaf y NodeComponent se usan para indicar la subclase de un objeto

especıfico.

La flecha continua representa la relacion de dependencia padre-hijo.

La flecha discontinua hace referencia a otros objetos de otras ramas del arbol. El

numero de flechas que pueden salir de un objeto no estan limitadas.

Java 3D es una extension al lenguaje Java, la cual se proporciona como una API con

el objetivo de desarrollar aplicaciones graficas tridimensionales y consta de una jerarquıa

de clases y una coleccion de constructores y metodos para crear y manejar geometrıas

3D y sus respectivas apariencias.

Una aplicacion Java 3D crea instancias de objetos Java 3D y las ubica en una estruc-

tura de datos tipo arbol denominada escenario grafico o diagrama de escena. El escenario

grafico especifica completamente el contenido de un universo virtual.

Para facilitar el desarrollo de las aplicaciones, la API proporciona las clases de utili-

dades que reducen significativamente el numero de lıneas de codigo en un programa Java

3D. En este trabajo el termino objeto visual se utilizara para referirnos a un "objeto

del escenario grafico" (por ejemplo, un cubo o una esfera). Por otro lado el termino

objeto solo se usara para referirnos a una instancia de una clase y el termino conteni-

do se usara para referirnos a objetos visuales en un escenario grafico que forman un todo.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 64: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

40 Capıtulo 3. Marco teorico

Partimos del concepto de escenario grafico, el cual es una estructura de datos com-

puesta de nodos y arcos. Un nodo es un elemento dato y un arco es una relacion entre

elementos datos. Los nodos en un escenario grafico son las instancias de las clases Java

3D. Los arcos representan dos tipos de relaciones entre instancias Java 3D. La relacion

padre-hijo: Un nodo Group puede tener cualquier numero de hijos, pero solo un padre.

Un nodo hoja solo puede tener un padre y no puede tener hijos. La otra relacion es la

referencia. Una referencia asocia un objeto NodeComponent con un nodo del escenario

grafico. Los objetos NodeComponent definen la geometrıa y los atributos de apariencia

usados para renderizar los objetos visuales.

Un escenario grafico esta formado desde los arboles con raıces en los objetos Locale.

Los NodeComponents y las referencias a arcos no forman parte del escenario grafico.

Para disenar un universo virtual Java 3D se dibuja un escenario grafico usando un

conjunto de sımbolos estandar como se muestra en la figura 3.1:

Figura 3.1: Sımbolos estandar para Java 3D

Es necesario tener en consideracion lo siguiente:

Cada escenario grafico tiene un solo VirtualUniverse.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 65: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.4. La API Java 3D 41

Este objeto tiene una lista de objetos Locale.

Un objeto Locale proporciona una referencia a un punto en el universo virtual (los

objetos Locale se pueden considerar como marcas que determinan la localizacion

de los objetos visuales en el universo virtual).

Un objeto de un escenario grafico no puede existir en mas de un universo virtual.

Se debe usar una y solo una instancia de VirtualUniverse en cada programa Java

3D.

Un objeto VirtualUniverse puede referenciar muchos objetos Locale (La mayorıa

de los programas Java 3D tienen un solo objeto Locale).

Cada objeto Locale puede servir de raız para varios sub-graficos del escenario

grafico.

Un objeto BranchGroup es la raız de un subgrafico, o rama grafica.

Hay dos categorias de escenarios sub-graficos: la rama de vista grafica (rama de

representacion) y la rama de contenido grafico.

La rama de contenido grafico especifica el contenido del universo virtual: geometrıa,

apariencia, comportamiento, localizacion, sonidos y luces.

La rama de vista grafica especifica los parametros de visualizacion, como la posicion

de visualizacion y la direccion.

Las dos ramas juntas especifican la mayorıa del trabajo que el renderizador tiene

que hacer.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 66: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

42 Capıtulo 3. Marco teorico

3.4.1. Pasos para desarrollar una aplicacion en Java 3D

Las subclases de SceneGraphObject son los bloques fundamentales que conforman

los escenarios graficos y se deben colocar en el siguiente orden:

1. Crear un objeto soporte: Canvas3D.

2. Crear un objeto universo Virtual: VirtualUniverse.

3. Crear un objeto de referencia: Locale (adjuntarlo al objeto VirtualUniverse).

4. Construir la Rama de Vista o Representacion Grafica:

a) Crear el objeto de presentacion: View

b) Crear el objeto plataforma: ViewPlatform

c) Crear el objeto cuerpo: PhysicalBody

d) Crear el objeto entorno: PhysicalEnvironment (Adjuntar los objetos View-

Platform, PhysicalBody, PhysicalEnvironment, y Canvas3D al objeto View)

5. Construir la(s) rama(s) grafica(s) de contenido.

6. Compilar la(s) rama(s) grafica(s).

7. Insertar los subgraficos (otras ramas) dentro del objeto de referencia Locale.

En la figura 3.2 se muestra la separacion de las dos ramas:

La rama de representacion es la que esta encerrada por el marco azul y esta se

consigue usando la clase SimpleUniverse y corresponde a los incisos b, c y d.

La rama de contenido es la rama que desarrolla un programador 3D en donde se

codifican las geometrıas y apariencias de los objetos representados en la escena.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 67: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.4. La API Java 3D 43

Figura 3.2: Rama de representacion y la rama de contenido de Java 3D

La clase SimpleUniverse El constructor de SimpleUniverse crea un escenario grafico

que incluye un objeto VirtualUniverse y Locale, y una rama de vista grafica completa.

Esta rama grafica creada usa una instancia de las clases de conveniencia ViewingPlat-

form y Viewer en lugar de las clases nucleo usadas para crear una rama de vista grafica.

Observese que SimpleUniverse solo usa indirectamente los objetos View y ViewPlatform

del nucleo de Java 3D. Los objetos SimpleUniverse suministran la funcionalidad de todos

los objetos que hay dentro del recuadro azul de la figura 3.3.

Cuando se usan los objetos de SimpleUniverse el procedimiento se simplifica de la

siguiente manera:

1. Crear un objeto Canvas3D.

2. Crear un objeto SimpleUniverse que referencia al objeto Canvas3D anterior.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 68: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

44 Capıtulo 3. Marco teorico

Figura 3.3: La clase SimpleUniverse de Java 3D

3. Personalizar el objeto SimpleUniverse.

4. Construir la rama de contenido.

5. Compilar la rama de contenido grafico.

6. Insertar la rama de contenido grafico dentro del objeto Locale de SimpleUniverse.

7. Constructores de SimpleUniverse.

Conjunto de sentencias import Todo programa en Java 3D debe incluir al menos

las sentencias import que se muestran en la figura 3.4.

La clase extendida de toda aplicacion Java 3D Un programa Java 3D tıpico

empieza definiendo una nueva clase que extiende la clase Applet. Por ejemplo si se

definiese MiClase3D.java, la cual debe extender la clase Applet. La gran mayorıa de

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 69: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

3.4. La API Java 3D 45

1 import javax.swing.JFrame;

2 import java.awt.BorderLayout;

3 import java.awt.Frame;

4 import java.awt.event.WindowEvent;

5 import java.awt.event.WindowListener;

6 import java.awt.GraphicsConfiguration;

7 import com.sun.j3d.utils.image.TextureLoader;

8 import com.sun.j3d.utils.universe.SimpleUniverse;

9 import com.sun.j3d.utils.geometry.*;

10 import javax.media.j3d.*;

Figura 3.4: Sentencias import necesarias para todo programa Java 3D

programas Java 3D utilizan el fragmento de codigo mostrado en la figura 3.5 y que

corresponde a la rama de representacion donde se adapta el objeto SimpleUniverse con

los valores de configuracion.

3.4.2. Conclusiones acerca de Java 3D

Despues de esta revision a la API de Java 3D podemos resumir:

Java 3D es una API muy poderosa para realizar aplicaciones 3D.

Requiere de un amplio conocimiento de las clases de la API.

Se requiere de mucho codigo para realizar aplicaciones sencillas.

Exige un buen nivel de programacion.

La informacion para aprender Java 3D es muy escueta y no existen muchos ejem-

plos disponibles.

Java 3D tiene la ventaja de ser una extension del lenguaje de programacion Java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 70: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

46 Capıtulo 3. Marco teorico

1 public class MiClase3D extends Applet {

2 public MiClase3D() { // constructor

3 setLayout(new BorderLayout());

4 Canvas3D canvas3D = new Canvas3D(null);

5 add("Center", canvas3D);

6 BranchGroup scene = createSceneGraph();

7 scene.compile();

8

9 // SimpleUniverse es una clase Convenience Utility

10 SimpleUniverse simpleU = new SimpleUniverse(canvas3D);

11

12 // Esto mueve el ViewPlatform un poco atras para que

13 // Los objectos en la escena pueden visualizarse.

14 simpleU.getViewingPlatform().setNominalViewingTransform();

15

16 simpleU.addBranchGraph(scene);

17 } // fin de MiClase3D

Figura 3.5: Codigo corespondiente a la rama de representacion

de esta manera se tienen todas las ventajas que da el lenguaje Java como son la

portabilidad, plataforma neutra, orientado a objetos, etc.

Existe una API que permite la comunicacion con el hardware.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 71: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 4

Desarrollo

En esta seccion se describen las clases y el algoritmo que se disenaron durante el

desarrollo del Traductor VRML a Java 3D.

4.1. Diagrama a bloques del Traductor VRML a Ja-

va 3D

El Traductor VRML a Java 3D es una aplicacion software, la cual recibe como en-

trada un codigo fuente VRML bien formado. La aplicacion lo traduce, obteniendose a la

salida un codigo en Java 3D, el cual tiene la misma funcionalidad que el archivo fuente

VRML.

La figura 4.1 muestra los tres pasos fundamentales del proceso del Traductor VRML

a Java 3D.

El Traductor esta conformado por estructuras de datos y algoritmos que identifican

las estructuras de los archivos VRML, las cuales consisten de nodos geometricos, de

47

Page 72: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

48 Capıtulo 4. Desarrollo

transformaciones y de texturas, todas estas combinadas para formar escenarios comple-

jos.

Durante el proceso de traduccion se crean segmentos de codigo en Java 3D que rea-

lizan la misma funcionalidad que el archivo original en VRML y se concatenan para

formar el archivo de salida.

Es muy importante que el usuario de la herramienta, tenga la seguridad de que el

codigo fuente VRML es funcionalmente correcto, lo cual se puede realizar probando

previamente el archivo VRML usando un explorador web que soporte archivos VRML

o bien instalando un plug-in para VRML, como Cortona 3D.

Figura 4.1: Diagrama conceptual del Traductor VRML a Java 3D

Posteriormente, una vez obtenido del Traductor el archivo generado en Java, este se

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 73: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.2. Algoritmo del Traductor VRML a Java 3D 49

puede compilar usando el compilador de Java para obtener el archivo .class y luego este

se puede ejecutar usando la maquina virtual de Java para visualizar el escenario 3D.

Estos dos pasos, el de la compilacion y la ejecucion se pueden llevar a cabo usando un

ambiente de desarrollo como NetBeans o directamente a traves de la lınea de comandos,

una vez obtenido el archivo .java generado por el Traductor VRML a Java 3D.

De esta forma solo se requiere compilar el archivo .java para obtener el archivo .class

y este a su vez ejecutarlo en la maquina virtual. No se debe olvidar que se requiere te-

ner instalados previamente el compilador Java y la maquina virtual de Java para poder

visualizar la renderizacion del archivo de salida en Java 3D. Estas fases estan represen-

tadas por las flechas amarillas en la figura 4.2.

Las fases del Traductor VRML a Java 3D estan representadas por los tres primeros

bloques y las flechas azules. El presente trabajo, ademas de desarrollar el traductor,

proporciona una herramienta completa que incluye una interfaz grafica de usuario que

realiza todos los pasos representados por los seis bloques y las correspondientes flechas

azules y amarillas, tal como se ve en la figura 4.2.

4.2. Algoritmo del Traductor VRML a Java 3D

El algoritmo para traducir el archivo VRML a su correspondiente codigo en Java 3D

se muestra a continuacion:

1. Crear el flujo para abrir el Archivo VRML.

2. Recorrer el archivo VRML para crear un arbol que contenga las geometrıas, sus

propiedades, apariencia y transformaciones.

3. Recorrer nuevamente el archivo para obtener las geometrıas (Cone, Box, Sphere,

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 74: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

50 Capıtulo 4. Desarrollo

Figura 4.2: Diagrama a bloques completo de la herramienta Traductor VRML a Java 3D

Cone, IndexedLineSet, Pointset e IndexedFaceset), sus propiedades y apariencia.

Cada geometrıa se almacena en un nodo de una lista enlazada.

4. Recorrer el arbol VRML generado en el paso 2 para obtener una lista de las trans-

formaciones (scale, rotate, translate) y el valor que toma la transformacion, ademas

de almacenar a que figura se aplica dicha transformacion. Cada transformacion se

almacena en un nodo de una lista enlazada.

5. Crear el flujo para abrir en modo escritura el archivo Java que se generara.

6. Escribir en el archivo java los encabezados del archivo Java (import).

7. Escribir en el archivo Java el constructor de la clase con las instrucciones para

establecer las caracterısticas iniciales del mundo virtual.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 75: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.3. Diagrama de clases del traductor VRML a Java 3D 51

8. Escribir en el archivo Java las geometrıas contenidas en la lista de geometrıas.

9. Escribir en el archivo Java las transformaciones contenidas en la lista de transfor-

maciones y enlazarlas con las figuras correspondientes.

10. Escribir los metodos para la apariencia de cada una de las geometrıas.

11. Escribir los metodos de cada una de las transformaciones.

12. Desplegar en la aplicacion el archivo Java que se genera.

13. Compilar el archivo Java.

14. Ejecutar el archivo Java.

4.3. Diagrama de clases del traductor VRML a Java

3D

La herramienta se diseno siguiendo el paradigma orientado a objetos. Se crearon las

clases con el fin de aprovechar las caracterısticas de encapsulamiento y modularidad,

de esta forma se pueden realizar extensiones de forma ordenada y limpia. La figura 4.3

muestra el diagrama de clases utilizada en el diseno del traductor VRML a Java 3D.

4.4. Diagrama de actividades del traductor VRML

a Java 3D

El diagrama de actividades que se muestra en la figura 4.4 resume las diferentes

tareas que realiza la aplicacion para llevar a cabo la traduccion, solo se presentan las

tareas mas importantes.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 76: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

52 Capıtulo 4. Desarrollo

Figura 4.3: Diagrama de clases de la herramienta traductor VRML a Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 77: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.4. Diagrama de actividades del traductor VRML a Java 3D 53

Figura 4.4: Diagrama de Actividades de la herramienta Traductor VRML a Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 78: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

54 Capıtulo 4. Desarrollo

4.5. Especificaciones del archivo VRML que se toma

como entrada para Traductor VRML a Java 3D

El Traductor VRML a Java 3D requiere que los archivos cumplan con las siguientes

especificaciones:

Cada nodo debe estar en una lınea.

Se debe colocar primero la geometrıa y despues la apariencia.

La llave de inicio debe estar con el nodo que se analiza.

Las dimensiones de los nodos basicos deben estar en una sola lınea y en un orden

preestablecido.

Los puntos de las coordenadas deben llevar un orden.

Las llaves y corchetes de cierre se deben colocar en lıneas separadas.

No se deben dejar lıneas en blanco.

En la figura 4.5 se muestra un ejemplo representativo de lo que se menciono ante-

riormente.

4.6. Especificaciones de diseno software de la herra-

mienta: Traductor VRML a Java 3D

La herramienta Traductor de VRML a Java 3D funciona bajo las siguientes especi-

ficaciones las cuales se deben considerar en todo momento.

Instalar previamente la maquina virtual de Java.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 79: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.6. Especificaciones de diseno software de la herramienta: TraductorVRML a Java 3D 55

1 #VRML V2.0 u t f 82 Shape{3 geometry Cylinder{4 rad iu s 0 .4 he ight 0 .55 }6 appearance Appearance{7 t ex ture ImageTexture{8 u r l ” p i so2 . jpg ”9 }

10 }11 }12 Transform {13 t r a n s l a t i o n 0 .8 0 014 c h i l d r e n [15 Shape{16 geometry Cone{17 bottomRadius 0 .4 he ight 0 .818 }19 appearance Appearance{20 t ex ture ImageTexture {21 u r l ” l a d r i l l o 1 . jpg ”22 }23 }24 }25 ]26 }27 }

Figura 4.5: Ejemplo que cumple con las especificaciones de la estructura de un archivo validopara el Traductor VRML a Java 3D

Instalar previamente el compilador de Java.

Instalar la API para Java 3D.

Instalar el entorno de desarrollo NetBeans.

Instalar previamente la herramienta Traductor VRML a Java 3D, producto de esta

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 80: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

56 Capıtulo 4. Desarrollo

tesis.

Se recomienda instalar el plug-in Cortona 3D, para que se pueda visualizar en el

navegador los archivos VRML, con el unico fin de verificar la funcionalidad del

archivo VRML y a la vez para comparar su respectivas renderizaciones.

Los escenarios pueden contener las primitivas basicas para crear figuras regulares:

Box, Cone Cylinder y Sphere.

Los escenarios pueden contener los nodos para crear figuras irregulares : PointSet,

IndexedLineSet e IndexedFaceSet.

Los escenarios pueden contener los nodos de transformacion: rotacion, translacion

y escalamiento, los cuales deben estar correctamente anidados.

Manejo de texturas para las figuras geometricas. Se debera guardar el archivo de

la textura en el mismo directorio donde se encuentra el archivo fuente VRML. No

olvidar considerar que los archivos de textura deben ser potencias de 2, es decir

tendran un tamano de 128x128, 256x256, etc. debido a que Java 3D ası lo exige

[27].

La interfaz grafica de usuario permite al usuario seleccionar el archivo de entrada,

siempre que tenga extension .wrl.

Si los nodos estan correctamente anidados, estos se podran observar en el area para

la representacion jerarquica grafica (arbol) de los nodos del archivo a traducir. Se

pueden observar las transformaciones de cada geometrıa.

Se debe guardar la salida de la traduccion con la extension .java para poder reali-

zarse la compilacion del archivo Java 3D. Esto se realiza de forma automatica en

la interfaz grafica.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 81: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.7. Ejemplo del uso del Traductor VRML a Java 3D 57

La ejecucion se realiza en forma automatica, por lo que no hay necesidad de buscar

el archivo tipo class y ejecutarlo por separado usando el IDE o la lınea de comandos.

La salida del traductor, el cual es codigo Java 3D, se puede observar en la interfaz

grafica, lo que evita que el desarrollador tenga que recurrir a un editor o al IDE

parea observar el codigo generado.

Como ayuda al usuario la herramienta realiza la habilitacion y deshabilitacion de

los pasos del proceso de conversion: abrir archivo VRML, convertir a Java, compilar

y ejecutar, de esta forma hace mas facil su uso.

4.7. Ejemplo del uso del Traductor VRML a Java

3D

En esta seccion se explica detalladamente el procedimiento completo para usar la

herramienta Traductor VRML a Java 3D. Se parte del hecho de se cuenta con un archivo

VRML bien formado que se usa como entrada para la herramienta.

1. Una vez instalados los archivos correspondientes de la herramienta, abra el entorno

de desarrollo netBeans y ejecute la aplicacion. Aparecera en la pantalla la interfaz

grafica que se muestra en la figura 4.6, donde unicamente estan habilitados los

botones de abrir archivo, acerca de y salir.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 82: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

58 Capıtulo 4. Desarrollo

Figura 4.6: Pantalla de inicio de la herramienta traductor VRML a Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 83: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.7. Ejemplo del uso del Traductor VRML a Java 3D 59

2. Se procede a seleccionar un archivo VRML, que cumpla con las especificaciones

dadas anteriormente. Pulse el boton con el icono de la carpeta abierta tal como se

muestra en la figura 4.7. Selecione un archivo VRML.

Figura 4.7: Pantalla que muestra la seleccion de un archivo de entrada de la herramientatraductor VRML a Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 84: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

60 Capıtulo 4. Desarrollo

3. Una vez abierto el archivo aparece el arbol jerarquico de los nodos que conforman

el archivo VRML. Los nodos aparecen al inicio contraidos, tal como se muestra en

la figura 4.8.

Figura 4.8: Pantalla que muestra los nodos contraidos de la estructura de archivo VRML.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 85: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.7. Ejemplo del uso del Traductor VRML a Java 3D 61

4. En la parte izquierda de la interfaz grafica aparece la estructura del archivo VRML

mostrando sus nodos anidados. Los nodos se pueden expandir o contraer tal como

se muestra en la figura 4.9.

Figura 4.9: Pantalla que muestra el contenido de los nodos del arbol del archivoVRML expan-didos

5. Pulse el boton convertir a Java, le pedira el nombre con el que desea guardar el

archivo. No olvide escribir la extension .java, de otra forma no se podra compilar

con el compilador de Java. Recuerde tener presente que los archivos de texturas

deben estar ya ubicados en el directorio donde se encuentran los archivos VRML.

Se recomienda tener un directorio de trabajo donde esten todos los archivos VRML,

los de Java y los de las texturas. Ver figura 4.10.

6. Aparecera en la interfaz grafica el codigo generado en Java 3D, el cual es el mismo

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 86: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

62 Capıtulo 4. Desarrollo

Figura 4.10: Pantalla que muestra la ventana de dialogo para guardar el archivo traducido a.java

que se guardo en el archivo .java. Este archivo sera el que se compilara con el

compilador de Java y posteriormente se ejecutara. El usuario podra observar todo

el codigo haciendo uso del scrollbar y tendra la facilidad de copiar y pegar el codigo

para probarlo desde la lınea de comandos, si ası lo desea, de esta forma se evitan

errores de modificacion por descuido. El codigo no es modificable por cuestiones

de seguridad en la pantalla de salida. Ver figura 4.11.

7. Aparecen las ventanas de la ejecucion y la de renderizado del archivo .class gene-

rado en Java 3D por el Traductor VRML a Java 3D. Ver figura 4.12.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 87: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

4.7. Ejemplo del uso del Traductor VRML a Java 3D 63

Figura 4.11: Pantalla que muestra la generacion de codigo Java que obtiene el Traductor VRMLa Java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 88: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

64 Capıtulo 4. Desarrollo

Figura 4.12: Pantalla que muestra la renderizacion del codigo Java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 89: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 5

Experimentos y Resultados

En este capıtulo se describen las pruebas que se realizaron con el Traductor VRML

a Java 3D. Se usaron varios escenarios con diferentes figuras y caracterısticas. Los re-

sultados aparecen en orden creciente en cuanto a complejidad debido al numero de

figuras y transformaciones. En los ejemplos de este capıtulo se resalta el uso de figuras

geometricas regulares e irregulares, ası como las transformaciones de traslacion, rotacion

y escalamiento, y el manejo de las texturas. Tambien se incluyen ejemplos con los nodos

SetPoint, IndexedLineSet e IndexedFaceSet donde se muestra su gran importancia en la

representacion de figuras irregulares.

Para cada uno de los ejemplos se presenta el siguiente orden para la comprension del

codigo y la comparacion de los resultados.

Codigo fuente en VRML.

Estructura de arbol de los nodos del archivo VRML.

Codigo resultante del traductor VRML a Java 3D.

Renderizacion del archivo VRML usando el navegador y el plug-in Cortona 3D.

65

Page 90: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

66 Capıtulo 5. Experimentos y Resultados

Renderizacion del archivo Java 3D.

Cabe senalar que los codigos VRML deben estar bien estructurados y bien formados.

Como se puede observar en el codigo de salida en Java 3D, existen fragmentos de codigo

que siempre son constantes tales como la cabecera que contiene los import y la parte del

universo virtual, por lo que solo se explica el codigo completo en el primer ejemplo.

Los demas ejemplos se presentan en forma completa para la comprension de ambos

codigos y sus correspondientes renderizaciones para su comparacion.

En los apendices B y C se muestran los codigos de entrada en VRML y de salida en Java

3D respectivamente de cuatro ejemplos de gran complejidad con el fin de demostrar la

capacidad de la herramienta desarrollada en la presente tesis.

5.1. Escenarios con una figura regular

En esta parte se presentan figuras geometricas basicas tales como la caja o cubo, el

cilindro, el cono y la esfera.

5.1.1. Caja o cubo con rotacion

La figura 5.1 muestra el codigo VRML de un cubo con rotacion y con apariencia.

La figura 5.2 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML del cubo con rotacion.

Las figura 5.3 muestra la cabecera del programa que contiene las clases necesarias

para compilar el codigo. El paquete java.media.j3d incluye la clase Canvas3D que define

el soporte sobre el cual se representaran los objetos en 3D y la clase BranchGroup la

cual sirve para vincular todos los elementos que constituyen la rama de contenido del

diagrama de escena. Archivo: CajaRotada01.java.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 91: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 67

1 #VRML V2.0 u t f 82 Transform {3 r o t a t i o n 0 1 0 0.5235987755982994 c h i l d r e n [5 Shape{6 geometry Box{7 s i z e 0 . 3 0 .3 0 .38 }9 appearance Appearance{

10 mate r i a l Material {11 d i f f u s e C o l o r 0 . 8 0 . 7 0 . 412 }13 }14 }15 ]16 }

Figura 5.1: Caja o cubo con rotacion y con apariencia. Archivo: CajaRotada01.wrl

Figura 5.2: Arbol de la caja o cubo con rotacion y apariencia

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 92: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

68 Capıtulo 5. Experimentos y Resultados

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import javax . vecmath . Co lor3 f ;12 import javax . vecmath . Vector3d ;13 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;14 import javax . vecmath . Point3d ;15 import javax . vecmath . Po int3 f ;16 import javax . vecmath . Co lor3 f ;17 import javax . vecmath . ∗ ;

Figura 5.3: Paquetes de clases necesarios para compilar una aplicacion en Java 3D, las cualesson siempre utilizadas por que el traductor VRML a Java 3D en el codigo de salida en Java.

La figura 5.4 muestra el constructor para el codigo de salida en Java de un cubo con

rotacion y apariencia. Archivo: CajaRotada01.java.

La figura 5.5 muestra el main del programa generado en el codigo de salida en Java

de un cubo con rotacion y apariencia. Archivo: CajaRotada01.java.

La figura 5.6 muestra el codigo para la rama del contenido (BranchGroup) donde se

crea la escena de un cubo con rotacion y apariencia. Archivo: CajaRotada01.java.

La figura 5.7 muestra el codigo que determina la apariencia de un cubo con rotacion.

Archivo: CajaRotada01.java.

La figura 5.8 muestra el codigo que realiza la transformacion para efectuar la rotacion

de un cubo con rotacion y apariencia. Archivo: CajaRotada01.java.

La figura 5.9 muestra la renderizacion del archivo fuente original en VRML del cubo

con rotacion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 93: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 69

1 public class CajaRotada01 extends JFrame {2 public CajaRotada01 ( ) {3 setLayout (new BorderLayout ( ) ) ;4 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;5 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;6 add ( ” Center ” , canvas ) ;7 BranchGroup escena = createSceneGraph ( ) ;8 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;9 simpleU . getViewingPlatform ( ) .

setNominalViewingTransform ( ) ;10 simpleU . addBranchGraph ( escena ) ;11 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion

de l a escena usando e l raton .12 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;13 ob . setSchedul ingBounds (new BoundingSphere (new

Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;14 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior

( ob ) ;15 }

Figura 5.4: Constructor de la caja o cubo con rotacion y apariencia. Archivo: CajaRota-da01.java

1 public stat ic void main ( St r ing args [ ] ) {2 CajaRotada01 frame = new CajaRotada01 ( ) ;3 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE)

;4 frame . s e t S i z e (300 , 300) ;5 frame . s e t V i s i b l e ( true ) ;6 }

Figura 5.5: main para la caja o cubo con rotacion. Archivo: CajaRotada01.java

La figura 5.10 muestra la renderizacion del archivo de salida generado en Java 3D

del cubo con rotacion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 94: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

70 Capıtulo 5. Experimentos y Resultados

1 public BranchGroup createSceneGraph ( ) {2 BranchGroup r a i z = new BranchGroup ( ) ;3 BoundingSphere bounds = new BoundingSphere (new

Point3d ( ) , Double .MAX VALUE) ;4 D i r e c t i o n a l L i g h t l 1 =5 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f

) , new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;6 l 1 . s e t In f luenc ingBounds ( bounds ) ;7 r a i z . addChild ( l 1 ) ;8 D i r e c t i o n a l L i g h t l 2 =9 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f

) , new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;10 l 2 . s e t In f luenc ingBounds ( bounds ) ;11 r a i z . addChild ( l 2 ) ;12 D i r e c t i o n a l L i g h t l 3 =13 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f

) , new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;14 l 3 . s e t In f luenc ingBounds ( bounds ) ;15 r a i z . addChild ( l 3 ) ;16 D i r e c t i o n a l L i g h t l 4 =17 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f

) , new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;18 l 4 . s e t In f luenc ingBounds ( bounds ) ;19 r a i z . addChild ( l 4 ) ;20 Box box0= new Box ( 0 . 1 5 f , 0 . 1 5 f , 0 . 1 5 f , c r eaApar i enc ia0

( ) ) ;21 TransformGroup tg0=new TransformGroup (

trans formac ion0 ( ) ) ;22 tg0 . addChild ( box0 ) ;23 r a i z . addChild ( tg0 ) ;24 r a i z . compi le ( ) ;25 return r a i z ;26 }

Figura 5.6: Rama del contenido (BranchGroup) para la caja o cubo con rotacion y apariencia.Archivo: CajaRotada01.java

.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 95: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 71

1

2 public Appearance creaApar i enc ia0 ( ) {3 Appearance app=new Appearance ( ) ;4 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 7 f , 0 . 4 f ) ;5 Mater ia l mate r i a l=new Mater ia l ( ) ;6 mate r i a l . s e t D i f f u s e C o l o r ( c o l o r ) ;7 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f ,

1 . 0 f ) ) ;8 mate r i a l . s e t S h i n i n e s s ( 30 . 0 f ) ;9 app . s e t M a t e r i a l ( mate r i a l ) ;

10 return app ;11 }

Figura 5.7: Segmento de codigo que muestra la apariencia para la caja o cubo con rotacion.Archivo: CajaRotada01.java

1 public Transform3D trans formac ion0 ( ) {2 Transform3D t0=new Transform3D ( ) ;3 t0 . rotY (0 .523598775598299) ;4 return t0 ;5 }6

7 }

Figura 5.8: Segmento de codigo que realiza la rotacion para la caja o cubo con rotacion. Archivo:CajaRotada01.java

Conclusiones de la renderizacion del la caja rotada El resultado obtenido enla renderizacion en Java 3D muestra la sensacion de profundidad de la figura geometri-ca, esto debido a la propuesta durante la conversion del codigo. Se anadio el siguientesegmento de codigo para obtener este resultado:

DirectionalLight l =

new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(-1f, 0.0f, -0.4f) );

l.setInfluencingBounds(bounds);

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 96: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

72 Capıtulo 5. Experimentos y Resultados

Figura 5.9: Renderizacion de la caja o cubo con rotacion en VRML

5.1.2. Cilindro con apariencia

La figura 5.13 muestra el codigo VRML de un cilindro con apariencia.

La figura 5.12 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML del cilindro con apariencia.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 97: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 73

Figura 5.10: Renderizacion de la caja o cubo con rotacion en Java 3D

1 #VRML V2.0 u t f 82 Shape{3 geometry Cylinder{4 rad iu s 0 .3 he ight 0 .55 }6 appearance Appearance{7 mate r i a l Material{8 d i f f u s e C o l o r . 3 . 2 19 }

10 }11 }

Figura 5.11: Cilindro con apariencia. Archivo: CilindroApariencia01.wrl

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 98: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

74 Capıtulo 5. Experimentos y Resultados

Figura 5.12: Arbol del Cilindro con apariencia

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 99: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 75

La figura 5.13 muestra el codigo completo en Java para renderizar un cilindro con

apariencia. Archivo: CilindroApariencia01.java.

La figura 5.14 muestra la segunda parte del codigo Java para renderizar un cilindro

con apariencia. Archivo: CilindroApariencia01.java.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 100: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

76 Capıtulo 5. Experimentos y Resultados

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;12 import javax . vecmath . ∗ ;13 public class Ci l i ndroApar i enc i a extends JFrame {14 public Ci l i ndroApar i enc i a ( ) {15 setLayout (new BorderLayout ( ) ) ;16 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;17 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;18 add ( ” Center ” , canvas ) ;19 BranchGroup escena = createSceneGraph ( ) ;20 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;21 simpleU . getViewingPlatform ( ) .

setNominalViewingTransform ( ) ;22 simpleU . addBranchGraph ( escena ) ;23 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion

de l a escena usando e l raton .24 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;25 ob . setSchedul ingBounds (new BoundingSphere (new

Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;26 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior

( ob ) ;27 }28 public stat ic void main ( St r ing args [ ] ) {29 Ci l i ndroApar i enc i a frame = new Ci l i nd roApar i enc i a ( ) ;30 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE)

;31 frame . s e t S i z e (300 , 300) ;32 frame . s e t V i s i b l e ( true ) ;33 }

Figura 5.13: Codigo que realiza la renderizacion de un cilindro. Archivo: CilindroAparien-cia01.java (Parte 1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 101: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.1. Escenarios con una figura regular 77

1

2 public BranchGroup createSceneGraph ( ) {3 BranchGroup r a i z = new BranchGroup ( ) ;4 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) ,

Double .MAX VALUE) ;5 D i r e c t i o n a l L i g h t l 1 =6 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,new

Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;7 l 1 . s e t In f luenc ingBounds ( bounds ) ;8 r a i z . addChild ( l 1 ) ;9 D i r e c t i o n a l L i g h t l 2 =

10 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,newVector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

11 l 2 . s e t In f luenc ingBounds ( bounds ) ;12 r a i z . addChild ( l 2 ) ;13 D i r e c t i o n a l L i g h t l 3 =14 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,new

Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;15 l 3 . s e t In f luenc ingBounds ( bounds ) ;16 r a i z . addChild ( l 3 ) ;17 D i r e c t i o n a l L i g h t l 4 =18 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,new

Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;19 l 4 . s e t In f luenc ingBounds ( bounds ) ;20 r a i z . addChild ( l 4 ) ;21 Cyl inder c y l i n d e r 0= new Cyl inder ( 0 . 3 f , 0 . 5 f , c r eaApar i enc ia0

( ) ) ;22 r a i z . addChild ( c y l i n d e r 0 ) ;23 r a i z . compi le ( ) ;24 return r a i z ;25 }26 public Appearance creaApar i enc ia0 ( ) {27 Appearance app=new Appearance ( ) ;28 Color3 f c o l o r=new Color3 f ( 0 . 3 f , 0 . 2 f , 1 . 0 f ) ;29 Mater ia l mate r i a l=new Mater ia l ( ) ;30 mate r i a l . s e t D i f f u s e C o l o r ( c o l o r ) ;31 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;32 mate r i a l . s e t S h i n i n e s s ( 30 . 0 f ) ;33 app . s e t M a t e r i a l ( mate r i a l ) ;34 return app ;35 }36 }

Figura 5.14: Codigo que realiza la renderizacion de un cilindro. Archivo: CilindroAparien-cia01.java (Parte 2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 102: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

78 Capıtulo 5. Experimentos y Resultados

La figura 5.15 muestra la renderizacion del archivo fuente original en VRML del

cilindro con apariencia.

Figura 5.15: Renderizacion de un cilindro con apariencia en VRML

La figura 5.16 muestra la renderizacion del archivo de salida generado en Java 3D

del cubo con rotacion.

Conclusiones de la renderizacion del cilindro con apariencia El resultado obte-nido en la renderizacion en Java 3D muestra la sensacion de profundidad proporcionadopor el ligero reflejo que existe en el cilindro como resultado de aplicar el siguiente seg-mento de codigo en el traductor para mejorar la apariencia.

DirectionalLight l =

new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(-1f, 0.0f, -0.4f) );

l.setInfluencingBounds(bounds);

5.2. Escenarios con varias figuras regulares

En esta seccion se presentan varias figuras geometricas basicas en un mismo escenario.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 103: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.2. Escenarios con varias figuras regulares 79

Figura 5.16: Renderizacion de un cilindro con apariencia en Java 3D

5.2.1. Cilindro y cono con texturas

La figura 5.17 muestra el codigo VRML de un cilindro y un cono con texturas.

La figura 5.18 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML de un cilindro y un cono con texturas.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 104: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

80 Capıtulo 5. Experimentos y Resultados

1 #VRML V2.0 u t f 82 Shape{3 geometry Cylinder{4 rad iu s 0 .4 he ight 0 .55 }6 appearance Appearance{7 t ex ture ImageTexture{8 u r l ” p i so2 . jpg ”9 }

10 }11 }12 Transform {13 t r a n s l a t i o n 0 .8 0 014 c h i l d r e n [15 Shape{16 geometry Cone{17 bottomRadius 0 .4 he ight 0 .818 }19 appearance Appearance{20 t ex ture ImageTexture {21 u r l ” l a d r i l l o 1 . jpg ”22 }23 }24 }25 ]26 }27 }

Figura 5.17: Cilindro con apariencia. Archivo: CilindroCono01.wrl

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 105: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.2. Escenarios con varias figuras regulares 81

Figura 5.18: Arbol del Cilindro y cono con texturas

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 106: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

82 Capıtulo 5. Experimentos y Resultados

Las figuras 5.19, 5.20 y 5.21 muestran el codigo completo en Java para renderizar un

cilindro y un cono con textura. Archivo: CilindroCono.java.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 107: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.2. Escenarios con varias figuras regulares 83

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import javax . vecmath . Co lor3 f ;12 import javax . vecmath . Vector3d ;13 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;14 import javax . vecmath . Point3d ;15 import javax . vecmath . Po int3 f ;16 import javax . vecmath . Co lor3 f ;17 import javax . vecmath . ∗ ;18 public class Cil indroCono01 extends JFrame {19 public Cil indroCono01 ( ) {20 setLayout (new BorderLayout ( ) ) ;21 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;22 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;23 add ( ” Center ” , canvas ) ;24 BranchGroup escena = createSceneGraph ( ) ;25 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;26 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;27 simpleU . addBranchGraph ( escena ) ;28 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion de l a

escena usando e l raton .29 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;30 ob . setSchedul ingBounds (new BoundingSphere (new Point3d

( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;31 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;32 }33 public stat ic void main ( St r ing args [ ] ) {34 Cil indroCono01 frame = new Cil indroCono01 ( ) ;35 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;36 frame . s e t S i z e (300 , 300) ;37 frame . s e t V i s i b l e ( true ) ;38 }

Figura 5.19: Codigo que realiza la renderizacion de un cilindro y un cono con textura. Archivo:CilindroCono.java (Parte 1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 108: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

84 Capıtulo 5. Experimentos y Resultados

1 public BranchGroup createSceneGraph ( ) {2 BranchGroup r a i z = new BranchGroup ( ) ;3 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) ,

Double .MAX VALUE) ;4 D i r e c t i o n a l L i g h t l 1 =5 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,6 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;7 l 1 . s e t In f luenc ingBounds ( bounds ) ;8 r a i z . addChild ( l 1 ) ;9 D i r e c t i o n a l L i g h t l 2 =

10 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,11 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;12 l 2 . s e t In f luenc ingBounds ( bounds ) ;13 r a i z . addChild ( l 2 ) ;14 D i r e c t i o n a l L i g h t l 3 =15 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,16 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;17 l 3 . s e t In f luenc ingBounds ( bounds ) ;18 r a i z . addChild ( l 3 ) ;19 D i r e c t i o n a l L i g h t l 4 =20 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,21 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;22 l 4 . s e t In f luenc ingBounds ( bounds ) ;23 r a i z . addChild ( l 4 ) ;24 Cyl inder c y l i n d e r 0= new Cyl inder ( 0 . 4 f , 0 . 5 f , c r eaApar i enc ia0

( ) ) ;25 Cone cone1= new Cone ( 0 . 4 f , 0 . 8 f , c r eaApar i enc ia1 ( ) ) ;26

27 TransformGroup tg0=new TransformGroup ( trans formac ion0 ( ) ) ;28 tg0 . addChild ( cone1 ) ;29 r a i z . addChild ( c y l i n d e r 0 ) ;30 r a i z . addChild ( tg0 ) ;31

32 r a i z . compi le ( ) ;33 return r a i z ;34 }35 public Transform3D trans formac ion0 ( ) {36 Transform3D t0=new Transform3D ( ) ;37 Vector3d v=new Vector3d ( 0 . 8 , 0 , 0 ) ;38 t0 . s e t ( v ) ;39 return t0 ;40 }

Figura 5.20: Codigo que realiza la renderizacion de un cilindro y un cono con textura. Archivo:CilindroCono.java (Parte 2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 109: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.2. Escenarios con varias figuras regulares 85

1 public Appearance creaApar i enc ia0 ( ) {2 Appearance app=new Appearance ( ) ;3 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;4 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;5 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;6 TexCoordGeneration texCoord = new TexCoordGeneration (

TexCoordGeneration .OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

7 app . setTexCoordGeneration ( texCoord ) ;8 St r ing nomArch=” l a d r i l l o 1 . jpg ” ;9 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

10 ImageComponent2D image=loade r . getImage ( ) ;11 i f ( image==null ) System . out . p r i n t l n ( ” Error a l cargar l a

textura ” ) ;12 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture

.RGBA, image . getWidth ( ) , image . getHeight ( ) ) ;13 t ex ture . setImage (0 , image ) ;14 app . setTexture ( t ex ture ) ;15 return app ;16 }17 public Appearance creaApar i enc ia1 ( ) {18 Appearance app=new Appearance ( ) ;19 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;20 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;21 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;22 TexCoordGeneration texCoord = new TexCoordGeneration (

TexCoordGeneration .OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

23 app . setTexCoordGeneration ( texCoord ) ;24 St r ing nomArch=” l a d r i l l o 1 . jpg ” ;25 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;26 ImageComponent2D image=loade r . getImage ( ) ;27 i f ( image==null ) System . out . p r i n t l n ( ” Error a l cargar l a

textura ” ) ;28 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture

.RGBA, image . getWidth ( ) , image . getHeight ( ) ) ;29 t ex ture . setImage (0 , image ) ;30 app . setTexture ( t ex ture ) ;31 return app ;32 }33 }

Figura 5.21: Codigo que realiza la renderizacion de un cilindro y un cono con textura. Archivo:CilindroCono.java (Parte 3)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 110: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

86 Capıtulo 5. Experimentos y Resultados

La figura 5.22 muestra la renderizacion del archivo fuente original en VRML de un

cilindro y un cono con texturas.

Figura 5.22: Renderizacion de un cilindro y un cono con texturas de ladrillo en VRML

La figura 5.23 muestra la renderizacion del archivo de salida generado en Java 3D de

un cilindro y un cono con texturas.

Conclusiones de la renderizacion del cilindro y el cono con texturas Se puede

observar que resultado obtenido en la renderizacion en Java 3D se ven con mas detalle

las texturas en comparacion con lo que proporciona VRML. Se puede afirmar que la

API de Java 3D es superior en cuanto a calidad en representacion de texturas.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 111: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.2. Escenarios con varias figuras regulares 87

Figura 5.23: Renderizacion de un cilindro y un cono con texturas de ladrillo en Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 112: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

88 Capıtulo 5. Experimentos y Resultados

5.3. Escenarios con figuras irregulares que usan:

PointSet, IndexedLineSet e IndexedFaceSet

5.3.1. Escenario con figuras irregulares con PointSet

La figura 5.26 muestra el codigo VRML de los vertices de un cubo realizado con

PointSet

1 #VRML V2.0 u t f 82 Shape{3 geometry PointSet{4 coord Coordinate {5 po int [6 −1.0 1 .0 1 . 0 ,7 1 .0 1 .0 1 . 0 ,8 1 .0 1 .0 −1.0 ,9 −1.0 1 .0 −1.0 ,

10 −1.0 −1.0 1 . 0 ,11 1 .0 −1.0 1 . 0 ,12 1 .0 −1.0 −1.0 ,13 −1.0 −1.0 −1.0 ,14 ]15 }}16 appearance Appearance{17 mate r i a l Material {18 emi s s iveCo lo r 1 .0 1 .0 1 . 019 }20 }21 }22 }

Figura 5.24: Vertices de un cubo realizado con PointSet. Archivo: ConjuntoPuntos1.wrl

La figura 5.25 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML de un cubo formado con puntos.

Las figuras 5.26, 5.27 y 5.28 muestran el codigo completo en Java para renderizar un

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 113: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 89

Figura 5.25: Arbol generado del cubo formado con puntos

conjunto de puntos que representan la figura de un cubo. Archivo: ConjuntoPuntos1.java.

La figura 5.29 muestra la renderizacion del archivo fuente original en VRML de los

vertices de un cubo formado por un conjunto de puntos. Los puntos se marcaron con un

cırculo naranja para su mejor visualizacion.

La figura 5.30 muestra la renderizacion del archivo de salida generado en Java 3D

de los vertices de un cubo formado por un conjunto de puntos. Los puntos se marcaron

con un cırculo naranja para su mejor visualizacion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 114: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

90 Capıtulo 5. Experimentos y Resultados

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import javax . vecmath . Co lor3 f ;12 import javax . vecmath . Vector3d ;13 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;14 import javax . vecmath . Point3d ;15 import javax . vecmath . Po int3 f ;16 import javax . vecmath . Co lor3 f ;17 import javax . vecmath . ∗ ;18 public class ConjuntoPuntos1 extends JFrame {19 public ConjuntoPuntos1 ( ) {20 setLayout (new BorderLayout ( ) ) ;21 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;22 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;23 add ( ” Center ” , canvas ) ;24 BranchGroup escena = createSceneGraph ( ) ;25 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;26 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;27 simpleU . addBranchGraph ( escena ) ;28 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion de l a

escena usando e l raton .29 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;30 ob . setSchedul ingBounds (new BoundingSphere (new Point3d

( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;31 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;32 }33 public stat ic void main ( St r ing args [ ] ) {34 ConjuntoPuntos1 frame = new ConjuntoPuntos1 ( ) ;35 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;36 frame . s e t S i z e (300 , 300) ;37 frame . s e t V i s i b l e ( true ) ;38 }

Figura 5.26: Codigo que realiza la renderizacion de un conjunto de puntos. Archivo: Conjun-toPuntos1.java (Parte 1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 115: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 91

1 public BranchGroup createSceneGraph ( ) {2 BranchGroup r a i z = new BranchGroup ( ) ;3 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAX VALUE) ;4 D i r e c t i o n a l L i g h t l 1 = new D i r e c t i o n a l L i g h t (5 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) , new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;6 l 1 . s e t In f luenc ingBounds ( bounds ) ;7 r a i z . addChild ( l 1 ) ;8 D i r e c t i o n a l L i g h t l 2 = new D i r e c t i o n a l L i g h t (9 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) , new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

10 l 2 . s e t In f luenc ingBounds ( bounds ) ;11 r a i z . addChild ( l 2 ) ;12 D i r e c t i o n a l L i g h t l 3 =13 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,14 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;15 l 3 . s e t In f luenc ingBounds ( bounds ) ;16 r a i z . addChild ( l 3 ) ;17 D i r e c t i o n a l L i g h t l 4 =18 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,19 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;20 l 4 . s e t In f luenc ingBounds ( bounds ) ;21 r a i z . addChild ( l 4 ) ;22 PointArray p o i n t s e t 0= new PointArray (8 , PointArray .COORDINATES|

PointArray .COLOR 3) ;23 p o i n t s e t 0 . s e tCoord inate (0 ,new Point3 f (−1.0 f , 1 . 0 f , 1 . 0 f ) ) ;24 p o i n t s e t 0 . s e tCoord inate (1 ,new Point3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;25 p o i n t s e t 0 . s e tCoord inate (2 ,new Point3 f ( 1 . 0 f , 1 . 0 f ,−1.0 f ) ) ;26 p o i n t s e t 0 . s e tCoord inate (3 ,new Point3 f (−1.0 f , 1 . 0 f ,−1.0 f ) ) ;27 p o i n t s e t 0 . s e tCoord inate (4 ,new Point3 f (−1.0 f ,−1.0 f , 1 . 0 f ) ) ;28 p o i n t s e t 0 . s e tCoord inate (5 ,new Point3 f ( 1 . 0 f ,−1.0 f , 1 . 0 f ) ) ;29 p o i n t s e t 0 . s e tCoord inate (6 ,new Point3 f ( 1 . 0 f ,−1.0 f ,−1.0 f ) ) ;30 p o i n t s e t 0 . s e tCoord inate (7 ,new Point3 f (−1.0 f ,−1.0 f ,−1.0 f ) ) ;31 p o i n t s e t 0 . s e tCo lo r (0 ,new Color3 f (1 f , 1 f , 1 f ) ) ;32 p o i n t s e t 0 . s e tCo lo r (1 ,new Color3 f (1 f , 1 f , 1 f ) ) ;33 p o i n t s e t 0 . s e tCo lo r (2 ,new Color3 f (1 f , 1 f , 1 f ) ) ;34 p o i n t s e t 0 . s e tCo lo r (3 ,new Color3 f (1 f , 1 f , 1 f ) ) ;35 p o i n t s e t 0 . s e tCo lo r (4 ,new Color3 f (1 f , 1 f , 1 f ) ) ;36 p o i n t s e t 0 . s e tCo lo r (5 ,new Color3 f (1 f , 1 f , 1 f ) ) ;37 p o i n t s e t 0 . s e tCo lo r (6 ,new Color3 f (1 f , 1 f , 1 f ) ) ;38 p o i n t s e t 0 . s e tCo lo r (7 ,new Color3 f (1 f , 1 f , 1 f ) ) ;39 r a i z . addChild (new Shape3D ( p o i n t s e t 0 ) ) ;40 r a i z . compi le ( ) ;41 return r a i z ;42 }

Figura 5.27: Codigo que realiza la renderizacion de un conjunto de puntos. Archivo: Conjun-toPuntos1.java (Parte 2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 116: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

92 Capıtulo 5. Experimentos y Resultados

1 public Appearance creaApar i enc ia0 ( ) {2 Appearance app=new Appearance ( ) ;3 Color3 f c o l o r=new Color3 f (1 f , 1 f , 1 f ) ;4 Mater ia l mate r i a l=new Mater ia l ( ) ;5 mate r i a l . s e t D i f f u s e C o l o r ( c o l o r ) ;6 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;7 mate r i a l . s e t S h i n i n e s s ( 30 . 0 f ) ;8 app . s e t M a t e r i a l ( mate r i a l ) ;9 return app ;

10 }11

12

13 }

Figura 5.28: Codigo que realiza la renderizacion de un conjunto de puntos. Archivo: Conjun-toPuntos1.java (Parte 3)

Figura 5.29: Renderizacion de un conjunto de puntos en VRML

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 117: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 93

Figura 5.30: Renderizacion de un conjunto de puntos en Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 118: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

94 Capıtulo 5. Experimentos y Resultados

5.3.2. Escenario con figuras irregulares con IndexedLineSet

La figura 5.33 muestra el codigo VRML de las aristas de un cubo realizado con

IndexedLineSet.

La figura 5.32 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML de un cubo formado con un conjunto de lıneas.

Las figuras 5.33, 5.34 y 5.35 muestran el codigo completo en Java para renderizar un

conjunto de lıneas que representan la figura de un cubo. Archivo: ConjuntoLineas1.java.

La figura 5.36 muestra la renderizacion del archivo fuente original en VRML de las

aristas de un cubo formado por un conjunto de lıneas.

La figura 5.37 muestra la renderizacion del archivo de salida generado en Java 3D de

las aristas de un cubo formado por un conjunto de lıneas.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 119: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 95

1 #VRML V2.0 u t f 82 Shape{3 geometry IndexedLineSet{4 coord Coordinate {5 po int [6 −1.0 1 .0 1 . 0 ,7 1 .0 1 .0 1 . 0 ,8 1 .0 1 .0 −1.0 ,9 −1.0 1 .0 −1.0 ,

10 −1.0 −1.0 1 . 0 ,11 1 .0 −1.0 1 . 0 ,12 1 .0 −1.0 −1.0 ,13 −1.0 −1.0 −1.0 ,14 ]15 }16 coordIndex [17 0 , 1 , 2 , 3 , 0 , −118 4 , 5 , 6 , 7 , 4 , −119 0 , 4 , −120 1 , 5 , −121 2 , 6 , −122 3 , 723 ]24 }25 appearance Appearance{26 mate r i a l Material {27 emi s s iveCo lo r 1 .0 1 .0 1 . 028 }29 }30 }31 }

Figura 5.31: Caja o cubo formado con lıneas. Archivo:ConjuntoLineas1.wrl

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 120: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

96 Capıtulo 5. Experimentos y Resultados

Figura 5.32: Arbol generado de una caja o cubo formado con lıneas

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 121: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 97

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import javax . vecmath . Co lor3 f ;12 import javax . vecmath . Vector3d ;13 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;14 import javax . vecmath . Point3d ;15 import javax . vecmath . Po int3 f ;16 import javax . vecmath . Co lor3 f ;17 import javax . vecmath . ∗ ;18 public class ConjuntoLineas1 extends JFrame {19 public ConjuntoLineas1 ( ) {20 setLayout (new BorderLayout ( ) ) ;21 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;22 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;23 add ( ” Center ” , canvas ) ;24 BranchGroup escena = createSceneGraph ( ) ;25 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;26 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;27 simpleU . addBranchGraph ( escena ) ;28 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion de l a

escena usando e l raton .29 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;30 ob . setSchedul ingBounds (new BoundingSphere (new Point3d

( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;31 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;32 }33 public stat ic void main ( St r ing args [ ] ) {34 ConjuntoLineas1 frame = new ConjuntoLineas1 ( ) ;35 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;36 frame . s e t S i z e (300 , 300) ;37 frame . s e t V i s i b l e ( true ) ;38 }

Figura 5.33: Codigo que realiza la renderizacion de un conjunto de lıneas. Archivo: Conjunto-Lineas1.java (Parte 1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 122: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

98 Capıtulo 5. Experimentos y Resultados

1 public BranchGroup createSceneGraph ( ) {2 BranchGroup r a i z = new BranchGroup ( ) ;3 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAX VALUE) ;4 D i r e c t i o n a l L i g h t l 1 =5 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,6 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;7 l 1 . s e t In f luenc ingBounds ( bounds ) ;8 r a i z . addChild ( l 1 ) ;9 D i r e c t i o n a l L i g h t l 2 =

10 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,11 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;12 l 2 . s e t In f luenc ingBounds ( bounds ) ;13 r a i z . addChild ( l 2 ) ;14 D i r e c t i o n a l L i g h t l 3 =15 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,16 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;17 l 3 . s e t In f luenc ingBounds ( bounds ) ;18 r a i z . addChild ( l 3 ) ;19 D i r e c t i o n a l L i g h t l 4 =20 new D i r e c t i o n a l L i g h t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,21 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;22 l 4 . s e t In f luenc ingBounds ( bounds ) ;23 r a i z . addChild ( l 4 ) ;24 Point3d [ ] coordenadas0 = new Point3d [ 8 ] ;25 coordenadas0 [0 ]=new Point3d (−1.0 f , 1 . 0 f , 1 . 0 f ) ;26 coordenadas0 [1 ]=new Point3d ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ;27 coordenadas0 [2 ]=new Point3d ( 1 . 0 f , 1 . 0 f ,−1.0 f ) ;28 coordenadas0 [3 ]=new Point3d (−1.0 f , 1 . 0 f ,−1.0 f ) ;29 coordenadas0 [4 ]=new Point3d (−1.0 f ,−1.0 f , 1 . 0 f ) ;30 coordenadas0 [5 ]=new Point3d ( 1 . 0 f ,−1.0 f , 1 . 0 f ) ;31 coordenadas0 [6 ]=new Point3d ( 1 . 0 f ,−1.0 f ,−1.0 f ) ;32 coordenadas0 [7 ]=new Point3d (−1.0 f ,−1.0 f ,−1.0 f ) ;33 int [ ] i n d i c e s 0 = {0 , 1 , 1 , 2 , 2 , 3 , 3 , 0 ,4 , 5 , 5 , 6 , 6 , 7 , 7 , 4 ,0 ,

4 ,1 , 5 ,2 , 6 ,3 , 7} ;34 IndexedLineArray i n d e x e d l i n e s e t 0 =new IndexedLineArray (

coordenadas0 . length , GeometryArray .COORDINATES, i n d i c e s 0 . l ength) ;

35 i n d e x e d l i n e s e t 0 . s e tCoord inate s (0 , coordenadas0 ) ;36 i n d e x e d l i n e s e t 0 . s e t Coo r d ina t e Ind i c e s (0 , i n d i c e s 0 ) ;37 r a i z . addChild (new Shape3D ( i n d e x e d l i n e s e t 0 ) ) ;38 r a i z . compi le ( ) ;39 return r a i z ;40 }

Figura 5.34: Codigo que realiza la renderizacion de un conjunto de lıneas. Archivo: Conjunto-Lineas1.java (Parte 2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 123: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 99

1 public Appearance creaApar i enc ia0 ( ) {2 Appearance app=new Appearance ( ) ;3 Color3 f c o l o r=new Color3 f (1 f , 1 f , 1 f ) ;4 Mater ia l mate r i a l=new Mater ia l ( ) ;5 mate r i a l . s e t D i f f u s e C o l o r ( c o l o r ) ;6 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;7 mate r i a l . s e t S h i n i n e s s ( 30 . 0 f ) ;8 app . s e t M a t e r i a l ( mate r i a l ) ;9 return app ;

10 }11 }

Figura 5.35: Codigo que realiza la renderizacion de las aristas de un cubo formado por unconjunto de lıneas. Archivo: ConjuntoLineas1.java (Parte 3)

Figura 5.36: Renderizacion de las aristas de un cubo formado por un conjunto de lıneas enVRML

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 124: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

100 Capıtulo 5. Experimentos y Resultados

Figura 5.37: Renderizacion de las aristas de un cubo formado por un conjunto de lıneas enJava 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 125: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 101

5.3.3. Escenario con figuras irregulares con IndexedFaceSet

La figura 5.40 muestra el codigo VRML de los lados de un cubo realizado con Inde-

xedFaceSet.

La figura 5.39 muestra el arbol que se genera y se presenta en la interfaz grafica del

traductor para el codigo VRML de un cubo formado con un conjunto de caras.

Las figuras 5.40, 5.41, 5.42 y 5.43 muestran el codigo completo en Java para rende-

rizar un conjunto de caras que representan la figura de un cubo. Archivo: ConjuntoCa-

ras1.java.

La figura 5.44 muestra la renderizacion del archivo fuente original en VRML de los

lados de un cubo formado por un conjunto de caras.

La figura 5.45 muestra la renderizacion del archivo de salida generado en Java 3D de

los lados de un cubo formado por un conjunto de caras.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 126: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

102 Capıtulo 5. Experimentos y Resultados

1 #VRML V2.0 u t f 82 Transform {3 s c a l e 0 . 5 0 .5 0 . 54 c h i l d r e n [5 Shape{6 geometry IndexedFaceSet{7 coord Coordinate {8 po int [9 −1.0 1 .0 1 . 0 ,

10 1 .0 1 .0 1 . 0 ,11 1 .0 1 .0 −1.0 ,12 −1.0 1 .0 −1.0 ,13 −1.0 −1.0 1 . 0 ,14 1 .0 −1.0 1 . 0 ,15 1 .0 −1.0 −1.0 ,16 −1.0 −1.0 −1.0 ,17 ]18 }19 coordIndex [20 0 ,1 ,2 ,3 ,−121 7 ,6 ,5 ,4 ,−122 0 ,4 ,5 ,1 ,−123 1 ,5 ,6 ,2 ,−124 2 ,6 ,7 ,3 ,−125 3 ,7 ,4 ,026 ]27 }28 appearance Appearance{29 t ex ture ImageTexture {30 u r l ” l a d r i l l o 1 . jpg ”31 }32 }33 }34 ]35 }

Figura 5.38: Caja o cubo formada con un conjunto de caras. Archivo: ConjuntoCaras1.wrl

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 127: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 103

Figura 5.39: Arbol generado de la caja o cubo formada con caras

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 128: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

104 Capıtulo 5. Experimentos y Resultados

1 import javax . swing . JFrame ;2 import java . awt . BorderLayout ;3 import java . awt . Frame ;4 import java . awt . event . WindowEvent ;5 import java . awt . event . WindowListener ;6 import java . awt . GraphicsConf igurat ion ;7 import com . sun . j3d . u t i l s . image . TextureLoader ;8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;11 import javax . vecmath . Co lor3 f ;12 import javax . vecmath . Vector3d ;13 import com . sun . j3d . u t i l s . behav io r s . vp . ∗ ;14 import javax . vecmath . Point3d ;15 import javax . vecmath . Po int3 f ;16 import javax . vecmath . Co lor3 f ;17 import javax . vecmath . ∗ ;18

19 public class ConjuntoCaras1 extends JFrame {20 public ConjuntoCaras1 ( ) {21 setLayout (new BorderLayout ( ) ) ;22 GraphicsConf igurat ion c o n f i g = SimpleUniverse .

g e tPr e f e r r edCon f i gu ra t i on ( ) ;23 Canvas3D canvas = new Canvas3D ( c o n f i g ) ;24 add ( ” Center ” , canvas ) ;25 BranchGroup escena = createSceneGraph ( ) ;26 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;27 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;28 simpleU . addBranchGraph ( escena ) ;29 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a nav igac ion de l a

escena usando e l raton .30 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;31 ob . setSchedul ingBounds (new BoundingSphere (new Point3d

( 0 . 0 , 0 . 0 , 0 . 0 ) , Double .MAX VALUE) ) ;32 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;33 }34

35

36 public stat ic void main ( St r ing args [ ] ) {37 ConjuntoCaras1 frame = new ConjuntoCaras1 ( ) ;38 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;39 frame . s e t S i z e (300 , 300) ;40 frame . s e t V i s i b l e ( true ) ;41 }

Figura 5.40: Codigo que realiza la renderizacion de un conjunto de caras que forman un cubo.Archivo: ConjuntoCaras1.java (Parte 1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 129: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 105

1 public BranchGroup createSceneGraph ( ) {2 BranchGroup r a i z = new BranchGroup ( ) ;3 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAX VALUE) ;4 D i r e c t i o n a l L i g h t l 1 =new D i r e c t i o n a l L i g h t (5 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;6 l 1 . s e t In f luenc ingBounds ( bounds ) ;7 r a i z . addChild ( l 1 ) ;8 D i r e c t i o n a l L i g h t l 2 =new D i r e c t i o n a l L i g h t (9 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) , new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

10 l 2 . s e t In f luenc ingBounds ( bounds ) ;11 r a i z . addChild ( l 2 ) ;12 D i r e c t i o n a l L i g h t l 3 =new D i r e c t i o n a l L i g h t (13 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;14 l 3 . s e t In f luenc ingBounds ( bounds ) ;15 r a i z . addChild ( l 3 ) ;16 D i r e c t i o n a l L i g h t l 4 =new D i r e c t i o n a l L i g h t (17 new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) , new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;18 l 4 . s e t In f luenc ingBounds ( bounds ) ;19 r a i z . addChild ( l 4 ) ;20

21 QuadArray i nd e xe d f a c e s e t 0=new QuadArray (4 , QuadArray .COORDINATES) ;22 i nd ex ed f a c e s e t 0 . s e tCoord inate (0 , new Point3 f (−1.0 f , 1 . 0 f , 1 . 0 f ) ) ;23 i nd ex ed f a c e s e t 0 . s e tCoord inate (1 , new Point3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;24 i nd ex ed f a c e s e t 0 . s e tCoord inate (2 , new Point3 f ( 1 . 0 f , 1 . 0 f ,−1.0 f ) ) ;25 i nd ex ed f a c e s e t 0 . s e tCoord inate (3 , new Point3 f (−1.0 f , 1 . 0 f ,−1.0 f ) ) ;26

27 QuadArray i nd e xe d f a c e s e t 1=new QuadArray (4 , QuadArray .COORDINATES) ;28 i nd ex ed f a c e s e t 1 . s e tCoord inate (0 , new Point3 f (−1.0 f ,−1.0 f ,−1.0 f ) ) ;29 i nd ex ed f a c e s e t 1 . s e tCoord inate (1 , new Point3 f ( 1 . 0 f ,−1.0 f ,−1.0 f ) ) ;30 i nd ex ed f a c e s e t 1 . s e tCoord inate (2 , new Point3 f ( 1 . 0 f ,−1.0 f , 1 . 0 f ) ) ;31 i nd ex ed f a c e s e t 1 . s e tCoord inate (3 , new Point3 f (−1.0 f ,−1.0 f , 1 . 0 f ) ) ;32

33 QuadArray i nd e xe d f a c e s e t 2=new QuadArray (4 , QuadArray .COORDINATES) ;34 i nd ex ed f a c e s e t 2 . s e tCoord inate (0 , new Point3 f (−1.0 f , 1 . 0 f , 1 . 0 f ) ) ;35 i nd ex ed f a c e s e t 2 . s e tCoord inate (1 , new Point3 f (−1.0 f ,−1.0 f , 1 . 0 f ) ) ;36 i nd ex ed f a c e s e t 2 . s e tCoord inate (2 , new Point3 f ( 1 . 0 f ,−1.0 f , 1 . 0 f ) ) ;37 i nd ex ed f a c e s e t 2 . s e tCoord inate (3 , new Point3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;38

39 QuadArray i nd e xe d f a c e s e t 3=new QuadArray (4 , QuadArray .COORDINATES) ;40 i nd ex ed f a c e s e t 3 . s e tCoord inate (0 , new Point3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;41 i nd ex ed f a c e s e t 3 . s e tCoord inate (1 , new Point3 f ( 1 . 0 f ,−1.0 f , 1 . 0 f ) ) ;42 i nd ex ed f a c e s e t 3 . s e tCoord inate (2 , new Point3 f ( 1 . 0 f ,−1.0 f ,−1.0 f ) ) ;43 i nd ex ed f a c e s e t 3 . s e tCoord inate (3 , new Point3 f ( 1 . 0 f , 1 . 0 f ,−1.0 f ) ) ;

Figura 5.41: Codigo que realiza la renderizacion de un conjunto de caras que forman un cubo.Archivo: ConjuntoCaras1.java (Parte 2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 130: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

106 Capıtulo 5. Experimentos y Resultados

1 QuadArray i nd e xe d f a c e s e t 4=new QuadArray (4 , QuadArray .COORDINATES) ;2 i nd ex ed f a c e s e t 4 . s e tCoord inate (0 , new Point3 f ( 1 . 0 f , 1 . 0 f ,−1.0 f ) ) ;3 i nd ex ed f a c e s e t 4 . s e tCoord inate (1 , new Point3 f ( 1 . 0 f ,−1.0 f ,−1.0 f ) ) ;4 i nd ex ed f a c e s e t 4 . s e tCoord inate (2 , new Point3 f (−1.0 f ,−1.0 f ,−1.0 f ) ) ;5 i nd ex ed f a c e s e t 4 . s e tCoord inate (3 , new Point3 f (−1.0 f , 1 . 0 f ,−1.0 f ) ) ;6

7 QuadArray i nd e xe d f a c e s e t 5=new QuadArray (4 , QuadArray .COORDINATES) ;8 i nd ex ed f a c e s e t 5 . s e tCoord inate (0 , new Point3 f (−1.0 f , 1 . 0 f ,−1.0 f ) ) ;9 i nd ex ed f a c e s e t 5 . s e tCoord inate (1 , new Point3 f (−1.0 f ,−1.0 f ,−1.0 f ) ) ;

10 i nd ex ed f a c e s e t 5 . s e tCoord inate (2 , new Point3 f (−1.0 f ,−1.0 f , 1 . 0 f ) ) ;11 i nd ex ed f a c e s e t 5 . s e tCoord inate (3 , new Point3 f (−1.0 f , 1 . 0 f , 1 . 0 f ) ) ;12

13 TransformGroup tg0=new TransformGroup ( trans formac ion0 ( ) ) ;14 tg0 . addChild (new Shape3D ( indexed face s e t0 , c r eaApar i enc ia0 ( ) ) ) ;15 tg0 . addChild (new Shape3D ( indexed face s e t1 , c r eaApar i enc ia0 ( ) ) ) ;16 tg0 . addChild (new Shape3D ( indexed face s e t2 , c r eaApar i enc ia0 ( ) ) ) ;17 tg0 . addChild (new Shape3D ( indexed face s e t3 , c r eaApar i enc ia0 ( ) ) ) ;18 tg0 . addChild (new Shape3D ( indexed face s e t4 , c r eaApar i enc ia0 ( ) ) ) ;19 tg0 . addChild (new Shape3D ( indexed face s e t5 , c r eaApar i enc ia0 ( ) ) ) ;20 r a i z . addChild ( tg0 ) ;21 r a i z . compi le ( ) ;22 return r a i z ;23 }

Figura 5.42: Codigo que realiza la renderizacion de un conjunto de caras que forman un cubo.Archivo: ConjuntoCaras1.java (Parte 3)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 131: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.3. Escenarios con figuras irregulares que usan:PointSet, IndexedLineSet e IndexedFaceSet 107

1 public Appearance creaApar i enc ia0 ( ) {2 Appearance app=new Appearance ( ) ;3 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;4 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;5 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;6 TexCoordGeneration texCoord = new TexCoordGeneration (

TexCoordGeneration .OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

7 app . setTexCoordGeneration ( texCoord ) ;8 St r ing nomArch=” l a d r i l l o 1 . jpg ” ;9 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

10 ImageComponent2D image=loade r . getImage ( ) ;11 i f ( image==null )12 System . out . p r i n t l n ( ” Error a l cargar l a textura ” ) ;13 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture

.RGBA, image . getWidth ( ) , image . getHeight ( ) ) ;14 t ex ture . setImage (0 , image ) ;15 app . setTexture ( t ex ture ) ;16 return app ;17 }18

19 public Transform3D trans formac ion0 ( ) {20 Transform3D t0=new Transform3D ( ) ;21 Vector3d v=new Vector3d ( 0 . 5 , 0 . 5 , 0 . 5 ) ;22 t0 . s e t S c a l e ( v ) ;23 return t0 ;24 }25 }

Figura 5.43: Codigo que realiza la renderizacion de un conjunto de caras que forman un cubo.Archivo: ConjuntoCaras1.java (Parte 4)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 132: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

108 Capıtulo 5. Experimentos y Resultados

Figura 5.44: Renderizacion de los lados de un cubo formado por un conjunto de caras en VRML

Figura 5.45: Renderizacion de los lados de un cubo formado por un conjunto de caras en Java3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 133: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

5.4. Conclusiones acerca de las diferencias entre VRML y Java 3D 109

5.4. Conclusiones acerca de las diferencias entre VRML

y Java 3D

Despues de haber realizado varias pruebas con la herramienta Traductor de VRML aJava 3D, se puede concluir que las renderizaciones en Java 3D son mas nıtidas y tienenmas realismo que las de VRML. Ademas, las texturas tienen mejor detalle en Java 3Dque las proporcionadas por VRML. Las mejoras mencionadas se deben en gran medida aque se incluyo el siguiente codigo en el traductor, el cual elimina la sensacion de figurasplanas que se obtenıan en las imagenes del trabajo anterior.

DirectionalLight l =

new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(-1f, 0.0f, -0.4f) );

l.setInfluencingBounds(bounds);

Por otro lado, VRML tiene las siguientes ventajas: se ejecuta muy rapidamente, el

tamano del codigo es reducido y es muy facil de comprender siendo, estas a la vez, las

principales desventajas de Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 134: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

110 Capıtulo 5. Experimentos y Resultados

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 135: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Capıtulo 6

Conclusiones

El presente trabajo de tesis proporciona una herramienta disenada usando el para-

digma orientado a objetos y fue totalmente desarrollada con el lenguaje de programacion

Java.

Esta herramienta tiene la capacidad de apoyar a los desarrolladores de aplicaciones

de realidad virtual para mejorar su productividad, si ya cuentan con codigo VRML que

ya ha sido probado y que por lo tanto es funcionalmente correcto.

La herramienta toma como entrada un codigo fuente en VRML bien formado y lo

traduce a codigo Java 3D, de esta forma la herramienta no contempla la deteccion de

errores de sintaxis del codigo fuente de entrada, tal como lo harıa un compilador.

La herramienta denominada Traductor de VRML a Java 3D cuenta con las siguientes

caracterısticas:

Primitivas basicas para crear figuras regulares: Box, Cone Cylinder y Sphere.

111

Page 136: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

112 Capıtulo 6. Conclusiones

Nodos para crear figuras irregulares : PointSet, IndexedLineSet e IndexedFaceSet.

Manejo de nodos de transformacion: rotacion, translacion y escalamiento usando

las estructuras dinamicas arbol y una lista ligada, de esta forma la recursividad

del arbol permite usar multiples transformaciones sin necesidad de usar alguna

bandera.

Se mejoro el escalamiento en Java 3D, el cual tiende a deformar los objetos.

Mejora de la apariencia final.

Manejo de texturas dentro de las limitantes de Java 3D.

Interfaz grafica amigable con el usuario que permite seleccionar el archivo de en-

trada, traducir, compilar, ejecutar y visualizar el renderizado en Java 3D.

Area para la representacion jerarquica grafica (arbol) de los nodos de la aplicacion

donde se pueden observar las transformaciones de cada geometrıa.

Se integra la compilacion del archivo Java 3D con el compilador de Java de forma

automatica.

Se integra la ejecucion del archivo Java desde la interfaz grafica, por lo que no hay

necesidad de buscar el archivo tipo class y ejecutarlo por separado.

Cuenta con una area de salida donde se muestra el codigo traducido generado en

Java 3D, con el fin de que el desarrollador vea la salida sin necesidad de recurrir a

un editor.

Permite especificar los nombres de archivos de salida en Java al gusto del desarro-

llador.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 137: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

6.1. Contribuciones 113

Redundancia para seleccionar las opciones del proceso de conversion a traves de

menu o de botones con ıconos nemonicos.

Habilitacion y deshabilitacion de los pasos del proceso de conversion: abrir archivo

VRML, convertir a Java, compilar y ejecutar.

Botones Acerca de y Salir.

6.1. Contribuciones

La herramienta producto de este trabajo denominada Traductor de VRML a Java 3D

cumple con todas las especificaciones establecidas en el protocolo de tesis y es comple-

tamente funcional dentro de las limitaciones del alcance propuesto. Adicionalmente se

integraron las fases de compilacion y ejecucion del codigo Java generado desde la misma

interfaz grafica de la herramienta.

Esta herramienta ayudara a reutilizar el codigo VRML bien formado y que funciona

correctamente.

Este traductor contribuira a:

Aprovechar aplicaciones de realidad virtual en VRML.

Reducir los tiempos de realizar aplicaciones de realidad virtual.

Comprender los lenguajes VRML y Java 3D, ası como identificar sus diferencias.

Estructurar de forma entendible la forma como se programa en Java 3D.

Realiza las transformaciones sin ayuda de alguna bandera u otro apoyo extra en

el codigo fuente.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 138: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

114 Capıtulo 6. Conclusiones

Se mejoro la apariencia de las texturas, eliminandose el aspecto plano de las figuras

3D tıpicas de Java 3D, y que dan una sensasion de poco realismo.

Interfaz grafica que integra todos los pasos de conversion.

Se agrego en la interfaz grafica la integracion de los pasos de compilacion con el

compilador de Java y la ejecucion sin necesidad de realizarlo desde la lınea de

comandos o desde un entorno de desarrollo como netBeans, lo cual ahorra tiempo

al desarrollador por ejemplo en la busqueda de los archivos y evita los consecuentes

errores.

Finalmente, se puede afirmar que es una herramienta unica en su tipo.

6.2. Trabajo Futuro

En el presente trabajo se ha realizado un gran avance en cuanto a solucionar varios de

los puntos mas difıciles de la estructura del codigo en VRML, tales como los nodos para

crear figuras irregulares : PointSet, IndexedLineSet e IndexedFaceSet y el manejo de los

nodos de transformacion: rotacion, translacion y escalamiento. Lo anterior posibillita

para que se realicen extensiones al convertidor VRML a Java 3D en trabajos futuros,

tales como el uso de movimiento y la inclusion de sonido, lo cual completarıa las funcio-

nalidades mas demandadas por los programadores y que no se encuentran disponibles

en el ambito comercial, ni en el academico. Cabe resaltar que por haberse desarrollado

en Java, no se requiere de licencia para el desarrollo posterior, ademas de la portabilidad

que se cuenta para que pueda ser ejecutado en cualquier plataforma que cuente con el

compilador de Java y la maquina virtual de Java.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 139: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Bibliografıa

[1] Manetta C. and Blade, R.A., Glossary of Virtual Reality Terminology, International

Journal of Virtual Reality, http://ijvr.uccs.edu/manetta.htm, 1998.

[2] Judkins, P.,Glimpses of heaven, visions of hell: virtual reality and its applications,

Hodder & Stoughton, 1994.

[3] Aukstakalnis S., Blatner D. and Roth S., Silicon Mirage: The Art and Science of

Virtual Reality, Peachpit Pr, 1992.

[4] Isdale J., What Is Virtual Reality? A Web-Based Introduction,

http://vr.isdale.com/WhatIsVR.html, 1998.

[5] Louka, M., Human Factors Engineering and Control Room Design using a Virtual

Reality Based Tool for Design and Testing, WRSM, 1998.

[6] Ames, Andrea L., Nadeau, David R. and Moreland, John L., VRML 2.0 SOURCE-

BOOK, John Wiley & Sons, Inc 1997.

[7] Jamsa, Kris , Schmauder, Phil and Yee, Nelson, VRML Biblioteca del programador,

Mc Graw Hill, 1997.

[8] Arzate Pelayo,Gersain, Diseno e Implementacion de un traductor de lenguaje

VRML a JAVA3D, CIDETEC-IPN, 2009.

115

Page 140: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

116 BIBLIOGRAFIA

[9] Morales Alvarado, Rodrigo, Interfaz para el aprendizaje de la realidad virtual ha-

ciendo uso de un guante de datos, CIDETEC-IPN, 2007.

[10] Pratdepadua, Joan J. Programacion en 3D con Java3D, Alfaomega, 2003.

[11] Lea, Rodger, Java for 3d and Vrml Worlds, Rodger Lea, 2004.

[12] Davidson, Andrew, Pro Java 6 3D Game Development: Java 3D, JOGL, JInput

and JOAL APIs (Expert’s Voice in Java) , Mc. Graw Hill, Inc 2007.

[13] Jimenez Macıas, E., Sanz Adan, F. y Perez de la Parte, M., Analisis comparativo de

VRML, X3D y Java 3D, Departamento de Ingenierıa Electrica. Area de Ingenierıa

de Sistemas y Automatica. Universidad de La Rioja, 2004.

[14] Martınez Muneta, M. Luisa, Felez Mindan, Jesus y Romero Rey, Gregorio, Ultimas

tendencias en graficos web 3D para internet, Universidad Politecnica de Madrid.

ETS. Ingenieros Industriales, 2001.

[15] Emoto, M., Shoji, M., Suzuki, S. and Yamaguchi, S., The interactive data visualii-

zation with Java 3D, University of Industrial Technology, Sagamihara, 2001.

[16] Jimenez Macıas, E., Moreno Fernandez, J.A. y Perez de la Parte, M. Simulacion en

internet de un laboratorio virtual en sus entorno mediante VRML, Departamento

de Ingenierıa Electrica. Area de Ingenierıa de Sistemas y Automatica. Universidad

de La Rioja, 2006.

[17] Wightman M. P., Galvis G. y Jabba, A., Ambientes de Realidad Virtual no inmersi-

va multiusuario con herramientas de software libre, Mc. Graw HilThe Waite Group,

Inc 2003.

[18] Molina Dıaz A., Sistema de diseno de entornos virtuales de edificios domotizados

con Java 3D, 2002.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 141: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

BIBLIOGRAFIA 117

[19] Olguın Carbajal, M., Rivera Zarate, I. y Herrera Lozada, J.C., Implementacion de

camino sin fin para mundos virtuales por medio de una caminadora, CIDETEC-

IPN, 2005.

[20] Varela Vaca A. J., Matamoros Casas T. Refoyo Ruiz B. y Vega Cazalla J., VRML

Slicing, 2008.

[21] Mauve, Martin, Transparent Access To And Encoding Of VRML State Information,

2002.

[22] Garcıa-Bermejo Giner, Jose Rafael, Java SE6 & Swing El lenguaje mas versatil,

Pearson, 2007.

[23] Darwin, Ian F., Curso de java: soluciones y ejemplos para desarrolladores de Java,

Anaya multimedia, 2004.

[24] Martin Sierra, Antonio, Programador certificado java 2, Rama, 2010.

[25] VV.AA, Profesional java jdk 6, Anaya multimedia/Wrox, 2007.

[26] Horstmann, Cay & Cornelll, Gary, Core Java Volumen I, Pearson, 2006.

[27] Horstmann, Cay & Cornelll, Gary, Core Java Volumen II- Caracterısticas avanza-

das, Pearson, 2006.

[28] Eckel, Bruce, Piensa en Java, Pearson, 2002.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 142: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

118 BIBLIOGRAFIA

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 143: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice A

Comparacion entre la herramienta

de esta tesis y [8]

119

Page 144: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

120 Apendice A. Comparacion entre la herramienta de esta tesis y [8]

Tabla A.1: Comparacion entre ambos traductoresTrabajo anterior Nueva propuesta

Nombre de la tesis

Diseno e implementa-cion de un traductor delenguajes, VRML a Ja-va3D

Mejoras en el diseno,e implementacion de untraductor de VRML aJava 3D

Autor Gersaın Arzate PelayoJose Marco AntonioRueda Melendez

Ano 2009 2011Lenguaje de programa-cion

Visual Basic .net (Re-quiere licencia)

Java (gratuito)

Paradigma de progra-macion

Orientado a objetos Orientado a objetos

Sistema operativo Versiones de WindowsUnix/Linux, Windows,Mac, etc.

Procesador IntelIntel, Motorola, Sparc,etc.

Figuras regulares SI SIFiguras irregulares NO SIDeformacion en figurascompuestas

SI NO

Transformaciones multi-ples

NO (uso de banderas pa-ra reconocer las rotacio-nes)

SI (no requiere deningun apoyo)

AparienciaSensacion de objetosplanos

Se aprecia la profundi-dad

Estructuras de datos ArreglosArbol y lista ligada (es-tructuras dinamicas)

Interfaz graficaSolo en la conversionVRML a Java 3D

Proceso completo (inclu-ye compilacion y ejecu-cion en Java)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 145: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice B

Codigos en VRML y en Java 3D de

figuras complejas

En esta seccion se presentan cuatro ejemplos de gran complejidad que se usaron para

probar el correcto funcionamiento de la herramienta Traductor VRML a Java 3D. En

todos los casos se presentan los codigos de entrada en VRML y sus respectivos codigos

de salida en Java 3D generados por el Traductor VRML a Java 3D.

En los tres primeros ejemplos se muestran objetos complejos formados por figuras regu-

lares con traslaciones, rotaciones y escalamiento.

En el cuarto ejemplo se presenta una imagen muy compleja usando IndexedFaceSet.

B.1. Codigos para renderizar la figura: Silla

En este primer ejemplo se muestra el codigo de entrada en VRML y el codigo de

salida en Java 3D, para representar una silla de madera, la cual esta formado por varias

figuras regulares con traslaciones, rotaciones y escalamiento, ademas de tener una textura

asociada.

121

Page 146: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

122 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

B.1.1. Codigo de entrada al Traductor VRML a Java 3D. Ar-

chivo: SillaMadera01.wrl

Este ejemplo se presento en [8] como ejemplo final, pero se nota la deformacion en la

proporcion de las dimensiones y que son debidas a la forma de dimensionar las figuras

basicas en Java 3D. La herramienta propuesta ha corregido este problema. Se presenta

este ejemplo para comprobar la correccion del problema antes mencionado.

1 #VRML V2.0 u t f 8

2 Transform{

3 r o t a t i on 0 1 0 0 .23

4 ch i l d r en [

5 Transform {

6 r o t a t i on 1 0 0 0 .428

7 ch i l d r en [

8 Shape{

9 geometry Box{

10 s i z e 0 .45 0 .4 0 .02

11 }

12 appearance Appearance{

13 t ex tu re ImageTexture{

14 u r l ”madera1 . jpg ”

15 }

16 }

17 }

18 Transform {

19 t r a n s l a t i o n 0 .0 −0.19 0 .19

20 ch i l d r en [

21 Shape{

22 geometry Box{

23 s i z e 0 .45 0 .02 0 .4

24 }

25 appearance Appearance{

26 t ex tu re ImageTexture {

27 u r l ”madera4 . jpg ”

28 }

29 }

30 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 147: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.1. Codigos para renderizar la figura: Silla 123

31 ]

32 }

33 Transform {

34 t r a n s l a t i o n −0.17 −0.38 0 .04

35 ch i l d r en [

36 Shape{

37 geometry Cylinder{

38 rad iu s 0 .02 he ight 0 .40

39 }

40 appearance Appearance{

41 t ex tu re ImageTexture {

42 u r l ”madera1 . jpg ”

43 }

44 }

45 }

46 ]

47 }

48 Transform {

49 t r a n s l a t i o n 0 .17 −0.38 0 .04

50 ch i l d r en [

51 Shape{

52 geometry Cylinder{

53 rad iu s 0 .02 he ight 0 .40

54 }

55 appearance Appearance{

56 t ex tu re ImageTexture {

57 u r l ”madera1 . jpg ”

58 }

59 }

60 }

61 ]

62 }

63 Transform {

64 t r a n s l a t i o n −0.17 −0.38 0 .34

65 ch i l d r en [

66 Shape{

67 geometry Cylinder{

68 rad iu s 0 .02 he ight 0 .40

69 }

70 appearance Appearance{

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 148: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

124 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

71 t ex tu re ImageTexture {

72 u r l ”madera1 . jpg ”

73 }

74 }

75 }

76 ]

77 }

78 Transform {

79 t r a n s l a t i o n 0 .17 −0.38 0 .34

80 ch i l d r en [

81 Shape{

82 geometry Cylinder{

83 rad iu s 0 .02 he ight 0 .40

84 }

85 appearance Appearance{

86 t ex tu re ImageTexture {

87 u r l ”madera1 . jpg ”

88 }

89 }

90 }

91 ]

92 }

93 ]

94 }

95 ]

96 }

B.1.2. Codigo de salida del Traductor VRML a Java 3D. Ar-

chivo: SillaMadera01.java

1 import javax . swing . JFrame ;

2 import java . awt . BorderLayout ;

3 import java . awt . Frame ;

4 import java . awt . event .WindowEvent ;

5 import java . awt . event . WindowListener ;

6 import java . awt . GraphicsConf igurat ion ;

7 import com . sun . j3d . u t i l s . image . TextureLoader ;

8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 149: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.1. Codigos para renderizar la figura: Silla 125

9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;

11 import javax . vecmath . Co lor3 f ;

12 import javax . vecmath . Vector3d ;

13 import com . sun . j3d . u t i l s . behav ior s . vp . ∗ ;

14 import javax . vecmath . Point3d ;

15 import javax . vecmath . Po int3 f ;

16 import javax . vecmath . Co lor3 f ;

17 import javax . vecmath . ∗ ;

18

19 public class Si l laMadera01 extends JFrame {

20 public Si l laMadera01 ( ) {

21 setLayout (new BorderLayout ( ) ) ;

22 GraphicsConf igurat ion con f i g = SimpleUniverse . g e tPr e f e r r edCon f i gu ra t i on

( ) ;

23 Canvas3D canvas = new Canvas3D( con f i g ) ;

24 add ( ”Center ” , canvas ) ;

25 BranchGroup escena = createSceneGraph ( ) ;

26 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;

27 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;

28 simpleU . addBranchGraph ( escena ) ;

29 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a navigac ion de l a escena

usando e l raton .

30 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;

31 ob . setSchedul ingBounds (new BoundingSphere (new Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) ,

Double .MAXVALUE) ) ;

32 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;

33 }

34

35 public stat ic void main ( St r ing args [ ] ) {

36 Si l laMadera01 frame = new Si l laMadera01 ( ) ;

37 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;

38 frame . s e t S i z e (300 , 300) ;

39 frame . s e tV i s i b l e ( true ) ;

40 }

41

42 public BranchGroup createSceneGraph ( ) {

43 BranchGroup r a i z = new BranchGroup ( ) ;

44 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAXVALUE) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 150: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

126 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

45 Di r e c t i ona lL i gh t l 1 =

46 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

47 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;

48 l 1 . s e t In f luenc ingBounds ( bounds ) ;

49 r a i z . addChild ( l 1 ) ;

50 Di r e c t i ona lL i gh t l 2 =

51 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

52 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

53 l 2 . s e t In f luenc ingBounds ( bounds ) ;

54 r a i z . addChild ( l 2 ) ;

55 Di r e c t i ona lL i gh t l 3 =

56 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

57 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;

58 l 3 . s e t In f luenc ingBounds ( bounds ) ;

59 r a i z . addChild ( l 3 ) ;

60 Di r e c t i ona lL i gh t l 4 =

61 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

62 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;

63 l 4 . s e t In f luenc ingBounds ( bounds ) ;

64 r a i z . addChild ( l 4 ) ;

65 Box box0= new Box (0 . 225 f , 0 . 2 f , 0 . 0 1 f , c r eaApar i enc ia0 ( ) ) ;

66 Box box1= new Box (0 . 225 f , 0 . 0 1 f , 0 . 2 f , c r eaApar i enc ia1 ( ) ) ;

67 Cyl inder cy l i nd e r 2= new Cyl inder ( 0 . 02 f , 0 . 4 0 f , c r eaApar i enc ia2 ( ) ) ;

68 Cyl inder cy l i nd e r 3= new Cyl inder ( 0 . 02 f , 0 . 4 0 f , c r eaApar i enc ia3 ( ) ) ;

69 Cyl inder cy l i nd e r 4= new Cyl inder ( 0 . 02 f , 0 . 4 0 f , c r eaApar i enc ia4 ( ) ) ;

70 Cyl inder cy l i nd e r 5= new Cyl inder ( 0 . 02 f , 0 . 4 0 f , c r eaApar i enc ia5 ( ) ) ;

71

72 TransformGroup tg0=new TransformGroup ( t rans formac ion0 ( ) ) ;

73 tg0 . addChild ( box1 ) ;

74 TransformGroup tg1=new TransformGroup ( t rans formac ion1 ( ) ) ;

75 tg1 . addChild ( cy l i nd e r 2 ) ;

76 TransformGroup tg2=new TransformGroup ( t rans formac ion2 ( ) ) ;

77 tg2 . addChild ( cy l i nd e r 3 ) ;

78 TransformGroup tg3=new TransformGroup ( t rans formac ion3 ( ) ) ;

79 tg3 . addChild ( cy l i nd e r 4 ) ;

80 TransformGroup tg4=new TransformGroup ( t rans formac ion4 ( ) ) ;

81 tg4 . addChild ( cy l i nd e r 5 ) ;

82 TransformGroup tg5=new TransformGroup ( t rans formac ion5 ( ) ) ;

83 tg5 . addChild ( box0 ) ;

84 tg5 . addChild ( tg0 ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 151: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.1. Codigos para renderizar la figura: Silla 127

85 tg5 . addChild ( tg1 ) ;

86 tg5 . addChild ( tg2 ) ;

87 tg5 . addChild ( tg3 ) ;

88 tg5 . addChild ( tg4 ) ;

89 r a i z . addChild ( tg5 ) ;

90

91 r a i z . compi le ( ) ;

92 return r a i z ;

93 }

94

95 public Appearance c reaApar i enc ia0 ( ) {

96 Appearance app=new Appearance ( ) ;

97 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

98 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

99 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

100 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

101 app . setTexCoordGeneration ( texCoord ) ;

102 St r ing nomArch=”madera1 . jpg ” ;

103 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

104 ImageComponent2D image=loade r . getImage ( ) ;

105 i f ( image==null )

106 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

107 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

108 t ex tu re . setImage (0 , image ) ;

109 app . setTexture ( t ex tu re ) ;

110 return app ;

111 }

112 public Appearance c reaApar i enc ia1 ( ) {

113 Appearance app=new Appearance ( ) ;

114 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

115 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

116 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

117 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

118 app . setTexCoordGeneration ( texCoord ) ;

119 St r ing nomArch=”madera4 . jpg ” ;

120 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

121 ImageComponent2D image=loade r . getImage ( ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 152: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

128 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

122 i f ( image==null )

123 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

124 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

125 t ex tu re . setImage (0 , image ) ;

126 app . setTexture ( t ex tu re ) ;

127 return app ;

128 }

129 public Appearance c reaApar i enc ia2 ( ) {

130 Appearance app=new Appearance ( ) ;

131 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

132 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

133 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

134 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

135 app . setTexCoordGeneration ( texCoord ) ;

136 St r ing nomArch=”madera1 . jpg ” ;

137 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

138 ImageComponent2D image=loade r . getImage ( ) ;

139 i f ( image==null )

140 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

141 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

142 t ex tu re . setImage (0 , image ) ;

143 app . setTexture ( t ex tu re ) ;

144 return app ;

145 }

146 public Appearance c reaApar i enc ia3 ( ) {

147 Appearance app=new Appearance ( ) ;

148 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

149 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

150 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

151 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

152 app . setTexCoordGeneration ( texCoord ) ;

153 St r ing nomArch=”madera1 . jpg ” ;

154 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

155 ImageComponent2D image=loade r . getImage ( ) ;

156 i f ( image==null )

157 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 153: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.1. Codigos para renderizar la figura: Silla 129

158 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

159 t ex tu re . setImage (0 , image ) ;

160 app . setTexture ( t ex tu re ) ;

161 return app ;

162 }

163 public Appearance c reaApar i enc ia4 ( ) {

164 Appearance app=new Appearance ( ) ;

165 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

166 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

167 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

168 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

169 app . setTexCoordGeneration ( texCoord ) ;

170 St r ing nomArch=”madera1 . jpg ” ;

171 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

172 ImageComponent2D image=loade r . getImage ( ) ;

173 i f ( image==null )

174 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

175 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

176 t ex tu re . setImage (0 , image ) ;

177 app . setTexture ( t ex tu re ) ;

178 return app ;

179 }

180 public Appearance c reaApar i enc ia5 ( ) {

181 Appearance app=new Appearance ( ) ;

182 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

183 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

184 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

185 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

186 app . setTexCoordGeneration ( texCoord ) ;

187 St r ing nomArch=”madera1 . jpg ” ;

188 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

189 ImageComponent2D image=loade r . getImage ( ) ;

190 i f ( image==null )

191 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

192 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 154: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

130 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

193 t ex tu re . setImage (0 , image ) ;

194 app . setTexture ( t ex tu re ) ;

195 return app ;

196 }

197

198 public Transform3D trans formac ion0 ( ) {

199 Transform3D t0=new Transform3D ( ) ;

200 Vector3d v=new Vector3d (0 . 0 , −0 .19 , 0 . 19 ) ;

201 t0 . s e t ( v ) ;

202 return t0 ;

203 }

204 public Transform3D trans formac ion1 ( ) {

205 Transform3D t0=new Transform3D ( ) ;

206 Vector3d v=new Vector3d (−0.17 ,−0.38 ,0 .04) ;

207 t0 . s e t ( v ) ;

208 return t0 ;

209 }

210 public Transform3D trans formac ion2 ( ) {

211 Transform3D t0=new Transform3D ( ) ;

212 Vector3d v=new Vector3d (0 . 17 , −0 .38 ,0 . 04 ) ;

213 t0 . s e t ( v ) ;

214 return t0 ;

215 }

216 public Transform3D trans formac ion3 ( ) {

217 Transform3D t0=new Transform3D ( ) ;

218 Vector3d v=new Vector3d (−0.17 ,−0.38 ,0 .34) ;

219 t0 . s e t ( v ) ;

220 return t0 ;

221 }

222 public Transform3D trans formac ion4 ( ) {

223 Transform3D t0=new Transform3D ( ) ;

224 Vector3d v=new Vector3d (0 . 17 , −0 .38 ,0 . 34 ) ;

225 t0 . s e t ( v ) ;

226 return t0 ;

227 }

228 public Transform3D trans formac ion5 ( ) {

229 Transform3D t0=new Transform3D ( ) ;

230 t0 . rotX (0 . 4 28 ) ;

231 Transform3D t1=new Transform3D ( ) ;

232 t1 . rotY ( 0 . 2 3 ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 155: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 131

233 t0 . mul ( t1 ) ;

234 return t0 ;

235 }

236

237 }

B.2. Codigos para renderizar la figura: Sofa

En este segundo ejemplo se muestra el codigo de entrada en VRML y el codigo de

salida en Java 3D, para representar un Sofa con textura de piel, el cual esta formado por

varias figuras regulares con traslaciones, rotaciones y escalamiento. Se puede observar

una ligera diferencia en la representacion de las texturas. En Java 3D se puede notar

que el sofa parece mas real por la sensacion de estar acojinado.

B.2.1. Codigo de entrada al Traductor VRML a Java 3D. Ar-

chivo: Sofa1.wrl

1 #VRML V2.0 u t f 8

2 Transform {

3 s c a l e 0 . 3 0 .3 0 .3

4 ch i l d r en [

5 Transform{

6 t r a n s l a t i o n 3 1 0

7 ch i l d r en [

8 Transform{

9 r o t a t i on 1 0 0 1 .571

10 ch i l d r en [

11 Shape{

12 geometry Cylinder{

13 rad iu s 0 .25 he ight 2

14 }

15 appearance Appearance{

16 t ex tu re ImageTexture{

17 u r l ” p i e l 2 . jpg ”

18 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 156: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

132 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

19 }

20 }

21 ]

22 }

23 ]

24 }

25 ]

26 }

27 Transform {

28 s c a l e 0 . 3 0 .3 0 .3

29 ch i l d r en [

30 Transform {

31 t r a n s l a t i o n −3 1 0

32 ch i l d r en [

33 Transform{

34 r o t a t i on 1 0 0 1 .571

35 ch i l d r en [

36 Shape{

37 geometry Cylinder{

38 rad iu s 0 .25 he ight 2

39 }

40 appearance Appearance{

41 t ex tu re ImageTexture{

42 u r l ” p i e l 2 . jpg ”

43 }

44 }

45 }

46 ]

47 }

48 ]

49 }

50 ]

51 }

52 Transform {

53 s c a l e 0 . 3 0 .3 0 .3

54 ch i l d r en [

55 Transform{

56 t r a n s l a t i o n 0 2 .0 −1

57 ch i l d r en [

58 Transform{

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 157: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 133

59 r o t a t i on 0 0 1 1 .571

60 ch i l d r en [

61 Shape{

62 geometry Cylinder{

63 rad iu s . 25 he ight 6

64 }

65 appearance Appearance{

66 t ex tu re ImageTexture{

67 u r l ” p i e l 2 . jpg ”

68 }

69 }

70 }

71 ]

72 }

73 ]

74 }

75 ]

76 }

77 Transform{

78 s c a l e 0 . 3 0 .3 0 .3

79 ch i l d r en [

80 Transform{

81 t r a n s l a t i o n 0 0 .5 −1

82 ch i l d r en [

83 Shape{

84 geometry Box{

85 s i z e 6 3 0 .5

86 }

87 appearance Appearance{

88 t ex tu re ImageTexture{

89 u r l ” p i e l 2 . jpg ”

90 }

91 }

92 }

93 ]

94 }

95 ]

96 }

97 Transform {

98 s c a l e 0 . 3 0 .3 0 .3

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 158: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

134 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

99 ch i l d r en [

100 Transform{

101 t r a n s l a t i o n 0 .0 0 .5 0 .0

102 ch i l d r en [

103 Shape{

104 geometry Box{

105 s i z e 6 0 .5 2

106 }

107 appearance Appearance{

108 t ex tu re ImageTexture{

109 u r l ” p i e l 2 . jpg ”

110 }

111 }

112 }

113 ]

114 }

115 ]

116 }

117 Transform {

118 s c a l e 0 . 3 0 .3 0 .3

119 ch i l d r en [

120 Transform{

121 t r a n s l a t i o n 3 0 0

122 ch i l d r en [

123 Shape{

124 geometry Box{

125 s i z e 0 . 5 2 2

126 }

127 appearance Appearance{

128 t ex tu re ImageTexture{

129 u r l ” p i e l 2 . jpg ”

130 }

131 }

132 }

133 ]

134 }

135 ]

136 }

137 Transform {

138 s c a l e 0 . 3 0 .3 0 .3

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 159: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 135

139 ch i l d r en [

140 Transform{

141 t r a n s l a t i o n −3 0 0

142 ch i l d r en [

143 Shape{

144 geometry Box{

145 s i z e 0 . 5 2 2

146 }

147 appearance Appearance{

148 t ex tu re ImageTexture{

149 u r l ” p i e l 2 . jpg ”

150 }

151 }

152 }

153 ]

154 }

155 ]

156 }

157 Transform {

158 s c a l e 0 . 3 0 .3 0 .3

159 ch i l d r en [

160 Transform{

161 t r a n s l a t i o n −3 1 1

162 ch i l d r en [

163 Transform{

164 s c a l e 1 1 0 .5

165 ch i l d r en [

166 Shape{

167 geometry Sphere{

168 rad iu s . 25

169 }

170 appearance Appearance {

171 t ex tu re ImageTexture{

172 u r l ” p i e l 2 . jpg ”

173 }

174 }

175 }

176 ]

177 }

178 ]

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 160: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

136 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

179 }

180 ]

181 }

182 Transform {

183 s c a l e 0 . 3 0 .3 0 .3

184 ch i l d r en [

185 Transform{

186 t r a n s l a t i o n 3 1 1

187 ch i l d r en [

188 Transform{

189 s c a l e 1 1 0 .5

190 ch i l d r en [

191 Shape{

192 geometry Sphere{

193 rad iu s . 25

194 }

195 appearance Appearance{

196 t ex tu re ImageTexture{

197 u r l ” p i e l 2 . jpg ”

198 }

199 }

200 }

201 ]

202 }

203 ]

204 }

205 ]

206 }

B.2.2. Codigo de salida del Traductor VRML a Java 3D. Ar-

chivo: Sofa.java

1 import javax . swing . JFrame ;

2 import java . awt . BorderLayout ;

3 import java . awt . Frame ;

4 import java . awt . event .WindowEvent ;

5 import java . awt . event . WindowListener ;

6 import java . awt . GraphicsConf igurat ion ;

7 import com . sun . j3d . u t i l s . image . TextureLoader ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 161: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 137

8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;

9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;

11 import javax . vecmath . Co lor3 f ;

12 import javax . vecmath . Vector3d ;

13 import com . sun . j3d . u t i l s . behav ior s . vp . ∗ ;

14 import javax . vecmath . Point3d ;

15 import javax . vecmath . Po int3 f ;

16 import javax . vecmath . Co lor3 f ;

17 import javax . vecmath . ∗ ;

18

19 public class Sofa1 extends JFrame {

20 public Sofa1 ( ) {

21 setLayout (new BorderLayout ( ) ) ;

22 GraphicsConf igurat ion con f i g = SimpleUniverse . g e tPr e f e r r edCon f i gu ra t i on

( ) ;

23 Canvas3D canvas = new Canvas3D( con f i g ) ;

24 add ( ”Center ” , canvas ) ;

25 BranchGroup escena = createSceneGraph ( ) ;

26 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;

27 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;

28 simpleU . addBranchGraph ( escena ) ;

29 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a navigac ion de l a escena

usando e l raton .

30 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;

31 ob . setSchedul ingBounds (new BoundingSphere (new Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) ,

Double .MAXVALUE) ) ;

32 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;

33 }

34

35

36 public stat ic void main ( St r ing args [ ] ) {

37 Sofa1 frame = new Sofa1 ( ) ;

38 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;

39 frame . s e t S i z e (300 , 300) ;

40 frame . s e tV i s i b l e ( true ) ;

41 }

42

43 public BranchGroup createSceneGraph ( ) {

44 BranchGroup r a i z = new BranchGroup ( ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 162: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

138 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

45 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAXVALUE) ;

46 Di r e c t i ona lL i gh t l 1 =

47 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

48 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;

49 l 1 . s e t In f luenc ingBounds ( bounds ) ;

50 r a i z . addChild ( l 1 ) ;

51 Di r e c t i ona lL i gh t l 2 =

52 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

53 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

54 l 2 . s e t In f luenc ingBounds ( bounds ) ;

55 r a i z . addChild ( l 2 ) ;

56 Di r e c t i ona lL i gh t l 3 =

57 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

58 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;

59 l 3 . s e t In f luenc ingBounds ( bounds ) ;

60 r a i z . addChild ( l 3 ) ;

61 Di r e c t i ona lL i gh t l 4 =

62 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

63 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;

64 l 4 . s e t In f luenc ingBounds ( bounds ) ;

65 r a i z . addChild ( l 4 ) ;

66 Cyl inder cy l i nd e r 0= new Cyl inder ( 0 . 25 f , 2 f , c r eaApar i enc ia0 ( ) ) ;

67 Cyl inder cy l i nd e r 1= new Cyl inder ( 0 . 25 f , 2 f , c r eaApar i enc ia1 ( ) ) ;

68 Cyl inder cy l i nd e r 2= new Cyl inder ( . 2 5 f , 6 f , c r eaApar i enc ia2 ( ) ) ;

69 Box box3= new Box ( 3 . 0 f , 1 . 5 f , 0 . 2 5 f , c r eaApar i enc ia3 ( ) ) ;

70 Box box4= new Box ( 3 . 0 f , 0 . 2 5 f , 1 . 0 f , c r eaApar i enc ia4 ( ) ) ;

71 Box box5= new Box (0 . 25 f , 1 . 0 f , 1 . 0 f , c r eaApar i enc ia5 ( ) ) ;

72 Box box6= new Box (0 . 25 f , 1 . 0 f , 1 . 0 f , c r eaApar i enc ia6 ( ) ) ;

73 Sphere sphere7= new Sphere ( . 2 5 f , c r eaApar i enc ia7 ( ) ) ;

74 Sphere sphere8= new Sphere ( . 2 5 f , c r eaApar i enc ia8 ( ) ) ;

75

76 TransformGroup tg0=new TransformGroup ( t rans formac ion0 ( ) ) ;

77 tg0 . addChild ( cy l i nd e r 0 ) ;

78 TransformGroup tg1=new TransformGroup ( t rans formac ion1 ( ) ) ;

79 tg1 . addChild ( tg0 ) ;

80 TransformGroup tg2=new TransformGroup ( t rans formac ion2 ( ) ) ;

81 tg2 . addChild ( tg1 ) ;

82 TransformGroup tg3=new TransformGroup ( t rans formac ion3 ( ) ) ;

83 tg3 . addChild ( cy l i nd e r 1 ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 163: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 139

84 TransformGroup tg4=new TransformGroup ( t rans formac ion4 ( ) ) ;

85 tg4 . addChild ( tg3 ) ;

86 TransformGroup tg5=new TransformGroup ( t rans formac ion5 ( ) ) ;

87 tg5 . addChild ( tg4 ) ;

88 TransformGroup tg6=new TransformGroup ( t rans formac ion6 ( ) ) ;

89 tg6 . addChild ( cy l i nd e r 2 ) ;

90 TransformGroup tg7=new TransformGroup ( t rans formac ion7 ( ) ) ;

91 tg7 . addChild ( tg6 ) ;

92 TransformGroup tg8=new TransformGroup ( t rans formac ion8 ( ) ) ;

93 tg8 . addChild ( tg7 ) ;

94 TransformGroup tg9=new TransformGroup ( t rans formac ion9 ( ) ) ;

95 tg9 . addChild ( box3 ) ;

96 TransformGroup tg10=new TransformGroup ( trans formac ion10 ( ) ) ;

97 tg10 . addChild ( tg9 ) ;

98 TransformGroup tg11=new TransformGroup ( trans formac ion11 ( ) ) ;

99 tg11 . addChild ( box4 ) ;

100 TransformGroup tg12=new TransformGroup ( trans formac ion12 ( ) ) ;

101 tg12 . addChild ( tg11 ) ;

102 TransformGroup tg13=new TransformGroup ( trans formac ion13 ( ) ) ;

103 tg13 . addChild ( box5 ) ;

104 TransformGroup tg14=new TransformGroup ( trans formac ion14 ( ) ) ;

105 tg14 . addChild ( tg13 ) ;

106 TransformGroup tg15=new TransformGroup ( trans formac ion15 ( ) ) ;

107 tg15 . addChild ( box6 ) ;

108 TransformGroup tg16=new TransformGroup ( trans formac ion16 ( ) ) ;

109 tg16 . addChild ( tg15 ) ;

110 TransformGroup tg17=new TransformGroup ( trans formac ion17 ( ) ) ;

111 tg17 . addChild ( sphere7 ) ;

112 TransformGroup tg18=new TransformGroup ( trans formac ion18 ( ) ) ;

113 tg18 . addChild ( tg17 ) ;

114 TransformGroup tg19=new TransformGroup ( trans formac ion19 ( ) ) ;

115 tg19 . addChild ( tg18 ) ;

116 TransformGroup tg20=new TransformGroup ( trans formac ion20 ( ) ) ;

117 tg20 . addChild ( sphere8 ) ;

118 TransformGroup tg21=new TransformGroup ( trans formac ion21 ( ) ) ;

119 tg21 . addChild ( tg20 ) ;

120 TransformGroup tg22=new TransformGroup ( trans formac ion22 ( ) ) ;

121 tg22 . addChild ( tg21 ) ;

122 r a i z . addChild ( tg2 ) ;

123 r a i z . addChild ( tg5 ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 164: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

140 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

124 r a i z . addChild ( tg8 ) ;

125 r a i z . addChild ( tg10 ) ;

126 r a i z . addChild ( tg12 ) ;

127 r a i z . addChild ( tg14 ) ;

128 r a i z . addChild ( tg16 ) ;

129 r a i z . addChild ( tg19 ) ;

130 r a i z . addChild ( tg22 ) ;

131

132 r a i z . compi le ( ) ;

133 return r a i z ;

134 }

135

136 public Appearance c reaApar i enc ia0 ( ) {

137 Appearance app=new Appearance ( ) ;

138 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

139 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

140 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

141 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

142 app . setTexCoordGeneration ( texCoord ) ;

143 St r ing nomArch=” p i e l 2 . jpg ” ;

144 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

145 ImageComponent2D image=loade r . getImage ( ) ;

146 i f ( image==null )

147 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

148 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

149 t ex tu re . setImage (0 , image ) ;

150 app . setTexture ( t ex tu re ) ;

151 return app ;

152 }

153 public Appearance c reaApar i enc ia1 ( ) {

154 Appearance app=new Appearance ( ) ;

155 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

156 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

157 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

158 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

159 app . setTexCoordGeneration ( texCoord ) ;

160 St r ing nomArch=” p i e l 2 . jpg ” ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 165: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 141

161 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

162 ImageComponent2D image=loade r . getImage ( ) ;

163 i f ( image==null )

164 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

165 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

166 t ex tu re . setImage (0 , image ) ;

167 app . setTexture ( t ex tu re ) ;

168 return app ;

169 }

170 public Appearance c reaApar i enc ia2 ( ) {

171 Appearance app=new Appearance ( ) ;

172 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

173 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

174 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

175 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

176 app . setTexCoordGeneration ( texCoord ) ;

177 St r ing nomArch=” p i e l 2 . jpg ” ;

178 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

179 ImageComponent2D image=loade r . getImage ( ) ;

180 i f ( image==null )

181 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

182 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

183 t ex tu re . setImage (0 , image ) ;

184 app . setTexture ( t ex tu re ) ;

185 return app ;

186 }

187 public Appearance c reaApar i enc ia3 ( ) {

188 Appearance app=new Appearance ( ) ;

189 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

190 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

191 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

192 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

193 app . setTexCoordGeneration ( texCoord ) ;

194 St r ing nomArch=” p i e l 2 . jpg ” ;

195 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

196 ImageComponent2D image=loade r . getImage ( ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 166: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

142 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

197 i f ( image==null )

198 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

199 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

200 t ex tu re . setImage (0 , image ) ;

201 app . setTexture ( t ex tu re ) ;

202 return app ;

203 }

204 public Appearance c reaApar i enc ia4 ( ) {

205 Appearance app=new Appearance ( ) ;

206 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

207 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

208 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

209 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

210 app . setTexCoordGeneration ( texCoord ) ;

211 St r ing nomArch=” p i e l 2 . jpg ” ;

212 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

213 ImageComponent2D image=loade r . getImage ( ) ;

214 i f ( image==null )

215 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

216 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

217 t ex tu re . setImage (0 , image ) ;

218 app . setTexture ( t ex tu re ) ;

219 return app ;

220 }

221 public Appearance c reaApar i enc ia5 ( ) {

222 Appearance app=new Appearance ( ) ;

223 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

224 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

225 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

226 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

227 app . setTexCoordGeneration ( texCoord ) ;

228 St r ing nomArch=” p i e l 2 . jpg ” ;

229 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

230 ImageComponent2D image=loade r . getImage ( ) ;

231 i f ( image==null )

232 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 167: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 143

233 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

234 t ex tu re . setImage (0 , image ) ;

235 app . setTexture ( t ex tu re ) ;

236 return app ;

237 }

238 public Appearance c reaApar i enc ia6 ( ) {

239 Appearance app=new Appearance ( ) ;

240 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

241 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

242 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

243 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

244 app . setTexCoordGeneration ( texCoord ) ;

245 St r ing nomArch=” p i e l 2 . jpg ” ;

246 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

247 ImageComponent2D image=loade r . getImage ( ) ;

248 i f ( image==null )

249 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

250 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

251 t ex tu re . setImage (0 , image ) ;

252 app . setTexture ( t ex tu re ) ;

253 return app ;

254 }

255 public Appearance c reaApar i enc ia7 ( ) {

256 Appearance app=new Appearance ( ) ;

257 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

258 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

259 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

260 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

261 app . setTexCoordGeneration ( texCoord ) ;

262 St r ing nomArch=” p i e l 2 . jpg ” ;

263 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

264 ImageComponent2D image=loade r . getImage ( ) ;

265 i f ( image==null )

266 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

267 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 168: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

144 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

268 t ex tu re . setImage (0 , image ) ;

269 app . setTexture ( t ex tu re ) ;

270 return app ;

271 }

272 public Appearance c reaApar i enc ia8 ( ) {

273 Appearance app=new Appearance ( ) ;

274 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

275 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

276 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

277 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

278 app . setTexCoordGeneration ( texCoord ) ;

279 St r ing nomArch=” p i e l 2 . jpg ” ;

280 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

281 ImageComponent2D image=loade r . getImage ( ) ;

282 i f ( image==null )

283 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

284 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

285 t ex tu re . setImage (0 , image ) ;

286 app . setTexture ( t ex tu re ) ;

287 return app ;

288 }

289

290 public Transform3D trans formac ion0 ( ) {

291 Transform3D t0=new Transform3D ( ) ;

292 t0 . rotX (1 . 5 71 ) ;

293 return t0 ;

294 }

295 public Transform3D trans formac ion1 ( ) {

296 Transform3D t0=new Transform3D ( ) ;

297 Vector3d v=new Vector3d (3 , 1 , 0 ) ;

298 t0 . s e t ( v ) ;

299 return t0 ;

300 }

301 public Transform3D trans formac ion2 ( ) {

302 Transform3D t0=new Transform3D ( ) ;

303 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

304 t0 . s e t S c a l e ( v ) ;

305 return t0 ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 169: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 145

306 }

307 public Transform3D trans formac ion3 ( ) {

308 Transform3D t0=new Transform3D ( ) ;

309 t0 . rotX (1 . 5 71 ) ;

310 return t0 ;

311 }

312 public Transform3D trans formac ion4 ( ) {

313 Transform3D t0=new Transform3D ( ) ;

314 Vector3d v=new Vector3d (−3 ,1 ,0) ;

315 t0 . s e t ( v ) ;

316 return t0 ;

317 }

318 public Transform3D trans formac ion5 ( ) {

319 Transform3D t0=new Transform3D ( ) ;

320 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

321 t0 . s e t S c a l e ( v ) ;

322 return t0 ;

323 }

324 public Transform3D trans formac ion6 ( ) {

325 Transform3D t0=new Transform3D ( ) ;

326 t0 . rotZ ( 1 . 5 71 ) ;

327 return t0 ;

328 }

329 public Transform3D trans formac ion7 ( ) {

330 Transform3D t0=new Transform3D ( ) ;

331 Vector3d v=new Vector3d (0 ,2 .0 ,−1) ;

332 t0 . s e t ( v ) ;

333 return t0 ;

334 }

335 public Transform3D trans formac ion8 ( ) {

336 Transform3D t0=new Transform3D ( ) ;

337 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

338 t0 . s e t S c a l e ( v ) ;

339 return t0 ;

340 }

341 public Transform3D trans formac ion9 ( ) {

342 Transform3D t0=new Transform3D ( ) ;

343 Vector3d v=new Vector3d (0 ,0 .5 ,−1) ;

344 t0 . s e t ( v ) ;

345 return t0 ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 170: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

146 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

346 }

347 public Transform3D trans formac ion10 ( ) {

348 Transform3D t0=new Transform3D ( ) ;

349 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

350 t0 . s e t S c a l e ( v ) ;

351 return t0 ;

352 }

353 public Transform3D trans formac ion11 ( ) {

354 Transform3D t0=new Transform3D ( ) ;

355 Vector3d v=new Vector3d ( 0 . 0 , 0 . 5 , 0 . 0 ) ;

356 t0 . s e t ( v ) ;

357 return t0 ;

358 }

359 public Transform3D trans formac ion12 ( ) {

360 Transform3D t0=new Transform3D ( ) ;

361 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

362 t0 . s e t S c a l e ( v ) ;

363 return t0 ;

364 }

365 public Transform3D trans formac ion13 ( ) {

366 Transform3D t0=new Transform3D ( ) ;

367 Vector3d v=new Vector3d (3 , 0 , 0 ) ;

368 t0 . s e t ( v ) ;

369 return t0 ;

370 }

371 public Transform3D trans formac ion14 ( ) {

372 Transform3D t0=new Transform3D ( ) ;

373 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

374 t0 . s e t S c a l e ( v ) ;

375 return t0 ;

376 }

377 public Transform3D trans formac ion15 ( ) {

378 Transform3D t0=new Transform3D ( ) ;

379 Vector3d v=new Vector3d (−3 ,0 ,0) ;

380 t0 . s e t ( v ) ;

381 return t0 ;

382 }

383 public Transform3D trans formac ion16 ( ) {

384 Transform3D t0=new Transform3D ( ) ;

385 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 171: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.2. Codigos para renderizar la figura: Sofa 147

386 t0 . s e t S c a l e ( v ) ;

387 return t0 ;

388 }

389 public Transform3D trans formac ion17 ( ) {

390 Transform3D t0=new Transform3D ( ) ;

391 Vector3d v=new Vector3d ( 1 , 1 , 0 . 5 ) ;

392 t0 . s e t S c a l e ( v ) ;

393 return t0 ;

394 }

395 public Transform3D trans formac ion18 ( ) {

396 Transform3D t0=new Transform3D ( ) ;

397 Vector3d v=new Vector3d (−3 ,1 ,1) ;

398 t0 . s e t ( v ) ;

399 return t0 ;

400 }

401 public Transform3D trans formac ion19 ( ) {

402 Transform3D t0=new Transform3D ( ) ;

403 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

404 t0 . s e t S c a l e ( v ) ;

405 return t0 ;

406 }

407 public Transform3D trans formac ion20 ( ) {

408 Transform3D t0=new Transform3D ( ) ;

409 Vector3d v=new Vector3d ( 1 , 1 , 0 . 5 ) ;

410 t0 . s e t S c a l e ( v ) ;

411 return t0 ;

412 }

413 public Transform3D trans formac ion21 ( ) {

414 Transform3D t0=new Transform3D ( ) ;

415 Vector3d v=new Vector3d (3 , 1 , 1 ) ;

416 t0 . s e t ( v ) ;

417 return t0 ;

418 }

419 public Transform3D trans formac ion22 ( ) {

420 Transform3D t0=new Transform3D ( ) ;

421 Vector3d v=new Vector3d ( 0 . 3 , 0 . 3 , 0 . 3 ) ;

422 t0 . s e t S c a l e ( v ) ;

423 return t0 ;

424 }

425

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 172: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

148 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

426 }

B.3. Codigos para renderizar la figura: Monitor de

PC

En este tercer ejemplo se muestra el codigo de entrada en VRML y el codigo de

salida en Java 3D, para representar un monitor de computadora, el cual esta formado

por varias figuras regulares con traslaciones, rotaciones y escalamiento. La renderizacion

en Java 3D tiene mejor presentacion y esta se resalta en la pantalla del monitor.

B.3.1. Codigo de entrada al Traductor VRML a Java 3D. Ar-

chivo: MonitorPC.wrl

1 #VRML V2.0 u t f 8

2 Transform {

3 s c a l e 0 . 2 0 .2 0 .2

4 ch i l d r en [

5 Transform{

6 s c a l e 1 1 .25

7 ch i l d r en [

8 Transform{

9 r o t a t i on 1 0 0 −0.087

10 ch i l d r en [

11 Shape{

12 geometry Sphere{

13 rad iu s 2

14 }

15 appearance Appearance{

16 mate r i a l Material{

17 d i f f u s eCo l o r . 3 . 2 1

18 }

19 }

20 }

21 ]

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 173: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 149

22 }

23 ]

24 }

25 ]

26 }

27 Transform {

28 s c a l e 0 . 2 0 .2 0 .2

29 ch i l d r en [

30 Transform{

31 t r a n s l a t i o n 1 .707 0 0

32 ch i l d r en [

33 Shape{

34 geometry Box{

35 s i z e 0 .586 4 1

36 }

37 appearance Appearance{

38 mate r i a l Material{

39 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

40 }

41 }

42 }

43 ]

44 }

45 ]

46 }

47 Transform {

48 s c a l e 0 . 2 0 .2 0 .2

49 ch i l d r en [

50 Transform{

51 t r a n s l a t i o n −1.707 0 0

52 ch i l d r en [

53 Shape{

54 geometry Box{

55 s i z e .586 4 1

56 }

57 appearance Appearance{

58 mate r i a l Material{

59 d i f f u s eCo l o r . 8 . 8 . 8

60 }

61 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 174: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

150 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

62 }

63 ]

64 }

65 ]

66 }

67 Transform {

68 s c a l e 0 . 2 0 .2 0 .2

69 ch i l d r en [

70 Transform{

71 t r a n s l a t i o n 0 1 .707 0

72 ch i l d r en [

73 Shape{

74 geometry Box{

75 s i z e 4 0 .586 1

76 }

77 appearance Appearance{

78 mate r i a l Material{

79 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

80 }

81 }

82 }

83 ]

84 }

85 ]

86 }

87 Transform {

88 s c a l e 0 . 2 0 .2 0 .2

89 ch i l d r en [

90 Transform{

91 t r a n s l a t i o n 0 −1.707 0

92 ch i l d r en [

93 Shape {

94 geometry Box{

95 s i z e 4 0 .586 1

96 }

97 appearance Appearance{

98 mate r i a l Material{

99 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

100 }

101 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 175: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 151

102 }

103 ]

104 }

105 ]

106 }

107 Transform {

108 s c a l e 0 . 2 0 .2 0 .2

109 ch i l d r en [

110 Transform{

111 t r a n s l a t i o n 0 −0.17 −1.914

112 ch i l d r en [

113 Shape{

114 geometry Box{

115 s i z e 2 .828 2 .828 2 .828

116 }

117 appearance Appearance{

118 mate r i a l Material{

119 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

120 }

121 }

122 }

123 ]

124 }

125 ]

126 }

127 Transform {

128 r o t a t i on 1 0 0 0 .087

129 ch i l d r en [

130 Transform{

131 s c a l e 0 . 2 0 .2 0 .2

132 ch i l d r en [

133 Transform{

134 t r a n s l a t i o n 0 −1.17 −1.914

135 ch i l d r en [

136 Shape{

137 geometry Cone{

138 bottomRadius 1 .5 he ight 2

139 }

140 appearance Appearance{

141 mate r i a l Material{

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 176: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

152 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

142 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

143 }

144 }

145 }

146 ]

147 }

148 ]

149 }

150 ]

151 }

152 Transform {

153 s c a l e 0 . 2 0 .2 0 .2

154 ch i l d r en [

155 Transform{

156 t r a n s l a t i o n 0 −2.375 −1.914

157 ch i l d r en [

158 Shape{

159 geometry Box{

160 s i z e 3 .25 3

161 }

162 appearance Appearance{

163 mate r i a l Material{

164 d i f f u s eCo l o r 0 . 8 0 .8 0 .8

165 }

166 }

167 }

168 ]

169 }

170 ]

171 }

B.3.2. Codigo de salida del Traductor VRML a Java 3D. Ar-

chivo: MonitorPC.java

1 import javax . swing . JFrame ;

2 import java . awt . BorderLayout ;

3 import java . awt . Frame ;

4 import java . awt . event .WindowEvent ;

5 import java . awt . event . WindowListener ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 177: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 153

6 import java . awt . GraphicsConf igurat ion ;

7 import com . sun . j3d . u t i l s . image . TextureLoader ;

8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;

9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;

11 import javax . vecmath . Co lor3 f ;

12 import javax . vecmath . Vector3d ;

13 import com . sun . j3d . u t i l s . behav ior s . vp . ∗ ;

14 import javax . vecmath . Point3d ;

15 import javax . vecmath . Po int3 f ;

16 import javax . vecmath . Co lor3 f ;

17 import javax . vecmath . ∗ ;

18

19 public class MonitorPC extends JFrame {

20 public MonitorPC ( ) {

21 setLayout (new BorderLayout ( ) ) ;

22 GraphicsConf igurat ion con f i g = SimpleUniverse . g e tPr e f e r r edCon f i gu ra t i on

( ) ;

23 Canvas3D canvas = new Canvas3D( con f i g ) ;

24 add ( ”Center ” , canvas ) ;

25 BranchGroup escena = createSceneGraph ( ) ;

26 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;

27 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;

28 simpleU . addBranchGraph ( escena ) ;

29 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a navigac ion de l a escena

usando e l raton .

30 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;

31 ob . setSchedul ingBounds (new BoundingSphere (new Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) ,

Double .MAXVALUE) ) ;

32 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;

33 }

34

35

36 public stat ic void main ( St r ing args [ ] ) {

37 MonitorPC frame = new MonitorPC ( ) ;

38 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;

39 frame . s e t S i z e (300 , 300) ;

40 frame . s e tV i s i b l e ( true ) ;

41 }

42

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 178: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

154 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

43 public BranchGroup createSceneGraph ( ) {

44 BranchGroup r a i z = new BranchGroup ( ) ;

45 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAXVALUE) ;

46 Di r e c t i ona lL i gh t l 1 =

47 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

48 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;

49 l 1 . s e t In f luenc ingBounds ( bounds ) ;

50 r a i z . addChild ( l 1 ) ;

51 Di r e c t i ona lL i gh t l 2 =

52 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

53 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

54 l 2 . s e t In f luenc ingBounds ( bounds ) ;

55 r a i z . addChild ( l 2 ) ;

56 Di r e c t i ona lL i gh t l 3 =

57 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

58 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;

59 l 3 . s e t In f luenc ingBounds ( bounds ) ;

60 r a i z . addChild ( l 3 ) ;

61 Di r e c t i ona lL i gh t l 4 =

62 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

63 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;

64 l 4 . s e t In f luenc ingBounds ( bounds ) ;

65 r a i z . addChild ( l 4 ) ;

66 Sphere sphere0= new Sphere (2 f , c r eaApar i enc ia0 ( ) ) ;

67 Box box1= new Box (0 . 293 f , 2 . 0 f , 0 . 5 f , c r eaApar i enc ia1 ( ) ) ;

68 Box box2= new Box (0 . 293 f , 2 . 0 f , 0 . 5 f , c r eaApar i enc ia2 ( ) ) ;

69 Box box3= new Box ( 2 . 0 f , 0 . 2 9 3 f , 0 . 5 f , c r eaApar i enc ia3 ( ) ) ;

70 Box box4= new Box ( 2 . 0 f , 0 . 2 9 3 f , 0 . 5 f , c r eaApar i enc ia4 ( ) ) ;

71 Box box5= new Box (1 . 414 f , 1 . 4 1 4 f , 1 . 4 1 4 f , c r eaApar i enc ia5 ( ) ) ;

72 Cone cone6= new Cone ( 1 . 5 f , 2 f , c r eaApar i enc ia6 ( ) ) ;

73 Box box7= new Box ( 1 . 5 f , 0 . 1 2 5 f , 1 . 5 f , c r eaApar i enc ia7 ( ) ) ;

74

75 TransformGroup tg0=new TransformGroup ( t rans formac ion0 ( ) ) ;

76 tg0 . addChild ( sphere0 ) ;

77 TransformGroup tg1=new TransformGroup ( t rans formac ion1 ( ) ) ;

78 tg1 . addChild ( tg0 ) ;

79 TransformGroup tg2=new TransformGroup ( t rans formac ion2 ( ) ) ;

80 tg2 . addChild ( tg1 ) ;

81 TransformGroup tg3=new TransformGroup ( t rans formac ion3 ( ) ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 179: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 155

82 tg3 . addChild ( box1 ) ;

83 TransformGroup tg4=new TransformGroup ( t rans formac ion4 ( ) ) ;

84 tg4 . addChild ( tg3 ) ;

85 TransformGroup tg5=new TransformGroup ( t rans formac ion5 ( ) ) ;

86 tg5 . addChild ( box2 ) ;

87 TransformGroup tg6=new TransformGroup ( t rans formac ion6 ( ) ) ;

88 tg6 . addChild ( tg5 ) ;

89 TransformGroup tg7=new TransformGroup ( t rans formac ion7 ( ) ) ;

90 tg7 . addChild ( box3 ) ;

91 TransformGroup tg8=new TransformGroup ( t rans formac ion8 ( ) ) ;

92 tg8 . addChild ( tg7 ) ;

93 TransformGroup tg9=new TransformGroup ( t rans formac ion9 ( ) ) ;

94 tg9 . addChild ( box4 ) ;

95 TransformGroup tg10=new TransformGroup ( trans formac ion10 ( ) ) ;

96 tg10 . addChild ( tg9 ) ;

97 TransformGroup tg11=new TransformGroup ( trans formac ion11 ( ) ) ;

98 tg11 . addChild ( box5 ) ;

99 TransformGroup tg12=new TransformGroup ( trans formac ion12 ( ) ) ;

100 tg12 . addChild ( tg11 ) ;

101 TransformGroup tg13=new TransformGroup ( trans formac ion13 ( ) ) ;

102 tg13 . addChild ( cone6 ) ;

103 TransformGroup tg14=new TransformGroup ( trans formac ion14 ( ) ) ;

104 tg14 . addChild ( tg13 ) ;

105 TransformGroup tg16=new TransformGroup ( trans formac ion16 ( ) ) ;

106 tg16 . addChild ( box7 ) ;

107 TransformGroup tg17=new TransformGroup ( trans formac ion17 ( ) ) ;

108 tg17 . addChild ( tg16 ) ;

109 r a i z . addChild ( tg2 ) ;

110 r a i z . addChild ( tg4 ) ;

111 r a i z . addChild ( tg6 ) ;

112 r a i z . addChild ( tg8 ) ;

113 r a i z . addChild ( tg10 ) ;

114 r a i z . addChild ( tg12 ) ;

115 r a i z . addChild ( tg14 ) ;

116 r a i z . addChild ( tg17 ) ;

117

118 r a i z . compi le ( ) ;

119 return r a i z ;

120 }

121

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 180: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

156 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

122 public Appearance c reaApar i enc ia0 ( ) {

123 Appearance app=new Appearance ( ) ;

124 Color3 f c o l o r=new Color3 f ( . 3 f , . 2 f , 1 f ) ;

125 Mater ia l mate r i a l=new Mater ia l ( ) ;

126 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

127 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

128 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

129 app . s e tMat e r i a l ( mate r i a l ) ;

130 return app ;

131 }

132 public Appearance c reaApar i enc ia1 ( ) {

133 Appearance app=new Appearance ( ) ;

134 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

135 Mater ia l mate r i a l=new Mater ia l ( ) ;

136 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

137 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

138 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

139 app . s e tMat e r i a l ( mate r i a l ) ;

140 return app ;

141 }

142 public Appearance c reaApar i enc ia2 ( ) {

143 Appearance app=new Appearance ( ) ;

144 Color3 f c o l o r=new Color3 f ( . 8 f , . 8 f , . 8 f ) ;

145 Mater ia l mate r i a l=new Mater ia l ( ) ;

146 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

147 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

148 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

149 app . s e tMat e r i a l ( mate r i a l ) ;

150 return app ;

151 }

152 public Appearance c reaApar i enc ia3 ( ) {

153 Appearance app=new Appearance ( ) ;

154 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

155 Mater ia l mate r i a l=new Mater ia l ( ) ;

156 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

157 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

158 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

159 app . s e tMat e r i a l ( mate r i a l ) ;

160 return app ;

161 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 181: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 157

162 public Appearance c reaApar i enc ia4 ( ) {

163 Appearance app=new Appearance ( ) ;

164 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

165 Mater ia l mate r i a l=new Mater ia l ( ) ;

166 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

167 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

168 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

169 app . s e tMat e r i a l ( mate r i a l ) ;

170 return app ;

171 }

172 public Appearance c reaApar i enc ia5 ( ) {

173 Appearance app=new Appearance ( ) ;

174 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

175 Mater ia l mate r i a l=new Mater ia l ( ) ;

176 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

177 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

178 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

179 app . s e tMat e r i a l ( mate r i a l ) ;

180 return app ;

181 }

182 public Appearance c reaApar i enc ia6 ( ) {

183 Appearance app=new Appearance ( ) ;

184 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

185 Mater ia l mate r i a l=new Mater ia l ( ) ;

186 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

187 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

188 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

189 app . s e tMat e r i a l ( mate r i a l ) ;

190 return app ;

191 }

192 public Appearance c reaApar i enc ia7 ( ) {

193 Appearance app=new Appearance ( ) ;

194 Color3 f c o l o r=new Color3 f ( 0 . 8 f , 0 . 8 f , 0 . 8 f ) ;

195 Mater ia l mate r i a l=new Mater ia l ( ) ;

196 mate r i a l . s e tD i f f u s eCo l o r ( c o l o r ) ;

197 mate r i a l . s e tSpecu la rCo lo r ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ) ;

198 mate r i a l . s e t Sh i n i n e s s ( 30 . 0 f ) ;

199 app . s e tMat e r i a l ( mate r i a l ) ;

200 return app ;

201 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 182: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

158 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

202

203 public Transform3D trans formac ion0 ( ) {

204 Transform3D t0=new Transform3D ( ) ;

205 t0 . rotX (−0.087) ;

206 return t0 ;

207 }

208 public Transform3D trans formac ion1 ( ) {

209 Transform3D t0=new Transform3D ( ) ;

210 Vector3d v=new Vector3d ( 1 , 1 , . 2 5 ) ;

211 t0 . s e t S c a l e ( v ) ;

212 return t0 ;

213 }

214 public Transform3D trans formac ion2 ( ) {

215 Transform3D t0=new Transform3D ( ) ;

216 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

217 t0 . s e t S c a l e ( v ) ;

218 return t0 ;

219 }

220 public Transform3D trans formac ion3 ( ) {

221 Transform3D t0=new Transform3D ( ) ;

222 Vector3d v=new Vector3d (1 . 7 07 , 0 , 0 ) ;

223 t0 . s e t ( v ) ;

224 return t0 ;

225 }

226 public Transform3D trans formac ion4 ( ) {

227 Transform3D t0=new Transform3D ( ) ;

228 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

229 t0 . s e t S c a l e ( v ) ;

230 return t0 ;

231 }

232 public Transform3D trans formac ion5 ( ) {

233 Transform3D t0=new Transform3D ( ) ;

234 Vector3d v=new Vector3d (−1.707 ,0 ,0) ;

235 t0 . s e t ( v ) ;

236 return t0 ;

237 }

238 public Transform3D trans formac ion6 ( ) {

239 Transform3D t0=new Transform3D ( ) ;

240 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

241 t0 . s e t S c a l e ( v ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 183: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.3. Codigos para renderizar la figura: Monitor de PC 159

242 return t0 ;

243 }

244 public Transform3D trans formac ion7 ( ) {

245 Transform3D t0=new Transform3D ( ) ;

246 Vector3d v=new Vector3d (0 , 1 . 7 07 , 0 ) ;

247 t0 . s e t ( v ) ;

248 return t0 ;

249 }

250 public Transform3D trans formac ion8 ( ) {

251 Transform3D t0=new Transform3D ( ) ;

252 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

253 t0 . s e t S c a l e ( v ) ;

254 return t0 ;

255 }

256 public Transform3D trans formac ion9 ( ) {

257 Transform3D t0=new Transform3D ( ) ;

258 Vector3d v=new Vector3d (0 ,−1.707 ,0) ;

259 t0 . s e t ( v ) ;

260 return t0 ;

261 }

262 public Transform3D trans formac ion10 ( ) {

263 Transform3D t0=new Transform3D ( ) ;

264 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

265 t0 . s e t S c a l e ( v ) ;

266 return t0 ;

267 }

268 public Transform3D trans formac ion11 ( ) {

269 Transform3D t0=new Transform3D ( ) ;

270 Vector3d v=new Vector3d (0 ,−0.17 ,−1.914) ;

271 t0 . s e t ( v ) ;

272 return t0 ;

273 }

274 public Transform3D trans formac ion12 ( ) {

275 Transform3D t0=new Transform3D ( ) ;

276 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

277 t0 . s e t S c a l e ( v ) ;

278 return t0 ;

279 }

280 public Transform3D trans formac ion13 ( ) {

281 Transform3D t0=new Transform3D ( ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 184: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

160 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

282 Vector3d v=new Vector3d (0 ,−1.17 ,−1.914) ;

283 t0 . s e t ( v ) ;

284 return t0 ;

285 }

286 public Transform3D trans formac ion14 ( ) {

287 Transform3D t0=new Transform3D ( ) ;

288 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

289 t0 . s e t S c a l e ( v ) ;

290 return t0 ;

291 }

292 public Transform3D trans formac ion15 ( ) {

293 Transform3D t0=new Transform3D ( ) ;

294 t0 . rotX (0 . 0 87 ) ;

295 return t0 ;

296 }

297 public Transform3D trans formac ion16 ( ) {

298 Transform3D t0=new Transform3D ( ) ;

299 Vector3d v=new Vector3d (0 ,−2.375 ,−1.914) ;

300 t0 . s e t ( v ) ;

301 return t0 ;

302 }

303 public Transform3D trans formac ion17 ( ) {

304 Transform3D t0=new Transform3D ( ) ;

305 Vector3d v=new Vector3d ( 0 . 2 , 0 . 2 , 0 . 2 ) ;

306 t0 . s e t S c a l e ( v ) ;

307 return t0 ;

308 }

309

310 }

B.4. Codigos para renderizar la figura: Florero con

traslacion y textura

En este ejemplo se muestra el codigo de entrada en VRML y el codigo de salida en

Java 3D, para representar un florero con traslacion y que ademas contiene textura. Esta

figura esta formada por muchas areas para darle forma al florero. Se uso el IndexeFaceSet

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 185: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.4. Codigos para renderizar la figura: Florero con traslacion y textura 161

debido a la irregularidad del objeto y se uso una textura. Como se puede observar los

colores son mas vivos y nıtidos en la renderizacion en Java 3D. La desventaja es el tiempo

que tarda en aparecer la imagen en Java 3D, debido a la cantidad de procesamiento que

consume.

B.4.1. Codigo de entrada al Traductor VRML a Java 3D. Ar-

chivo: FloreroTrasladado1.wrl

1 #VRML V2.0 u t f 8

2 Transform {

3 t r a n s l a t i o n 0 .0 −1.0 −4.0

4 ch i l d r en [

5 Shape {

6 geometry IndexedFaceSet {

7 coord Coordinate {

8 point [

9 0 .32 2 0 ,

10 0 .1 2 0 . 3 ,

11 −0.26 2 0 . 19 ,

12 −0.26 2 −0.19 ,

13 0 .1 2 −0.3 ,

14 0 .3 1 .95 0 ,

15 0 .09 1 .95 0 . 29 ,

16 −0.24 1 .95 0 . 18 ,

17 −0.24 1 .95 −0.18 ,

18 0 .09 1 .95 −0.29 ,

19 0 .42 1 .6 0 ,

20 0 .13 1 .6 0 . 4 ,

21 −0.34 1 .6 0 . 25 ,

22 −0.34 1 .6 −0.25 ,

23 0 .13 1 .6 −0.4 ,

24 0 .6 1 .5 0 ,

25 0 .19 1 .5 0 . 57 ,

26 −0.48 1 .5 0 . 35 ,

27 −0.49 1 .5 −0.35 ,

28 0 .18 1 .5 −0.57 ,

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 186: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

162 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

29 0 .7 1 .2 0 ,

30 0 .22 1 .2 0 . 67 ,

31 −0.57 1 .2 0 . 41 ,

32 −0.57 1 .2 −0.41 ,

33 0 .21 1 .2 −0.67 ,

34 0 .4 0 0 ,

35 0 .12 0 0 . 38 ,

36 −0.32 0 0 . 24 ,

37 −0.32 0 −0.23 ,

38 0 .12 0 −0.38

39 ]

40 }

41 coordIndex [

42 0 ,1 ,6 ,5 ,−1 ,

43 1 ,2 ,7 ,6 ,−1 ,

44 2 ,3 ,8 ,7 ,−1 ,

45 3 ,4 ,9 ,8 ,−1 ,

46 4 ,0 ,5 ,9 ,−1 ,

47 5 ,6 ,11 ,10 ,−1 ,

48 6 ,7 ,12 ,11 ,−1 ,

49 7 ,8 ,13 ,12 ,−1 ,

50 8 ,9 ,14 ,13 ,−1 ,

51 9 ,5 ,10 ,14 ,−1 ,

52 10 ,11 ,16 ,15 ,−1 ,

53 11 ,12 ,17 ,16 ,−1 ,

54 12 ,13 ,18 ,17 ,−1 ,

55 13 ,14 ,19 ,18 ,−1 ,

56 14 ,10 ,15 ,19 ,−1 ,

57 15 ,16 ,21 ,20 ,−1 ,

58 16 ,17 ,22 ,21 ,−1 ,

59 17 ,18 ,23 ,22 ,−1 ,

60 18 ,19 ,24 ,23 ,−1 ,

61 19 ,15 ,20 ,24 ,−1 ,

62 20 ,21 ,26 ,25 ,−1 ,

63 21 ,22 ,27 ,26 ,−1 ,

64 22 ,23 ,28 ,27 ,−1 ,

65 23 ,24 ,29 ,28 ,−1 ,

66 24 ,20 ,25 ,29 ,−1 ,

67 25 ,26 ,27 ,28 ,−1

68 ]

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 187: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.4. Codigos para renderizar la figura: Florero con traslacion y textura 163

69 }

70 appearance Appearance {

71 t ex tu re ImageTexture {

72 u r l ” l a d r i l l o 1 . jpg ”

73 }

74 }

75 }

76 ]

77 }

B.4.2. Codigo de salida del Traductor VRML a Java 3D. Ar-

chivo: FloreroTrasladado1.java

1 import javax . swing . JFrame ;

2 import java . awt . BorderLayout ;

3 import java . awt . Frame ;

4 import java . awt . event .WindowEvent ;

5 import java . awt . event . WindowListener ;

6 import java . awt . GraphicsConf igurat ion ;

7 import com . sun . j3d . u t i l s . image . TextureLoader ;

8 import com . sun . j3d . u t i l s . un ive r s e . S impleUniverse ;

9 import com . sun . j3d . u t i l s . geometry . ∗ ;

10 import javax . media . j3d . ∗ ;

11 import javax . vecmath . Co lor3 f ;

12 import javax . vecmath . Vector3d ;

13 import com . sun . j3d . u t i l s . behav ior s . vp . ∗ ;

14 import javax . vecmath . Point3d ;

15 import javax . vecmath . Po int3 f ;

16 import javax . vecmath . Co lor3 f ;

17 import javax . vecmath . ∗ ;

18

19 public class FloreroTras ladado1 extends JFrame {

20 public FloreroTras ladado1 ( ) {

21 setLayout (new BorderLayout ( ) ) ;

22 GraphicsConf igurat ion c on f i g = SimpleUniverse . g e tPr e f e r r edCon f i gu ra t i on

( ) ;

23 Canvas3D canvas = new Canvas3D( con f i g ) ;

24 add ( ”Center ” , canvas ) ;

25 BranchGroup escena = createSceneGraph ( ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 188: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

164 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

26 SimpleUniverse simpleU = new SimpleUniverse ( canvas ) ;

27 simpleU . getViewingPlatform ( ) . setNominalViewingTransform ( ) ;

28 simpleU . addBranchGraph ( escena ) ;

29 // l a s t r e s l i n e a s s i g u i e n t e s h a b i l i t a n l a navigac ion de l a escena

usando e l raton .

30 OrbitBehavior ob = new OrbitBehavior ( canvas ) ;

31 ob . setSchedul ingBounds (new BoundingSphere (new Point3d ( 0 . 0 , 0 . 0 , 0 . 0 ) ,

Double .MAXVALUE) ) ;

32 simpleU . getViewingPlatform ( ) . setViewPlatformBehavior ( ob ) ;

33 }

34

35

36 public stat ic void main ( St r ing args [ ] ) {

37 FloreroTras ladado1 frame = new FloreroTras ladado1 ( ) ;

38 frame . s e tDe fau l tC lo seOperat ion ( JFrame .EXIT ON CLOSE) ;

39 frame . s e t S i z e (300 , 300) ;

40 frame . s e tV i s i b l e ( true ) ;

41 }

42

43 public BranchGroup createSceneGraph ( ) {

44 BranchGroup r a i z = new BranchGroup ( ) ;

45 BoundingSphere bounds = new BoundingSphere (new Point3d ( ) , Double .

MAXVALUE) ;

46 Di r e c t i ona lL i gh t l 1 =

47 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

48 new Vector3 f (1 f , 0 . 0 f , −0.4 f ) ) ;

49 l 1 . s e t In f luenc ingBounds ( bounds ) ;

50 r a i z . addChild ( l 1 ) ;

51 Di r e c t i ona lL i gh t l 2 =

52 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

53 new Vector3 f (−1 f , 0 . 0 f , −0.4 f ) ) ;

54 l 2 . s e t In f luenc ingBounds ( bounds ) ;

55 r a i z . addChild ( l 2 ) ;

56 Di r e c t i ona lL i gh t l 3 =

57 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

58 new Vector3 f (0 f , 1 . 0 f , −0.4 f ) ) ;

59 l 3 . s e t In f luenc ingBounds ( bounds ) ;

60 r a i z . addChild ( l 3 ) ;

61 Di r e c t i ona lL i gh t l 4 =

62 new Di r e c t i ona lL i gh t ( new Color3 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ,

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 189: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.4. Codigos para renderizar la figura: Florero con traslacion y textura 165

63 new Vector3 f (0 f , −1.0 f , −0.4 f ) ) ;

64 l 4 . s e t In f luenc ingBounds ( bounds ) ;

65 r a i z . addChild ( l 4 ) ;

66

67 QuadArray indexed f a c e s e t 0=new QuadArray (4 , QuadArray .COORDINATES) ;

68 i ndexed f a c e s e t 0 . s e tCoord inate (0 , new Point3 f ( 0 . 32 f , 2 f , 0 f ) ) ;

69 i ndexed f a c e s e t 0 . s e tCoord inate (1 , new Point3 f ( 0 . 1 f , 2 f , 0 . 3 f ) ) ;

70 i ndexed f a c e s e t 0 . s e tCoord inate (2 , new Point3 f ( 0 . 09 f , 1 . 9 5 f , 0 . 2 9 f ) ) ;

71 i ndexed f a c e s e t 0 . s e tCoord inate (3 , new Point3 f ( 0 . 3 f , 1 . 9 5 f , 0 f ) ) ;

72

73 QuadArray indexed f a c e s e t 1=new QuadArray (4 , QuadArray .COORDINATES) ;

74 i ndexed f a c e s e t 1 . s e tCoord inate (0 , new Point3 f ( 0 . 1 f , 2 f , 0 . 3 f ) ) ;

75 i ndexed f a c e s e t 1 . s e tCoord inate (1 , new Point3 f (−0.26 f , 2 f , 0 . 1 9 f ) ) ;

76 i ndexed f a c e s e t 1 . s e tCoord inate (2 , new Point3 f (−0.24 f , 1 . 9 5 f , 0 . 1 8 f ) ) ;

77 i ndexed f a c e s e t 1 . s e tCoord inate (3 , new Point3 f ( 0 . 09 f , 1 . 9 5 f , 0 . 2 9 f ) ) ;

78

79 QuadArray indexed f a c e s e t 2=new QuadArray (4 , QuadArray .COORDINATES) ;

80 i ndexed f a c e s e t 2 . s e tCoord inate (0 , new Point3 f (−0.26 f , 2 f , 0 . 1 9 f ) ) ;

81 i ndexed f a c e s e t 2 . s e tCoord inate (1 , new Point3 f (−0.26 f , 2 f ,−0.19 f ) ) ;

82 i ndexed f a c e s e t 2 . s e tCoord inate (2 , new Point3 f (−0.24 f , 1 . 9 5 f ,−0.18 f ) ) ;

83 i ndexed f a c e s e t 2 . s e tCoord inate (3 , new Point3 f (−0.24 f , 1 . 9 5 f , 0 . 1 8 f ) ) ;

84

85 QuadArray indexed f a c e s e t 3=new QuadArray (4 , QuadArray .COORDINATES) ;

86 i ndexed f a c e s e t 3 . s e tCoord inate (0 , new Point3 f (−0.26 f , 2 f ,−0.19 f ) ) ;

87 i ndexed f a c e s e t 3 . s e tCoord inate (1 , new Point3 f ( 0 . 1 f , 2 f ,−0.3 f ) ) ;

88 i ndexed f a c e s e t 3 . s e tCoord inate (2 , new Point3 f ( 0 . 09 f , 1 . 9 5 f ,−0.29 f ) ) ;

89 i ndexed f a c e s e t 3 . s e tCoord inate (3 , new Point3 f (−0.24 f , 1 . 9 5 f ,−0.18 f ) ) ;

90

91 QuadArray indexed f a c e s e t 4=new QuadArray (4 , QuadArray .COORDINATES) ;

92 i ndexed f a c e s e t 4 . s e tCoord inate (0 , new Point3 f ( 0 . 1 f , 2 f ,−0.3 f ) ) ;

93 i ndexed f a c e s e t 4 . s e tCoord inate (1 , new Point3 f ( 0 . 32 f , 2 f , 0 f ) ) ;

94 i ndexed f a c e s e t 4 . s e tCoord inate (2 , new Point3 f ( 0 . 3 f , 1 . 9 5 f , 0 f ) ) ;

95 i ndexed f a c e s e t 4 . s e tCoord inate (3 , new Point3 f ( 0 . 09 f , 1 . 9 5 f ,−0.29 f ) ) ;

96

97 QuadArray indexed f a c e s e t 5=new QuadArray (4 , QuadArray .COORDINATES) ;

98 i ndexed f a c e s e t 5 . s e tCoord inate (0 , new Point3 f ( 0 . 3 f , 1 . 9 5 f , 0 f ) ) ;

99 i ndexed f a c e s e t 5 . s e tCoord inate (1 , new Point3 f ( 0 . 09 f , 1 . 9 5 f , 0 . 2 9 f ) ) ;

100 i ndexed f a c e s e t 5 . s e tCoord inate (2 , new Point3 f ( 0 . 13 f , 1 . 6 f , 0 . 4 f ) ) ;

101 i ndexed f a c e s e t 5 . s e tCoord inate (3 , new Point3 f ( 0 . 42 f , 1 . 6 f , 0 f ) ) ;

102

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 190: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

166 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

103 QuadArray indexed f a c e s e t 6=new QuadArray (4 , QuadArray .COORDINATES) ;

104 i ndexed f a c e s e t 6 . s e tCoord inate (0 , new Point3 f ( 0 . 09 f , 1 . 9 5 f , 0 . 2 9 f ) ) ;

105 i ndexed f a c e s e t 6 . s e tCoord inate (1 , new Point3 f (−0.24 f , 1 . 9 5 f , 0 . 1 8 f ) ) ;

106 i ndexed f a c e s e t 6 . s e tCoord inate (2 , new Point3 f (−0.34 f , 1 . 6 f , 0 . 2 5 f ) ) ;

107 i ndexed f a c e s e t 6 . s e tCoord inate (3 , new Point3 f ( 0 . 13 f , 1 . 6 f , 0 . 4 f ) ) ;

108

109 QuadArray indexed f a c e s e t 7=new QuadArray (4 , QuadArray .COORDINATES) ;

110 i ndexed f a c e s e t 7 . s e tCoord inate (0 , new Point3 f (−0.24 f , 1 . 9 5 f , 0 . 1 8 f ) ) ;

111 i ndexed f a c e s e t 7 . s e tCoord inate (1 , new Point3 f (−0.24 f , 1 . 9 5 f ,−0.18 f ) ) ;

112 i ndexed f a c e s e t 7 . s e tCoord inate (2 , new Point3 f (−0.34 f , 1 . 6 f ,−0.25 f ) ) ;

113 i ndexed f a c e s e t 7 . s e tCoord inate (3 , new Point3 f (−0.34 f , 1 . 6 f , 0 . 2 5 f ) ) ;

114

115 QuadArray indexed f a c e s e t 8=new QuadArray (4 , QuadArray .COORDINATES) ;

116 i ndexed f a c e s e t 8 . s e tCoord inate (0 , new Point3 f (−0.24 f , 1 . 9 5 f ,−0.18 f ) ) ;

117 i ndexed f a c e s e t 8 . s e tCoord inate (1 , new Point3 f ( 0 . 09 f , 1 . 9 5 f ,−0.29 f ) ) ;

118 i ndexed f a c e s e t 8 . s e tCoord inate (2 , new Point3 f ( 0 . 13 f , 1 . 6 f ,−0.4 f ) ) ;

119 i ndexed f a c e s e t 8 . s e tCoord inate (3 , new Point3 f (−0.34 f , 1 . 6 f ,−0.25 f ) ) ;

120

121 QuadArray indexed f a c e s e t 9=new QuadArray (4 , QuadArray .COORDINATES) ;

122 i ndexed f a c e s e t 9 . s e tCoord inate (0 , new Point3 f ( 0 . 09 f , 1 . 9 5 f ,−0.29 f ) ) ;

123 i ndexed f a c e s e t 9 . s e tCoord inate (1 , new Point3 f ( 0 . 3 f , 1 . 9 5 f , 0 f ) ) ;

124 i ndexed f a c e s e t 9 . s e tCoord inate (2 , new Point3 f ( 0 . 42 f , 1 . 6 f , 0 f ) ) ;

125 i ndexed f a c e s e t 9 . s e tCoord inate (3 , new Point3 f ( 0 . 13 f , 1 . 6 f ,−0.4 f ) ) ;

126

127 QuadArray indexed fa c e s e t10=new QuadArray (4 , QuadArray .COORDINATES) ;

128 i ndexed fa c e s e t10 . se tCoord inate (0 , new Point3 f ( 0 . 42 f , 1 . 6 f , 0 f ) ) ;

129 i ndexed fa c e s e t10 . se tCoord inate (1 , new Point3 f ( 0 . 13 f , 1 . 6 f , 0 . 4 f ) ) ;

130 i ndexed fa c e s e t10 . se tCoord inate (2 , new Point3 f ( 0 . 19 f , 1 . 5 f , 0 . 5 7 f ) ) ;

131 i ndexed fa c e s e t10 . se tCoord inate (3 , new Point3 f ( 0 . 6 f , 1 . 5 f , 0 f ) ) ;

132

133 QuadArray indexed fa c e s e t11=new QuadArray (4 , QuadArray .COORDINATES) ;

134 i ndexed fa c e s e t11 . se tCoord inate (0 , new Point3 f ( 0 . 13 f , 1 . 6 f , 0 . 4 f ) ) ;

135 i ndexed fa c e s e t11 . se tCoord inate (1 , new Point3 f (−0.34 f , 1 . 6 f , 0 . 2 5 f ) ) ;

136 i ndexed fa c e s e t11 . se tCoord inate (2 , new Point3 f (−0.48 f , 1 . 5 f , 0 . 3 5 f ) ) ;

137 i ndexed fa c e s e t11 . se tCoord inate (3 , new Point3 f ( 0 . 19 f , 1 . 5 f , 0 . 5 7 f ) ) ;

138

139 QuadArray indexed fa c e s e t12=new QuadArray (4 , QuadArray .COORDINATES) ;

140 i ndexed fa c e s e t12 . se tCoord inate (0 , new Point3 f (−0.34 f , 1 . 6 f , 0 . 2 5 f ) ) ;

141 i ndexed fa c e s e t12 . se tCoord inate (1 , new Point3 f (−0.34 f , 1 . 6 f ,−0.25 f ) ) ;

142 i ndexed fa c e s e t12 . se tCoord inate (2 , new Point3 f (−0.49 f , 1 . 5 f ,−0.35 f ) ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 191: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.4. Codigos para renderizar la figura: Florero con traslacion y textura 167

143 i ndexed fa c e s e t12 . se tCoord inate (3 , new Point3 f (−0.48 f , 1 . 5 f , 0 . 3 5 f ) ) ;

144

145 QuadArray indexed fa c e s e t13=new QuadArray (4 , QuadArray .COORDINATES) ;

146 i ndexed fa c e s e t13 . se tCoord inate (0 , new Point3 f (−0.34 f , 1 . 6 f ,−0.25 f ) ) ;

147 i ndexed fa c e s e t13 . se tCoord inate (1 , new Point3 f ( 0 . 13 f , 1 . 6 f ,−0.4 f ) ) ;

148 i ndexed fa c e s e t13 . se tCoord inate (2 , new Point3 f ( 0 . 18 f , 1 . 5 f ,−0.57 f ) ) ;

149 i ndexed fa c e s e t13 . se tCoord inate (3 , new Point3 f (−0.49 f , 1 . 5 f ,−0.35 f ) ) ;

150

151 QuadArray indexed fa c e s e t14=new QuadArray (4 , QuadArray .COORDINATES) ;

152 i ndexed fa c e s e t14 . se tCoord inate (0 , new Point3 f ( 0 . 13 f , 1 . 6 f ,−0.4 f ) ) ;

153 i ndexed fa c e s e t14 . se tCoord inate (1 , new Point3 f ( 0 . 42 f , 1 . 6 f , 0 f ) ) ;

154 i ndexed fa c e s e t14 . se tCoord inate (2 , new Point3 f ( 0 . 6 f , 1 . 5 f , 0 f ) ) ;

155 i ndexed fa c e s e t14 . se tCoord inate (3 , new Point3 f ( 0 . 18 f , 1 . 5 f ,−0.57 f ) ) ;

156

157 QuadArray indexed fa c e s e t15=new QuadArray (4 , QuadArray .COORDINATES) ;

158 i ndexed fa c e s e t15 . se tCoord inate (0 , new Point3 f ( 0 . 6 f , 1 . 5 f , 0 f ) ) ;

159 i ndexed fa c e s e t15 . se tCoord inate (1 , new Point3 f ( 0 . 19 f , 1 . 5 f , 0 . 5 7 f ) ) ;

160 i ndexed fa c e s e t15 . se tCoord inate (2 , new Point3 f ( 0 . 22 f , 1 . 2 f , 0 . 6 7 f ) ) ;

161 i ndexed fa c e s e t15 . se tCoord inate (3 , new Point3 f ( 0 . 7 f , 1 . 2 f , 0 f ) ) ;

162

163 QuadArray indexed fa c e s e t16=new QuadArray (4 , QuadArray .COORDINATES) ;

164 i ndexed fa c e s e t16 . se tCoord inate (0 , new Point3 f ( 0 . 19 f , 1 . 5 f , 0 . 5 7 f ) ) ;

165 i ndexed fa c e s e t16 . se tCoord inate (1 , new Point3 f (−0.48 f , 1 . 5 f , 0 . 3 5 f ) ) ;

166 i ndexed fa c e s e t16 . se tCoord inate (2 , new Point3 f (−0.57 f , 1 . 2 f , 0 . 4 1 f ) ) ;

167 i ndexed fa c e s e t16 . se tCoord inate (3 , new Point3 f ( 0 . 22 f , 1 . 2 f , 0 . 6 7 f ) ) ;

168

169 QuadArray indexed fa c e s e t17=new QuadArray (4 , QuadArray .COORDINATES) ;

170 i ndexed fa c e s e t17 . se tCoord inate (0 , new Point3 f (−0.48 f , 1 . 5 f , 0 . 3 5 f ) ) ;

171 i ndexed fa c e s e t17 . se tCoord inate (1 , new Point3 f (−0.49 f , 1 . 5 f ,−0.35 f ) ) ;

172 i ndexed fa c e s e t17 . se tCoord inate (2 , new Point3 f (−0.57 f , 1 . 2 f ,−0.41 f ) ) ;

173 i ndexed fa c e s e t17 . se tCoord inate (3 , new Point3 f (−0.57 f , 1 . 2 f , 0 . 4 1 f ) ) ;

174

175 QuadArray indexed fa c e s e t18=new QuadArray (4 , QuadArray .COORDINATES) ;

176 i ndexed fa c e s e t18 . se tCoord inate (0 , new Point3 f (−0.49 f , 1 . 5 f ,−0.35 f ) ) ;

177 i ndexed fa c e s e t18 . se tCoord inate (1 , new Point3 f ( 0 . 18 f , 1 . 5 f ,−0.57 f ) ) ;

178 i ndexed fa c e s e t18 . se tCoord inate (2 , new Point3 f ( 0 . 21 f , 1 . 2 f ,−0.67 f ) ) ;

179 i ndexed fa c e s e t18 . se tCoord inate (3 , new Point3 f (−0.57 f , 1 . 2 f ,−0.41 f ) ) ;

180

181 QuadArray indexed fa c e s e t19=new QuadArray (4 , QuadArray .COORDINATES) ;

182 i ndexed fa c e s e t19 . se tCoord inate (0 , new Point3 f ( 0 . 18 f , 1 . 5 f ,−0.57 f ) ) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 192: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

168 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

183 i ndexed fa c e s e t19 . se tCoord inate (1 , new Point3 f ( 0 . 6 f , 1 . 5 f , 0 f ) ) ;

184 i ndexed fa c e s e t19 . se tCoord inate (2 , new Point3 f ( 0 . 7 f , 1 . 2 f , 0 f ) ) ;

185 i ndexed fa c e s e t19 . se tCoord inate (3 , new Point3 f ( 0 . 21 f , 1 . 2 f ,−0.67 f ) ) ;

186

187 QuadArray indexed fa c e s e t20=new QuadArray (4 , QuadArray .COORDINATES) ;

188 i ndexed fa c e s e t20 . se tCoord inate (0 , new Point3 f ( 0 . 7 f , 1 . 2 f , 0 f ) ) ;

189 i ndexed fa c e s e t20 . se tCoord inate (1 , new Point3 f ( 0 . 22 f , 1 . 2 f , 0 . 6 7 f ) ) ;

190 i ndexed fa c e s e t20 . se tCoord inate (2 , new Point3 f ( 0 . 12 f , 0 f , 0 . 3 8 f ) ) ;

191 i ndexed fa c e s e t20 . se tCoord inate (3 , new Point3 f ( 0 . 4 f , 0 f , 0 f ) ) ;

192

193 QuadArray indexed fa c e s e t21=new QuadArray (4 , QuadArray .COORDINATES) ;

194 i ndexed fa c e s e t21 . se tCoord inate (0 , new Point3 f ( 0 . 22 f , 1 . 2 f , 0 . 6 7 f ) ) ;

195 i ndexed fa c e s e t21 . se tCoord inate (1 , new Point3 f (−0.57 f , 1 . 2 f , 0 . 4 1 f ) ) ;

196 i ndexed fa c e s e t21 . se tCoord inate (2 , new Point3 f (−0.32 f , 0 f , 0 . 2 4 f ) ) ;

197 i ndexed fa c e s e t21 . se tCoord inate (3 , new Point3 f ( 0 . 12 f , 0 f , 0 . 3 8 f ) ) ;

198

199 QuadArray indexed fa c e s e t22=new QuadArray (4 , QuadArray .COORDINATES) ;

200 i ndexed fa c e s e t22 . se tCoord inate (0 , new Point3 f (−0.57 f , 1 . 2 f , 0 . 4 1 f ) ) ;

201 i ndexed fa c e s e t22 . se tCoord inate (1 , new Point3 f (−0.57 f , 1 . 2 f ,−0.41 f ) ) ;

202 i ndexed fa c e s e t22 . se tCoord inate (2 , new Point3 f (−0.32 f , 0 f ,−0.23 f ) ) ;

203 i ndexed fa c e s e t22 . se tCoord inate (3 , new Point3 f (−0.32 f , 0 f , 0 . 2 4 f ) ) ;

204

205 QuadArray indexed fa c e s e t23=new QuadArray (4 , QuadArray .COORDINATES) ;

206 i ndexed fa c e s e t23 . se tCoord inate (0 , new Point3 f (−0.57 f , 1 . 2 f ,−0.41 f ) ) ;

207 i ndexed fa c e s e t23 . se tCoord inate (1 , new Point3 f ( 0 . 21 f , 1 . 2 f ,−0.67 f ) ) ;

208 i ndexed fa c e s e t23 . se tCoord inate (2 , new Point3 f ( 0 . 12 f , 0 f ,−0.38 f ) ) ;

209 i ndexed fa c e s e t23 . se tCoord inate (3 , new Point3 f (−0.32 f , 0 f ,−0.23 f ) ) ;

210

211 QuadArray indexed fa c e s e t24=new QuadArray (4 , QuadArray .COORDINATES) ;

212 i ndexed fa c e s e t24 . se tCoord inate (0 , new Point3 f ( 0 . 21 f , 1 . 2 f ,−0.67 f ) ) ;

213 i ndexed fa c e s e t24 . se tCoord inate (1 , new Point3 f ( 0 . 7 f , 1 . 2 f , 0 f ) ) ;

214 i ndexed fa c e s e t24 . se tCoord inate (2 , new Point3 f ( 0 . 4 f , 0 f , 0 f ) ) ;

215 i ndexed fa c e s e t24 . se tCoord inate (3 , new Point3 f ( 0 . 12 f , 0 f ,−0.38 f ) ) ;

216

217 QuadArray indexed fa c e s e t25=new QuadArray (4 , QuadArray .COORDINATES) ;

218 i ndexed fa c e s e t25 . se tCoord inate (0 , new Point3 f ( 0 . 4 f , 0 f , 0 f ) ) ;

219 i ndexed fa c e s e t25 . se tCoord inate (1 , new Point3 f ( 0 . 12 f , 0 f , 0 . 3 8 f ) ) ;

220 i ndexed fa c e s e t25 . se tCoord inate (2 , new Point3 f (−0.32 f , 0 f , 0 . 2 4 f ) ) ;

221 i ndexed fa c e s e t25 . se tCoord inate (3 , new Point3 f (−0.32 f , 0 f ,−0.23 f ) ) ;

222

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 193: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

B.4. Codigos para renderizar la figura: Florero con traslacion y textura 169

223 TransformGroup tg0=new TransformGroup ( t rans formac ion0 ( ) ) ;

224 tg0 . addChild (new Shape3D( indexed face s e t0 , c reaApar i enc ia0 ( ) ) ) ;

225 tg0 . addChild (new Shape3D( indexed face s e t1 , c reaApar i enc ia0 ( ) ) ) ;

226 tg0 . addChild (new Shape3D( indexed face s e t2 , c reaApar i enc ia0 ( ) ) ) ;

227 tg0 . addChild (new Shape3D( indexed face s e t3 , c reaApar i enc ia0 ( ) ) ) ;

228 tg0 . addChild (new Shape3D( indexed face s e t4 , c reaApar i enc ia0 ( ) ) ) ;

229 tg0 . addChild (new Shape3D( indexed face s e t5 , c reaApar i enc ia0 ( ) ) ) ;

230 tg0 . addChild (new Shape3D( indexed face s e t6 , c reaApar i enc ia0 ( ) ) ) ;

231 tg0 . addChild (new Shape3D( indexed face s e t7 , c reaApar i enc ia0 ( ) ) ) ;

232 tg0 . addChild (new Shape3D( indexed face s e t8 , c reaApar i enc ia0 ( ) ) ) ;

233 tg0 . addChild (new Shape3D( indexed face s e t9 , c reaApar i enc ia0 ( ) ) ) ;

234 tg0 . addChild (new Shape3D( indexed face se t10 , c r eaApar i enc ia0 ( ) ) ) ;

235 tg0 . addChild (new Shape3D( indexed face se t11 , c r eaApar i enc ia0 ( ) ) ) ;

236 tg0 . addChild (new Shape3D( indexed face se t12 , c r eaApar i enc ia0 ( ) ) ) ;

237 tg0 . addChild (new Shape3D( indexed face se t13 , c r eaApar i enc ia0 ( ) ) ) ;

238 tg0 . addChild (new Shape3D( indexed face se t14 , c r eaApar i enc ia0 ( ) ) ) ;

239 tg0 . addChild (new Shape3D( indexed face se t15 , c r eaApar i enc ia0 ( ) ) ) ;

240 tg0 . addChild (new Shape3D( indexed face se t16 , c r eaApar i enc ia0 ( ) ) ) ;

241 tg0 . addChild (new Shape3D( indexed face se t17 , c r eaApar i enc ia0 ( ) ) ) ;

242 tg0 . addChild (new Shape3D( indexed face se t18 , c r eaApar i enc ia0 ( ) ) ) ;

243 tg0 . addChild (new Shape3D( indexed face se t19 , c r eaApar i enc ia0 ( ) ) ) ;

244 tg0 . addChild (new Shape3D( indexed face se t20 , c r eaApar i enc ia0 ( ) ) ) ;

245 tg0 . addChild (new Shape3D( indexed face se t21 , c r eaApar i enc ia0 ( ) ) ) ;

246 tg0 . addChild (new Shape3D( indexed face se t22 , c r eaApar i enc ia0 ( ) ) ) ;

247 tg0 . addChild (new Shape3D( indexed face se t23 , c r eaApar i enc ia0 ( ) ) ) ;

248 tg0 . addChild (new Shape3D( indexed face se t24 , c r eaApar i enc ia0 ( ) ) ) ;

249 tg0 . addChild (new Shape3D( indexed face se t25 , c r eaApar i enc ia0 ( ) ) ) ;

250 r a i z . addChild ( tg0 ) ;

251

252 r a i z . compi le ( ) ;

253 return r a i z ;

254 }

255

256 public Appearance c reaApar i enc ia0 ( ) {

257 Appearance app=new Appearance ( ) ;

258 PolygonAttr ibutes po lyAtt r ib = new PolygonAttr ibutes ( ) ;

259 po lyAtt r ib . s e tCul lFace ( PolygonAttr ibutes .CULL NONE) ;

260 app . s e tPo lygonAtt r ibute s ( po lyAtt r ib ) ;

261 TexCoordGeneration texCoord = new TexCoordGeneration ( TexCoordGeneration

.OBJECT LINEAR, TexCoordGeneration .TEXTURE COORDINATE 3) ;

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 194: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

170 Apendice B. Codigos en VRML y en Java 3D de figuras complejas

262 app . setTexCoordGeneration ( texCoord ) ;

263 St r ing nomArch=” l a d r i l l o 1 . jpg ” ;

264 TextureLoader l oade r=new TextureLoader (nomArch , this ) ;

265 ImageComponent2D image=loade r . getImage ( ) ;

266 i f ( image==null )

267 System . out . p r i n t l n ( ”Error a l cargar l a textura ” ) ;

268 Texture2D texture=new Texture2D ( Texture .BASE LEVEL, Texture .RGBA, image .

getWidth ( ) , image . getHeight ( ) ) ;

269 t ex tu re . setImage (0 , image ) ;

270 app . setTexture ( t ex tu re ) ;

271 return app ;

272 }

273

274 public Transform3D trans formac ion0 ( ) {

275 Transform3D t0=new Transform3D ( ) ;

276 Vector3d v=new Vector3d (0 .0 ,−1.0 ,−4.0) ;

277 t0 . s e t ( v ) ;

278 return t0 ;

279 }

280

281 }

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 195: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice C

Renderizaciones en VRML y de

salida generados por el Traductor

VRML a Java 3D

En esta seccion se muestran las renderizaciones de los cuatro ejemplos de gran comple-

jidad que se usaron para probar el correcto funcionamiento de la herramienta Traductor

VRML a Java 3D. En los cuatro casos se presentan las renderizaciones para VRML

ası como para Java 3D.

Las renderizaciones corresponden a: silla de madera, sofa, monitor de PC y la de un

florero.

Los codigos completos de estos cuatro ejemplos estan en el apendice anterior, tanto

para VRML como para Java 3D, estos ultimos fueron generados por la herramienta

Traductor de VRML a Java 3D.

171

Page 196: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

172Apendice C. Renderizaciones en VRML y de salida generados por el Traductor VRML

a Java 3D

C.1. Renderizaciones para la figura: Silla de Madera

La figura C.1 muestra la imagen del archivo VRML usando el navegador con el

plug-in Cortona para el codigo SillaMadera01.wrl.

Figura C.1: Salida usando el navegador con el plug-in Cortona del archivo SillaMadera01.wrl

La figura C.2 muestra la imagen del archivo de salida SillaMadera1.java en Java 3D

generado por la herramienta Traductor VRML a Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 197: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

C.1. Renderizaciones para la figura: Silla de Madera 173

Figura C.2: Salida usando la herramienta Traductor VRML a Java 3D del archivo SillaMade-ra1.java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 198: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

174Apendice C. Renderizaciones en VRML y de salida generados por el Traductor VRML

a Java 3D

C.2. Renderizaciones para la figura: Sofa

La figura C.3 muestra la imagen del archivo VRML usando el navegador con el

plug-in Cortona para el codigo Sofa1.wrl.

Figura C.3: Salida usando el navegador con el plug-in Cortona del archivo Sofa1.wrl

La figura C.4 muestra la imagen del archivo de salida Sofa1.java en Java 3D generado

por la herramienta Traductor VRML a Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 199: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

C.2. Renderizaciones para la figura: Sofa 175

Figura C.4: Salida usando la herramienta Traductor VRML a Java 3D del archivo Sofa1.java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 200: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

176Apendice C. Renderizaciones en VRML y de salida generados por el Traductor VRML

a Java 3D

C.3. Renderizaciones para la figura: Monitor de PC

La figura C.5 muestra la imagen del archivo VRML usando el navegador con el

plug-in Cortona para el codigo MonitorPC.wrl.

Figura C.5: Salida usando el navegador con el plug-in Cortona del archivo MonitorPC.wrl

La figura C.6 muestra la imagen del archivo de salida MonitorPC.java en Java 3D

generado ´por la herramienta Traductor VRML a Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 201: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

C.3. Renderizaciones para la figura: Monitor de PC 177

Figura C.6: Salida usando la herramienta Traductor VRML a Java 3D del archivo Moni-torPC.java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 202: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

178Apendice C. Renderizaciones en VRML y de salida generados por el Traductor VRML

a Java 3D

C.4. Renderizaciones para la figura: Florero con tras-

lacion

La figura C.7 muestra la imagen del archivo VRML usando el navegador con el

plug-in Cortona para el codigo FloreroTrasladado1.wrl.

Figura C.7: Salida usando el navegador con el plug-in Cortona del archivo FloreroTraslada-do1.wrl

La figura C.8 muestra la imagen del archivo de salida FloreroTrasladado1.java en

Java 3D generado ´por la herramienta Traductor VRML a Java 3D.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 203: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

C.4. Renderizaciones para la figura: Florero con traslacion 179

Figura C.8: Salida usando la herramienta Traductor VRML a Java 3D del archivo Florero-Trasladado1.java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 204: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

180Apendice C. Renderizaciones en VRML y de salida generados por el Traductor VRML

a Java 3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 205: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice D

Especificaciones de la herramienta

Traductor de VRML a Java 3D

Para el funcionamiento optimo de la herramienta Traductor de VRML a Java 3D se

recomienda contar con los siguientes requerimientos de hardware y software.

D.1. Requerimientos de hardware

Procesador intel pentium a 400 Mz como mınimo. Se recomienda a 1 GHz para

mejorar el rendimiento del renderizado en Java 3D.

Disco duro de 500 MB de espacio disponible.

Memoria RAM de 2 GB.

Monitor de alta resolucion de 1024 x 768 a 32 bits.

181

Page 206: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

182 Apendice D. Especificaciones de la herramienta Traductor de VRML a Java 3D

D.2. Requerimientos de software

Plug-in Cortona 3D.

Sistema operativo Windows 7, Unix, Linux o Mac OS.

Compilador de Java 2.

Interfaz de Programas de Aplicacion para Java 3D.

Entorno de desarrollo netBeans.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 207: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice E

Instalacion del software requerido

para trabajar con el Traductor

VRML a Java 3D

E.1. El plug-in Cortona 3D

Cortona 3D es un visor que trabaja como un plug-in de VRML para los navegadores

web Internet Explorer, Netscape Browser, Mozilla, Firefox, et. La version actual es la

6.0 y puede bajarse desde:

http://www.cortona3d.com/Products/Cortona-3D-Viewer.aspx y tiene las siguientes ca-

racterısticas:

Soporta Unicode.

Soporta Firefox 3.0 y Google Chrome.

Soporta Phong lighting.

Rendimiento mejorado: new DirectX renderer.

183

Page 208: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

184Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

Procedimiento de instalacion mejorado.

Nuevas extensiones para VRML.

Soporte completo para VRML 97.

Instalacion automatica para Internet Explorer.

Suporte de aceleladores modernos via DirectX y OpenGL.

Renderizado advanced: mipmapping, phong lighting, reflection mapping y enhan-

ced anti-aliasing.

Soporte para Macromedia Flash.

Poderosa API basada en el ActiveX Automation technology.

Interface de usuario personalizable.

E.1.1. Instalacion del plug-in Cortona 3D

Los requerimientos basicos para instalar este plug-in son los siguientes:

Sistema Operativo: Microsoft R© Windows R© ME/2000/XP.

Navegador: Internet Explorer 6.0 o posterior, Netscape R© Browser 8.0 o posterior,

Mozilla Firefox 1.5 o posterior, Opera 8.5 o posterior.

Procesador: Pentium R© II 300 MHz o posterior.

Memoria RAM: mınimo de 64 MB.

Espacio en disco duro: 6 MB.

Monitor: 1024x768 modo: true color

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 209: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

E.1. El plug-in Cortona 3D 185

Tarjeta grafica compatible con DirectX 9 compatible.

En la figura E.1 se muestra el sitio de descarga del plugin, se da click en Install

Cortona y se muestra la pantalla E.2 donde se da click en Ejecutar e inicia la instalacion

del Plug-in, posteriormente como se observa en las figura E.3 se da click en siguiente y

se selecciona la opcion I accept the terms . . . y se da clcik en siguiente. Posteriormente

se selecciona Direct X render como se observa en la figura E.4 y se da click en Install

y como ultimo paso se da click en Finish como se observa en la figura E.5 y el plug-in

queda instalado.

Figura E.1: Sitio de descarga de cortona

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 210: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

186Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

Figura E.2: Inicio de la instalacion del plug-in Cortona

Figura E.3: Pasos en la instalacion (1)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 211: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

E.1. El plug-in Cortona 3D 187

Figura E.4: Pasos en la instalacion (2)

Figura E.5: Pasos en la instalacion (3)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 212: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

188Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

E.2. Instalacion del compilador para Java 3D

La instalacion de Java 3D requiere de la instalacion previa del compilador de Java,

por lo que se accede a la pagina:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

La version de Java que se descarga es la Standard Edition como se observa en la figura

E.6, ahı podemos dar click en el boton Download JDK. Ese boton envıa a otra pagina

mostrada en la figura E.7, donde se elige la distribucion de Java a instalar de acuerdo al

sistema operativo que se tenga. Una vez seleccionada dicha opcion se muestra la pantalla

de la figura E.8, donde podemos seleccionar la opcion Ejecutar, y es ahı donde inicia

la instalacion como se observa en la figura E.9 y se da click en Siguiente, en Aceptar y

nuevamente Siguiente como se muestra en la figura E.10y en la pantalla posterior se da

click en siguiente como se muestra en la E.11 y finaliza con la pantalla de la figura E.12.

Figura E.6: Sitio de Descarga del compilador de Java

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 213: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

E.2. Instalacion del compilador para Java 3D 189

Figura E.7: Sitio de Descarga del compilador de Java(2)

Figura E.8: Sitio de Descarga del compilador de Java(3)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 214: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

190Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

Figura E.9: Instalacion del compilador de Java(1)

Figura E.10: Instalacion del compilador de Java(2)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 215: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

E.2. Instalacion del compilador para Java 3D 191

Figura E.11: Instalacion del compilador de Java(3)

Figura E.12: Instalacion del compilador de Java(4)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 216: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

192Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

E.2.1. Instalacion de la API para Java 3D

Una vez instalado el compilador de Java se procede con la instalacion de Java3D. La

API de Java3D se descarga del sitio:

http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html

el cual se observa en la figura E.13, donde se selecciona Download Java3D 1.5.1

Software, este elace redirige hacia otra pagina donde se selecciona el sistema operativo

donde se instalara y se acepta la licencia como se muestra en la figura E.14 y finalmente

se procede a descargar la API de Java3D como se observa en la figura E.15 y da click

en el boton de Ejecutar para inicial la instalacion (figura E.16)

Figura E.13: Sitio de Descarga de la API Java3D

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 217: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

E.2. Instalacion del compilador para Java 3D 193

Figura E.14: Sitio de Descarga de la API Java3D(2)

Figura E.15: Sitio de Descarga de la API Java3D(3)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 218: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

194Apendice E. Instalacion del software requerido para trabajar con el Traductor VRML a

Java 3D

Figura E.16: Sitio de Descarga de la API Java3D (4)

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 219: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

Apendice F

Glosario de Terminos

ancestor - Un nodo el cual es un antecedente de otro nodo en la jerarquıa de trans-

formacion.

avatar - Representacion abstracta de un usuario en un mundo VRML. Las dimen-

siones fısicas del avatar se usan para detectar colisiones y el seguimiento en el terreno.

child - Una instancia de un nodo children.

children node - Uno de un conjunto de nodos tipo, instancias de las cuales puede

coleccionarse en un grupo para compartir propiedades especıficas dependiente del tipo

del nodo grouping . Vease los nodos Grouping y children, y la lista de nodos children

permitidos.

descendant - Un nodo el cual desciende de otro nodo en la jerarquıa de transfor-

macion. Un nodo children.

195

Page 220: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

196 Apendice F. Glosario de Terminos

display device - Dispositivo grafico en el cual se puede renderizar mundos VRML.

event - Un mensaje enviado desde un nodo a otro definido por una route. Estımulo

externos de senales de eventos, cambian los valores de campo, e interaccionan entre no-

dos. Un evento consiste de un timestamp y de un valor de campo.

event cascade - Una secuencia de eventos iniciados por un script o evento sensor y

propagado desde un nodo a otro nodo a lo largo de una o mas rutas. Todos los eventos

en un evento cascada se consideran que ocurren simultaneamente.

eventIn - Un receptor logico conectado a un nodo, el cual recibe eventos.

eventOut - Una terminal de salida logica conectada a un nodo desde el cual se

envıan los eventos. El eventOut tambien almacena los eventos enviados mas reciente-

mente.

field - Una propiedad o atributo de un nodo. Cada tipo de nodo tiene un conjunto

fijo de campos. Los campos pueden contener varias clases de datos y uno o mas valores.

Cada campo tiene un valor por omision.

field name - Es el identificador de un campo. Los nombres de campo son unicos

dentro del alcance del nodo.

frame - Una renderizacion individual de un mundo en un dispositivo display o un

paso de tiempo individual en una simulacion.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 221: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

197

geometric property node - Un nodo que define las propiedades de un nodo geo-

metry especıfico. Un nodo de tipo Color, Coordinate, Normal, or TextureCoordinate.

geometry node - Un nodo conteniendo descripciones matematicas de las tres di-

mensiones (3D) puntos, lineas, superficies, cadenas de texto y solidos. Un nodo de tipo

Box, Cone, Cylinder, ElevationGrid, Extrusion, IndexedFaceSet, IndexedLineSet, Poin-

tSet, Sphere, o Text. Ver Shapes y geometry.

grouping node - Uno de un conjunto de nodos tipo el cual incluye una lista de

nodos referidos a sus nodos hijos . Estos nodos children nodes son colectados juntos pa-

ra compartirpropiedades especıficas dependiente del tipo de nodo grouping. Cada nodo

grouping define un espacio coordenado para sus hijos relacionados a su porpio espacio

coordenado. Los children pueden ellos mismos ser instancias de nodos grouping, forman-

do ası una jerarquıa de transformacion.

image - Un arreglo de dos dimensiones (2D) de valores de pixeles. Los valores de los

pixeles pueden tener de uno a cuatro componentes.

in-lining - Mecanismo mediante el cual un archivo VRML es jerarquicamente in-

cluido en otro.

instance - Referencia a un nodo previamente definido y nombrado. Los Nodos son

nombrados por medio de la sintaxis DEF y referenciado por la sintaxis USE. Las ins-

tancias de los nodos pueden usarse en cualquier contexto en el cual el nodo que definen

puede ser usado.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 222: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

198 Apendice F. Glosario de Terminos

loop - Una secuencia de eventos las cuales resultarıan en un eventOut especıfico

enviando mas que un eventocon el mismo timestamp.

message - Una cadena de datos enviada entre nodos hasta la ocurrencia de un evento.

node - El componente fundamental de un scene graph en ISO/IEC 14772. Los nodos

son abstracciones de varios objetos y conceptos real-world. Ejemplos incluyen spheres,

lights, y descripciones de material. Los nodos contienen campos y eventos. Los mesajes

pueden enviarse entre nodos a lo largo de routes.

node type - Una caracterıstica de cada nodo que describe, en general, su semantica

particular . Por ejemplo, Box, Group, Sound, y SpotLight son nodos tipo.

object space - El sistema de coordenada en el cual un objeto esta definido.

panorama - Una texture de fondo que es colocada atras de toda geometry en la

escena y enfrente del piso y cielo.

parent - Un nodo el cual es una instancia de un nodo grouping.

polyline - Una secuencia de segmentos de lıneas rectas donde el punto final del pri-

mer segmento coincide con el punto de inicio del segundo segmento, el punto final del

segundo segmento coincide con el punto final del tercer segmento, y ası sucesivamente. .

route - La conexion entre un nodo que genera un evento y un nodo que recibe el

evento.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 223: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

199

route graph - El conjunto de conexiones entre eventOuts y eventIns formedos por

sentencias ROUTE o invocaciones a metodos addRoute.

scene graph - Una coleccion ordenada de nodos grouping y otros nodos. Nodos

Grouping, (tales como nodos: LOD, Switch, y Transform ) pueden tener nodos children.

sensor node - Un nodo que habilita al usuario a interactuar con el mundo en la

jerarquıa del grafo de escena. los nodos Sensor responden a la interaccion del usuario

con objectos geometricos en el mundo, el movimiento del usuario a traves del mundo o

el paso del tiempo.

separator character - Un caracter UTF-8 usado para separar entidades sintacticas

en un archivo VRML. Especıficamente las comas, los espacios,los tabs, las linefeeds, y los

carriage-returns son caracteres separadores que aparecen fuera de los campos de cadena.

sibling - Un nodo el cual comparte un padre con otros nodos.

special group node - Un nodo grouping que exhibe un comportamiento especial.

Ejemplos de tales comportamientos especiales incluye la seleccion de uno de muchas no-

dos children para ser renderizados basados en valor del parametro de cambio dinamico y

los nodos children cargados dinamicamnete desde un archivo externo. Un nodo del tipo

Inline, LOD (nivel de detalle), o Switch.

texture -Una imagen usada en un mapeo de textura para crear efectos de apariencia

visual cuando se aplica a nodos geometry.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 224: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

200 Apendice F. Glosario de Terminos

texture coordinates - El conjunto de coordenadas de dos dimensiones usedos por

algunos nodos geometry basados en vertices (ejemplo: IndexedFaceSet y ElevationGrid)

y especificados en el nodo TextureCoordinate para mapear texturas a los vertices de esos

nodos. El rango de coordenadas de texturas de 0 a 1 a trves de cada eje de la imagen

de textura.

texture map - Una textura mas los parametros generales necesarios para mapear

la textura a la geometrıa.

time - Un valor que se incrementa monotonicamente generado por un nodo. Time

(0.0) inicia en 00:00:00 GMT January 1, 1970.

timestamp - La parte de un mensaje que describe el tiempo en que ocurre un evento

y que causo que el mensaje se enviara.

transformation hierarchy - El subconjunto del grafo de escena que consiste de

nodos que tienen un sistema de coordenadas bien definido. La jerarquıa de transforma-

cion excluye nodos que no son descendientes del nodo raız del grafo de escena y nodos

SFNode o campos de Scripts de MFNode.

user - Una persona o agente quien usa e interactua con archivos VRML por medio

de un navegador.

viewer - Una localidad, direccion, y angulo de vista en un mundo virtual que deter-

mina la porcion del mundo virtual presentado por el navegador al usuario.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D

Page 225: T E S I S · 2017. 12. 16. · JOSE MARCO ANTONIO RUEDA MEL ENDEZ DIRECTORES DE TESIS M. EN C. MAURICIO OLGU IN CARBAJAL M. EN C. EDUARDO VEGA ALVARADO M exico, D.F. Julio 2011. ii

201

virtual world - Ver world.

world - Una coleccion de uno o mas archivos VRML y de otros contenidos multi-

media que cuando son interpretados por un navegador VRML, presenta una experiencia

interactiva al usuario consistente con la intencon del autor.

world coordinate space - El sistema de coordenadas en el cual cada mundo VRML

world es definedo. El espacio del mundo coordenado es un sistema cartesiano ortogonal

de mano derecha. Las unidades de longitud son metros.

XY plane - El plano perpendicular al eje Z que pasa a traves del punto Z = 0.0.

YZ plane - El plano perpendicular al eje X que pasa a traves del punto X = 0.0.

ZX plane - El plano perpendicular al eje Y que pasa a traves del punto Y = 0.0.

Mejoras en el Diseno, e Implementacion de un Traductor de VRML a Java 3D