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.
sábado, 14 de febrero de 2009
Usando Structure Synth - Parte 3
Las primitivas de dibujo son los elementos básicos de los que disponemos para realizar cualquier representación gráfica, entre ella se encuentran los siguientes
box caja Solida
grid Caja de Alambre
sphere Esfera (este primitivo tiene algunos problemas, por ejemplo los elipsoides no están funcionando)
line a lo largo del eje x, centrado en y, y plano en el eje z.
point centrado en el sistema de coordenadas
triangle Crea un polígono personalizado. Especificar las coordenadas de la siguiente manera: Triángulo [0,0,0, 1,0,0; 0.5,0.5,0.5]
mesh Prototipo de Malla.
cylinder Cilindro el eje de simetría será el actual eje x. [No se ha aplicado]
tube Tubo [No se ha aplicado].
Mostradas en la siguiente figura
{ x 4 s 2 9 4 } box
{ z 2 } sphere
{ z 4 s 3} sphere
Usando Structure Synth - Parte 2
{ x 2} box
{ x 4} box
{ x 6} box
Ahora veremos un ejemplo sencillo para realizar el Eje de Coordenadas en el espacio
10 * { x 1} box // se repiten 10 cajas seguidas sobre el ejes de las x
10 * { y 1} box
10 * { z 1} box
Funciones de rotación de los elementos sobre los ejes.
rx [float]: Rotación alrededor del eje x. [float] esto especifica que debemos colocar un numero flotante para que se realice la rotación, este argumento es el ángulo especificado en grados. En la rotación los elementos giran al rededor del eje los grados que uno especifique.
ry [float]: Rotación alrededor del eje y. Como en el caso anterior.
rz [float]: Rotación alrededor del eje z. Como en el caso anterior.
Ahora veremos 2 Ejemplos practicos
1. Rotacion Normal sobre cualquiera de los ejes: esto quiere decir que los cubos rotan alrededor del eje determinado, en este caso el eje x como se ve en la siguiente figura.
7 * { x 1 rx 20} box
En este caso son siete cubos a una distancia de una unidad por la función de iteración que rotan 19 grados sobre el eje de las x cada uno.
2. Rotación de un eje con los cubos sobre el centro: Esto quiere decir que se empieza a rotar un eje sobre el primer cubo, y después se vuelve a rotar el eje sobre ese punto en el segundo cubo y así sucesivamente hasta terminar. Esto se refleja en la siguiente figura
box
19 * { x 1 ry 20} box
19 * { y 1 rz 20} box
19 * { z 1 rx 20} box
Publicado por VILURON, Nolberto Ismael
Empezando a Usar Structure Synth - Parte 1
Este es un ejemplo de estructura que podemos llegar a hacer con esta aplicación, todo ello a partir de una serie de reglas de tipo matemático-lógicas.De esta forma, este programa está perfectamente indicado para la generación de figuras geométricas complejas, como es el caso de los fractales.
x [float]: Esta instrucción representa la translación sobre el eje x. [float] nos quiere decir que acepta números flotante como ser 0,5, y también enteros como por ejemplo 2.
{ x 8} box
{ y 3} box
{ z 5} box
En donde la sentencia box nos representa una caja. Si esta no tiene ningún desplazamiento se graficara en el origen en cambio las otras tres están desplazadas sobre los ejes como se puede notar en la imagen.
Se debe aclarar que los desplazamientos siempre deben estar entre corchetes {} lo cual nos denota un bloque de ejecución esto es igual que en c++ debido a que gran parte de structure synth esta desarrollado en este lenguaje.
Publicado por VILURON, Nolberto Ismael
jueves, 12 de febrero de 2009
Que Es Structure Synth
Está construido en C + +, OpenGL, y Qt 4.3. Desarrollado en actualidad para Windows y Mac, también es posible compilarlo en Linux.
En la actualidad este proyecto se puede usar gratis ya es una aplicación Open Source , pero sigue siendo de calidad beta (aunque es bastante estable, pero no todas las características planeadas se han completado). El progreso y consideraciones de diseño se pueden observar en Syntopia blog.
Podemos crear estructuras magnificas con este programa el cual lo podemos descargar de la pagina oficial Structure Synth.
http://structuresynth.sourceforge.net/download.php
O aquí dejo un enlace de Megaupload para descargarlo directamente
http://www.megaupload.com/?d=YGAS1DDM












