XSIforum.com
Foros 3D => Autodesk Softimage => Mensaje iniciado por: povmaniaco en 06 Agosto 2010, 15:11:16
-
Siguiendo en mi plan de aprender C++ y de paso profundizar en XSISDK me he metido de lleno a crear un exportador para Yafaray. Como un "summer of code" un poco particular...
El exportador hereda todo lo bueno y mas, de mi proyecto anterior con PovRay, pero es bastante mas complejo y avanzado. Solo el menu, ya tiene la mitad de codigo que todo PovXSI., y aun no esta acabado.
Como podeis ver, sigo empeñado en tener varias opciones de renderizadores para XSI Mod Tool.
Os dejo los enlaces para quien quiera echarle un ojo al proyecto.
Video en vimeo.. (http://www.vimeo.com/13726205)
El post en el foro de Yafaray.
Yafaray Forum.. (http://www.yafaray.org/community/forum/viewtopic.php?f=16&t=3460)
-
Tiene buena pinta! ánimo ;)
-
Buena pinta, sí señor. Bravo por la iniciativa
-
Si el menu me parecio complicado... No hablemos de la complejidad de crear los shaders!!
Pero animo que ya casi los tengo!
Me planteaba dos opciones; o "traducir" los de XSI a Yafaray o, crearlos nuevos.
De momento he creado los 5 tipos de "shaders" que usa Yafaray; shinydiffusemat, glossy, coated_glossy, glass y roughglass. En la imagen, shinydiffusemat casi acabado, a falta refinar y comprobar algunos parametros.
Subo tambien una imagen de los primeros renders con texturas de imagen.
Saludos...
-
Trabajando en los shaders de XSI, se ne plantea una duda...
He oido (leido) que el sistema de shaders con archivos .spdl ha cambiado en las ultimas versiones. No he tenido aun acceso a las versiones mas alla de la 2010 SP1,y solo durante 30 dias ( mi mala conexion no me permite bajarme files de 1 GB y pico).
Mi pregunta seria.... ¿ hasta que punto son compatibles los shaders antiguos con las nuevas versiones?
¿Estoy "perdiendo" el tiempo en crear mis shaders para YafXSI basados en .spdl's?
Aprovecho la ocasion para subir algunas imagenes del trabajo que estoy realizando.
-
Bua.. como pasa el tiempo. Pense que este hilo estaria cerrado por falta de actividad.
El proyecto YafXSI, sigue en pie, aunque pausado. Buscando ayuda en el canal IRC de YafaRay, he acabado, colaborando en el nuevo exportador para la version 2.5 de Blender. Asi, que he aparcado un tiempo el C++, y ando peleandome con la sintaxis de Python. :)
Saludos...
-
Vuelta al C++.. Después de un tiempo solo con Python y Blender, estamos otra vez dando caña al exportador.
Un par de cambios...
-Creo que el proyecto va a cambiar de "plugin" a "addon" y, si todo va bien, de exportador a renderizador integrado en Softimage.
Las últimas pruebas, con la versión 2011, me han dado muy buenas expectativas.
-El nombre del proyecto... Creo que seria mas descriptivo, llamarlo YafaRay Renderer ... for Softimage? XSI es historia, buena, pera pasada
Saludos...
-
Dos pequeños avances...
-Background texture
- Primeras pruebas de renderizado directo, sin exportar archivo a disco...
http://dl.dropbox.com/u/16848591/into_xsi.swf (http://dl.dropbox.com/u/16848591/into_xsi.swf)
-
Animo y sigue así!
-
Chicos.. esto empieza a tener muy buena pinta!
http://dl.dropbox.com/u/16848591/yafaray_dyn.swf (http://dl.dropbox.com/u/16848591/yafaray_dyn.swf)
Saludos..
-
El ultimo video no muestra ningun render. ???
-
Pequeños avances en el exportador, esta vez, en la direccion del uso de la interfaz QT de YafaRay. Opcion "obligada" al usar Softimage Mod Tool, ya que esta version, no nos deja acceder al "render manager" para añadir renderizadores externos, integrados plenamente.
Restriccion, que no existe, obviamente, en las versiones comerciales.
Os dejo el link a un pequeño video en Vimeo.
Saludos..
YafaRay QT interface (http://www.vimeo.com/22014426)
-
Mola!!! O0
-
Estoy ultimando los detalles, para publicar la primera version beta de YafaRay for Softimage. Espero tener algo a punto a principios de la semana que viene o mediados.
No hace falta decir, que cuento con vuestras criticas, lista de errores, cosas que le faltan.. y demas. :)
Saludos....
-
Ya esta disponible el codigo fuente de YafaRay for Softimage.
https://github.com/povmaniaco/YafaRayforXSI (https://github.com/povmaniaco/YafaRayforXSI)
La primera version para probar.. tan pronto tenga el paquete "addon" a punto, que sera en breve.
Mientras, un nuevo aunque pequeño video en vimeo, con pruebas de materiales..
YafaRay for Softimage; preview materials (http://www.vimeo.com/23574502)
Saludos...
-
Y finalmente, YafaRay Exporter addon for Autodesk Softimage beta 0.1 para win32 bits, ha sido publicado. Podéis leer el anuncio, en la pagina de YafaRay http://www.yafaray.org (http://www.yafaray.org) y descargarlo en la sección de descargas.. http://www.yafaray.org/download (http://www.yafaray.org/download)
Ahi encontrareis también los link a la wiki de Github (https://github.com/povmaniaco/YafaRayforXSI/wiki/Install-addon), con instrucciones para su instalación y configuracion.
Estaré encantado de recibir criticas, opiniones o sugerencias sobre el exportador.
Saludos...
-
Enhorabuena por el trabajo :)
-
Gracias!! Ha sido un duro trabajo de casi un año, pero ha merecido la pena, por todo lo aprendido. Pero, esto no ha hecho mas que empezar...
Saludos.
-
Ufff!! Enhorabuena, vaya currada que debe haber sido. A ver si actualizo el Softi alguna vez (sigo con la 7) y lo pruebo.
Muchas gracias
-
Gracias SUBFRAME. Si es la 7.01 creo que puede funcionar. He utilizado el XSISDK de la 7.5 en un 99%, y mi base de trabajo ha sido Softimage Mod Tool 7.5.
Saludos..
-
A ver si tengo un hueco y lo pruebo.
Un abrazo
-
Tengo el placer de anunciarles, que ya esta disponible, la version beta 0.2 de YafaRay for Autodesk Softimage.
Con bastantes mejoras, entre ellas..
- 'Preview Materials' para un control mas preciso del material, antes de lanzar el render(wip).
-Para visualizar el material, basta con cambiarle el nombre a 'Preview' y hacer clip en el boton 'Preview materials'
- Opcion para exportar el material en formato .xml de YafaRay.
- Arreglado el error al cargar o crear nuevas escenas.
- Añadida opcion en UI de cargar archivos .xml de YafaRay para renderizarlos.
Nuevos 'nodos' añadidos:
- yaf_light_mat; para crear objetos emisores (meshlight) con solo aplicar este material al objeto.
- yaf_IES_light; para crear luces con ficheros tipo IES.
- Este nodo, es aplicable solo a luces tipo 'spot' ( de momento..).
- yaf_bgportal_light; para crear objetos tipo PortalLight.
- yaf_image; nodo para texturas tipo 'image file'.
- Use este nodo, para crear texturas basadas en imagenes, el nodo 'image' de Softimage, no trabaja correctamente con YafaRay.
- yaf_angular_cam; añade el tipo de camara 'angular'
Y muchas mejoras más..
Pueden descargar YafaRay for Autodesk Softimage de la pagina de YafaRay; http://www.yafaray.org/download1
O de la pagina Github, donde tambien encontraran los ficheros fuente del exportador; http://github.com/povmaniaco/YafaRayforXSI
Tambien pueden seguir la evolucion del exportador, el este thread del foro de YafaRay..
http://www.yafaray.org/community/for...hp?f=16&t=3460
Atencion!!
Para usar el exportador con versiones 2010, 2011 y 2012 de Softimage, deben sustituir las librerias Qt4 ( e.g. .. /Softimage/2010/Application/bin)
Qt4gui.dll, Qt4core.dll, Qt4xml.dll y Qt4Opengl.dll, (version 4.5.1) por las del exportador (version 4.7.3).
P D: El exportador funciona con la version gratuita Autodesk Softimage Mod Tool 7.5
Un saludo y felices renders...
-
Bueno.. Aprovechando estos dias estoy de vacaciones...( y que acabo de descubrir lo util que es Dropbox..:), os dejo unas imagenes con los ultimos avances de YafaRay for Softimage.
Blend material
(http://dl.dropbox.com/u/16848591/yaf_wiki/blend_text2.png)
(http://dl.dropbox.com/u/16848591/yaf_wiki/blend_text1.png)
YafaRay DoF Camera ( Lens shader)
(http://dl.dropbox.com/u/16848591/yaf_wiki/yaf_dof_cam1.png)
(http://dl.dropbox.com/u/16848591/yaf_wiki/yaf_dof_cam2.png)
Primeros pasos para exportar volumetricas
(http://dl.dropbox.com/u/16848591/yaf_wiki/yaf_volumetrics.png)
Cualquiera diria, que estoy de vacaciones..:)
Saludos... y buenas fiestas!
-
Pare celebrar que hoy, hace dos años, que me regalaron el primer libro de C++ voy a compartir.. algo de Python. :)
Hay poca informacion sobre el API de YafaRay. Fue una de las cosas que más encontre a faltar, cuando empece a programar el exportador.
Los desarrolladores, ( los pocos que hay) suelen estar más ocupados en crear, que en documentar y eso hace, que a pesar de ser 'open-source', no hayan muchos datos sobre el codigo.
Solo una pequeña 'interface-demo' en C++, que se distribuia con el 'source', en la version 0.1.1 y, que se ha dejado de hacer, en la version 0.1.2 beta.
Lo que comparto aqui, es la version para Python, de esa 'interface-demo'.
Está en una fase muuy Alpha ( la he hecho en dos tardes..) y le faltan muchas cosas, pero como base, es suficiente.
Si alguien esta interesado, o la encuentra util, estare por aqui :)
En proximos dias, quiero publicar tambien, la version para C++...
Saludos..
# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
# <pep8 compliant>
import sys
import os
import ctypes
import math
from math import degrees, pi, sin, cos
#
PLUGIN_PATH ="h:/minipython/bin/plugins"
BIN_PATH="h:/minipython/bin"
sys.path.append(BIN_PATH)
# Preload needed libraries
# if used the Megasoft78 compilations, Qt interface its not supported
povman = True
mega = False
if sys.platform == 'win32':
if povman:
dllArray = ['zlib1', 'yafaraycore', 'yafarayplugin', 'yafarayqt']
else:
dllArray = ['zlib1', 'libxml2-2', 'libgcc_s_sjlj-1', 'Half', 'Iex', 'IlmThread', 'IlmImf', \
'libjpeg-8', 'libpng14', 'libtiff-3', 'libfreetype-6', 'libyafaraycore', 'libyafarayplugin']
elif sys.platform == 'darwin':
dllArray = ['libyafaraycore.dylib', 'libyafarayplugin.dylib']
else:
dllArray = ['libyafaraycore.so', 'libyafarayplugin.so']
for dll in dllArray:
try:
ctypes.cdll.LoadLibrary(os.path.join(BIN_PATH, dll))
except Exception as e:
print("ERROR: Failed to load library " + dll + ", " + repr(e))
import yafrayinterface
## load interface and plugins
yi = yafrayinterface.yafrayInterface_t()
yi.loadPlugins(PLUGIN_PATH)
##------------
yi.startScene()
##--- texture --------------------
yi.paramsClearAll()
texName ="rgb_cube1"
yi.paramsSetString("type", "rgb_cube")
yi.createTexture(texName)
##--- material -----------------------------
yi.paramsClearAll()
yi.paramsSetString("type", "shinydiffusemat")
yi.paramsPushList()
yi.paramsSetString("type", "texture_mapper")
yi.paramsSetString("name", "rgbcube_mapper")
yi.paramsSetString("texco", "uv")
yi.paramsSetString("texture", texName )
yi.paramsEndList();
yi.paramsSetString("diffuse_shader", "rgbcube_mapper")
mat = yi.createMaterial("myMat")
##----- lights ------------------------------
yi.paramsClearAll()
yi.paramsSetString("type", "directional")
yi.paramsSetPoint("direction", -0.3, -0.3, 0.8 )
yi.paramsSetColor("color", 1.0, 1.0, 0.9 )
yi.paramsSetFloat("power", 1.0 )
yi.createLight("myDirectional")
#
yi.paramsClearAll()
yi.paramsSetColor("color", 1, 1, 1, 1)
yi.paramsSetPoint("from", 11, 3, 8)
yi.paramsSetFloat("power", 160)
yi.paramsSetString("type", "pointlight")
yi.createLight("LAMP1")
##-------------------------------------
def makeSphere( nu, nv, x, y, z, rad, mat):
# get next free id from interface
ID = yi.getNextFreeID()
yi.startGeometry()
if not yi.startTriMesh(ID, 2 + (nu - 1) * nv, 2 * (nu - 1) * nv, False, False):
yi.printError("Couldn't start trimesh!")
yi.addVertex(x, y, z + rad)
yi.addVertex(x, y, z - rad)
for v in range(0, nv):
t = v / float(nv)
sin_v = sin(2.0 * pi * t)
cos_v = cos(2.0 * pi * t)
for u in range(1, nu):
s = u / float(nu)
sin_u = sin(pi * s)
cos_u = cos(pi * s)
yi.addVertex(x + cos_v * sin_u * rad, y + sin_v * sin_u * rad, z + cos_u * rad)
for v in range(0, nv):
yi.addTriangle(0, 2 + v * (nu - 1), 2 + ((v + 1) % nv) * (nu - 1), mat)
yi.addTriangle(1, ((v + 1) % nv) * (nu - 1) + nu, v * (nu - 1) + nu, mat)
for u in range(0, nu - 2):
yi.addTriangle(2 + v * (nu - 1) + u, 2 + v * (nu - 1) + u + 1, 2 + ((v + 1) % nv) * (nu - 1) + u, mat)
yi.addTriangle(2 + v * (nu - 1) + u + 1, 2 + ((v + 1) % nv) * (nu - 1) + u + 1, 2 + ((v + 1) % nv) * (nu - 1) + u, mat)
yi.endTriMesh()
yi.endGeometry()
return ID
##----- create mesh --------------------------
nu=24
nv = 48
x=0
y=0
z=0
rad= .5
ID = makeSphere(nu, nv, x, y, z, rad, mat)
##--- create cam ---------------------------
yi.paramsClearAll()
yi.paramsSetString("type", "perspective")
yi.paramsSetPoint("from", -1.5,-2.0,1.7 )
yi.paramsSetPoint("to", 0,0,0.2 )
yi.paramsSetPoint("up", -1.5,-2.0,2.7 )
yi.paramsSetInt("resx", 640)
yi.paramsSetInt("resy", 480)
yi.paramsSetFloat("focal", 1.4)
yi.createCamera("camera")
##---- background --------------------------
yi.paramsClearAll()
yi.paramsSetString("type", "constant")
yi.paramsSetColor("color", 0.4, 0.5, 0.9 )
yi.createBackground("world_background")
##--- integrator ---------------------------
yi.paramsClearAll()
yi.paramsSetString("type", "directlighting")
yi.createIntegrator("myDL")
##--- volume integrator --------------------
yi.paramsClearAll()
yi.paramsSetString("type", "none")
yi.createIntegrator("volintegr")
##----- output -----------------------------
yi.paramsClearAll()
file_type = 'png'
yi.paramsSetString("type", file_type)
yi.paramsSetBool("alpha_channel", False)
yi.paramsSetBool("z_channel", False)
yi.paramsSetInt("width", 640)
yi.paramsSetInt("height", 480)
ih = yi.createImageHandler("outFile")
output = yafrayinterface.imageOutput_t(ih, 'h:/minipython/test.png', 0, 0)
##---- camera ---------------------------------------
yi.paramsClearAll()
yi.paramsSetString("camera_name", "camera")
yi.paramsSetString("integrator_name", "myDL")
yi.paramsSetString("volintegrator_name", "volintegr")
yi.paramsSetInt("AA_minsamples", 4)
yi.paramsSetFloat("AA_pixelwidth", 1.5)
yi.paramsSetString("filter_type", "mitchell")
yi.paramsSetInt("width", 640)
yi.paramsSetInt("height", 480)
yi.paramsSetString("background_name", "world_background")
##---- QT interface ------------------------------------------
use_gui=True
if mega:
use_gui = False
#
if use_gui:
import yafqt
yafqt.initGui()
guiSettings = yafqt.Settings()
guiSettings.autoSave = False
guiSettings.closeAfterFinish = False
guiSettings.mem = None
guiSettings.fileName = 'test.png'
guiSettings.autoSaveAlpha = False
#
yafqt.createRenderWidget(yi, 640, 480, 0, 0, guiSettings)
else:
yi.render(output)
yi.clearAll()
del yi
-
muchas gracias pov :D no entiendo de que va todo esto pero seguro que es bueno para mas de uno :DD
-
Muy interesante.
-
muchas gracias pov :D no entiendo de que va todo esto pero seguro que es bueno para mas de uno :DD
Basicamente, el Api es la puerta de enlace de una aplicacion..
He actualizado el codigo, y he subido un pequeño video a Vimeo.
( sin sonido :) Si no hablo, al proximo intentare ponerle musica, al menos)
http://vimeo.com/36886356 (http://vimeo.com/36886356)
Muy interesante.
Gracias!!