Você está na página 1de 16

Revista digital Universitaria

Pgina 1 de 1

30 de Junio de 2001 * Vol. 2 No. 2 * ISSN: 1607-6079

LA SOCIEDAD DE LA INFORMACIN EN EL SIGLO XXI Y LA


BIBLIOTECA UNIVERSITARIA
Dr. Estela Morales Campos
ASIGNACIN DE COMPORTAMIENTO COMPLEJO A MUNDOS
VIRTUALES VRML UTILIZANDO C++
Dr. J.Matas Alvarado Mentado
Dr. Gustavo Nez Esquer
Mt. Rolando Quintero Tllez
SISTEMAS PERSONALES DE COMUNICACIN
Criomicroscopia electronica de un
rotavirus
Dr. B.V.V, Prasad, del Baylor
College of Medicine en Houston,
Texas

Mt. Josefina Castaeda Camacho


Dr. Domingo Lara Rodrguez
LOS CAFICULTORES TACHIRENSES:OTRA VISIN HACIA EL
FUTURO?
Lic. Luca Wilmajay Martnez Quintero

LA REHABILITACIN DE LA CATEDRAL METROPOLITANA DE


LA CIUDAD DE MXICO
Dr. Roberto Meli Piralla
Abraham Roberto Snchez Ramrez

LEOPOLDO GARCA-COLIN SCHERER


Selva
Se autoriza la reproduccin total o
parcial de los artculos aqu
presentados, siempre y cuando
se cite la fuente completa y su
direccin electrnica.
Direccin General de Servicios de Cmputo Acadmico-UNAM
Ciudad Universitaria, Mxico D.F.

http://www.revista.unam.mx/cgi-bin/websql/Hts/indexpreFinal.hts?id=6

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 1 de 15

30 de Junio de 2001 Vol.2 No.2

Asignacin de Comportamiento Complejo


a Mundos Virtuales VRML Utilizando C++
Rolando Quintero Tllez.
J. Matas Alvarado Mentado.
Gustavo Nez Esquer.
Palabras Clave : Comportamient, VRML, C++, Realidad Virtual, EasyVRML, .

Resumen
La animacin de mundos tridimensionales virtuales en VRML se hace mediante paso de eventos
entre nodos en el mundo virtual. Tal animacin tiene la limitacin de ser fija y predeterminada, sin
cambios. Animaciones complejas se realizan a travs de scripts de VRML los cuales contienen
programas escritos en otro lenguaje de programacin. Sin embargo, la labor de programar e integrar
el script al mundo virtual, actualmente, no es sencilla ni cmoda para el usuario. En este trabajo se
describe la definicin, diseo e implementacin de los esquemas de asignacin de comportamiento
en C++ sobre mundos VRML, analizando las peculiaridades de interaccin entre ambos lenguajes.
De manera complementaria se describe una implementacin de ello en la herramienta EASYvrml, la
cual facilita el trabajo de asignar comportamiento complejo utilizando C++ a mundos descritos en
VRML.

[English]
Artculo
Realidad Virtual
El concepto de realidad virtual surge en 1965 cuando Ivan Sutherland (hoy miembro de Sun
Microsystems Laboratories) public un artculo titulado "The Ultimate Display", en el cual describe las
ideas bsicas del concepto de realidad virtual. La realidad virtual se puede definir como:
"Una combinacin de diversas tecnologas e interfaces que permite a uno o ms usuarios interactuar,
en tiempo real, con un entorno o mundo dinmico tridimensional generado por computadora" 1
Otros la definen como:
"La simulacin de medios ambientes, reales o artificiales, y de los sentidos del hombre por
computadora, de tal manera que se busca proporcionar al que participa la sensacin de que este
ambiente realmente existe" 36
La realidad virtual permite un nuevo modo de interaccin entre el hombre y las computadoras

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 2 de 15

Tridimensionalidad
Tiene que ver directamente con la estimulacin de los sentidos del usuario, principalmente la
visin, para dar forma al espacio virtual. Los componentes del mundo virtual se muestran al
usuario en las tres dimensiones del mundo real. En lo que se refiere a los sonidos se tienen
efectos estereofnicos (direccin).
Navegacin
Es la caracterstica que permite al usuario moverse independientemente dentro del mundo.
Las restricciones para este aspecto las especifica quien desarrolla el software. Puede permitir
varios grados de libertad, si se puede volar o no, caminar, nadar, etctera. El otro punto
importante de la navegacin es la posicin del observador, es decir, el lugar desde donde el
usuario ve el mundo virtual.
Interaccin
Permite al usuario manipular el curso de la accin dentro de una aplicacin de realidad virtual,
permitiendo que el sistema responda a los estmulos de la persona que la utiliza. Otro aspecto
de la interaccin es la semntica del ambiente, es decir, las reglas de cmo los componentes
del mundo virtual interactan con el usuario para intercambiar informacin
Inmersin
Significa bloquear al usuario de toda distraccin y enfocarse slo en la informacin u
operacin sobre la cual se trabaja. Posee dos atributos importantes. El primero de ellos es la
habilidad para enfocar la atencin del usuario. El segundo es el que convierte una base de
datos en experiencias, estimulando de esta manera el sistema natural de aprendizaje humano
(las experiencias personales).

1.2. El Lenguaje VRML


VRML es un lenguaje para describir objetos y mundos 3D interactivos. Est diseado para usarse
sobre Internet, intranets, y sistemas locales. Los mundos VRML pueden transmitirse e interrelacionarse a travs del WWW y visualizarse mediante algn navegador o browser VRML que se
conecta con el browser WWW a travs de un API (Figura 1).

figura 1. Esquema de acceso para satisfacer los siguientes requerimientos [5]:

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 3 de 15

VRML ha sido diseado para satisfacer los siguientes requerimientos


z

Autora
Permite el desarrollo de programas de computadora, capaces de crear, editar y mantener
archivos VRML, as como programas de conversin de otros formatos de archivos 3D,
comnmente utilizados, a archivos VRML.
Composicin
Proporciona la posibilidad de utilizar y combinar objetos 3D dinmicos dentro de un mundo
VRML y as permitir la reusabilidad.
Extensin
Proporciona la posibilidad de agregar nuevos tipos de objetos no definidos explcitamente en
VRML.
Capacidad de Implementacin
Permite implementar sobre un amplio rango de sistemas.
Desempeo
Enfatiza funcionamiento interactivo y escalable sobre una amplia variedad de plataformas de
cmputo.
Escalabilidad
Permite la descripcin de mundos tridimensionales dinmicos arbitrariamente grandes.

Conceptualmente, cada programa VRML es un espacio 3D que contiene objetos que pueden ser
modificados dinmicamente a travs de diversos mecanismos. La semntica de VRML describe un
comportamiento funcional abstracto, basado en el tiempo.
En la seccin 2 se presenta una panormica acerca de lo que es asignacin de comportamiento en
mundos o escenarios virtuales, en la cual, adems de algunos conceptos, se presenta una
clasificacin de los comportamientos de acuerdo a las caractersticas que estos presentan. En la
seccin 3 se aborda la asignacin de comportamientos descritos en C++, as como los esquemas
utilizados para llevar a cabo esto. Los requisitos y las restricciones que presentan los esquemas
planteados se presentan en la seccin 4. En la seccin 5 se describe brevemente la herramienta
EasyVRML, en la cual es aplicado lo descrito en este artculo. Finalmente, en la seccin 6 se
describen las conclusiones de este trabajo, as como el trabajo que queda para un futuro.
2. Comportamiento en Mundos Virtuales
El trmino comportamiento se refiere a la modificacin del estado de los objetos dentro de un
escenario virtual, en respuesta a alguna accin del usuario o al cambio de algn otro objeto en la
escena. Este cambio de estado ocurre cuando cambia alguno de los atributos del objeto, por ejemplo
la posicin (translacin), el tamao (escala), la orientacin (rotacin) o su apariencia.
En VRML, el comportamiento se controla (lleva a cabo) mediante eventos. Un evento es la
generacin de un mensaje y su envo de un nodo a otro. Algunos nodos VRML generan eventos en
respuesta a cambios en el ambiente o interaccin del usuario. El direccionamiento de eventos
proporciona a los autores de los mundos un mecanismo separado de la jerarqua del grafo de la
escena, a travs del cual estos eventos pueden ser propagados para efectuar cambios en otros
nodos.
Una vez generados, los eventos son enviados a sus destinos para ser procesados por el nodo
receptor. Este proceso puede cambiar el estado de un nodo, generar eventos adicionales o cambiar
la estructura del grafo de la escena.
El comportamiento puede ser tan sencillo como el encender una luz con un click del ratn, o tan
complejo como el clculo de la trayectoria de un misil teleguiado. Para fines de este trabajo se

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 4 de 15

definen dos tipos de comportamiento: simple y complejo.


2.1. Comportamiento Simple
El comportamiento simple es aquel en el cual los cambios en el estado de los objetos dependen
exclusivamente de eventos internos generados por nodos descritos dentro del programa VRML, sin
la intervencin de ningn lenguaje ajeno a VRML. Se puede decir que ste tipo de comportamiento
es propio de VRML.
La propagacin de los eventos se realiza enrutando o dirigiendo los eventos de un nodo a otro(s). De
esta forma un solo evento puede generar lo que se conoce como "cascada de eventos", la cual va
generando respuestas o cambios en los nodos a los que se va dirigiendo.
Dado que el comportamiento simple est restringido a dirigir datos de un nodo a otro, mediante
instrucciones dadas slo en VRML, se tienen limitaciones como las siguientes: no es posible
mediante este mecanismo determinar si una puerta est cerrada o abierta, o mover un objeto a lo
largo de una trayectoria definida por una ecuacin matemtica. Para llevar a cabo stas u otras
operaciones ms complejas, se debe utilizar un lenguaje de programacin de propsito general.
2.2. Comportamiento Complejo
Se entiende por comportamiento complejo en un mundo VRML, aquel en el cual los cambios en el
estado de los objetos dependen de un programa escrito en un lenguaje ajeno a VRML.
Los cambios dinmicos en la escena pueden ser estimulados por las acciones programadas en un
script, paso de mensajes, comandos del usuario o protocolos de comportamiento.4a Esto brinda la
posibilidad de interaccin con otros lenguajes (especficamente los lenguajes Java y Javascript).
Para ello se emplea el nodo Script. De esta manera es posible asignar comportamientos ms
elaborados como se describe en lo sucesivo.
2.3. Asignacin de Comportamientos
Los esquemas de asignacin de comportamiento se clasifican de acuerdo a las siguientes
dimensiones: ubicacin, acceso a datos y comunicacin. La interseccin de las dimensiones
especifica un tipo particular de esquema de asignacin.
De acuerdo a la Figura 1.3, los diversos tipos de esquemas de asignacin de comportamiento
pueden verse como puntos en el espacio, formados por tres elementos: tipo de ubicacin, tipo de
comunicacin y tipo de acceso a datos.
2.3.1. Ubicacin
Se refiere a la localizacin fsica del cdigo que define el comportamiento, y puede ser:
z

Local El cdigo de comportamiento se ejecuta en la mquina donde sta la escena VRML. No


se necesita acceder a la red para llevar a cabo la comunicacin entre VRML y el lenguaje de
comportamiento.
Remota El cdigo de comportamiento se puede estar ejecutando en cualquier mquina en la
red (incluyendo la mquina local). La localizacin fsica de la definicin del comportamiento es
indiferente, ya que se utiliza el mecanismo de Sockets para llevar acabo la comunicacin.

2.3.2. Acceso a Datos


Se refiere a la forma como se leen y/o modifican los valores de los campos de los nodos que son
afectados por el script, y puede ser de dos tipos:

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 5 de 15

Indirecto (Basado en Eventos)


En este tipo de acceso, la comunicacin entre el script y los dems nodos se hace
exclusivamente a travs del paso de eventos. Cuando el valor de un campo se modifica (ya
sea por una accin del usuario o por un evento de entrada), se genera automticamente un
evento de salida, producindose los efectos en el escenario, de acuerdo a los valores de los
campos modificados obtenidos del evento de salida. Este es el esquema utilizado por VRML
para la asignacin de comportamiento simple.
Directo (Basado en Acceso a Campos)
En este tipo de acceso, la comunicacin entre los nodos se realiza cambiando directamente
los valores de los campos, desde el programa de comportamiento, pasando el nodo por
referencia al programa. El script es invocado cuando se produce un evento de entrada. En el
programa se tiene una referencia al nodo que se va a afectar, la cual se utiliza para
modificarlo. Este es el esquema utilizado para la asignacin de comportamiento complejo
principalmente.

2.3.3. Comunicacin
Se refiere a la forma como se realizan el envo o la recepcin de datos de la escena VRML al
programa de comportamiento:
z

Dependiente
Este modelo de comunicacin consiste en enviar un mensaje, desde el escenario VRML al
programa de comportamiento para actualizar los valores de los objetos dentro del escenario.
Esto significa que el programa de comportamiento se comporta como esclavo del escenario
(seccin 3.3.1.)
Independiente
Este modelo consiste, a diferencia del modelo Dependiente, en un programa de
comportamiento que realiza una tarea determinada y enva datos al escenario (para que ste
actualice el estado de los objetos dentro de l), de acuerdo al tiempo que tenga ocioso en su
ejecucin (seccin 3.3.2.)
Dplex
Es una mezcla de los dos modelos anteriores. El esquema de comunicacin dplex es ms
completo y complejo (seccin 3.3.3.)

2.4. Soporte de VRML para Java


Java aade todas las posibilidades de programacin, adems de brindar un acceso casi transparente
a la red, haciendo a VRML completamente funcional y portable 4b La caracterstica ms importante
de Java para ser usado como lenguaje de implementacin de los scripts. es su independencia de
plataforma, y ello es congruente con la filosofa de VRML y la de WWW.
VRML brinda el soporte para el uso de Java como lenguaje de comportamiento: Esto se realiza
utilizando el API para este lenguaje, en donde se definen todas las clases para acceder a los nodos
de VRML Las interfaces entre VRML y Java se llevan a cabo por medio del nodo Script, un
manejador de eventos, convencin para nombres DEF/USE, y ROUTEs, conectando los nodos y los
campos en la escena.
2.5. Soporte de VRML para otros lenguajes
Otros lenguajes de programacin, en especial como C++, no son soportados de manera directa por
VRML para describir comportamientos. Por lo que para comunicar VRML con cualquier otro lenguaje
que no sea Java o Javascript, se deben definir los mecanismos de interfaz entre ambos lenguajes.
En este trabajo se propone un esquema genrico de comunicacin entre VRML y C++, que puede
extenderse a otros lenguajes orientados a objetos. El esquema genrico de comunicacin incluye la
especificacin de un protocolo llamado PAC-R (Protocolo para Asignacin de Comportamiento

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 6 de 15

Remoto), adems de los modelos de sincronizacin entre VRML y C++.


3. Asignacin de comportamiento utilizando C++
C++ es uno de los lenguajes orientados a objetos, cuya utilizacin est ms extendida. Muchos
programadores gustan de escribir programas en C++, sobre todo para utilizar directamente el
hardware de la computadora (por ejemplo el Joystick, guantes de RV, cascos, etctera). Adems,
existen muchas aplicaciones y bibliotecas escritas en este lenguaje. Muchas de stas pueden
utilizarse para generar escenas VRML ms complejas.
Por ejemplo, Langage d'Agents Logiciel Objet (LALO),7b es un lenguaje de programacin de agentes,
en el cual se pueden programar agentes de software que realicen distintas tareas de forma
inteligente, utilizando para ello las funciones de inferencia que proporcionan las bibliotecas de LALO.
Al compilar el programa fuente LALO, se genera como resultado el cdigo C++, el cual puede ser
utilizado para describir el comportamiento de algn objeto en una escena virtual.
Dicha vinculacin es lo que se conoce como "asignacin de comportamiento complejo". Es decir,
asignar comportamiento es vincular un nodo del escenario VRML (o alguno de sus campos) con un
objeto (mtodo o atributo) de un programa C++ o de cualquier otro lenguaje.
Hasta donde se sabe, no existe un esquema general de asignacin de comportamiento descrito en
C++ a mundos VRML. Sin embargo, este lenguaje es utilizado por muchos programadores, dado que
existen muchas aplicaciones y bibliotecas escritas en l, luego es deseable que VRML utilice las
posibilidades que le brinda. Se propone, como se mencion anteriormente, un esquema general para
vincular cdigo C++ con un mundo VRML.

figura 2. Esquema de comunicacin entre C++ y VRML empleando Java como puente.
Dicho esquema establece el empleo de Java como puente entre los lenguajes, vinculando, mediante
el mecanismo de Sockets, el comportamiento descrito por un programa C++, funcionando en su
plataforma nativa, con un mundo VRML, independiente de plataforma (Figura 2).

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 7 de 15

La utilizacin de C++ como lenguaje de comportamiento, est restringida al comportamiento remoto,


pudiendo aplicarse en cualquiera de los modelos de comunicacin. El esquema de acceso a datos
que utilice depende del programa Java, que sirve como puente entre C++ y VRML.
3.1. Problemtica de la asignacin de comportamiento en C++
Los browsers de WWW y VRML estn diseados para utilizar Java (o JavaScript), con el fin de
realizar clculos complicados (comportamiento complejo). Cuando se requiere ejecutar un programa
en Java, la Java Virtual Machine (JVM)13 (instalada en el browser) solamente "carga" el cdigo de
ste en memoria y genera un nuevo hilo de ejecucin, lo cual no representa ninguna dificultad para
la JVM, puesto que Java soporta directamente esta construccin y el cdigo Java es independiente
de la plataforma.
Cuando la JVM necesita ejecutar un programa escrito en C++ (cdigo nativo), debe utilizar la Java
Native Interface (JNI).12 Esta interfaz establece el mecanismo a travs del cual un programa Java
puede realizar llamadas a mtodos nativos, y viceversa. Sin embargo, este esquema slo puede ser
utilizado para aplicaciones stand-alone, y no en aplicaciones para la WEB (applets y/o scripts),
principalmente por dos aspectos:
z

Seguridad: no se permite que programas Java (applets o scripts) realicen llamados a mtodos
nativos 11, a menos que se proporcione el permiso explcitamente.
Plataforma: aunque los programas Java pudiesen realizar tales llamados, stos slo pueden
ejecutarse en la misma mquina en la que funciona el mtodo nativo.

En la propuesta que se presenta se tiene una restriccin en cuanto a la plataforma, ya que el


programa que describe el comportamiento slo se puede ejecutar en el servidor. Sin embargo, este
programa puede comunicarse con programas que se encuentren fuera de la computadora donde se
ejecuta, ya que no tiene restricciones de comunicacin*a
EasyVRML, adems de brindar una herramienta para facilitar la tarea de asignacin de
comportamiento, proporciona un mecanismo genrico para vincular cdigo C++ con un mundo
VRML. Dicho mecanismo se basa en dos aspectos:
z
z

El empleo del esquema de comportamiento remoto para la comunicacin entre VRML y C++.
Los modelos de comunicacin entre el programa C++ y el escenario VRML (dependiente,
independiente y dplex).

3.2. Esquema de comportamiento remoto en C++


En VRML, la asignacin de comportamiento mediante Java se hace de manera local. Es decir, el
programa Java es cargado y ejecutado como un nuevo hilo en la aplicacin. Para esto se emplea el
VRML Java API.
En2 se propone un esquema de asignacin de comportamiento remoto descrito en Java. Esto se
hace mediante un programa Java que interacta con VRML, y que slo se encarga de comunicarse
por medio de un Socket con otro programa Java, el cual es el que describe el comportamiento.
Al igual que el esquema de comportamiento remoto en Java, su contraparte en C++ utiliza un
programa Java como interfaz entre C++ y VRML. Este programa manipula los campos de los nodos
del escenario, asignando a stos los valores provenientes de un Socket, el cual est conectado con
l o los programas C++ que se estn ejecutando en otra u otras computadoras de la red y que
describen el comportamiento del escenario.
En este esquema se proponen tres niveles de interaccin, entre la computadora donde se ejecuta el
escenario y la computadora donde se ejecuta el comportamiento (Figura 3):

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 8 de 15

figura 3. Esquema de comunicacin entre VRML y C++


z

Nivel de Aplicacin
En este nivel se encuentran las aplicaciones a las cuales se desea comunicar: Escenario
VRML. Es el mundo virtual al que se desea asignar el comportamiento. Se encarga de la
interaccin con el usuario y de la visualizacin del escenario virtual. Aplicacin C++. Es el
programa o biblioteca que describe el comportamiento que se quiere asignar al escenario
virtual.
Nivel de Interfaz
En este nivel se encuentran los programas que sirven como interfaz para la comunicacin.
stos se encargan de leer o escribir datos desde el Nivel de Aplicacin, procesarlos para
enviarlos o recibirlos desde el Nivel de Comunicacin. En este nivel se realiza la gestin de la
informacin, llevando el control de la lgica de la comunicacin entre C++ y VRML. Script
Java. Este programa se encarga de leer y/o modificar el estado de los nodos en el escenario
VRML. Procesa los eventos generados en el escenario virtual y realiza la actualizacin del
estado de los objetos en el escenario. Script C++. Este cdigo se encarga de leer y/o
modificar los datos en la aplicacin C++, de la cual se obtiene el comportamiento. Para ello se
aade al cdigo de la aplicacin como una extensin de ste.
Nivel de Comunicacin
En este nivel se homogeneiza el formato de los datos, al utilizar Sockets para enviarlos de una
computadora a otra. Esto es necesario debido a que como el cdigo compilado de C++ es
dependiente de la plataforma, la alineacin de los bits puede ser diferente a la que se
necesita.
Socket Java. Se encarga del envo y recepcin de datos desde las computadoras remotas.
Implementa el PAC-R *b, utilizando las clases VRML extendidas, propuestas en [2]. Tambin
se encarga de la conversin de los tipos de datos, para que sean compatibles con VRML.
Socket C++. Se encarga del envo y recepcin de datos desde la mquina donde se est
ejecutando el escenario virtual. Implementa el PAC-R y realiza las conversiones de tipos de
datos VRML a C++.

Las aplicaciones que describen el comportamiento se ejecutan en mquinas remotas, mientras que
el escenario VRML se ejecuta en la mquina local. Sin embargo, nada impide que en esta ltima se
ejecute tambin una o varias aplicaciones de comportamiento, ya que es vlido crear un Socket a la
mquina local.
3.3. Modelos de comunicacin

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++

Pgina 9 de 15

Adems de los procedimientos de comunicacin, se debe considerar de qu manera se pueden


sincronizar los procesos involucrados (el comportamiento y la visualizacin) en el escenario virtual.
Se supone que las aplicaciones C++, de las cuales se pretende obtener el comportamiento, fueron
escritas sin tomar en cuenta su aplicacin conjunta con VRML. Por ejemplo, se puede utilizar VRML
para la visualizacin de los resultados de algn clculo, utilizando una biblioteca de funciones
cientficas, que realizan algn clculo especfico y que no requieren de un sistema de visualizacin
para su funcionamiento.
Para establecer la forma en la cual el escenario virtual interacta con el programa que describe el
comportamiento, se plantean tres modelos de comunicacin entre VRML y C++ (los cuales se
utilizan dependiendo de la funcionalidad que se desee dar a la aplicacin): el modelo de
comportamiento dependiente, el independiente y el dplex.
3.3.1. Modelo Dependiente
El modelo dependiente consiste en que el escenario VRML emplea a C++ como extensin de su
funcionalidad, realizando llamados a funciones definidas por C++. Esto significa que el programa de
comportamiento se comporta como esclavo del escenario. Empleando los conceptos de la
arquitectura cliente/servidor el programa C++, el cual se est ejecutando en la computadora remota,
ser un servidor de clculos y VRML ser su cliente.
Se le denomina dependiente porque el intercambio de informacin entre C++ y VRML depende de
las solicitudes que este ltimo realice.
En el escenario se genera un evento, el cual es enviado al script, el que lo procesa y enva una
solicitud al servidor de C++. ste realiza el llamado a algn mtodo o funcin C++ y enva el valor de
regreso al escenario VRML.
Este modelo est formado por las siguientes entidades (Figura 4):

figura 4. Modelo de comunicacin dependiente.


z

VRML
Representa al browser, ejecutando un programa VRML. Se encarga de la interfaz con el
usuario, generacin de eventos, etctera.
Script Java (Cliente)
Manipula los valores de los campos en los nodos del escenario VRML. Adems, se comunica
con el Script C++, empleando un Socket.
Script C++ (Servidor)
Atiende las peticiones del Script Java, realizando llamados a rutinas de la Aplicacin C++.
Aplicacin C++

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 10 de 15

Es el cdigo C++, que describe el comportamiento. Puede ser una aplicacin especfica para
el escenario virtual o alguna biblioteca de uso general.
En este modelo, el programa de comportamiento est dedicado a realizar los clculos que se
requieran en el escenario. Por ejemplo, en un juego de billar se enviar una solicitud desde el
escenario al programa C++, para que calcule la trayectoria de una bola cada vez que sta sea
golpeada (ya sea por el taco o por otra bola). En este caso el programa C++ no realiza otra tarea,
mas que atender las peticiones provenientes del escenario.
La principal ventaja que tiene este esquema es que el escenario se encuentra siempre actualizado.
Es ste el que lleva el control de los tiempos y los eventos. Tambin tiene la ventaja de ser ms
sencillo, pues es el esquema "natural" de VRML para asignar comportamiento: en el escenario
VRML se hacen llamados a funciones o mtodos escritos en lenguaje Java.
3.3.2. Modelo Independiente
Este modelo consiste en un programa que realiza una tarea determinada y enva datos al escenario
(para que ste actualice el estado de los objetos dentro de l) cada determinado tiempo, de acuerdo
a algunos criterios.
A diferencia del modelo dependiente, el programa de comportamiento no tiene que esperar que el
escenario virtual enve las peticiones de actualizacin necesarias. Por ejemplo, un programa C++
que monitorea el estado de un guante de RV, enva los valores del estado de ste al escenario, en el
momento en que stos cambian.
Este modelo est formado por cuatro entidades (Figura 5):

figura 5. Modelo de comunicacin independiente.


z
z

VRML
Script Java (Actuador)
Es el cdigo que implementa un hilo, el cual atiende las solicitudes de actualizacin
provenientes del Script C++. Este cdigo manipula los valores de los campos en los nodos del
escenario VRML.
Cliente C++ (Controlador)
Este cdigo tiene como formas de trabajo:
A. Semi-asincrona: El programa Script C++ enva, cada cierto tiempo, una solicitud de
actualizacin a la Aplicacin C++ para que sta le proporcione los valores necesarios para la
actualizacin del escenario.

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 11 de 15

B. Asincrona: La Aplicacin C++ enva los valores de actualizacin al escenario (a travs del
Script C++), el algn momento en el que tiene tiempo ocioso.

Aplicacin C++ Este esquema tiene la ventaja de que se pueden utilizar programas que
trabajan en forma independiente de VRML. Su elaboracin es ms compleja que en el caso
del esquema dependiente, ya que se requiere considerar otros aspectos complejos de
programacin, tales como programacin multihilos (o multiproceso en el caso de sistemas que
no tengan soporte de hilos).

3.3.3. Modelo Dplex


El modelo de comportamiento dplex es el ms completo y el ms complejo al mismo tiempo, ya que
es una mezcla de los dos modelos anteriores. Consiste en que tanto el escenario VRML, como el
programa C++ de comportamiento, envan y atienden peticiones de actualizacin y clculo (Figura
6).
Por ejemplo, en un juego de batalla area, VRML se encarga de la visualizacin de los aviones y de
la interfaz con el usuario (el control de los aviones), enviando mensajes al programa de
comportamiento para que realice los clculos de las trayectorias de sus balas o misiles.
Sin embargo, el programa C++ puede controlar los movimientos del adversario mediante un agente
que se encargue de ello, que responda a los movimientos del usuario. En este caso VRML enva los
mensajes del control del usuario y recibe las actualizaciones de las naves.
Este esquema tiene como principal ventaja la versatilidad para hacer interactuar a los objetos del
escenario VRML, con el programa de comportamiento. Esto aumenta las posibilidades para hacer
escenarios ms realistas y atractivos para los usuarios, pues brinda un elemento muy importante en
la Realidad Virtual: la interaccin.

figura 6. Modelo de comunicacin Dplex


4. Requisitos y restricciones del comportamiento en C++
La asignacin de comportamiento en C++ tiene algunas restricciones. La ms importante tiene que
ver con el mbito de los objetos (scope) y su tiempo de vida. Por ejemplo, existen objetos temporales
cuyo mbito es local a la funcin en la que fueron declarados. Si se vincula este objeto con un nodo

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 12 de 15

en el escenario, al terminar el mbito del objeto el vnculo creado quedar roto, creando con esto una
inconsistencia.
Para solventar este problema se deben vincular los nodos de VRML con objetos C++, cuyo mbito
sea global al programa o a la clase de la que se toma el comportamiento.
Las dems limitaciones del comportamiento en C++ las impone el esquema de comunicacin de
comportamiento remoto. En primer lugar, el equipo en el cual est ejecutndose el programa que
describe el comportamiento, debe soportar el uso de Sockets, ya que sin stos los esquemas y
modelos planteados no pueden funcionar.
Por otro lado, se debe configurar el browser con los permisos de acceso a red, ya que de otra forma
no se tienen los privilegios de acceso a ella desde el script. Esto puede evitarse empleando un
servidor de acceso a red (proxy), el cual est instalado en el mismo equipo del cual se descarga el
escenario y proporciona al escenario una forma segura de acceso a la red (Figura 7). Sin embargo,
esta solucin queda fuera de los alcances de este trabajo.

figura 7. Arquitectura del Servidor de Acceso a Red.


5.EasyVRML
EasyVRMLes un ambiente CASE, orientado a la generacin de mundos virtuales con
comportamiento complejo. Es una herramienta que da soporte en la etapa final del desarrollo de
mundos virtuales con comportamientos complejos, ya que permite llevar a cabo la asignacin de este
tipo de comportamientos descritos en Java y/o C++, a componentes de mundos virtuales creados
con VRML, todo ello a travs de un lenguaje visual basado en iconos. Adems, proporciona
mecanismos para soportar comportamientos complejos, locales y remotos, descritos en estos
lenguajes.
EasyVRML propone tambin un esquema genrico de comunicacin entre VRML y cualquier
lenguaje de programacin orientada a objetos. La versin actual considera slo a C++ y Java, pero
puede extenderse a otros. El esquema genrico de comunicacin incluye la especificacin de un
protocolo llamado PAC-R (Protocolo para Asignacin de Comportamiento Remoto), adems de los
modelos de sincronizacin entre VRML y el otro lenguaje.
Esta herramienta busca dar solucin a los problemas inherentes a la generacin de aplicaciones
basadas en VRML y C++, para la generacin de entornos virtuales con comportamientos complejos,
a saber:
z
z

La dificultad en el aprendizaje de los esquemas actuales, para agregar comportamiento


complejo descrito en Java u otros lenguajes de programacin, a objetos definidos en VRML,
La cantidad de tiempo que hay que invertir para el desarrollo de este tipo de aplicaciones.

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 13 de 15

EasyVRML busca mejorar la productividad del programador mediante la automatizacin de tareas,


como la generacin de cdigo y la reutilizacin de objetos y mdulos. Facilita el desarrollo de
entornos virtuales, cuyos componentes puedan integrar comportamiento complejo a travs de
herramientas de diseo ms intuitivas y representativas, como el Lenguaje Visual de Asignacin de
Comportamiento
6. Conclusiones y Trabajo Futuro
El esquema genrico de comunicacin, los modelos de sincronizacin y el PACR, pueden ser
utilizados como la base para lo siguiente:
z
z

Asignacin de comportamiento, utilizando cualquier lenguaje orientado a objetos.


La creacin de ambientes virtuales, distribuidos y/o colaborativos

Sin embargo, stos son solamente las bases de trabajos posteriores. En particular, los autores
trabajan actualmente en el primer apartado.
En cuanto al desarrollo de ambientes distribuidos, se considera la aplicacin de tecnologas que en
la actualidad ofrecen una capa de software de ms alto nivel, que el simple paso de mensajes a los
objetos distribuidos a travs de Sockets. Existen muchos ejemplos de estas tecnologas, como
implementaciones de CORBA (Common Object Request Broker Architecture) y RMI (Remote Method
Invocation), por mencionar algunas. La aplicacin de estas tecnologas para la asignacin de
comportamiento a componentes en escenarios VRML, generara una base ms robusta para la
generacin de VDE's (Virtual Distributed Environments), ambientes en los cuales los usuarios
(avatars) son objetos que se encuentran en cualquier sitio. Las ciudades virtuales estaran
conformadas por componentes distribuidos, proporcionados por empresas o por los usuarios de la
comunidad.
El empleo de CORBA, por ejemplo, permitir que el analizador de cdigo, descrito en el Captulo IV,
pudiese ser sustituido por un compilador de IDL (Interface Definition Language), con lo cual es
posible incorporar otros lenguajes para la definicin de comportamiento de una forma sencilla. De
esta forma se pueden utilizar objetos distribuidos, escritos en diferentes lenguajes, ejecutndose en
sus plataformas nativas.
Aplicaciones posibles son los laboratorios virtuales, en los cuales se pueden tener simulaciones de
aparatos sofisticados y caros para que los aprendices experimenten sin poner en riesgo los aparatos
reales. Por otro lado, se pueden tener sistemas de telecontrol, en los que se compartan recursos
escasos y caros, por ejemplo telescopios y robots.
El estndar VRML 2.0, segn la opinin de los autores, est llegando al lmite de sus capacidades,
ya que se necesita emplear alguna de las diferentes extensiones al lenguaje, cada vez que se quiere
escribir una aplicacin con l. En el mbito mundial, se estn dedicando esfuerzos para extender la
funcionalidad a un lenguaje que est llegando a su tope. Tales esfuerzos bien podran ser dedicados
a la generacin de un nuevo estndar del lenguaje.
Con el conocimiento de las necesidades actuales y las tendencias futuras, es posible crear la
especificacin de VRML 3.0. Dicha especificacin debiera considerar la tendencia hacia la creacin
de VDE's, creados a partir de componentes. De la misma forma, se deben considerar las tecnologas
de objetos actualmente disponibles (particularmente objetos distribuidos). Por ello el nuevo VRML
debe ser orientado a objetos, para soportar estas tecnologas y, ms an, dirigido a agentes
inteligentes capaces de habitar los VDE's y dar servicios a los usuarios de stos.
Con la incorporacin de este tipo de capacidades, los programas en VRML sern cada vez ms
poderosos, pero al mismo tiempo ms grandes y complejos. Por ello, el formato del archivo VRML
podra ser cambiado a un bytecode (quiz el bytecode de Java), para hacer ms eficiente el
intercambio de escenarios virtuales.

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 14 de 15

En resumen, existe una amplia gama de aplicaciones de la RV. Si sta es utilizada en conjunto con
otras tecnologas, los alcances de los sistemas de RV crecen de manera significativa, pero, al mismo
tiempo, se generan nuevos problemas y lneas de investigacin, que hacen que el panorama de
trabajo sea prometedor y amplio.

a) Tiene las restricciones que le inponga la plataforma en la cual se est ejecutando.


b) Protocolo de Asignacin de Comportamiento Remoto.

Bibliografa

1Adam J. A. (1993) Virtual Reality is for Real, IEEE Spectrum, 1(10).


2Armenta A. Antonio (1999) Asignacin de Comportamiento Complejo a Componentes de Mundos
Virtuales en Java, Tesis de Maestra, Centro de Investigacin en Computacin del Instituto
Politcnico Nacional.
3 Bayarri Salvador, Fernndez Marcos, & Prez Mariano (1996) Virtual Reality for Driving Simulation.
Communications of the ACM: Virtual Reality, 39 (5): 72-76.

4a , 4b Brutzman Don (1998) The Virtual Reality Modeling Language and Java, Communications of
the ACM: Java, 57-64.
5 Carey Rikk, Bell Gavin, & Marrin Chris (1997) ISO/IEC 14772-1 Virtual Reality Modeling Language
(VRML97), VRML Consortium Incorporated, URL: http://www.vrml.org/Specifications/VRML97

6 Fisher S. Scott & Fraser Glen (1996) The Virtual Brewery Adventure, ACM-SIGGRAPH: Computer
Graphics FOCUS: "Real" Virtual Reality SIGGRAPH '96 Slide Sets, 30 (4): 44-46.

7a , 7b Gauvin Daniel, Marchal Herv , Gauthier Roger, Rizand Jean-Franois, Delle D. Vince (1997)
LALO: Langage d'Agents Logiciel Objet. Centre de Recherse Informatique de Montreal, URL:
http://www.crim.ca/sbc/english/lalo/
8 Gigante M.A., Earnshaw R. A., & Jones H. (1993) Virtual Reality: Definitions, History and
Applications in Virtual Reality Systems. Academic Press Ltd - Harcourt Brace & Company.

9 Hartman Jed, Wernecke Josie (1996) The VRML 2.0 Handbook. Addison Wesley
10 Lavroft Nicholas (1992) Virtual Reality Playhouse: Explore Artificial Worlds on your PC. Waite
Group Press, ISBN 1-878739-19-0.

11 MageLang Institute (1999) Fundamentals of Java SecurityURL:

http://developer.java.sun.com/developer/onlineTraining/Security/Fundamentals/index.html

12 Sun Microsystems Inc. (1997) Java Native Interface Specification. URL:


http://java.sun.com/products/jdk/1.1/docs/guide/jni/spec/jniTOC.doc.html
13 Sun Microsystems Inc. (1999) The JavaTM Virtual Machine Specification.URL:
http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Asignacin de Comportamiento Complejo a Mundos Virtuales VRML Utilizando C++ Pgina 15 de 15

[ Ejemplar Actual ]

Direccin General de Servicios de Cmputo Acadmico-UNAM


Ciudad Universitaria, M xico D.F.

http://www.revista.unam.mx/vol.2/num2/art2/index.html

21/02/2003

Você também pode gostar