FMP – Outcome & Self-Reflection

The Final Outcome

The Breakdown

Self-Reflection

This project had its ups and downs, and yet I came out a better and slightly more knowledgeable FX artist out of it.

It started with my typical grand ideas, which at the time it didn’t even come to my realisation that I won’t be able to do some. For instance, my original idea was around fluid simulation, yet that requires computer specification which neither do I or university computers have. After around two and a half weeks of trial and error, I managed to finalise the project outline. Familiar or potential office accessories, which included a particle simulation of some sorts, integrated with their target surroundings such as an office desk – that was what I have finally settled down. Due to some of the time wasted, I had to start the preparation before simulation in Houdini very quickly which included modelling of the objects, such as the glass case, the hourglass, and the statue around which particles will move in swirling motion. It was to my relief that the habits and mechanical memory kicked in very quickly as I was navigating through Maya, haven’t touched it for a couple of months.

After the intense week of pre-production, idea visualisation and modelling, I have finally managed to start the simulation process inside Houdini. For the four simulations that I came up with, the one that I haven’t tried before was sand, so I started with it the first. It took me a few days of getting acquainted with, learning, exploring the nodes necessary for the sand creation. I have found a good reference video shot of the hourglass, which eventually became my focus of study, as I tried to break down and understand how the sand itself acts and interacts within in this situation. There was an inner expectation that the final look had to be achieved via one system, as physically accurate as possible. Yet I couldn’t achieve the look I wanted with this approach. Christos helped me organise a session with Mehdi, which in turn was incredibly helpful and insightful. He made me understand that very often the realistic appearance of a simulation is not achieved by simple steps of one system treatment. Instead, taking the hourglass as an example, he suggested breaking it down into 3 different systems: the sand on top of the hourglass, the sand source in the narrow neck, and the sand piling up at the bottom. From that, I managed to build a script that gave me better control over the whole simulation and how the sand would fall.

Attending to the fire burning inside a glass case simulation, the particle swirling around the statue and the backflow incense burner, I have again faced the limitation of computer processing power and the inconvenience of the escaping time. Towards my final weeks, I have made the decision on which simulations I will focus more on to perfect them instead of rushing through all and having a generic outcome. Whilst working on the fire simulation, it became obvious to me, that the original idea was not thought through properly, so the simple fire burning inside the case appeared to be quite bland. Brainstorming, I decided that I wanted to make a crystal, which would be set on fire and also create the cracked surface on the base of the case. It would add a better grounding to the simulation and make it appear as if the fire is coming from a mechanism, based just below the cracks. The swirling particle, in turn, was not as easy a simulation to figure out, as I have found out. The hardest part was eventually directing the particles alongside trails, which had to be made either by hand or procedurally. After several of my own attempts and various tutorials I have found on YouTube and Vimeo, I came across a very nice tutorial from the channel Entagma. Eventually, they were creating a simulation of particles swirling in free space guided by the velocity made from volumetric cross-product of vectors. It was specifically the look of trails that appealed to me, as I figured out how to adjust their script to my network. Finally, I had all the simulations ready and it was the stage of render tests.

The rendering stage brought its own complications that I had yet to solve. The first thing was finalising my objects appearance, as originally, I had planned to place them in an office area and give the viewer a guided tour around. Yet, with upcoming deadlines and problems setting up render farm for Houdini, I decided to go with a safer choice of presenting the objects in a simple set-up. They would interchange with each other under a spotlight in a dark area. After that, setting up cameras and lights was quite straightforward. I had to merge all the scripts into one scene, as I wanted to see all of my objects side by side. The renderer used was Arnold, which, in turn, required its own unique set-up in Houdini, with a specific material application for each of the presented accessories. Once it was all done, I’ve spent a whole week rendering out the cameras, without being able to finish all the renders for all of the frames I’ve planned, as I ran out of time. During the wait for those, I have searched for sound effects and sound music tracks and prepared a project inside Premiere Pro, on which the final video was edited.

Overall, I really enjoyed this project! It made me realise how much I have yet to learn and practice in FX creation, but also strengthened my desire to work in this field. The fact that I had to go through every step of it by myself reminded me of how every phase is essential and serves as a good foundation for the final result. Coming across various problems and overcoming the obstacles served me as a good way to attain the new or old information with regards to specific techniques, processes, use, and general workflow of a project and software needed. It came to my realisation that I knew very little about the stage of material application and rendering, integration between various software’s, and export or import of files, so I now know better what I must pay attention to in any of my future personal projects.

I wanted to say thank you for all the help I’ve got: for my library weekly sessions with Jane and Giulia passing onto helpful criticism or suggestions to each other, for Christos guiding us throughout this tough period, for Mehdi for helping me discover and understand Houdini better as well as his experienced insight, for my family and friends who helped to power through the rollercoaster of experience that it was. Finally, I wanted to say thank you to my dearest friend Sasha, who helped to come up with the name for the project, as it actually gave me an idea of using the specific soundtrack, thus enhancing the experience of the final piece!

FMP – Week 8 updates

Approaching the deadline, I focused on adjusting the materials, light, and camera placements to get my final look right. As render time can often be unpredictable, it was only logical and reasonable to change my composition to be purely focused on the simulation. The way that object was to come into the frame would be a simple slide into the spot of light in a dark room. Other than visual focus, I could add the sound FX guidance in regards to the relative position of the object to the audience: in front, close-up, on the right, or left of them. Here are a few single renders:

Fire case
Hourglass
Swirling particles

Originally for the statue for swirling particles simulation, marble material was applied to the whole colliding geometry. But, the base kept sticking out for me, so I decided to use a different material with wooden tones for it. Here are comparisons, side by side:

Particle base difference in materials
Plan for the project presentation

FMP – Week 7 updates

As mentioned in the post before, I had a list of problems and questions that I focused on solving and answering this week. The first one is perfecting the appearance of the hourglass and how the sand was falling alongside the fire case sourcing.

Bounding box for falling sand grains, to remove the build-up
Hourglass POP Wrangle node script, that actually removes the grains.

Then I focused on creating cracks at the top of the case base, from which fire would be simulated and hence look more realistic to be achieved and made in real life. The following was my process behind it.

Point scattering across chosen polygons from the base
The base tube shape is made to be the base of cracks.
Randomizing the tube shape using “remesh” and “mountain” nodes.
Tubes are copied to points from base scattering. Applied noise in N, to change their rotation, and to their scale.
Updated look of the fire case base.
How the points are being now scattered to be later used as voxel for a fire source.
Render test with new fire look.

The swirling particles simulation was re-approached, as I wanted to make a script inside of which I would understand what every single node does and the purpose it brings. After all, my main struggle was creating the trails for particles to follow, such that they would make it visually and aesthetically pleasing. Here is a video of all the trials and attempts I made:

Render test 2, with new particle motion and their size variation.

Finally, I focused on the camera placement and any movement if any that it would make. Keeping in mind that moving cameras may be harder to render, I tried focusing on more static options.

Camera tests of the simulation from the viewport with sound effects.

FMP – Week 6 updates

Focusing on my simulations, I made more progress in perfecting and working on the fire and sand simulations, as well as started making scripts for the swirling particles and the incense burner smoke.

Crystal GEO script

In the case of fire, I made a crystal, and tried a few fire simulations on it, to see how it would integrate and play with the surroundings. It was very interesting and pushed me in a new direction, with the crystal creation. The workflow consisted of making a rough shape for a crystal base, that has the main outline of being broken around edges. The base for crystal was made from using a tube shape, which was cut in various ways, using a tetrahedron polygon, placed and rotated such that it suited the look, with “boolean” of “intersection” function. As it was just a singular crystal and I wanted at least 6 or those, I used another geometry to scatter and position particles in a way that the crystal could be copied to those points and its appearance can be adjusted.

Then I introduced a for loop for each big crystal to have the intersections and breakages along the edges, then give them this naturalistic look of forming during decades. It was achieved by reconstructing edges for crystal shape, scattering, and randomizing position of the points, to which low-resolution spheres were added. Those positioned spheres were now intersecting with the base of the crystal, again with the application of the “boolean” node of “intersect” mode. Very often, “mountain” nodes came in to serve the purpose of creating irregularity and breaking down the reappearing patterns. Whilst it wouldn’t be seen much in the viewport, but better in render, I also had to think about the internal breakage of crystals. This was achieved by turning each crystal into a VDB shape, with specified boundaries inside of which noise would be introduced in the “Volume VOP” node, and later read back into the crystal with the use of the “boolean” node of “____” function. After that, with a very similar approach, the air bubbles inside the crystal were made.

Crystal render test
Crystal with fire sim – test 1
Updated the crystal shape (quantity of the crystals), and put the fire on, to see how it will sit in the scene.
Rendered out a sequence with the fire simulation

I didn’t like how the fire was projecting, having the flames go high and it felt like there was a lot of empty space, so I decided to change the look of the fire simulation and wanted for it to be smaller.

Updates version of the section for particle scattering on the surface from where the fire will be simulated
Fire simulation test 2, sim cache
Changed the fire appearance and to how much and big the flames would be rising, as the previous version felt having too much power.
The fire inside the glass case render, test 2.

After observing how it looked in playblasts and renders, it became clear that having fire coming from the bottom of the case (out of nowhere, having no basis or clear source) seemed slightly out of place or like it was magic. However, that is not something that I am going for, and I want to try and create randomized broken patterns on the base of the case, from which the fire will be coming. Other than perfecting how it looks with the simulation, it also feels that applying correct shaders and adjusting how it looks in the render is important as well.

Idea example from where the fire can appear

After a very helpful session with Mehdi, I have updated my sand simulation scene and perfected the look of the hourglass and how the sand was falling. As discussed earlier, the system was divided into 3 separate ones, with the sand level going down on top, the sand source placed in the hourglass neck, and the sand pile on the bottom.

Sand GEO updated script

Firstly the sand source was read in and split into the top and bottom parts of the hourglass. Whilst for the top, no adjustments had to be made to the shape, it was fed in “vellum configure grains” straight away to create those sand-looking shapes. However, it did require the colliders, which were made by converting needed polygon shapes into VDBs. It was later solved using a DOP network, with various POP forces and setting a boundary box at which the particles were deleted as they entered it. The mountain-like shape for the bottom was created by separating out the mesh for the lower part of the glass, making a plane out of it, and using “soft transform” for raising the central point of this plane higher, thus making that hill outline. A couple of keys were added to various “transform” nodes to make it animated over time and then the shape was used for collisions. It was later also fed in, to create sand grains from the shape, such that it would fit the scene and the falling grains wouldn’t appear falling onto invisible collider. For the sand grains falling, a simple spherical source was created in the neck of the hourglass, which was solved with another DOP network.

Sand grains falling simulation version 2
Sand render test 1
Sand render test 2

At last, I also started with the swirling particles simulation and the incense burner. The way that I found how to swirl particles and attach them to the surface of the object has the accent on scripting, which is taking time for me to understand how they work (based on the examples from a source I found: https://www.tokeru.com/cgwiki/index.php?title=HoudiniDops#Pop_stick_to_surface). There was a different way that Mehdi suggested, which required less scripting so I would need to explore that option as well.

Particles DOP network
Particles VOP network
Particle swirl simulation
Particle sim render

With the incense burner, it was quite a straightforward simulation set-up, however, what I noticed was that due to the accurate size of the incense source (1cm in height), the voxels that are the volume source of the smoke for simulation are very small and in turn that directly affects the time taken for the computer to process and update the scene. Every small adjustment made would take at least 10 minutes to update as a playblast, and I am not too sure if I have enough time left to get every simulation to the point of how I want to look it like.

Incense burner DOP network

Overlooking the last week’s progress and how much time is left, I now need to decide which 3 simulations I will be proceeding with, understanding the look of them, how the camera will be placed and its movement, what would be the lighting source (an HDRI or hand set-up). When looking at the render, I also realized that I am not too happy with textures, as some don’t look too realistic or how I would imagine them to be.

In summary:
1) Decide whether to go with swirling particles or incense burner simulation;
2) Improve and solve the inconsistencies from fire and hourglass simulations;
3) Find the textures for the objects and apply the adjustments to them to get the right way looking in the render;
4) Either use the HDRI lighting or custom light;
5) Decide if I want to render from Houdini or Maya;
6) If I decide to render in Maya, then understand how to export the simulations from Houdini and set them up in Maya;
7) Figure out the camera movements (most likely to be static) and create them in Maya/Houdini;
8) Get all the sound effects that I would use later in post-production.

FMP – Week 5 progress

Continuing on from the last week, I played around with values for the “POP grains” node to see if I could get to a point where the sand would fall the way I wanted it to. I noticed that it would take a long time for my computer to process, and it took me almost a whole day to get various appearances. Here are just a few of what I did:

However, I did find that it would almost be impossible to achieve that realistic look, just through “pop grain” and adjusting values from within. Later during the week, I had a call with Mehdi, who suggested a different approach in order to achieve my realistically looking falling sand. Instead of focusing on the whole system as one, he suggested breaking it down into 3: the sand on top of the hourglass the level of which is decreasing, a source that emits the falling sand grains in the narrow part of the hourglass and the pile of sand on the bottom that raises up in the way I want it to.

Hourglass sand is divided into 3 areas. 1 – the top part the level of which is decreasing, 2 – new sources of falling grains, 3 – an animation-driven mesh that will guide how the sand is supposed to fall.

Instead of using just “pop solver”, for some areas “vellum solver” will be applied to get faster computer processing and even better-looking results. This is what my focus will be to finish during this week.

I also started on the fire case, for which I set up the scene just as in the hourglass. After importing the alembic cache files from Maya, I divided the case into its various parts and started creating the fire source.

Fire case scene set up
Fire case division into its various parts: glass, wooden frame, and base.
Fire source geo network.

After reading in the base, I deleted some of its polygons, in order to have the main ones from which the fire will be simulating. Points were scattered across those upwards-facing polygons, further applied the “pyrosource”, to create the required attributes for the fire simulation: density, temperature, velocity, and fuel. Then the noise was applied to the density, to have fire simulated from various points during each frame and add more randomization to it. Just as in all fire simulations, the “volume rasterize attributes” node had to be applied before finally simulating it in the “pyrosolver”. I’ve also read in the fire case, changed to a VDB, such that it could be used as the collision source.

Here is a playblast of how the fire looked just in the viewport.

Fire case playblast

In order to see how it will actually look like, I need to set up the lights and materials, such that I could get a rendered image. The way fire looks rendered and in the viewport is always different. I also want to know if I have enough voxels for the details or if I have to make more. As this was very easy and quick to set up, I decided that I will go ahead and make a crystal in Houdini, to make it look like it’s on fire, instead of a simple fire coming from the base.

For the next week, I will focus on creating scenes in Houdini for the particle swirls simulation and the backflow incense burner. Then I will have enough time to perfect them and in case of any problems, set up a meeting with Mehdi for some help. I will also need to think about the textures applied to the objects and if I have enough time to actually set everything up, then run some renders.

FMP – Week 4 progress

Proceeding from the previous week, my goals for this one were to start the sand simulation, as it was the only one I haven’t tried before, and update my previs, as the camera moved frantically and lot in the previous version.

Previs – version 2

Looking for various tutorials, I haven’t managed to find a lot on the sand, so just to introduce myself to the nodes and what various physical aspects do, I used a tutorial on a tire in the wet sand.

Sand tutorial

This was my Houdini scene set-up and various graphs that I made. The only downside of it was that I hoped the sand graphs would be created from scratch and every single original node that was used would be explained. However, in the end, a shelf tool for “Wet Sand” was used, which automatically set up nodes inside “sandGeo”, created a node “AutoDopNetwork”, where it set up the required POP particles nodes for the simulation, as well as created the “grain_particles” node, where the DOP network was read into. One of the useful features of the shelf tool is that it automatically creates the necessary connected relationships between nodes.

Houdini scene set up
Tire geo – importing the alembic, prepping it, and creating a collision source from it
Sand grains DOP graph
Render of the simulation

Now that I had a better understanding of how it works, I imported a modeled hourglass as an alembic file to Houdini, to start simulating the movement of falling sand grains. Then the file had to be prepared and some reference model shapes were chosen to be used as the sand source. After that, I separated out the glass from the supporting case, such that I could apply a glass material to the cone-shaped part so that the sand could be seen inside of it in the viewport.

One of the problems I did come across, was that usually when importing files from Maya, Houdini and Maya’s software have different world scales. Typically, you would apply 0.01 scale to imported alembic files. However, when I did so, hence decreasing the clock drastically in size, after applying the sand simulation shelf tool the sand grains seemed to be so heavy that they wouldn’t hold the original lattice shape and just press onto each other to form a flat sheet at the bottom of the hourglass. After trying to solve it in various ways, given that my knowledge of sand tools is rough, I decided to skip the de-scaling part and work with the enlarged version of the sand clock. But that would mean that the physics of my simulation would be far away from truthful in this case.

Hourglass scene set up
Sand set up for source (from the “dry sand” shelf tool)
Hourglass GEO prep and separation into various parts
Sand DOP network with values in POP grains node

Currently, there are a few problems and visual appearances that I am trying to solve (here using https://vimeo.com/481058293 as the video reference). Firstly, the way that the sand was falling from the top compartment was such that the grains were going to the center of the shape and fall down there, whilst keeping the overall shape of the top part intact with the glass and mostly not moving at all. Whereas compared with the hourglass in real life, the shape of the sandpile moves down altogether as the sand escapes through the hole.

The values also affect the sand pile at the bottom: the sand keeps falling and not forming the perfect small hill that we would typically observe. Instead, the grains level out but push the ones at the bottom to spread and thus making the grains that are in touch with the glass to move up.

FMP – Week 3 progress

Based on my previous idea of an office area, for my updated version I tried to think about unusual office accessories which one can find around such a place. Storming for ideas, I compiled a moodboard focusing around various simulations I could accomplish.

Moodboard

The final result was based around 4 different points of simulation: an hourglass and the sand grains, a glass case with burning fire inside of it, a shape that has attached (or magnetized) particles to its surface which circle around it in various paths, and swirls, and finally a backflow incense burner. Once I had a clearer goal in mind, I made a storyboard, from which an animatic was created.

As my story started to form a definite shape, and it was decided which models were to be used as a reference for modeling, I started to model those in Maya before they could be exported into Houdini. Given the previous goal of creating previs, I also searched for free or provided for students assets of other required things like desk, laptop, books, and a chair.

The fire case was inspired by work I did in Term 2 for the collaborative project. At the time I placed inside a pre-modeled big display case burning fire, as part of abstract and unusual museum pieces one can find in an Art Hall. Looking back at it, now that I’ve spent more time understanding and learning Houdini, I wanted to perfect the original work and bring more realness and quality to it. As an extra bit I thought of making, was a crystal (similar to the one from the picture above) and have the fire burning on top of it, with small licks spreading across the surface.

Fire case reference from Term 2

https://www.instagram.com/p/CGgCLfNJw1M/ – Swirling particles original idea

Now that I had my rough scene set up, I started placing the lighting and figuring out what camera movements I could use and apply. For better visualization, renders of a few frames were made.

Hand placed lighting set-up
Hand placed lighting set-up
Hand placed lighting set-up
An HDRI based lighting

Finally, I made my first previs version of movement around the scene and exploration of all the various accessories on the table.

Previs – version 1

FMP – Week 2 progress

Following up on past progress, I started modelling the cup that I would be using in my shots from the real-life version of it. Other than focusing on the actual FX simulations themselves, I really wanted to push myself further in understanding how to integrate the 3D cup and simulations with the original lighting, surroundings and environment. With that in mind, I started researching and reviewing the previous lectures we had, in order to figure out what would be the correct way to shoot the footage, and how to obtain the lighting information, as that is the key for most accurate physical integration. After all, it’s typically the lighting that gives away CGI to the audience, without them even knowing what is looking so different and unusual.

Although the plan to start liquid simulations was for later, I nonetheless decided to give it a try and attempted following one of the tutorials that I found on the Gnomon website (Introduction to FLIP fluids in Houdini). It was a good decision as I learned that it was impossible for me to use the liquid idea, as the technical aspects of my computer weren’t good enough to be able to process it. Coming across this newly-founded problem, it was critical that I would re-assess my idea and come up with something different whilst I had the time, which would suit my computer processing abilities.

FMP – Week 1 progress

Towards the final term, I have decided that I wanted to focus on FX simulations and hence I started working on ideas of which type of simulations exactly I wanted to try. From my long-time idea about interaction with all 4 elements to focusing on a specific type of element, I landed on wanting to experiment with liquid simulations. Working around some kind of storyline, I wanted to have two main plot ideas of relaxation and then shock, in a contrast to each other. Within each emotion, the FX simulation would have been the key element.

Setting the mood of an office environment, my story was based around a worker who decided to take a break and make themselves a much-deserved cup of coffee. The process of preparing ingredients and combining them all together would have been the moment of relaxation: with a culmination when they added milk, thus having a shot seeing how the milk would fall into the darker liquid of coffee and mix together. That would be the first main moment of liquid simulation, specifically a combination of two and conveying precisely how the liquids would interact with each other. Followed by a visual supportive action of the worker getting a few seconds of happiness and relief, their next step would be going back to their space and sitting down in the chair. As they would have sat down, the hand with the coffee would start placing the cup on the table but miss out the edge of it by a few centimeters, thus misplacing the cup, The following few shots would have been a slowed-down version of the cup falling and its content spilling all out, maybe taking a shape of something mid-air. Finally, the cup would fall and break, speeding up in time and ending the story. The last actions would be simulated as well, both the unusual shots of the falling cup with moving liquid and its crash.

Storyboard, 1-12
Storyboard, 13-22
Liquid morphing into a shape reference.
Liquid taking shapes due to external force, such as sound waves – reference.
Liquid mixing up together – CG reference.
Ink mixing ideas – reference.
Milk mixing with tea – real life liquid mixture reference.

After creating the storyboard, I made animatics and filmed the first version of test shots, to see the flow of the story, how it would develop, and if it would show correct emphasis on my VFX work. The peer-review helped me to understand that I had too many shots prior to the first fluid interaction shot and that I would need to refine the story. It was also pointed out to give more thoughts to what kind of shape I wanted the fluid to take, maybe it would be something personal to the worker, a state of their troubled mind or worries.

Having received the feedback, I now knew what my next steps would be and which parts of the story and background I need to give more consideration to.