• No se han encontrado resultados

Hola mundo en 3D Rotaci´ on simple Rotaci´ on compuesta Animaci´ on Rotaci´ on y animaci´ on Color de fondo

N/A
N/A
Protected

Academic year: 2019

Share "Hola mundo en 3D Rotaci´ on simple Rotaci´ on compuesta Animaci´ on Rotaci´ on y animaci´ on Color de fondo"

Copied!
20
0
0

Texto completo

(1)

Ejemplos de Java3D

Oscar A. Ch´

avez Bosquez

(2)

Contenido

1

Introducci´

on

Conceptos b´

asicos

2

Ejemplos

Hola mundo en 3D

Rotaci´

on simple

Rotaci´

on compuesta

Animaci´

on

Rotaci´

on y animaci´

on

Color de fondo

(3)

¿Que es Java3D?

API de Java

Aplicaciones y applets con gr´

aficos en tres dimensiones

Paradigma de mundos virtuales

(4)

¿Que es Java3D?

API de Java

Aplicaciones y applets con gr´

aficos en tres dimensiones

Paradigma de mundos virtuales

(5)

¿Que es Java3D?

API de Java

Aplicaciones y applets con gr´

aficos en tres dimensiones

Paradigma de mundos virtuales

(6)

¿Que es Java3D?

API de Java

Aplicaciones y applets con gr´

aficos en tres dimensiones

Paradigma de mundos virtuales

(7)

Ventajas y desventajas

Ventajas

Software libre

Multiplataforma

Creaci´

on de animaciones y juegos

No utiliza demasiados recursos de c´

omputo

Se pueden explotar todas las capacidades del lenguaje

Desventajas

Es m´

as lento que otras alternativas

Solamente se pueden crear applets y aplicaciones

(8)

Ventajas y desventajas

Ventajas

Software libre

Multiplataforma

Creaci´

on de animaciones y juegos

No utiliza demasiados recursos de c´

omputo

Se pueden explotar todas las capacidades del lenguaje

Desventajas

Es m´

as lento que otras alternativas

Solamente se pueden crear applets y aplicaciones

(9)

Conceptos clave

Universo virtual

: Representa el

entorno 3D que contiene las

escenas

Escena

: Contiene un elemento

gr´

afico (que puede tener

comportamiento)

(10)

Sistema de coordenadas espacial

Sistema de referencia

Formado por tres rectas

perpendiculares entre s´ı

(X, Y, Z)

se cortan en el

origen

(0, 0, 0)

Coordenadas de cada punto en

(11)

Universo conceptual

Al sistema de coordenadas se le

conoce como

universo virtual

La pantalla se encuentra viendo

hacia abajo del eje Z

Los valores positivos del eje X a

la derecha

Los valores positivos del eje Y

hacia arriba

El punto

(0,0,0)

se encuentra

al centro

(12)

Unidad de ´

angulo

Unidades en

radianes

:

´

(13)

Unidad de ´

angulo

Unidades en

radianes

:

´

(14)

HolaUniverso.java

1 i m p o r t j a v a . awt . G r a p h i c s C o n f i g u r a t i o n ; 2 i m p o r t com . s u n . j 3 d . u t i l s . u n i v e r s e .∗; 3 i m p o r t com . s u n . j 3 d . u t i l s . g e o m e t r y .C o l o r C u b e; 4 i m p o r t j a v a x . m e d i a . j 3 d .∗;

5 i m p o r t j a v a x . v e c m a t h .∗; 6 i m p o r t j a v a x . s w i n g . J A p p l e t ; 7 i m p o r t j a v a x . s w i n g . JFrame ;

8 i m p o r t com . s u n . j 3 d . u t i l s . a p p l e t . JMainFrame ; 9 p u b l i c c l a s s H o l a U n i v e r s o e x t e n d s J A p p l e t { 10 p u b l i c H o l a U n i v e r s o ( ) {

11 G r a p h i c s C o n f i g u r a t i o n c o n f i g=S i m p l e U n i v e r s e. g e t P r e f e r r e d C o n f i g u r a t i o n ( ) ; 12 Canvas3D c a n v a s 3 D =new Canvas3D ( c o n f i g ) ;

13 t h i s. add ( c a n v a s 3 D ) ;

14 S i m p l e U n i v e r s e s i m p l e U =new S i m p l e U n i v e r s e( c a n v a s 3 D ) ; 15 B r a n c h G r o u p e s c e n a = c r e a r E s c e n a G r a p h ( ) ;

16 e s c e n a . c o m p i l e ( ) ;

17 s i m p l e U . g e t V i e w i n g P l a t f o r m ( ) . s e t N o m i n a l V i e w i n g T r a n s f o r m ( ) ; 18 s i m p l e U . a d d B r a n c h G r a p h ( e s c e n a ) ;

19 }

20 p u b l i c B r a n c h G r o u p c r e a r E s c e n a G r a p h ( ) { 21 B r a n c h G r o u p e s c e n a = new B r a n c h G r o u p( ) ; 22 C o l o r C u b e c u b o = new C o l o r C u b e( 0 . 5 ) ; 23 e s c e n a . a d d C h i l d ( c u b o ) ;

24 r e t u r n e s c e n a ; 25 }

26 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 27 H o l a U n i v e r s o u n i v e r s o =new H o l a U n i v e r s o ( ) ; 28 JFrame f o r m a =new JMainFrame ( u n i v e r s o , 2 5 6 , 2 5 6 ) ; 29 }

(15)

RotacionSimple.java

1

p u b l i c

B r a n c h G r o u p

c r e a r E s c e n a G r a p h ( )

{

2 // C r e a un o b j e t o de t i p o e s c e n a

3

B r a n c h G r o u p

e s c e n a =

new

B r a n c h G r o u p

( ) ;

4 // C o l o r C u b e e s una c l a s e u t i l i t a r i a

5

C o l o r C u b e

cubo =

new

C o l o r C u b e

( 0 . 5 ) ;

6 // E l o b j e t o r o t a c i o n t i e n e una m a t r i z t r a n s f o r m a d a c o m p u e s t a 7

T r a n s f o r m 3 D

r o t a c i o n =

new

T r a n s f o r m 3 D

( ) ;

8 // Rota 45 g r a d o s

9

r o t a c i o n . r o t X ( Math . P I / 4 . 0 ) ;

10 // C r e a un o b j e t o r o t a d o

11

T r a n s f o r m G r o u p

o b j R o t a d o =

new

T r a n s f o r m G r o u p

( r o t a c i o n ) ;

12 // A p l i c a l a r o t a c i ´o n a l c u b o

13

o b j R o t a d o . a d d C h i l d ( cubo ) ;

14 // A g r e g a e l e l e m e n t o a l a e s c e n a 15

e s c e n a . a d d C h i l d ( o b j R o t a d o ) ;

16

r e t u r n

e s c e n a ;

(16)

RotacionCompuesta.java

1

p u b l i c

B r a n c h G r o u p

c r e a r E s c e n a G r a p h ( )

{

2

B r a n c h G r o u p

e s c e n a =

new

B r a n c h G r o u p

( ) ;

3

C o l o r C u b e

cubo =

new

C o l o r C u b e

( 0 . 5 ) ;

4

T r a n s f o r m 3 D

r o t a c i o n =

new

T r a n s f o r m 3 D

( ) ;

5

T r a n s f o r m 3 D

o t r a R o t a c i o n =

new

T r a n s f o r m 3 D

( ) ;

6

r o t a c i o n . r o t X ( Math . P I / 4 . 0 ) ;

7

o t r a R o t a c i o n . r o t Y ( Math . P I / 4 . 0 ) ;

8 // A g r e g a l a o t r a R o t a c i o n

9

r o t a c i o n . mul ( o t r a R o t a c i o n ) ;

10

T r a n s f o r m G r o u p

o b j R o t a d o =

new

T r a n s f o r m G r o u p

( r o t a c i o n ) ;

11

o b j R o t a d o . a d d C h i l d ( cubo ) ;

12

e s c e n a . a d d C h i l d ( o b j R o t a d o ) ;

13

r e t u r n

e s c e n a ;

(17)

Animacion.java

1

p u b l i c

B r a n c h G r o u p

c r e a r E s c e n a G r a p h ( )

{

2

B r a n c h G r o u p

e s c e n a =

new

B r a n c h G r o u p

( ) ;

3

C o l o r C u b e

cubo =

new

C o l o r C u b e

( 0 . 5 ) ;

4

T r a n s f o r m G r o u p

o b j G i r a d o =

new

T r a n s f o r m G r o u p

( ) ;

5 // P e r m i t e m o d i f i c a r l a s p r o p i e d a d e s de un o b j e t o

6

o b j G i r a d o . s e t C a p a b i l i t y (

7

T r a n s f o r m G r o u p

. ALLOW TRANSFORM WRITE ) ;

8

o b j G i r a d o . a d d C h i l d ( cubo ) ;

9

e s c e n a . a d d C h i l d ( o b j G i r a d o ) ;

10 // C r e a l a f u n c i o n que v a r i a c o n e l t i e m p o p a r a g e n e r a r l a a n i m a c i o n 11

A l p h a

r o t a c i o n A l p h a =

new

A l p h a

(

1 , 4 0 0 0 ) ;

12 // C r e a un n u e v o o b j e t o de c o m p o r t a m i e n t o

13

R o t a t i o n I n t e r p o l a t o r

r o t a d o r=

new

R o t a t i o n I n t e r p o l a t o r

(

14

r o t a c i o n A l p h a ,

o b j G i r a d o ) ;

15 // C r e a e l o b j e t o que d e l i m i t a l a r e g i o n d e l c o m p o r t a m i e n t o

16

B o u n d i n g S p h e r e

l i m i t e s =

new

B o u n d i n g S p h e r e

( ) ;

17

r o t a d o r . s e t S c h e d u l i n g B o u n d s ( l i m i t e s ) ;

18

o b j G i r a d o . a d d C h i l d ( r o t a d o r ) ;

19

r e t u r n

e s c e n a ;

(18)

RotaAnima.java

1 p u b l i c B r a n c h G r o u p c r e a r E s c e n a G r a p h ( ) { 2 B r a n c h G r o u p e s c e n a = new B r a n c h G r o u p( ) ; 3 C o l o r C u b e c u b o =new C o l o r C u b e( 0 . 5 ) ; 4 T r a n s f o r m 3 D r o t a c i o n = new T r a n s f o r m 3 D( ) ; 5 T r a n s f o r m 3 D o t r a R o t a c i o n = new T r a n s f o r m 3 D( ) ; 6 r o t a c i o n . r o t X ( Math . P I / 4 . 0 ) ;

7 o t r a R o t a c i o n . r o t Y ( Math . P I / 5 . 0 ) ; 8 r o t a c i o n . mul ( o t r a R o t a c i o n ) ;

9 T r a n s f o r m G r o u p o b j R o t a d o =new T r a n s f o r m G r o u p( r o t a c i o n ) ; 10 T r a n s f o r m G r o u p o b j G i r a d o =new T r a n s f o r m G r o u p( ) ;

11 o b j G i r a d o . s e t C a p a b i l i t y (T r a n s f o r m G r o u p. ALLOW TRANSFORM WRITE ) ; 12 o b j G i r a d o . a d d C h i l d ( c u b o ) ;

13 e s c e n a . a d d C h i l d ( o b j R o t a d o ) ; 14 o b j R o t a d o . a d d C h i l d ( o b j G i r a d o ) ; 15 T r a n s f o r m 3 D e j e Y =new T r a n s f o r m 3 D( ) ;

16 // C r e a l a f u n c i o n que v a r i a c o n e l t i e m p o p a r a g e n e r a r l a a n i m a c i o n 17 A l p h a r o t a c i o n A l p h a =new A l p h a(−1 , 4 0 0 0 ) ;

18 // C r e a un n u e v o o b j e t o de c o m p o r t a m i e n t o que e j e c u t a l a o p e r a c i o n en e l 19 // o b j e t o de t r a s n f o r m a c i o n e s p e c i f i c a d o y l o a g r e g a a l g r a f i c o de l a e s c e n a 20 R o t a t i o n I n t e r p o l a t o r r o t a d o r = new R o t a t i o n I n t e r p o l a t o r( r o t a c i o n A l p h a ,

21 o b j G i r a d o ,

22 e j e Y ,

23 0 . 0 f ,

24 (f l o a t) Math . P I∗2 . 0 f ) ;

25 B o u n d i n g S p h e r e l i m i t e s = new B o u n d i n g S p h e r e( ) ; 26 r o t a d o r . s e t S c h e d u l i n g B o u n d s ( l i m i t e s ) ;

27 o b j G i r a d o . a d d C h i l d ( r o t a d o r ) ; 28 r e t u r n e s c e n a ;

(19)

Fondo.java

1 i m p o r t j a v a . awt . G r a p h i c s C o n f i g u r a t i o n ; 2 i m p o r t com . s u n . j 3 d . u t i l s . u n i v e r s e .∗; 3 i m p o r t j a v a x . m e d i a . j 3 d .∗;

4 i m p o r t j a v a x . s w i n g . J A p p l e t ; 5 i m p o r t j a v a x . s w i n g . JFrame ;

6 i m p o r t com . s u n . j 3 d . u t i l s . a p p l e t . JMainFrame ; 7 p u b l i c c l a s s Fondo e x t e n d s J A p p l e t { 8 p u b l i c Fondo ( ) {

9 G r a p h i c s C o n f i g u r a t i o n c o n f i g = S i m p l e U n i v e r s e. g e t P r e f e r r e d C o n f i g u r a t i o n ( ) ; 10 Canvas3D c a n v a s 3 D =new Canvas3D ( c o n f i g ) ;

11 t h i s. add ( c a n v a s 3 D ) ;

12 S i m p l e U n i v e r s e s i m p l e U =new S i m p l e U n i v e r s e( c a n v a s 3 D ) ; 13 B r a n c h G r o u p e s c e n a F o n d o = c r e a F o n d o ( ) ;

14 s i m p l e U . a d d B r a n c h G r a p h ( e s c e n a F o n d o ) ; 15 }

16 p u b l i c B r a n c h G r o u p c r e a F o n d o ( ) {

17 B r a n c h G r o u p e s c e n a = new B r a n c h G r o u p( ) ;

18 B a c k g r o u n d f o n d o =new B a c k g r o u n d ( 1 . 0 f , 1 . 0 f , 1 . 0 f ) ; 19 B o u n d i n g S p h e r e l i m i t e s =new B o u n d i n g S p h e r e( ) ; 20 f o n d o . s e t A p p l i c a t i o n B o u n d s ( l i m i t e s ) ;

21 e s c e n a . a d d C h i l d ( f o n d o ) ; 22 r e t u r n e s c e n a ;

23 }

24 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 25 Fondo u n i v e r s o =new Fondo ( ) ;

26 JFrame f o r m a =new JMainFrame ( u n i v e r s o , 2 5 6 , 2 5 6 ) ; 27 }

(20)

Referencias

Documento similar

Traba- jar con esta muestra permitir´ a que los resultados obtenidos se extiendan a estrellas tanto del disco como del halo de la Galaxia, pudiendo estudiar as´ı sus similitudes

We have deliberately introduced single carbon vacancies on a graphene monolayer grown on a Pt(111) surface and investigated its impact in the electronic, structural, and

Es decir, el uso de los nuevos recursos formativos exige por parte del alumno el dominio de una serie de habili- dades (Hookanson y Hooper 2000) sin las cuales el apoyo del tutor es

Como en el caso de los tipos enteros, los lenguajes suelen soportar varios tipos real, de modo que el programador pueda seleccionar aquel cuyo rango y precisi´on en el coeficiente

El inconveniente operativo que presenta el hecho de que la distribuci´ on de probabilidad de una variable aleatoria es una funci´ on de conjunto se resuelve mediante el uso de

Como se puede intuir, el an´ alisis de la tensi´ on superficial din´ amica est´ a amplia- mente ligado al estudio del transporte de mol´ eculas en la disoluci´ on, que tiene

En este trabajo haremos una breve introducci´ on a la teor´ıa de la forma de Borsuk, que extiende en cierta medida a la teor´ıa de homotop´ıa cl´ asica y que, adem´ as, es

A teor´ıa das distribuci´ ons do matem´ atico franc´es Laurent Schwartz (Medalla Fields en 1950) foi unha das d´ uas grandes revoluci´ ons do s´eculo pasado no eido da an´