Website powered by

Break it down - God of War Mystic Gateway

Article / 14 February 2024

Why though?



I was playing God of War Ragnarök during Christmas break, and I really liked how the mystic gateway animation felt. During one of the play sessions, the developer side of me woke up and thought, "Hmm, I wonder if they just reversed an RBD sim for this."

Like any technical artist out there, we like to tinker, so I thought, "Let's try it out! I'm curious how this was made." And I did. I created a fast prototype in an hour or two, proving that reversing a gravity RBD sim would be enough. And that was it. I moved on to the next thing that caught my attention.

One month later, I stumbled upon the reference photo I took for this test and decided I could spend a bit more time on this and maybe write a blog about my approach to it.

While this won't be anything fancy or uncommon, I think it's interesting to see how others approach problems and how it can sometimes help with other unrelated things.

Before I ramble onwards, two disclaimers:

  • This past year I've been learning Houdini, so my breakdown will focus on a Houdini workflow(although similar concepts exist in other DCCs as well).
  • This is a fast prototype, where i don't care about polish or quality, its just to prove a concept.

First step, references!


Break down part

Looking at the images I noticed:

  • There are 2 states (Active and Inactive), we can also see that there's an archway shape and some rocks following this shape.
  • Rocks are following the normal of the curve towards the inside and bend with the curvature.
  • There are gaps between the rocks and the wood frame and that makes our life a bit easier to recreate this.

This gives me plenty of information on how I can start, but lets also look at the animation and see what our model needs to support in terms of movement.

  • There are 2 big rock pillars intact and not moving (left and right, one a bit uneven)
  • Each individual plank fracture independently, indicating it's probably split into its own element.

To-Do List:

I need a rock asset, an archway made with it, a wooden door made of vertical planks, a fracture for the door and an RBD sim.

Rock

This was easy, and I cheated a bit, I downloaded a rock from Megascans. While Houdini can easily generate some, I thought this is not the real focus here.


Archway

For the archway, I created a spline that i mirrored and remeshed, where a copy to points was used to duplicate and scatter the rock asset. To make it look less repetitive I'm adding some random scale and a random rotation, while still trying to maintain the rocks rotation towards the curve interior.



Wooden Door

Since I knew I would need to fracture the wooden door, I wanted to have separate planks created from the start, so I don't have issues with newly created faces. For plank creation, I created a shape from the archway initial curves, bridged the missing gap, and using a boolean from the door shape with boxes created as planks it results in planks following the archway shape.

Wood Fracturing

Fracturing the wood planks, I went with the old approach of scaling down the mesh into a Voronoi fracture and then scaling it back. This workflow creates some wood-like splinter fragments. Afterward, I handled the cluster creation manually by grouping up splinters that are close by.


Simulation

Tearing down using a RBD Bullet solver, just an RBD Solver with gravity on.

And now final step, reversing the simulation of the RBD solver.


This was a fun thing to tackle, especially since I didn't have to worry about the final quality/polish of it being in a real production environment.

I want to emphasize that having a quick prototype does not actually represent the entire amount of work needed for an asset to be used in a shipped title. It's more than just having a working animation; it's about visual, gameplay polish and production iteration. It needs to work with gameplay, collision, metrics, combat, VFX, and audio setups. It needs to work in a full game environment and, more importantly, be iteration-friendly.

I always like to find things that I could have done differently or improve on, and for this mini-project, it's no different. This is what I would have done differently or had a different approach if it were in a real production environment:

  • Rock generator that adds that visual noise as repetition is still pretty noticeable in my scene(or more rock assets to scatter) even if i tried to hide it with rotation/random scale etc.
  • I would like to find a nice way to check intersection between the rock points, as the current setup i was just lucky with the seeds and scale of rocks that i used, my current setup was NOT production friendly, and would have required more work if an art director or shot supervisor would have requested lets say...add 1 more rock. *flip table*

What are your thoughts on this approach?
/Andrei

P.S: Adding also the Houdini network view.


Report

Practicing my Python/PyQt and results

General / 18 December 2019

Python practice


Got a cold/flu last week so I stayed home... so obviously like any other sick person out there I decided with this occasion to invest some time on my python skills.


I wanted to develop a tool with a basic but cool ui for it relatively fast so I went for a simple idea of a Composition Helper tool.

Give the option to the 2d/3d artist to snap a screenshot and then Mirror/Blur or add a rule of third grid on top.

Took this opportunity to use the QtDesigner for Pyside and get a more modern UI look.

Here is a fast demo how this works:

What it does:

  • Takes screenshots of both displays (only 2 supported at the moment)
  • You can select which Display to work on
  • You can Mirror vertically (make scene composition is better if mirrored)
  • You can Blur it (spam it even) to see if readability is good
  • You can "spawn" a rule of third grid

What I could have done differently/better:

  • Add a folder selection for where the screenshots will be saved
  • Add a slider for how strong the blur can be (instead of spamming the button)
  • Draw on top of the image for grids instead of adding another image (even if currently its way faster :D)
  • Add the option to have dark or light theme instead of just dark.
  • Scaling/Resizing the window would resize/scale the screenshot/ui too.


Project git link: https://github.com/ianistor/CompositionTool 

Stylesheet credits : https://github.com/Lumyo/darkorange-pyside-stylesheet 


If anyone is interested I could make an exe/installer for this so you don't execute the python code everytime.

If not it was really cool that I still haven't forgotten everything regarding Python and even if my code its not the best, it works and it achieved its purpose.


I'm hoping with this Christmas holiday I have more time to invest in Houdini/Python, so who knows? Maybe i'll post something else soon...

Have a nice Christmas and a Happy new year !

/Andrei

Report

Post E3 and on-wards

General / 19 June 2018

Had the pleasure of working on E3 this year on The Division 2.

My main focus was on setting up destruction, complex graph setups for props while helping people with random issues(aka firefighting) among other things as well.

Another cool thing I managed to do is to add as much dynamism to props as I could (Ivy/cloth simulation, cover wiggle and metal plates on the wing moving when agents go on top of them and making stuff react in some cool way when shot at, for ex the shopping cart wheels).


Crrrrrrrrrrazy exciting and looking forward expanding my knowledge even more.


Shout out to the E3 Team and all the people who stayed over or supported us in order for us to have an amazing trailer :)

Let's ship it! 

*Assets are not created by me, I've only made the graph setup or modified the assets in minor/some way*





Report