Lenguaje SCL e Integración con HTML (Web).
Mariano Tejedor Moreno
Para editar código SCL desde el World Editor seleccionaremos SCL -> Edit. El código se ejecuta desde el visualizador Viscape por lo que debemos probar nuestro código sobre este. Podemos referenciar a los objetos de tres formas:
En el ejemplo de la Figura1 podemos ver las tres formas de referirnos a los objetos. |
La instrucción SCL togvis hace a un objeto visible o invisible, cada vez que esta es ejecutada, pero necesita conocer a que objeto afecta, y debemos pasarle esta información.
Este tipo de información que es dada a la función, es conocido como argumento, y debe estar encerrado entre paréntesis inmediatamente después de la función. El argumento de la instrucción togvis en estos tres casos es un objeto:
Una línea de instrucción completa y sus argumentos (si los hay) es conocida como statement o sentencia, y siempre deberá acabar en punto y coma (;). Por ejemplo: togvis (me);
Esta función cambia la visibilidad del objeto me, desde visible a invisible (o desde invisible a visible). El programa entonces finaliza porque no hay más sentencias y el mundo es redibujado, mostrando el efecto del programa.
Cualquiera que haya entrado en la página web oficial de 3D Webmaster (http://vwww.com), habrá podido comprobar la interacción con algunos de los objetos dentro de un mundo virtual, pinchando con el ratón sobre uno de ellos. Por ello para detectar la activación necesitamos usar la instrucción activate, la cual retorna un resultado de acuerdo con la pregunta: ¿El usuario ha pinchado con el ratón sobre el objeto dado (objetoXXX)?. La función activate tiene dos argumentos:
Podemos como en el ejemplo comprobar el resultado de activate usando la instrucción if, que ejecuta la siguiente sentencia si el resultado es verdadero. Un programa SCL no restringe su ámbito, por lo que desde un trozo de código SCL dentro de un objeto podemos referenciar otros objetos e incluso variables de otros objetos, por ejemplo: togvis(‘OtroObjeto’); ‘OtroObjeto’.variable1++; En ocasiones y dependiendo de la forma de programar de cada uno, en un objeto se introduce todo el código que controla el mundo virtual, es decir, el main, y en otros objeto el código que afecte a este en particular o a sus descendientes; este objeto se suele hacer invisible o suele ser un grupo los cuales no se muestran en el proceso de dibujado pero están "vivos" y ejecutándose igual que los demás. NOTA: Es muy útil consultar el manual de referencia para saber los prototipos de las funciones, los argumentos que reciben y la funcionalidad o acciones que realizan, pues aquí vamos a repasar brevemente el SCL ya que necesitaríamos varios cursos para explicar su uso. Para acceder debemos desde el World Editor pinchar en el menú Help ->Reference Books… |
SUBDIVISION DE EJECUCION DE CODIGO EN FRAMES
ESTRUCTURAS CONDICIONALES
![]() |
Para controlar el flujo de los programas en cualquier lenguaje de programación necesitamos un conjunto de estructuras condicionales Figura4. SCL soporta las mismas que el lenguaje ‘C’. A continuación se muestra un ejemplo de uso de cada una de ellas. |
OPERADORES DE COMPARACION
![]() |
![]() |
TIPOS DE ARGUMENTOS
|
NOTA: Desde la librería Warehouse se pueden añadir al mundo virtual objetos de muy diferentes tipos, en ocasiones muchos de ellos realizan una acción. Al arrastrar estos objetos, el editor nos muestra una caja de diálogo llamada Propiedades (Properties) en la que podemos introducir ciertos valores. Esto automáticamente genera código SCL para ese objeto y en concreto la acción a realizar, digamos que el código está predefinido y solamente cambiamos sus parámetros. Ver Figura8. |
INTEGRACION DE MUNDOS VIRTUALES EN EL NAVEGADOR (HTML-WEB)
Una vez que hemos terminado el desarrollo del mundo virtual en 3D, podemos publicarlo en nuestra página web de varias formas, añadiendo simplemente los enlaces o URL’s para saltar a otra página web en 2D o algún otro mundo virtual mediante SCL, o mediante la opción Link del World Editor.
Podemos visualizar nuestro entorno tridimensional en pantalla completa dentro del navegador o integrado en un página web con código HTML.
muy importante: deberá estar instalado en ambos casos el plug-in o conector Viscape para el navegador que usemos ya sea IExplorer 3.xx o Netscape 3.xx o superiores.
Recuadro6
VISUALIZACION DE UN MUNDO VIRTUAL
La forma más simple para visualizar un mundo en cualquiera de los navegadores es usar HTML para enlazar directamente al fichero que hayamos creado, por lo que solamente se muestra el mundo dentro del navegador. Esto nos permite ver nuestro entorno 3D en pantalla completa o "full screen". Veamos como se hace tanto para IExplorer como para Netscape. <HTML> Pincha aquí para cargar el <A HREF="mimundo.svr">mundo</A> </HTML> |
|
Otra de las formas para visualizar los mundos es a través de los frames o marcos de los navegadores. En el siguiente ejemplo creamos dos frames. El frame de la izquierda (llamado texto), ocupa un 40% de la ventana del navegador, contiene el fichero texto.htm (que es una sencilla página web), y en el frame derecho (llamado mundo), que ocupa un 60% contiene el fichero mimundo.svr (que es el mundo virtual)
<HTML> <FRAMESET COLS="40%, 60%"> <FRAME SRC="texto.htm" NAME="texto"> <FRAME SRC="mimundo.svr" NAME="mundo"> </FRAMESET> </HTML> |
|
Finalmente la forma más indicada para mostrar los mundos virtuales a través del navegador es integrandolos en la página. Para hacerlo, necesitamos usar las etiquetas OBJECT para IExplorer y EMBED para Netscape. Veámoslo en el ejemplo:
<HTML> <OBJECT CLASSID="clsid:1B487523-BEC2-11CF-BF9E-0020AF998FF5" WIDTH="320" HEIGHT="240" ID="IEmundo"> <PARAM NAME="Mundo" VALUE="mimundo.svr"> </OBJECT> <EMBED SRC="mimundo.svr" WIDTH="320" HEIGHT="240" NAME="Nmundo"> </HTML> |
|
CLASSID debe ser siempre el mismo, es el identificador unico de la clase para VISCAPE. Este ejemplo funcionaría para los dos navegadores, puesto que mientras IExplorer entiende la claúsula OBJECT e ignora la claúsula EMBED, Netscape ignora OBJECT y entiende EMBED.
CREACION DE ENLACES DESDE EL MUNDO VIRTUAL
Hay dos formas de crear enlaces "links" a otras páginas web o a otros mundos:
Mediante la cual añadimos un texto que especifica el enlace, indicándole automáticamente todos los parámetros (aunque se puede crear directamente, es preferible usar esta opción) creándonos un atributo de texto "t" que especifica la información.
Desde el World Editor seleccionaremos en el menú Object-> Link. Esta opción mostrará una caja de diálogo como se muestra en la Figura12 con tres parámetros que se detallan a continuación:
|
|
Los posibles valores para este parámetro son:
Como hemos indicado esta opción añade realmente un atributo de texto. Para editar el texto desde el menú del World Editor Object ->Text ->Text…
|
|
Esta instrucción hace lo mismo que el método anterior, pero los parámetros son pasados como argumentos a la función, veamos el prototípo de esta función: int linkto (char *<URL>, char *<target frame>, int <reserved>); En la Figura15 hemos introducido código SCL a un objeto y como argumento le hemos dado un enlace ficticio. Los valores para "target frame" son los mismos que en el apartado anterior para Target. El argumento "reserved" debe ser siempre 0. Para más información consultar el "Reference Books". |
|
Figura16
|
Figura17
|
CONSEJO: Cuando un objeto contiene código SCL y además atributo de enlace, se procesará siempre antes de todo el código SCL, por lo que debemos tenerlo en cuenta, y optar por una de las dos formas.
TRUCO: Es importante, para los que queréis aprender más SCL que os bajéis de la red (download) mundos virtuales y editéis el código que viene con ellos, es muy interesante.
TRUCO: En ocasiones os encontrareis mundos virtuales protegidos, que no se pueden editar. Si queréis hacer lo mismo proteger vuestros mundos contra curiosos o piratas, podéis hacerlo desde el menú del World Editor File-> SetPassword.
CONSEJO: El código SCL se puede
tracear ("debugger") de tal manera que podemos ejecutar paso a paso
cada instrucción de cada objeto y ver lo que hacen en tiempo real desde
el World Editor SCL-> Debug Options. Recordad que siempre se ha
de probar desde el Viscape.
Figura18
|
Figura19
|
Figura20
|