Rendering Volumetric Fractals With OSL – Arnold Documentation

I was happy to contribute to Arnold documentation with a tutorial describing rendering of volumetric fractals with Open Shading Language.

I start with simple examples such as rendering implicit volumes, then translate a sphere example into OSL. Afterwards I build a Mandelbulb OSL shader and add orbit traps for coloring.

Take a look and play with example file! More fractal shapes can be added with this technique and they can result in plenty of weird shapes 🙂

I also tested rendering in GPU mode and it worked out of the box, no additional steps needed.

Rendering Volumetric Fractals With OSL – Arnold Documentation


I am really happy to share with you that my graduation project VFX Fractal Toolkit was accepted into Posters Session at Siggraph 2019 in Los Angeles.

Moreover it was featured in Posters Preview: SIGGRAPH 2019 video!

That is my first publication and I am very honored to have this tiny contribution to Siggraph 🙂

You can find abstract in ACM Digital Library.


VFT | OSL shaders in Blender

For my graduation project VFX Fractal Toolkit (VFT) I developed a couple of Open Shading Language (OSL) shaders to render volumetric fractals. I produced with them the following animations.

As a renderer I used Arnold and was pretty satisfied with the workflow. However I was wondering how difficult would it be to use the same OSL shaders in another renderer, e.g. Blender’s Cycles. Especially because I was trying to mimick OpenCL’s syntax in OSL (not the best idea, but helped me port OpenCL shaders which I built first), included couple of header files etc..

As it turned out it was a pretty quick process and everything worked out of the box, requiring only minimal changes. The only thing I had to change was to properly set up multiple node outputs. Arnold doesn’t support multiple outputs for an OSL node so I worked around it by outputting a 4×4 matrix type with encoded values in it and extracting them afterwards. This makes Blender’s shaders nicer and more readable, you can check the diff here.

The shading setup in Blender looks pretty similar to the one used in Arnold and also outputs similar results.

Screenshot from 2019-06-19 18-37-47

For the testing I used Blender 2.80 beta running in a Docker container.

Keep in mind that rendering such volumes is pretty slow and neither Arnold nor Cycles support OSL on GPU. I included the changes in blender branch of the repository (not for all OSL shaders yet, but you get the idea :)).

VFT | OSL shaders in Blender

Houdini 2 Open3D | First tests

I would like to share the first test of a fun project I recently started working on in my spare time – Open3D to Houdini integration.

I built Houdini wrappers around Open3D functionality, which enable me to load point clouds, pre-process (downsample, estimate normals, compute FPFH feature) and perform Global and ICP registration on them to align them tightly:

This already seems quite versatile when combined with the Houdini toolset. Combined with GameDev and Alice Vision tools it can result in a powerful and automatic photogrammetry pipeline – something I like to explore 🙂.

I bidirectionally translate Houdini and Open3D geometry, so the Open3D operations can be seamlessly combined with Houdini SOPs. This doesn’t seem to be the case in the Reality Capture or Alice Vision plugins, which don’t enable Houdini to modify the geometry.

The integration is in early version and has some issues. I tested it only on a Linux so far. I will open-source it after I fix the problems and write some info on setting it up.

Thanks for reading 🙂

Houdini 2 Open3D | First tests

Web experiments

Recently I got interested in web technologies. I was surprised to learn how much is possible to do in a web browser. I found out about new interesting APIs and a huge ecosystem of libraries, many of which are from areas of my interest.

So I decided to learn some basic JavaScript and to build small experiments in my spare time. I am collecting them in one repository for now. You can fork the repo and host them locally or visit them here.

Some of the benefits I like are portability and cross-platform compatibility. Most of the tests run fine in major web browsers on all operating systems. They run also fine on mobile devices, some of them are even intended for mobile devices, like the AR tests. I found it being a really convenient (and free) platform for building prototypes and tests.

Here I will describe some of the projects.

Continue reading “Web experiments”

Web experiments

megaH | Megascans to Houdini integration

Hello, this post will introduce a project I have been developing with friends for some time: Megascans to Houdini integration, or megaH. This will be a high-level overview of the tools and workflows we have developed so far.


This article is written by authors of this tool: me, Peter Trandžík and Ondrej Poláček.

MegaH is currently work in progress and is being used in two student productions. It is not finished and ready for release yet. The two versions are customized to specific pipelines and needs of the corresponding productions.

It is developed and tested on Linux and Windows and with Mantra and Redshift renderer.

Also note that while we used the Megascans library, this project could be ported to include different libraries, for example VFX studios’ internal asset/setup libraries.

Continue reading “megaH | Megascans to Houdini integration”

megaH | Megascans to Houdini integration

Photogrammetry 2 | 3D reconstruction and post processing

This is the second article describing our photogrammetry workflow which I developed for a student production. You can find the first article here.

In this article I will go over our attempts on reconstruction of photos in various applications and our semi-automatic post processing workflow based on Houdini. (Houdini asset can be downloaded at the bottom of the page.)

Continue reading “Photogrammetry 2 | 3D reconstruction and post processing”

Photogrammetry 2 | 3D reconstruction and post processing

FLIPs – RBDs interaction

In this post I will show a simple technique for FLIPs and RBDs interaction. Like in this example:

I decided to give it a try after talking to great FX TD Adam Guzowski. The task was like this: doing a setup where water would fracture RBD objects, would break RBD constraints and RBD objects would be pre-fractured based on the expected water flow.

Continue reading “FLIPs – RBDs interaction”

FLIPs – RBDs interaction

Houdini 2 VR

I would like to share with you a tool I have been developing lately – Houdini 2 VR.

Currently Houdini doesn’t have a tool for previewing (stereo/mono) VR renders in a VR headset. All renderers support this output format, but the preview process is a bit of a bottleneck. You usually need to leave the DCC application, load the render in another app, e.g. Nuke and judge the visual quality there. This adds a bit of time to each iteration and makes the preview process cumbersome.

So I tried to simplify this process. Sending pictures to HMDs can get very technical and low-level but I rather took a high-level approach: Python + WebVR. Or more precisely Python on the Houdini side and WebVR on the side of a web browser. Using a web browser means that I have to leave Houdini for previewing VR render, but with Python I tried to make it as automatic as possible.

Check this video to see how my tool works:

Continue reading “Houdini 2 VR”

Houdini 2 VR