Friday, December 17, 2010

Houdini Ocean Toolkit


Here's a build for Houdini 11.0.581 (x86_64-gcc4.1) / Linux 64 -> link
Code, examples and more info @ http://odforce.net/wiki/index.php/HoudiniOceanToolkit

I have the compiled dso to be used with 3delight but I haven't tested more so I'll upload it when I'm sure it is working :)

updates & more

Well, has been a busy month even when we@pandaka didn't wanted it to be. First, we finished some shots for another movie (Viento en Contra). After that we tried to install fedora 14 as base system but it's waay more tricky to set up and after trying CentOS 5.5, RHEL 5.5, Ubuntu 10.10 as well, we ended up with OpenSuSE 10.3 :)

Maybe the wacom intuos 4 and the pressure thing in Nuke, Maya and Mari was the most urgent part. Sadly, Qt and those programs mentioned above are stuck with older (read: supported) distros which still use xorg.conf as a way to know there's a wacom plugged in the workstation. Anyway, after compiling the driver and setting up xinitrc everything was working as expected (pressure in Maya has been easy to set up).

Well, while everything gets fixed on the developers side, it was important to start the next year with a clean and fresh install. That's important for me because on my previous system I had gcc412 compiled, then some plugins for maya with wrong include files (read: maya can load the plugin but will crash). My intention is to keep a space with custom compiled libraries and small applications but with proper files (yeahh.. cortex, here I come!).

As a sidenote, if you're trying to compile gcc4.x and get errors on the second pass (specifically using the maya documentation for linux compiler) about fastjar not finding makeinfo even when there's makeinfo installed on the system, take a look again on the requirements, then if everything is in place but the makeinfo problem persist, take a look at the Makefile (in gcc-build). Look for the string "Makeinfo=". The segment looks like this:

# Flags to pass to stage2 and later makes. They are defined
# here so that they can be overridden by Makefile fragments.
BOOT_CFLAGS= -g -O2

BISON = bison
YACC = bison -y
FLEX = flex
LEX = flex
M4 = m4
MAKEINFO = makeinfo
EXPECT = expect
RUNTEST = runtest


Well, make sure "MAKEINFO=" is set to "makeinfo". I had the name of the sources directory and "missing" on the end. After fixing that one line everything was built without errors.

I started checking the files after reading this: http://www.linuxquestions.org/questions/linux-software-2/building-gcc-4-1-x-how-to-fix-688209/

Well, that's it. Now back to selecting stuff for the demo reel :D


Wednesday, December 8, 2010

Thursday, December 2, 2010

STP


Last night, this concert was the most intense concert I have ever been. Ever. The guys are in great! There was pot, beer, people pushing, singing, fighting, crowdsurfing, sweating... amazing show.

Tuesday, November 2, 2010

Dia de Muertos


Unas catrinas en... el lugar al lado de la torre Latinoamericana. Tampoco recuerdo el nombre. A ver si en la semana me doy una vuelta y leo las plaquitas que luego ponen en edificios históricos, museos y cosas asi.


Esta foto es de una dulceria en la calle 5 de Mayo, en el centro histórico del DF. No recuerdo el nombre.

Thursday, October 14, 2010

3delight 9.0.69 / Maya 2011

3delight 9.0.69 with support for maya 2011 is available now. here: http://www.3delight.com/en/index.php/step_1

Here's the changelog: http://www.3delight.com/en/modules/dokuwiki/doku.php?id=3delight_changelog

Saturday, October 9, 2010

Thursday, September 30, 2010

KISS

esta noche es la noche...

Tuesday, September 14, 2010

Jupiter Jazz Tools

Ya vieron lo que viene de Jupiter?

http://www.jupiter-jazz.com/products


ParticlePorn sounds catchy ;)

Friday, August 20, 2010

co shaders

After some weeks of hard work, the monkeys @ pandaka are finally wrapping up sequences for delivery! ^_^

Since more projects are starting now, it's time to update&test&deploy||deprecate some stuff around. And since more pieces are being added, it was a nice opportunity to start with co shaders:

// class based shader calling a co-shader
class simple_layer(
float displacement_weight = 1;
string displacement_map = "";

shader co_shader_dummy1 = null;
shader co_shader_dummy2 = null;

)
{
// displacement method
public void displacement (output point P; output normal N)
{
if (displacement_map != "" && displacement_weight != 0)
{
float _disp = displacement_weight * float texture (displacement_map, s, t);
P += _disp * normalize (N);
N = calculatenormal (P);
}
}


normal Nn = normalize(N);
vector V = normalize(-I);
// surface method
public void surface (output color Ci, Oi)
{

uniform float i = 0;

shader co_shader_ [] = getshaders ();
for (i = 0; i < 1 ="=">diffuse(Nn, P);
}

if (co_shader_ [i] != null && 1 == hasmethod (co_shader_ [i], "occlusion"))
{
occlusion variable *= co_shader_ [i]->occlusion(Nn, P);
}
// more inputs here...
}

Oi = Os;
Ci = composite stuff
Ci *= Oi;
}
}

So, it's a modular way to connect stuff... you already know how they work but this is great if you think in the possibilities within maya or any other high end application ;) And I'm fresh to classes and the idea of clean, organized and reusable pieces of code in a single shader is just exciting (not like my all-in-one+patches shader)...

edit: I hate the lack of code tags.

Wednesday, August 11, 2010

ChiaroScuro

ChiaroScuro is a complete Global Illumination framework solution for 3Delight for Maya featuring both Point-Based and Ray-Tracing techniques.


Friday, August 6, 2010

Wednesday, July 28, 2010

cortex-5.6.0

You probably know cortex http://code.google.com/p/cortex-vfx/

I remember I read something about it a few weeks ago, but I wasn't really aware of what could I do with it (since I'm not a python/c++ guy). Well, today I was reading a bit more and suddenly I feel like I need to understand that stuff.

After downloading the code and adding a few more devel packages (or adding the existing ones to the path) I finally got the stuff compiled.

Now, after loading the plugin, I try to do the examples but seems like either those examples are old or the cortex code isn't ready for the changes in maya 2011. I feel a bit like when I tried to use liquid a few years ago (yes, *years*).

So, if you happen to understand a bit more on IECoreMaya and its examples, I'd be interested in some help :)

Monday, July 26, 2010

dnPtcViewerNode - Maya2011 Linux

Usando el codigo de Lorenzo, aqui el plugin compilado para Maya 2011 Linux x64:



Plugin para visualizar point clouds en Maya: http://dneg.github.com/dnPtcViewerNode/ por double negative.

Aqui con algunos ajustes para compilarlo con 3delight : http://www.lorenzoangeli.net/index.php?mod=read&id=1255391088

En este thread se habla un poco del proceso: http://www.3delight.com/en/modules/PunBB/viewtopic.php?id=1709&p=1

Sunday, July 25, 2010

MayaMan 3.0.00

MayaMan translates your Maya scene into RenderMan RIB format, and your materials into RenderMan shaders. To read more about MayaMan, go to:


Included in this release is a mayaman build for maya 2011 on linux64 as well as a maya 2010 build for win32 and linux64.
Download it and read the release notes for more info... the list is huge.

Friday, July 16, 2010

Python 4 Kids

Es hora de retomar Python gracias a un link que encontre por alli. Ya lo habia intentado antes (para comprimir exr de mental ray), pero nada serio...

http://python4kids.wordpress.com/

Tuesday, July 13, 2010

Sitex AIR 10.0 Released

July 2010 - SiTex Graphics Celebrates 10 years with AIR 10
  • 64-bit Linux Support
  • Unlimited Threading
  • Stereo Rendering
  • Spectral Colors
  • Physical Light Sources
  • User-defined Structures in the Shading Language
  • Outline Export as Vectors
  • And more...


Wednesday, June 16, 2010

AtomKraft

Soy gran fan del trabajo que ha hecho /*jupiter jazz*/ con 3delight. Y hoy estan integrando un elemento mas: Nuke.

Un flujo mas o menos normal de trabajo consiste en hacer bake de occlusion o difuso y asignarlos a geometria exportada de maya como fbx en nuke y renderear directo al compuesto (usando scanline render).

Con AtomKraft es posible eliminar la parte de baking a texturas porque estaria rendereandose con 3delight directamente al compuesto dentro de nuke!


Friday, June 11, 2010

free VFX tracking markers!!

No tracking markers makes little bunny sad.


HOw many times have you heard about bad tracking markers in a shot? Or maybe non tracking markers at all? These shots can be hard to track and solve :(

Well, this may be of your interest:







Now you can place points just where you need them! Download the image, cut along the dotted line and paste the markers in the zones where your favourite application can see it!








IF that's not enough fun for you, you can download the cat pawns pattern for your tracking markers! Cut'em, Paint'em and Paste'em where you need'em! No more sad tracking applications trying to find where the fuc*k the points are! It's super effective!






^_^









supes may have a different opinion tho :p

SOuP!


Check this out http://petershipkov.com/development/SOuP/SOuP.htm (thanks to Peter Shipkov).

"SOuP is a set of plug-ins that extend the procedural (and other) capabilities of Maya.
As you probably know Maya needs more (sophisticated) "live" data generators and modifiers that operate on components lists, objects groups and point attributes. This imposes a lot of limitations when doing more involving things like complex effects, advanced characters and actually quite often geometry manipulations."

Monday, May 17, 2010

Tuesday, April 27, 2010

de linear a srgb & viceversa

Contrario a otros espacios de color basados en RGB, el sRGB no puede expresarse con un valor numerico absoluto (gamma=1.0 en secciones cercanas al negro y otro valor en otras zonas).

Basicamente es entender esto: http://renderwonk.com/blog/index.php/archive/adventures-with-gamma-correct-rendering/ que es lo mismo que e
sto otro: http://www.harrybardak.co.uk/sRGB.htm e implementar una solucion en 3delight. mental ray for maya incluye lens shaders y un nodo en las opciones de render para convertir el espacio de color de los mapas que se usan.

Pero antes de hablar de mapas, hablemos de la iluminacion. Comunmente, las luces que utilizamos no tienen decay porque nunca funciona correctamente. El problema no esta en las luces, sino en la interpretacion que tenemos del resultado. Lo que obtenemos por defa
ult es una salida en espacio de color lineal (linear colorspace). Esto no es incorrecto, pero aun falta commpensar la salida, es decir, convertir el resultado al espacio de color que tenemos en el display (monitor, con pc un gamma de 2.2).

En el primer link lo manejan como 1+1=3.
Pero si a ese resultado lo desplegamos como sRGB, veremos los resultados "correctamente". En 3delight, eso se hace a traves del i-display.

Una vez que hacemos esto, lo que veremos sera una imagen lineal
pero en el espacio de color correcto.


Tenemos esta imagen. A la izquierda es la salida sin modificar nada en el display. A la derecha, ya tenemos lo que necesitamos ver.

Ahora, veamos el caso en un ejemplo mas claro:


En este punto solo hemos modificado el display a gamma 2.2.

Pero que pasa con un mapa de color? generalmente vamos a tener mapas de color de 8 bits. Estos se pintaron en photoshop o en bodypaint o zbrush. Se encuentran en espacio sRGB, asi que si los inclumos en nuestros renders con el i-display gamma=2.2, vamos a encontrar la textura "deslavada" (mezcla de espacios de color).

Una solucion es modificar el gamma de las imagenes a 0.4545, pero 8 bits no son suficientes para ajustar los valores oscuros y esto crearia banding en los renders. Si usamos tdlmake para optimizar las imagenes, podemos especificar el espacio de color (tdlmake -colorspace srgb in.tif out.tdl), pero podemos tambien solucionarlo por shading.

Para esto, necesitamos crear un par de funciones:
//decode from sRGB luma to linear light
float sRGB_f(float f)
{
float lin;
if(f <= 0.04045)
lin = f / 12.92;
else
lin = pow ((f + 0.055) / 1.055, 2.4);

return lin;
}

color sRGB(color c)
{
color d;

d[0] = sRGB_f (c[0]);
d[1] = sRGB_f (c[1]);
d[2] = sRGB_f (c[2]);
return d;
}

Con esto tenemos "linearizada" la entrada de color, pero como lo integramos al shading?. Si por ejemplo tenemos este shader (txtplastic.sl en 3delight/shaders/src):
/* Copyrighted Pixar 1989 */
/* From the RenderMan Companion p.374 */
/* Listing 16.29 Plastic surface shader using a texture map*/

/*
* txtplastic(): version of plastic() shader using an optional texture map
*/

surface txtplastic(
float Ks = .5,
Kd = .5,
Ka = 1,
roughness = .1;
color specularcolor = 1;
string mapname = "")
{
point Nf = faceforward(normalize(N), I );

if( mapname != "" )
Ci = color texture( mapname );/* Use s and t */
else
Ci = Cs;

Oi = Os;
Ci = Os * ( Ci *
(Ka*ambient() + Kd*diffuse(Nf))
+ specularcolor * Ks * specular(Nf, normalize( -I ), roughness) );
}

Solo necesitamos incluir las funciones y llamar sRGB (color c) justo antes de asignar Oi:

/* Copyrighted Pixar 1989 */
/* From the RenderMan Companion p.374 */
/* Listing 16.29 Plastic surface shader using a texture map*/

/*
* txtplastic(): version of plastic() shader using an optional texture map
*/
//decode from sRGB luma to linear light
float sRGB_f(float f)
{
float lin;
if(f <= 0.04045)
lin = f / 12.92;
else
lin = pow ((f + 0.055) / 1.055, 2.4);
return lin;
}

color sRGB(color c)
{
color d;
d[0] = sRGB_f (c[0]);
d[1] = sRGB_f (c[1]);
d[2] = sRGB_f (c[2]);
return d;
}

surface txtplastic(
float Ks = .5,
Kd = .5,
Ka = 1,
roughness = .1;
color specularcolor = 1;
string mapname = "")
{
point Nf = faceforward(normalize(N), I );

if( mapname != "" )
Ci = sRGB (color texture( mapname ));/* Use s and t */
else
Ci = Cs;

Oi = Os;
Ci = Os * ( Ci *
(Ka*ambient() + Kd*diffuse(Nf))
+ specularcolor * Ks * specular(Nf, normalize( -I ), roughness) );
}

Asi, con el ejemplo de las calaveras, podemos ver la diferencia entre visualizar linear color space y su version en sRGB.


Finalmente, la ventaja de usar una funcion a nivel de shading es q ue s i usamos AOVs, la salida de color no se altera, por lo que si se esta trabajando c o mpuesto en, digamos Nuke, al momento de cargar las imagenes podemos ver if icar el espacio de color. Por default, el viewer es sRGB, las imagenes de 8 bi ts s on sRGB y de 32 bits son linear. L a s de 16 bits son sRGB, pero lo podemos modificar en el nodo del Read.

Como lo simplifica SeB en el foro de 3delight:
"If I understand it well he did a gamma correct of 2.2 and use a gamma of .455 for textures color to fix the wash out".



Monday, April 26, 2010

Thai Thing

I was about to make Yakimeshi for lunch, but then I found a can of coconut milk (leite de coco) that was lost in the back of the paper bags compartment. So I decided to switch what was in the wok (broccoli, chauchas, etc) and added the coconut milk instead of rice and soy.

A pinch of curry powder, a pinch of salt, a pinch of garlic and more curry powder. Then some garam masala (home made ;) ) and black pepper.

Well, in teh end everything was just right. The steamed rice was a bit cold because It wasn't supposed to be served like that but didn't feel too cold either. The sriracha sauce was in charge of that anyway :)

Want to join for the next taithing zupu?

more cg related stuff soon.

Thursday, February 18, 2010

Nuevo tutorial @ deathfall.com

rendermanCode nodes -> http://www.deathfall.com/forums/showthread.php?t=5079

Thursday, January 21, 2010

Leido en Insurgentes y Yucatan

No confies
en una mujer que hable como hombre
un hombre que hable como niño
un indio barbón
un gachupin lampiño

Friday, January 8, 2010

subsurface scattering usando point clouds

Actualizando algunas cosas retome finalmente la parte de scatter. Ya funciona bien backscatter, completamente basado en misss_* de jupiter_jazz, pero con algunas modificaciones. Me faltaba integrar point clouds para esta parte y ya quedo!

Es rapido, pero aun tiene detalles en la implementacion. De cualquier forma, sirve para guia o para pruebas.

http://www.creativecrash.com/renderman/downloads/shaders/c/simple_subsurfaceptc