RND project "We Love Colors, Do We?"
Marko Koljancic
Delivery Manager @ Symphony | PMP?, PMI-ACP?,SAFe? 6 Agilist, ITIL? 4, PSM II, PSPO II, PSK I, PSM I, PSPO I, AutoCAD, Revit, 3Ds Max Certified Professional
Computer graphics was always my passion. I'm one of those who learned first 3D software from reading pages after pages of cryptic offline documentation. No internet access, without cg community in my city, always fighting with machine to juice out every bit of performance. Love that days of you vs machine and feeling of accomplishment when problem is solved by trying till succeed.
For quite some time I had this concept in my head. It's minimalistic but yet not as straight forward to implement. Peel layer of paint took some time to develop and some more to make it art directable. Think this is very important as effect needs artists input and needs to be flexible.
Initial idea was to present some arbitrary new product design in short video. Had two effects on mind, wall that acts like it is fluid object and peeling of concept layer/shell to see final product in full glory. Although consider myself to be software agnostic I am a 3Ds Max user. Find it great for hard surface modeling, texturing, architectural visualization and look development. Old Max is really good for these tasks, just hate archaic user interface. What it lacks is proceduralism and maybe node based approach for creating geometry and effects. There is limited capability of wrapping chain of tools and exposing artistic driven parameters for end users. Houdini fills that hole. It is all about proceduralism above manual creation. As one can often hear, simple things are complex in Houdini and complex things are simple in Houdini. Not so good for manual hard surface modeling, compering for more mature hard surface tools in 3Ds Max, but it shines at procedural generation of geometry and images.
Basic scene layout was done in 3Ds Max and exported via Alembic point cache file to Houdini (can't wait for Pixar USD workflow to be adopted in 3Ds Max, Houdini has it but not without manual compiling in Visual Studio). Effects were done in context of whole scene because there was need to have proxy collision shapes for peeling effect. After wedging some variations of simulation, one was chosen. Simulation is then transferred to 3Ds Max for texturing, shading, lighting, look development and rendering. Some simple compositing was done in Nuke, such as grading, chromatic aberration, lens distortion, motion vector blur, dof and some minor tweaking.
Word or two or seventy two about creating effects...
Art direction of effects in general is important part of animation creation process. Time and movement reveal more than still image. It can look cool on image but not in motion. So when peel effect was developed took me some time to make it art directable. Peel can be controlled through time in two ways. By painting attributes using Paint SOP or in more "chaotic" way using 3D textures or 3D noise maps with controls (type, frequency, amplitude, offset, octaves,...). Prefracture workflow was used with Voronoi Fracture SOP in combination with some point scattering and clustering techniques. Core of simulation is done in Spring SOP which is microsolver replaced with more newer Vellum technology. Yes guilty I am, for using deprecated SOP, but why not. It does job right till more knowledge of Vellum SOPs/DOPs is gained.
Whole concept revolves about looping through each point in base geometry, converting cartesian to polar coordinates and applying input data in process of conversion so we get wave like deformation on the mesh. Looping is done by SIMD parallel execution in VEX attribute snippets. Here is what I came with when considering wave effect:
$posy = $magnitude*exp(-$decay_factor*abs($posx-$speed*($local_time-1))) * cos(2*M_PI*$frequency*abs($posx-$speed*($local_time-1)));
Where: "posx, posy" are x, y cartesian coordinates of each point on base geometry. "local_time" is derived from Houdini @Time global variable altered with few custom user defined parameters. "speed, frequency, decay_factor, magnitude" are user provided values for fine controlling effect result. "Magnitude" controls height of wave, "frequency" controls density, "decay_factor" affects time in which wave slowly disappears over "local_time". "Speed" is speed :). Plane is set live in XZ plane so that I can move vertices in Y direction and get deformation. That why only Y coordinate is treated.
Because this project is developed using multiple DCC application thought would be cool to see how scene looks without fancy lighting and shading. Hope you like it.
Behance project: https://www.behance.net/gallery/84981735/We-Love-Colors-Do-We
Artstation project: https://www.artstation.com/artwork/dOBeL3