sábado, 21 de febrero de 2009

Instalación de SunFlow

Requisitos

Java: Como Sunflow es un programa desarrolado en Java, necesitamos tener instalado Java para ejecutarlo. Se necesitara

Recomendaciones: Se conseguirá el mejor rendimiento con Java 6 y Servidor de VM.

Sunflow funcionará mucho más rápido con el servidor VM (Maquina Virtual). Este servidor es parte de la máquina virtual de Java, pero no esta incluido en el estándar (JRE) de instalación de Java. El servidor VM arranca más despacio y utiliza más memoria de la máquina virtual, pero corre mucho más rápido en muchos casos.
La forma más fácil de obtener el servidor VM es instalar el Java Development Kit (JDK).

Instalación: Después de descargar la versión binaria de Sunflow, sólo descomprimir el archivo en un directorio de su elección.
Antes de ejecutar Sunflow.jar es necesario pasar algunos parámetros a Java, con el fin de aumentar el rendimiento. Para lograr esto debemos crear un archivo por lotes o secuencia de comandos.

En Windows - Creación de un archivo por lotes para iniciar Sunflow

Asegúrese de saber donde está instalado el JDK. Por defecto, este será algo así como
c:\archivos_de_programas\java\jdk1.6.0

Ahora abrimos el Bloc de notas o el editor de texto de su elección y pegue el siguiente texto:

@set javadir="c:\program files\java\jdk1.6.0"
@set mem=1G
@%javadir%\bin\java -Xmx%mem% -server -jar sunflow.jar %*
@if %errorlevel% neq 0 pause

Seguro qué deberemos cambiar la parte que está con negrita, poner la ruta de la instalación de Java.

Explicación:

• La primera línea establece una variable con la ruta de acceso al directorio de instalación del JDK. Asegúrese de que no hay espacio al final de la línea, o antes de que el signo de igualdad.

• La segunda línea establece la cantidad máxima de memoria disponible para Sunflow. Sunflow utilizara mucha, este marca el limite superior. Java predeterminada para este valor el uso de 64 MB, lo cual no es suficiente para utilizar SunFlow, Podemos asignar valores como 512 MB, 1G, 2G todo depende de la memoria que tengamos en nuestra computadora. Sunflow mostrará una advertencia si se le dan menos de 800 MB.

• La tercera línea ejecuta los parámetros necesarios de Sunflow, así como cualquier parámetro adicional que se haya especificado en la línea de comandos.
Si realmente desea ejecutar Sunflow sin el servidor VM, es necesario eliminar el Server o sea el archivo de extensión .bat. Sunflow mostrará una advertencia si se inicia sin usar el servidor VM.

• La última línea de los controles nos da la opción y muestra un mensaje para pulsar cualquier tecla, si algo salió mal.

Guardar este archivo con el nombre sunflow.bat al directorio donde se descomprimido Sunflow.
Ya podemos empezar a utilizar Sunflow

Solución de problemas

Mensajes de error más comunes

The system cannot find the path specified. El camino de la instalación de Java es erróneo, compruebe de nuevo. Asegúrese de que no hay espacio después del signo de igualdad en esa línea de sunflow.bat

'......' is not recognized as an internal or external command, operable program or batch file. Hay probablemente un error en sunflow.bat o un espacio adicional al final de la línea donde se define el camino de instalación de java.

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.


Si obtiene un mensaje como este, la configuración de la memoria en sunflow.bat es demasiada alta.

Error: no `server' JVM at `c:\program files\java\jre1.6.0\bin\server\jvm.dll'. Este mensaje de error significa que el servidor VM no fue encontrada.
Esto generalmente significa que el camino que ha especificado no está apuntando a una instalación JDK, o que usted no ha instalado el servidor VM.
Compruebe de nuevo el camino, asegúrese de que ha instalado el JDK, o si realmente desea ejecutar el servidor sin VM, eliminar el Server de parámetro sunflow.bat

Que Es SunFlow





Sunflow es un sistema de renderización de código abierto para la foto-síntesis de imágenes realistas. Está escrito en Java y construido alrededor de un núcleo flexible de trazado de rayos y una extensible de diseño orientado a objetos.

Podemos descargar el programa Original de la página oficial Sun Flow.

http://sunflow.sourceforge.net/index.php?pg=down


Pantalla de Structure Synth


Al ejecutar StructureSynth.exe nos saldrá la siguiente pantalla



La Pantalla Principal Presenta los Siguientes Elementos:

  1. Cuadro de Comandos: Aquí encontramos varios botones o comandos como ser

File: Desde donde podemos guarda, abrir nuestro proyecto y cerrar la aplicación.

Edit: Desde aquí podemos cortar, copiar y pegar a nuestra pantalla.

Render: Funciones de Renderizado.

Examples: Ejemplos que tiene cargado el Programa.

Help: Ayuda o preguntas frecuentes de cómo usar Structure.

  1. EisenScript Code: Así se denomina al código que utilizamos para crear las estructuras .Es aquí donde debemos escribir el Código EisenScript, es donde creamos nuestra figura.

  1. Salida del Grafico: Por aquí tendremos los resultados visibles de la creación de nuestra estructura 3D. Siempre debemos hacer click sobre el boton Reset View que se encuentra en el comando general, para ejecutar el código escrito. Aquí podemos girar nuestra estructura 360º respecto de todos los ejes.

  1. Cuadro de Dialogo: Esta pantalla es por donde el programa se comunica con nosotros, el cual nos puede avisar si hemos cometido un error de sintaxis o si hemos agregado un carácter de manera incorrecta. Nos muestra los errores cometidos al escribir el codigo EisenScript.

lunes, 16 de febrero de 2009

Ejemplos de Figuras en Structure Synth

Aqui dejo un par de Ejemplo de Codigo EisenScript en Structure Synth y su salida por pantalla.
EisenScript asi se llama el codigo que es utilizado por Structure Synth para crear los objetos.

set maxdepth 8

R1

rule R1 {

{ rx 0 } R2

{ x 1.5 y 1.5 z 1.5 s 0.5 } R1

{ x 1.5 y 1.5 z -0.5 s 0.5} R1

{ x -0.5 y 1.5 z 1.5 s 0.5} R1

{ x -0.5 y 1.5 z -0.5 s 0.5} R1

}

rule R2 {

{ x 0 y 1 z 0 s 0.25 2.25 0.25 } box // top

{ x 0 y 0 z 1 s 0.25 0.25 2.25 } box // top

{ x 0 y 1 z 2 s 0.25 2.25 0.25 } box // top

{ x 0 y 2 z 1 s 0.25 0.25 2.25 } box // top

{ x 1 y 0 z 0 s 2.25 0.25 0.25 } box //vertical

{ x 1 y 2 z 0 s 2.25 0.25 0.25 } box //vertical

{ x 1 y 2 z 2 s 2.25 0.25 0.25 } box //vertical

{ x 1 y 0 z 2 s 2.25 0.25 0.25 } box //vertical

{ x 2 y 1 z 0 s 0.25 2.25 0.25 } box // bottom

{ x 2 y 0 z 1 s 0.25 0.25 2.25 } box // bottom

{ x 2 y 1 z 2 s 0.25 2.25 0.25 } box // bottom

{ x 2 y 2 z 1 s 0.25 0.25 2.25 } box // bottom

}


set maxdepth 100

r1
36 * { x -2 ry 25 } r1
rule r1 maxdepth 10 {
2 * { y -1 } 3 * { rz 15 x 1 b 0.9 h -20 } r2
{ y 1 h 12 a 0.9 rx 36 } r1
}
rule r2 {
{ s 0.9 0.1 1.1 hue 10 } box // a comment
}
rule r2 w 2 {
{ hue 113 sat 10 a 23 s 0.1 0.9 1.1 } box
}


set maxdepth 15

branch

rule branch {
{ y 1 x -0.5 s 0.707 rz 45 ry -90 } branch
{ y 1 x 0.5 s 0.707 rz -45 ry -90 } branch
box
}


Acciones

Bueno ahora veremos algunas acciones que se le pueden aplicar a las reglas (rule)

Criterios de terminación
set maxdepth [integer]: El parámetro [integer] delimita la cantidad de iteraciones o un criterio de paro. Esto servirá también como un límite superior de recursión para todas las reglas.
set maxobjects [integer]: El parámetro [integer] delimita el número de objetos dibujados en la pantalla para todas las reglas.

Otros Criterios para aplicar a la pantalla

set seed [integer]: Esto hace posible reproducir creaciones.

set background [color]: Permite configurar el color de fondo. En [color] va el color que le queremos aplicar al fondo de la pantalla. Los colores son especificados como cadenas de texto, usando el estándar HTML, pero también podemos asignar el color poniendo el nombres como por ejemplo, red o green o lightgoldenrodyellow). Tabla de colores HTML.

Modificadores de Reglas

md / maxdepth [integer]: Establece el máximo de recursion de la regla. La regla no ejecutará ninguna acción después del límite establecido en [integer] ha alcanzado.

w / weight [float]: Si hay varias reglas que se definen con el mismo nombre, como las reglas (rule) son elegidas al azar, con el parametro especificado en [float] se define la prioridad de la regla. Si no se especifica la prioridad, el valor por defecto es de 1.

Ahora veremos el ejemplo de un tubo en donde se define una regla con el mismo nombre.

Codigo

set maxobjects 52200 // se define el maximo numero de objetos para todas las reglas

set maxdepth 5000 // se define el maximo de recursion para todas las reglas

set background #2f2f4f // se define el color de fondo de la pantalla



{ b 0.9 color #0a0 sat 0.5 } r1 //se define la variable r1 con sus parametros

rule r1 w 10 // se define r1 como rule y se le da prioridad 10 sobre las otras

{

{ rz 15 h 1 s 1.01 0.99 1 y 1 h 4 } r1 //se estable otra regla de r1

r2 // se llama la regla r2

}

rule r1

{

{ rx 10 s 0.99 1.01 1 z 1 s 0.99 } r1 //se estable otra regla de r1

r2 // se llama la regla r2

}

rule r2 {

box // caja

{ s 1.1 0.2 0.2 color #000 } box // se le dan parametro y color a la caja

grid // caja de alambre

}


Con este codigo se da origen a la siguiente imagen



Publicado por VILURON, Nolberto Ismael.

domingo, 15 de febrero de 2009

Rule (reglas), Para que sirve y Como se aplica

Como objetivo principal debemos definir rule (en español regla) y para que sirve .

Las Reglas o Rule nos sirve para la creación de estructuras complejas y sofisticadas. Los rules se definen a través de una variable y pueden ser usado para cualquiera de las Primitivas de Dibujo. El aspecto más importante de los rules, es que son capaces de llamarse a sí mismas.

Esto quiere decir es que son recurrentes osea se repiten n veces, por lo que deben tener una condición de paro. Sin embargo Structure Synth tiene por defecto 1000 recurrencias máximas.

Bueno ahora veremos en una porción de código como se implementa un rule y como es su gráfica

R1 // se crea la variable R1
rule R1  // R1 es de tipo rule, es la regla a cumplir 
{
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1 // se asigna a R1 la función especifica, se define R1
{ s 2} sphere // se le aplica una primitiva de dibujo a la regla 
}

Los corchetes me delimitan el bloque de ejecución de la regla y los // es un comentario que no forma parte del codigo

La salida de esta porción de código sera como un espiral. Ahora crearemos algo menos estático agregando algo de aleatoriedad.
Código

R1

rule R1 {
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}

rule R1 {
{ x 0.9 rz -6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}


La Salida sera la siguiente



Esto se logra mediante la creación de múltiples definiciones de la misma regla. En este código la regla R1 tiene dos definiciones o funciones. Ahora, cuando el constructor de Structure Synth tiene que llamar a rule R1, se elige una de las definiciones al azar. Por eso es que se obtiene ese resultado.

Publicado por VILURON, Nolberto Ismael

Darle color a las Primitivas y armar una figura

Esta vez empezaremos por el ejemplo y a partir de este explicare que es y qué hace cada componente.

Código

{ x 7 s 2 color #5F9F9F alpha 0.8 } box
4 * { x 1 hue 215 } 4 * { y 1 sat 0,8} 4 * { z 1 b 0,9} box


Resultado



Al primer box solamente lo moví siete lugares y redimensiones 2 veces mas que su valor original.
Bueno para armar el cubo grande aplicamos la función de iteración sobre los tres ejes a un box y nos queda esta matriz de cubos. Bueno ahora las instrucciones nuevas son hue, sat, b, color y alpha. Las cuales nos producen transformaciones de color sobre los objetos.
h / hue [float]: Este cambia la matiz del elemento. En [float] se coloca el valor de la tonalidad para cambiar el color, las matices se miden de 0 a 360 la cual tiene una propiedad cíclica es decir, un tono de 400 es igual a un tono de 40.
sat [float]: Establece la saturación de color. En [float] se coloca el valor de la saturación que solamente tiene un rango de 0 a 1 ( los valores más grandes que 1 se establece en 1).

b / brightness [float]: Da brillo al elemento. El Brillo se mide en un intervalo de 0 a 1 .
color [color]: Este comando establece el color de un elemento. En [color] va el color que le queremos aplicar. Los colores son especificados como cadenas de texto, usando el estándar HTML, pero también podemos asignar el color poniendo el nombres como por ejemplo, red o green o lightgoldenrodyellow). Tabla de colores HTML.

a / alpha [float]: Este comando nos muestra la trasparencia de un elemento se mide en un intervalo de 0 a 1 . Un valor alpha de cero es totalmente transparente, y un valor alpha de uno es completamente opaca.
Publicado por VILURON, Nolberto Ismael