Sunday, January 13, 2013

My English with Subtitles

Yes, I know, my English is not so good. And I steel study by different ways. This one - watching films with subtitles. It's cool not so handly to seek the video on short distance  by any players. And I usually  use Kdenlive for "step by step" watching the movies. But in this case I watch without subtitles. Today I  wrote small python script for forming guides with subtext. This is what I need.
I found pysrt module for reading srt-filesMy. It's helped me a lot for parsing file and forming by my script somthing like this:

<guide comment="But do we believe his&#xa;story about the DEA?" time="1841.788458"/>
<guide comment="I mean, what does any of&#xa;this have to do with drugs?" time="1844.498458"/>
<guide comment="Well, there's only&#xa;one way to find out." time="1846.458458"/>
<guide comment="Ryan, see if you can uncover" time="1847.858458"/>
<guide comment="what Michelle was doing&#xa;at the DEA." time="1849.808458"/>
<guide comment="I'll try, but it's late." time="1851.448458"/>

And then insert it all Kdenlive xml-project. but I was afraid that the 1148 guides will be too heavy for Kdenlive. But it worked.
Tomorrow I will publish cleared script.

Friday, January 11, 2013

Fluid GeoLights by renderman GPU plugin


I have implemented fluid based lightsource. Light samples was getted from the high temperature voxels.  Kernels for rendering equation and reducing same as CurveGeoLight kernels.
Obviously, there is a possibly reducing a number sampling according to their importance.
And yes, it's all still working without shadows.

Friday, January 4, 2013

Curve GeoLights by renderman GPU plugin

curveGeoLight from Alex Mirgorodsky on Vimeo.
I continue to develop Area Light integrator based on the CUDA GPU calculations.

Thursday, December 27, 2012

Render GeoLights by renderman GPU plugin

Hi. I finally made ​​the first beta Geolight plug for renderman. It is implemented as the SIMD RSL plug-in with call  two CUDA kernels. Workflow is very simple.
1. Dump geo-data (positions, normals, colors) to dat file from Maya
Next processes works in render time:
2. Reading dat-file for every geo-light while initialize light shader
3. Copying the data to Graphics Card memory (Host To Device)
4. Copying every grid data - P and N to Graphics Card memory (Host To Device)
5. Calling Integrator Kernel for all samples of geolight on every point of Grid
6. Calling Sum Reduce Kernel for the calculations.
7. Copying result from Device to Host

Finally I had test working this solution on 12 geolights (like CRTs) with dynamic textures. Resolution HD720. Grid size: 512. This is lighting only without shadowing.
GPU GeoLights (12Lights) from Alex Mirgorodsky on Vimeo.

Monday, November 5, 2012

Renderman+GPU First rev. SSAO Implementation

I continue to develop CUDA-based renderman plugin for fast rendering SSAO. Main application of this solution - rendering occlusion on the hair, feathers, grass and etc for TV-series. This first imlmentation with a lots of bugs and the slow non-optimized kernel. But I know where to proceed. Other images under cut.

Sunday, October 21, 2012

Screen Space Ambient Occlusion: Renderman implementation

I tried yesterday to implement SSAO technique in renderman shaders work
based on the depth map. While many artifacts.
But I hope I can fix them and realize the basic computing on GPU by CUDA.
Work in progress.

Sunday, October 7, 2012

Pixar Opensabdiv

I compiled Pixar Opensabdiv examples. This is an amazing tool and also a good example of using GLSL with MAYA plugin.
Unfortunately a subdivs sometimes disappears if I increase the shadrs level of subdivision.

Thursday, January 12, 2012

I started to develop of a CUDA-based "Light Server" for renderman.
And for best understanding and debuging alghoritms I implemented a special Maya locator.
It generates random directions(vectors) in a hemisphere domain.
Color of the vectors calculate by light integrator of area light samples.

Tuesday, October 11, 2011

Compiling Alembic for Maya2012 under OpenSuse 11.2

I done compiling the Alembic_1.0_2011080800 rev. with some changes in system.

Sunday, October 2, 2011

renderman: displacment with overlapping in progress

Actually I develop displacement shader with overlapping  the top and bottom surface parts.

Monday, September 12, 2011

Sunday, September 11, 2011

renderman: skin shader development in progress

This is first step of development. It would measure dipole radius for this scene because I think "unitlength" may be wrong.

Wednesday, August 31, 2011

Old tools review : Light Zeppelin - BakeNaut Control Panel

An example of an artist-friendly tools.
I really cannot understand why after 02 I wrote 06.

Old tools review : Light Zeppelin AE Templetes

This is AE Templetes with dummy banners. Really bad color scheme.

Tuesday, August 30, 2011

Old tools review : Render Control

This is UI and pipeline scripts was writen for "Frogs Paradise" 3D animation feature.

Sunday, August 28, 2011

The Desert Drought Ground Shader

This is procedural renderman contained displacement and surface methods. Main pattern was formed by Voronoy algorithm. Surface method is very simple - it have the minor mutation of colors and fake shadowing in cracks.  

Several month ago I wrote simple MAYA plug-in for converting data from MAYA PaintFX to renderman poinclouds. Generated pointclouds lightweight in contrast to ordinary baked ptc. In result point based occlusion don't physically corrected but plausible for long shots and very fast in rendering.

Saturday, August 27, 2011

Production Video Editor

 This is the special tool for manage production, vewing and simple editing of sequences.
It is part of the total animation production management system "Atmosphere" that I develop with Andrew Chernysh . It's coded on PyQT. Work in progress.

Tuesday, August 23, 2011

Tricks with standart input/output and the renderman shader compiler

Did you know that renderman shader compiler support the standart unix pipe?
I am looking for a way to rapidly develop co-shaders containing helpers data.
And I found a way that suits me.

in bash command line:

echo 'class test(float kd=0.7; float ks=0.1; color diffuse = color(1,0,0)){}' | shader -o /myProj/myShader.slo

echo 'class test(){ struct _data {varying float kd=0.7; varying float ks=0.1; varying color diffuse = color(1,0,0);}}' | shader -o /myProj/myShader.slo

in Maya mel:

system("echo 'class test(float kd=0.7; float ks=0.1; color diffuse = color(1,0,0)){}' | shader -o /myProj/myShader.slo");


string $HelperContent = "'class test(float kd=0.7; float ks=0.1; color diffuse = color(1,0,0)){}'";
string $ShaderObject = "/myProj/myShader.slo";

system("echo "+$HelperContent+"|shader -o "+$ShaderObject);

in Maya python:

import os
os.system("echo 'class test(float kd=0.7; float ks=0.1; color diffuse = color(1,0,0)){}' | shader -o /myProj/myShader.slo")

Wednesday, July 27, 2011

Renderman rerendering - Camera Edits

Actually I continue my connector maya to renderman rerendering. Work in progress.

Monday, June 20, 2011


This video illustrate the "PlayBlaster" script for the production of animation playblasts with labels by one button-click. The Playblaster was writed for production pipeline of "Frogs Paradise" feature animation film. Animation by Marat Davletshin
PlayBlaster Tool from Alex Mirgorodsky on Vimeo.

Sunday, March 13, 2011

Renderman RSL DSO Plugin for quering progress rendering

I tested the new RenderMan Interface Control lib for the getting progress rendering
in shader calculating environment. The new Ric API include function RtInt RicGetProgress()
for returns percentage progress of rendering.
I wrote the little DSO with float function returns progress during rendering:

Saturday, March 12, 2011

If Maya Python doesn't find your package

I am often faced with the problem - maya dont finded pakage modules
even path to the module present in PYTHONPATH environment variable.
And in feedback return something like this:
import  LightZeppelin
# Error: ImportError: line 1 of <maya console>: No module named LightZeppelin #
Early I solved this problem with

import sys
sys.path.append('myPath to package')
This is just work. But there is one more solution for this problem:

create your own *.pth file in $MAYA_LOCATION/lib/python2.6/site-packages directory

In my case - this is LightZeppelin.pth file contained one string - full path to DIRECTORY conteined "LightZeppelin" package.
This is very important. For example, if your pakage placed by /my_toolkit/my_subfolder/my_package 
then in *.pth Your must write:
And after this one maya python finded your "my_package" by
import my_package

Friday, February 4, 2011

HotOcean for MAYA 2010 Linux GCC 4.1
I recompile HotOcean For MAYA 2010 GCC 4.1
For using it needs installed the fftw3 libs. In OpenSuse 11.2 fftw3 coming with standart repository.

Wednesday, January 12, 2011

some errors in the shader code

I made some errors in the shader code
Firstly - I think it's better:
shader lights[] = getlights("category",Category);
getvar(lights[i], "__category", __category);

        if(__category == Category) {
            push(categoryLights, lights[i]);
Secondly - to call the shaders in construt () method
- generally a bad idea if we want to use pixar relighting technology.
I think normally calling light co-shaders in lighting() method.

Friday, December 3, 2010

Wednesday, October 20, 2010

Little Shell Scripting

1. Converting all .tif in directory to .tex files
for i in *.tif; do txmake -mode periodic -verbose "$i" "${i%.tif}.tex"; done

2. Downscaling geometry size all .tif files to 25% of original images. 
It making by "mogrify" utility - the part of ImageMagick pack.
name :
for i in *.tif; do mogrify -geometry 25% "$i" ; done

3. Converting .ui files from QTDesigner to PyQt .py 
name=`basename $1 .ui`
echo "------- $name ------"
pyuic4 ./$1 -o ./$

Step By Step Pixar Style Eyes Shader. Comming Soon.

Monday, October 18, 2010

Name Surface shader in Slim

This is example code from my old "SLO_Inspector" utility.

Saturday, July 3, 2010

Compiling the HotOcean deformer for the MAYA2008

This is operation i use for compiling HotOcean plugin writed by Igor Žanić
source code of HotOcean located: