Click here to view the design doc!
For this project, we want to explore tools like Unreal Engine and Houdini to create a procedurally generated underwater environment. We were primarily inspired by Atlantis concept art made by various artists.
Specifications:
- Different styles of procedural buildings; Greek-inspired architecture
- Big landmarks such as coliseums
- Breaking simulations on architecture
- City structure with walkways
- Niagara system fish flocks
- Different fish such as jellyfish, stingray, sharks, etc.
- Ornaments like benches, streetlights, etc.
- L system kelp & coral
- Water caustics
- Procedural materials: Mossy & damaged marble; Sand w/ starfish, barnacles, fossils etc.
For this milestone, I implemented some basic building structure to work with the map layout.
Each building is built off a base, which is an irregular polygon with some number of vertices. Each cell generated by the voronoi structure from Neha's implementation this week is used as a base for a building.
To start with, I calculate the area of the base, which will determine the type of building spawned by the voronoi cell. These sizes are small, medium, and large. Small "buildings" are basic park structures with plants/benches, medium buildings are normal houses, and large buildings are houses with courtyards. This week I implemented houses with courtyards because those are the most difficult, and I can build medium-sized buildings from them.
In this example, I'm hard-coding the base as a 20-sided circle, and generating a large building on top of it.
First, I do some extrusions to get the base thickness of the wall. Then I search around the input base for an appropriate area to place the entrance to the courtyard, which is pictured here.
Using more extrusions and a chain node around the perimeter of the base shape, I generate walls and windows. I made sure to add a check for the courtyard entrance so that no windows get placed there. Also, I decided to create each individual wall, since I plan on adding a destruction simulation later and want to show the structure of the house where the roof caves in.
Here's the draft for a tiled roof, along with placements for plants and such in the courtyard! I plan on polishing the building up much more in the next milestone.
Here's another draft for a pillar tool that I plan on using in the next milestone.
For the first milestone, I followed along with this tutorial about PDG's in Houdini. This tutorial went over how to construct a stereotypical grid-based city using Houdini PDG's. In order to follow our Atlantis theme, rather than a grid, we used two circles that were broken up by different Voronoi fractures. The bigger voronoi fracture created the overall layout of the city, while the smaller voronoi fracture further split the larger shape and created smaller streets and tiles on which to place our buildings/structures.
The process of creating buildings on the tiles was done via a topnet. Which can be seen here:
Here is a picture of the buildings in our city grid!
I also made some additional assets (that are not yet in our city):
Lamppost:
Window (from Homework 3):
Although I originally planned to model some fish and create the materials this week, I actually spent all of it working on the house geometry (and offloaded the fish models to Neha, sorry...). Right now, the houses are built off voronoi cells, but Elyssa suggested that I use labs subdivision to create more rectangular lots which I think would be much easier to work with.
This week I realized a pretty big thing I didn't like about the scene, which was that scale-wise, it felt more like a "village" than a town. So I also expanded on the city structure by giving it some sick walls to add scale to the scene.
Next week I'll refactor the house-generating code to have it work with the new rectangular lots. Here's what the houses look like currently (without Neha's assets). They're not included yet so all you see are empty lots, but they'll be added in the final output.
Finally, I threw the model into Unreal to do some lighting and rendering stuff. I created a distance fog material to make it look more like it's underwater. Here's a demo video as well as a screenshot!
Atlantis.-.Milestone.2.Demo.mp4
I'll probably also add lots to the more distant parts of the city, as well as include Neha's awesome assets in the house generation! After that, all that's left is the environment, rendering wizardry and texturing.
Unfortunately, I did not make as much progress as I had hoped due to being away at a conference (my apologies, Ray : ( )), but I plan on getting more things done during break!
I mainly worked on some additional asset creation:
kelp.mp4
(The kelp was created with the help of this tutorial series: https://www.youtube.com/watch?v=c8vst8202dI&t=236s )
I will focus on adding more vegetation (like coral, perhaps) and fish! I will be modeling and rigging a shark, which will be fun.
This week I finalized the house condtruction and city generator, implementing Neha's wonderful assets. I also did a bunch of UV unwrapping.
I created three different types of houses to give the scene visual variety!
I also created a roof tile and stone block material for the houses.
Actually, the most important part of this week's tasks was to get everything into Unreal. I already got the pipeline figured out in in the last milestone so I didn't run into many major issues, but I found it really tedious...
In Unreal, I messed with more of the shading, applied the textures, made niagara system fish schools, and planted foliage to create a niceish scene.
I added some additional elements to our city! The following were not procedurally made but rather modeled and textured using blender and zbrush:
There is also now a procedural coral generator (which uses an l-system):
Can be found here: https://docs.google.com/presentation/d/1kqFuRXgb6lPP4pP7EWAIM0FR_dFDIZgKtF1_NOb8s4E/edit?usp=sharing
Here is a quick summary of what we accomplished:
We first created a city layout for our buildings to be placed on. This layout was created using PDGs in Houdini. We followed the official PDG tutorial and modified it to our liking. We mainly added logic to create the grid procedurally (the original tutorial used a PNG).
Our logic involves using a Voronoi fracture to create the general shape and then lots subdivision to ensure we still have a city or town-like structure, but with an added degree of organicness.
Ray designed three greek-inspired procedural buildings to populate the city, which build off of the generated lots, as well as a wall around the city's perimeter.
Neha created some additional assets for the city/general atmosphere of an underwater environment. These included procedural assets (coral, kelp, lamppost, building window, building door) and non-procedural assets (whale, shark, clownfish, bench). The procedural assets are all parameterized.
Then, we both created procedural textures using Substance 3D Designer. These materials include: sand, marble, stone, roof tiles, and aged wood.
Finally, our project came together in Unreal!
CIS.5660.-.Final.Project.mp4
We are happy with what we accomplished overall for this project! We fulfilled most of our initial objectives and have a finished result that we are both very proud of. It was also a fun experience to try new software and explore new workflows in software we are comfortable with. (In Neha's case, I have never used a substance designer before, and I definitely want to explore it more in the future.) (In Ray's case, I'm pretty new to doing lighting and rendering in Unreal.)
For future work or aspects that we wish we had time to include, we originally had a vision of a ruined or abandoned city. However, the destruction sims would have been beyond the capability of our computers (sadly). We were also hoping to game-ify the project slightly to allow a player to be able to traverse our city and possibly interact with various elements. We also hoped to have a 'town center' that would be a coliseum. Our PDG does allow for a town center; however, we unfortunately did not have the time to create the coliseum (either procedurally or non-procedurally). We additionally decided not to rig our fish in order to focus on polishing/fine-tuning other aspects of our project.
Tutorial for the kelp: https://www.youtube.com/watch?v=T2Xmff4WqPc
Tutorial for coral: https://www.youtube.com/watch?v=h8cEtur8_Sw&t=3s
Tutorial for procedural wood texture: https://www.adobe.com/learn/substance-3d-designer/web/creating-old-wood-planks-in-substance-3d-designer?locale=en&learnIn=1
Tutorial for procedural marble texture: https://www.youtube.com/watch?v=zGOLLSQnvYo
Tutorial for procedural sand texture: https://www.youtube.com/watch?v=oPauF1fwZuU
References to create stone bench: https://p3dm.ru/files/furniture/other_furniture/11266-stone-bench.html
References to create the whale:
- https://uk.pinterest.com/pin/366832332142578260/
- https://stock.adobe.com/images/blue-big-whale-top-view-watercolor-painting/146278230
References to create the shark:
- https://www.istockphoto.com/photo/great-white-shark-isolated-gm863397250-143145391
- https://www.alamy.com/great-white-shark-illustration-on-white-background-image459614990.html?imageid=11ECBDD0-B6A5-497A-8318-5DB602B985E7&p=1250975&pn=1&searchId=6c25fd81538205d40c7e6285a16d448f&searchtype=0
References to create the clownfish: