La plataforma Realidad Empoderada permitirá poner en contexto social a sus usuarios por medio de la simulación de la praxis social solidaria. A medida que vamos desarrollando y dando forma a cada una de las partes que formarán parte del sistema, nos damos cuenta de que se va convirtiendo en una plataforma de simulación de comportamientos.
¿Qué implica esto?
Como ya hemos desarrollado en otros post, cada indigente virtual posee asociada una máquina virtual. Es decir, una estructura que permite procesar en forma ordenada y predeterminada determinados datos y aplicar métodos y procesos para interactuar con el resto del sistema virtual y con el usuario. Esta máquina virtual, es equivalente a poseer una pequeña microcomputadora que simula y procesa diferentes aspectos del v-indigente (indigente virtual) en forma autónoma, gobernando su comportamiento, simulando funciones fisiológicas y movimientos. A su vez, esta máquina virtual puede compilar y ejecutar estos procesos definibles por medio de un lenguaje de alto nivel que permite el procesamiento paralelo de procesos definibles desde fuera de la plataforma. Permitiendo esto, que un experto modele funciones fisiológicas y comportamientos específicos para cada v-indigente o grupo de v-indigentes. Esto independiza la plataforma, de la programación y modelación de las funciones mencionadas anteriormente.
La plataforma desarrollada en Unity 3D que contendrá al mundo virtual será la parte dura del sistema realizado por expertos en programación y, por otro lado, los especialistas de cada rama específica podrán determinar el entramado de los comportamientos en forma independiente y sin tener que necesitar de intermediar con un programador o tener que lidiar con la programación “dura” de la plataforma. Es como si, por un lado, tuviéramos la maqueta con las marionetas y por otro los titiriteros. De todas maneras, esta no deja de ser una metáfora alusiva, ya que en realidad los v-indigentes no se comportarán como titerés sino como mecanismos autónomos programables.
Por otro lado, el contexto geográfico ya tiene sus funciones propias que permiten configurar y contextualizar la geografía para su creación automática por medio de los algoritmos, no requiriéndose de esta manera una edición manual.
Una nueva etapa nos pone en movimiento
En esta nueva etapa ya hemos podido interrelacionar los comportamientos con los movimientos. De esta manera, la programación permite vincular una estructura compleja de comportamiento con un mecanismo virtual de control de movimientos. Es decir, dadas determinadas simulaciones y comportamientos por medio de condicionamientos predeterminados el avatar del v-indigente recreará los movimientos físicos predefinidos para la situación. Si bien Unity 3D posee herramientas para programar movimientos comandados por máquinas virtuales, estas no compilan en runtime ni permiten la libertad de programación si lo facilita nuestro entorno desarrollado. Si bien el lenguaje para la definición de comportamientos y funciones fisiológicas puede ser un poco acotado, será posible desarrollar lenguajes de alto nivel que directamente por medio de expresiones específicas generar estructuras complejas de comportamiento en forma amigable y sencilla para el especialista.
Los módulos de control de movimientos permiten ejecutar diferentes animaciones al mismo tiempo en un mismo avatar (cuerpo virtual), como así también hacer que diferentes movimientos se ejecuten en forma secuencial.
En la actualidad estamos haciendo algunos ensayos muy simples. A continuación podremos ver un código desarrollado para ser ejecutado por la máquina virtual de un avatar (v-indigente). El lenguaje permite crear autómatas y procesos de funciones por bloques.

Veamos un ejemplo:
GroupSystem: Sensores //Crea un grupo de sistemas a simular
SimulatedSystem: Meet //Sistema a simular de nombre Meet
//Declara que se definirá un autómata llamado Testeo. Su función será activar la bandera MeetDador que indicará que un acompañante se ha aproximado
AUTOMATA: Testeo
Clock: 100
//Define el estado Meet1 del autómata
State Meet1
Asincronic
ThisisinitialState+
OUT false MeetDador
//Transición al estado Meet2 si un dador se acerca a una distancia preestablecida
Trans MeetDadorEnter==true Meet2
End;
//Define el estado Meet2 del automata
State Meet2
Asincronic
//Se active la bandera MeetDador indicando que el acompañante se aproxima
OUT true MeetDador
//Vuelve al estado inicial Meet1 si el acompañante se aleja de la distancia predeterminada
Trans MeetDadorExit==true Meet1
End;
EndAutomata;
EndSimulatedSystem;
EndGroupSystem;
GroupSystem: Movimientos //Crea otro grupo de sistemas a simular
SimulatedSystem: EjemploMovimiento
Process: Movimiento
Clock: 100
//Define el bloque Jota que ejecuta la función matemática: J= 1 –bandera de aproximación del acompañante. De esta manera cuando el acompañante está alejado J vale 1 y 0 cuando está próximo
Block Jota
Sincronic
Function 1.0f-MeetDador.Testeo.Meet.Sensores J
End;
//Define el bloque Movi que ejecuta un movimiento del avatar con los brazos alzados pidiendo socorro mientras J valga 1 y en posición de descanso cuando J vale 0
Block Movi
Sincronic
MovementBool(J,H) W
End;
EndProcess;
EndSimulatedSystem;
EndGroupSystem;
En este ejemplo se ha mezclado lógica booleana con números flotantes. La máquina virtual permite procesar números binarios, con enteros y con flotantes en una misma expresión. Por ejemplo, en la función: 1.0f-MeetDador.Testeo.Meet.Sensores , la variable Global MeetDador es un booleano y a los fines de ser computado en una resta con el flotante 1.0f es valorizado automáticamente como 1.0f cuando es verdadero (binario 1) y 0.0f cuando es falso(binario 0). De esta manera esta sustracción es equivalente a la negación lógica. Dicha variable determina si el movimiento se ejecuta o no.
Sé el primero en comentar