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.