aim of this project
The project aims to create a procedural 3D tool in SideFX Houdini for creation of single-image random dot autostereograms. The product will entail two procedural generators, which will be combined into a single tool in order to create the final design. The product will be tested in several stages. Firstly, I will constantly review and improve the procedural network throughout the creation process. Secondly, I will liaise with industry professionals to ensure the product approaches the professional industry standards and could be used in VFX productions. In order to identify the application of the product, I will also conduct a survey and an experiment (go to “Become part of the project” and “Eye strain experiment” pages to find out more).
sidefx Houdini and procedural tools
SideFX Houdini is an industry-standard VFX software; it derives from PRISM, a computer graphics software developed by technical artists Kim Davidson and Greg Hermanovic in 1985. Almost a decade later, what started as a simple procedural graphics application turned into the “Academy Award of Merit” winner software – Houdini. (SideFX, n.d.a) Ever since 1996, Houdini has been used by the feature film industry to create mesmerising graphics. Houdini is written in C++ language, which enables the users to use it in different operating systems, such as Windows, Linux, and OSX, which gives it flexibility and allows to be used across the industries. (SideFX, n.d.a)
For the first attempt, I have decided to use a bit simpler software – Adobe AfterEffects. The reason for this choice was that AfterEffects comes with already built-in displacement preset, which would be very helpful when creating stereograms. I also wanted to check my hypothesis and experiment in 2D software before I move on to Houdini.
Hypothesis: autostereograms can be created by shifting pixels of the pattern image by the value between 0 and 10 depending on the amount of white and black on the disparity map
1. Create a repeatable pattern using “Fractal Noise”
2. Duplicate the pattern
3. Shift pixels, based on the disparity map’s white value, using “Displacement Map”
Outcome: a simple autostereogram with minor errors
Conclusion: Autostereograms can be created in AfterEffects with the use of just two modules – pattern and disparity map
A shift in pixels can be noticed when the pattern is too big
Disparity map creates two shapes – one extruded and one cut in the image
The image is difficult to view if the horizontal pattern column is too narrow
A small repeatable pattern must be used
Solution yet to be explored
Pattern columns must be adjusted to the distance between a person’s eyes, usually about 6cm
The aim of this attempt was to remove the 2nd (unwanted) shape. The solution is to repeat the disparity map on each pattern tile starting from the tile where we want the disparity shape to appear and finishing on the last tile on the right. It is important to note, that the pixels on the disparity shape must be moved to the right.
The attempt was successful and the result can be seen on the right.
Once I have understood the principles used for autostereograms, I could slowly start creating a bit more complex images. I am focusing on the shapes (disparity map) as the pattern is currently the easiest thing to make and change.
I did not think that creating stereograms would be that challenging. The next step was to create a disparity map in SideFX Houdini. I placed several placeholders in the scene and rendered the Z-depth pass. However, there were some issues that I had to fix before bringing the image to AfterEffects. One of them was the lack of blurriness around the edges of the geometries (the geometries did not blend naturally with the background). This could be quite easily fixed with the settings, once I knew where to look.
The result is satisfying and now can be tested on more complex geometries.
To understand how wallpaper stereograms work, and therefore better understand random dot autostereograms, which use the same principles, I made several tests in Houdini (again, with simple placeholders). The results were satisfying and, more importantly, proved my hypothesis and worked.
Conclusion: Objects placed at smaller intervals appear to be closer to the observer (camera)
Creating a wallpaper stereogram was not a difficult task, it was just simple Maths. It was a matter of adjusting several settings and ensuring correct intervals and width of objects. When looking with diverged eyes, the ducks, placed at high intervals, seem to be farther away in space than the diamond repeated at smaller intervals, and the bells seem to be the closest because the distance between them is the shortest. Another noticeable difference is the number of icons. When normally looking at the image, there are 6 icons of each type, but when diverging the eyes, an additional 7th icon appears in the image.
Conclusion: The distance between two objects which I want to appear at 0 distance (in the middle – not closer and not farther) must be the same as the distance between two pupils, which is on average 60mm.
All stereograms I have done so far were very simple and my goal is to create abstract and complex random-dot stereograms. However, when using the aforementioned “Displacement map” tool in AfterEffects, the tool performs calculations to fake depth and those calculations prevent me from using the tool for the stereograms. Paradoxically, it is too complex. So, I had to go back to start and create a random-dot stereogram by hand to understand the method even better and see how I can translate it to Houdini language. The image consists of 6 columns with repeating character pattern, each column consists of 15 characters (including spaces and interpunction). Each pattern repetition works the same way as icons in wallpaper stereograms. In the second column from the left, in lines 5 to 9, the pattern has been changed and then the changed pattern has been duplicated and pasted on the right. For example, in the 5th line of the first column, the repeated pattern says “go healthy can “, but in the 2nd column the letter “y” has been deleted and another character (in this case space) has been added after “ can “. Now the pattern from 2nd column on says “go health can “, without “y” and with an additional space after “can”. Therefore, the word “can” has been moved one character to the left, which makes it appear as if it was in front of the rest of the words in the image.
Conclusion: Starting from the first changed column, I must change all following columns and make the changes on them. Random-dot stereograms are just a more complex version of wallpaper stereograms.