Thesis: Research and Process

During the summer I’ve dropped down a few questions that I could explore for the thesis. These would either come up randomly during the enjoyment of some visual work or as I was checking off the mundane actions of my “To Do” list. One of the questions was based around the famous trilogy “Lord of the Rings”, specifically on the advancements that were achieved in the production. The other kept coming back towards the piece made for our Term 1 submission, specifically the technology behind de-aging, its development, and ethical questions that could be raised.

As the final term approached, I’ve been inclining towards more of the latter idea, having already started the research. It’s a very new topic, so there haven’t been written many academic pieces about it and the research was eventually based on countless online articles that I’ve found. De-aging in itself is one of those specific visual effects practices that are not very common and when it’s done is always discussed upon. Change of scenery from Earth to somewhere on Mars or to an entirely made-up world, use of countless new creatures, effects for portals or magical powers became way more common and almost routine in cinema, that it doesn’t come off as a surprise or something extraordinary for the audiences. The discussion and critique would only be constant if VFX turns out to be very badly done or, on the opposite, quite spectacular. Yet, when we would see faces so familiar to us, but de-aged, that would for sure stir up the new emotions and provide various reactions, followed up by another Twitter explosion of comments about it.

That may be the reason why I settled down on the topic of de-aging and not my lack of satisfaction or acceptance for the original piece I made for Term 1. As I compiled web articles, that appeared to be written by accredited cinema or VFX journalists, I started noting down any facts that were to be mentioned and discussed upon in my final work. I found a good article on an Artlist blog about the history of tech development, but it was very much summarised and had very little detail of how VFX was achieved. Other than that, it was hard to find a specified source that guides how the technology started off or developed throughout, so I noted down the timeline and tried my best in presenting it in a well-written manner to the reader. This helped me to narrow down the structure for the thesis and separate it into various sections.

Diving deeper into how films were made, the process and research behind each movie were very interesting to explore, but I did note that tedious listing of facts behind the scenes made my essay ever so slightly boring and hard to follow. So I tried breaking it down with my own evaluation, thoughts, and scrutinisation of what a specific achievement would mean for the industry. It didn’t come to my realisation that the hardest section I had to write about (the ethics and morals of it, to be precise) became my favourite out of it all, as I pushed myself and really thought about raising questions, which I believe should be necessary for the future of the industry. Coming back to the many articles I’ve read, it was important to separate out and highlight what various industry professionals themselves were asking, in order to build a greater foundation for the discussions that are already taking or at least start to be taking place.

Around two weeks before the deadline, I had my first draft, but it still appeared to be very raw and monotonous. I haven’t mentioned any arguments that I was taking, so it was crucial to decide upon what will I be arguing about. Going back, it was easier to notice any inconsistencies or lack of idea flow to my thesis, so I focused on adding or adjusting the sentences, to make the work more readable and easier to follow. Going over the entire essay helped me to word my conclusion better and more precisely, as well as adjust any sections that I wasn’t sure about or which were too long.

It was in a painstakingly long process, with a lot of slow or very fast pacing weeks. However, I enjoyed it, as it helped me to strengthen my skills in research, evaluation of a movie, scrutinisation, writing skills and generally made me question a lot more about specific processes and their intentions or future implications. I want to thank Laurie, for the help and feedback that he provided us, as his ideas and guidance very often would help me out getting over the obstacles.

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.