sábado, 21 de febrero de 2009
Instalación de SunFlow
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:
- 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.
- 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.
- 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.
- 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
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
}
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
- 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 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
domingo, 15 de febrero de 2009
Rule (reglas), Para que sirve y Como se aplica
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 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
}

Darle color a las Primitivas y armar una figura
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.
- 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.
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.






