jueves, 29 de octubre de 2009

OGRE 3D

OGRE

Framework completo 3D.
Licencia LGPL (o sea, tu juego no requiere ser GPL).
Tienen una demo muy buena donde muestran cada una de las capacidades del motor.

Que es Ogre?

Ogre (Object Oriented Graphics Engine) es un motor de gráficos en tres dimensiones multiplataforma. La principal ventaja de Ogre sobre otros engines 3D es que es un proyecto open source bajo licencia LGPL. Esto significa que su uso es gratuito y solo existen unas pocas exigencias para su uso.

Ogre está diseñado desde el principio con la idea de la orientación a objetos, por lo que su interfaz es clara, intuitiva y fácil de usar






Mayor información sobre Ogre se puede encontrar en http://www.ogre3d.org/.













FRAMEWORK DE JAVA

CARACTERISTICAS DE JAVA
Las características principales que nos ofrece Java respecto a cualquier otro lenguaje de programación, son:
Es SIMPLE:

Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil aprendizaje.

Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles como el garbage collector (reciclador de memoria dinámica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentación de la memoria.

Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++ al eliminar muchas de las características de éstos, entre las que destacan:
aritmética de punteros
no existen referencias
registros (struct)
definición de tipos (typedef)
macros (#define)
necesidad de liberar memoria (free)

Conceptos básicos de programación 3d en WPF







Durante muchos años el escribir programas que generasen modelos en 3D estaba limitado a aquellas personas que supieran tecnologías como OpenGL o DirectX y lenguajes no siempre muy sencillos de usar como C++. En WPF se inicia un nuevo panorama en la programación de modelos tridimensionales de que con relativa facilidad es posible crear modelos en 3D utilizando clases predefinidas que trae el .NET Framework desde luego pudiendo ser uso de los lenguajes de programación como C# y VB o o bien utilizando el XAML.

El sistema de gráficos de tercera dimensión de Windows Presentation Foundation se encuentra completamente integrado al sistema de graficos 2D y todos los elementos y primitivas visuales que son válidos en el entorno 2D también serán válidos en el trabajo en tercera dimensión, por ejemplo sabemos que para generar un gradiente utilizamos el elemento . De la misma manera podemos utilizar la misma técnica para generar una textura que tiene cualquier objeto generado en tercera dimensión con el mismo método sin necesidad de aprender algo nuevo.

Esto representa una gran ventaja para los desarrolladores toda vez que no es necesario aprender un lenguaje diferente u objetos distintos para manejo de gráficos de tercera dimensión si no que es posible reutilizar todo el conocimiento adquirido con el dibujo 2D y simplemente aprender a algunos conceptos nuevos propios del modelo de 3D.


Generando un objeto 3D con WPF

1) El elemento ViewPort3D nos brinda la capacidad de dibujar una escena tridimensional en una superficie de dos dimensiones.

Este elemento expone la colección Children que es una colección de objetos ModelVisual3D dentro de los cuales implementaremos nuestras escenas tridimensionales. El código requerido es el siguiente

2) Dentro del elemento ModelVisual3D podemos especificar cualquier dibujo que deseemos. Sin embargo a diferencia de los gráficos en dos dimensiones donde existen primitivas predefinidas para dibujar objetos como elipses o rectángulos, en el mundo de 3D únicamente contamos con una clase denominada MeshGeometry3D en la cual es posible especificar un conjunto de vértices de triángulos mediante la propiedad Positions. Esto se debe a que cualquier dibujo tridimensional es posible describirlo con triángulos. Recordemos lo que sucede en los juegos de video: cuando hacemos un acercamiento fuerte alguna escena tridimensional podemos apreciar que las puntas y contornos de los objetos se tornan triangulares, esto se debe a que muchos objetos de los videojuegos, al igual que en WPF, son conjuntos de triángulos, que mediante su composición dan la sensación de un objeto tridimensional.

Regresando a nuestro ejemplo una vez que hemos definido nuestra superficie de dibujo procederemos a utilizar la propiedad ModelVisual3D.Content para dentro de la misma especificar un MeshGeometry3D, en este caso con las posiciones establecidas estaremos generando un cuadrado

4) Dentro del mundo de tercera dimensión los objetos cambian de apariencia desde el punto de vista de quien observa al objeto. En WPF especificamos este punto de vista haciendo uso de los objetos que heredan de ProjectionCamera.

Controlamos a nuestras cámaras como si en verdad la cámara estuviera posicionada en el espacio, la propiedad Position es del tipo Point3D y especifica las coordenadas en la cual se encuentra la cámara.

TAO Framework

Tao Framework inició como proyecto separado que buscaba crear recubrimientos (bindings) deMono/Net para distintas librerías multimedia. Poco a poco, las personas encargadas de estos proyectos decidieron unir esfuerzos y reunir todo el trabajo en un solo proyecto. Actualmente Tao Framework hace parte oficial del Proyecto Mono.


Caracteristicas

  • Software Libre. No podía ser de otra manera. Tao está disponible bajo la licencia MitX11, la cual es bastante flexible tanto para desarrolladores de software libre, como para desarrolladores de software propietario.
  • Portabilidad a nivel binario. Gracias a que Tao se basa en Mono es portable a nivel binario (la misma librería .dll sirve en todos los casos) a todas las plataformas soportadas por Mono.
  • Independencia del Lenguaje. Al ser Tao Framework compilado en un Lenguaje Intermedio, puede ser usado por cualquier lenguaje soportado por Mono/Net



Framework Capaware! – Plataforma de desarrollo 3D Geográfico





Capaware! es un framework de desarrollo de entornos 3D geográficos multicapa. La potencia de poder realizar aplicativos directamente sobre un terreno 3d abre un amplio abanico de aplicaciones a Capaware!. Nada mejor para hacerse una composición de lugar del escenario de trabajo que poder visualizarlo en tres dimensiones.


Capaware! permite la visualización de grandes extensiones de terrenos ya que usa en todo momento la mínima cantidad de información necesaria para mostrar la porción de territorio observada. Aquellas partes que no son visibles no se procesan, por lo que las cargas al procesador son las minimas necesarias en todo momento.


Capaware! permite conectarse a servidores externos con protocolos OGC para obtener datos de para su propio uso. Asímismo podemos configurar y administrar las capas de recursos y elementos que se pueden representar sobre el terreno.


Las aplicaciones de Capaware! son bastantes y muy variadas. Poder visualizar, sobre el terreno y en 3D un objeto, permite un mejor análisis, comprensión, aprendizaje, valoración y estimación de enorme valor. Las lineas mas importantes podrían ser las que siguen:


omunicación: Obtención de gran cantidad de datos de información precisa sobre un territorio particular.



  • Turismo

  • Planificación Urbanística

  • Proyectos de Obra Civil

  • Televisión

  • Sector Inmobiliario

  • Paseos campestres y escaladas




  • Análisis: Posibilidad de visualizar una representación fotográfica de un territorio en 3D con la consiguiente mejora en la evaluación final.

    • Administración de terrenos

    • Protección civil

    • Proyectos de ingeniería civil

    • Estrategia Militar





  • Simulación: Visualización de modelos 3D en el contexto del territorio, así como la obtención de resultados de simulaciones matemáticas sobre elementos del terreno.

    • Ingeniería

    • Planificación urbanística

    • Medio ambiente

    • Infraestructura viaria

    • Gestión de catástrofes

    • Recreación de fenómenos atmosféricos




  • Educación: Inmersión virtual en las zonas geográficas analizadas.

    • Geografía e Historia

    • Ecología

    • Geomrofología

    • Aviación y control aérero

    • Vigilancia forestal

    • Guíado turístico




  • Navegación: Localización y control de vehículos terrestres y aéreos mediante GPS.

    • Sistemas de navegaqción portátiles

    • Centros de control de flotas

    • Planificación estratégica militar







Qué es un framework Web?

Qué es un framework Web?.


con el término framework, nos estamos refiriendo a una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación.
Los objetivos principales que persigue un framework son: acelerar el proceso de desarrollo, reutilizar código ya existente y promover buenas prácticas de desarrollo como el uso de patrones.

¿Cuál es el sentido de un framework?

Sabemos por experiencia lo importante que es la normalización de datos en cualquier aplicación. Los usuarios pueden manejar su información en papel, fichas, en su propia memoria, tenerla duplicada, con incoherencias, omisiones, … ¡Todo un infierno! Pero una aplicación informática necesita que esa información esté estructurada de un modo conocido para poder manejarla: almacenarla, recuperarla, y todos los "-arla" que se requieran. Para eso definimos modelos de datos con una determinada estructura (que habitualmente se convierten en tablas de una base de datos).
También es posible que el framework defina una estructura para una aplicación completa, o bien sólo se centre en un aspecto de ella. Siguiendo con los ejemplos, Ruby on Rails ofrece un marco para el desarrollo completo de una aplicación web, mientras que JavaServer Faces está más orientado a la interfaz de usuario.
¿Qué ventajas tiene utilizar un 'framework'?
Las que se derivan de utilizar un estándar; entre otras:
El programador no necesita plantearse una estructura global de la aplicación, sino que el framework le proporciona un esqueleto que hay que "rellenar".
Facilita la colaboración. Cualquiera que haya tenido que "pelearse" con el código fuente de otro programador (¡o incluso con el propio, pasado algún tiempo!) sabrá lo difícil que es entenderlo y modificarlo; por tanto, todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los desarrollos colaborativos.
Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.
¿Y si no necesito o no quiero utilizar un 'framework'?
Por supuesto, un desarrollador puede crear toda una aplicación sin seguir ningún framework conocido; puede que sea tan pequeña que no lo considere necesario, que no conozca ninguno que se adapte a sus necesidades, o simplemente no desee dedicar tiempo a seleccionar y utilizar uno.
La utilización de un framework en el desarrollo de una aplicación implica un cierto coste inicial de aprendizaje, aunque a largo plazo es probable que facilite tanto el desarrollo como el mantenimiento.
Existen multitud de frameworks orientados a diferentes lenguajes, funcionalidades, etc. Aunque la elección de uno de ellos puede ser una tarea complicada, lo más probable que a largo plazo sólo los mejor definidos (o más utilizados, que no siempre coinciden con los primeros) permanezcan. Y si ninguno de ellos se adapta a las necesidades de desarrollo, siempre es mejor definir uno propio que desarrollar "al por mayor".