Tenochtitlan (wip)

(cover image:)

I’ve started work on recreating the city of Tenochtitlan.
Not just the city, but it’s surroundings too, with lake Texcoco, and the surrounding towns.
The idea has been bouncing around in my head for a while now, but with the power of Geometry Nodes I think I can make it work.

I want the scene to hold up to about what you would expect from drone or helicopter footage.

The city is really quite large, housing up to 200.000 people at it’s peak.
It’s situated right in a lake, built up of squares, connected by land-bridges and with farmlands all around similar to Dutch “polders” called chinampas.

I started out with using height data to reconstruct the lake. The lake has been drained, and Mexico City replaces it.

Along the way I’ll share some details of the progress I’m making, so you can see me struggle :slight_smile:

26 Likes

Here’s a first geometry nodes thing:

Chinampas!

18

The chinampas will be built up from 2D splines, which I will create in Inkscape or something.
The input shape is slightly distorted to create the basic shape, and then trees are placed along.

One small house is placed inside, which was quite a pain to get working. Not only that, it is oriented along one of the edges of the spline to make it look less random and more organized.

This same direction is also passed along as an attribute to be used in a shader - this way I can slap on a farmland texture approximately in the orientation of the chinampa - you can see it in the gif when I rotate.

It’s a start!

18 Likes

I hope this makes any sense:

On each curve “island” I’m generating one house.
This position is passed to a material via attributes.
The direction of the first curve segment is also passed along.

This way I can generate farmland patches that center around the house, and are oriented roughly in the general direction of the island.

tmp

11 Likes

Generating a terrain mesh using an importance map, giving me just the right amount of detail where I need it.

Once again, would have been near impossible without geometry nodes.


10 Likes

Very interesting thread. How do you achieve adaptive subdivision on the terrain? Could you share your node setup?

For sure.

I got the trick form this video:

So what I do is Distribute Points on Faces with the black/white map shown above, put single spline points on those points, and then use Fill Curve (Triangles)

It’s a weird trick but works very well.

Here’s my setup, the input is just a plane with a UV map.

4 Likes

For the longest time I was struggling with the trees on the terrain.
The scale of the scene is much to big for individual trees, even with tricks like imposters and cards.

But just slapping on a color with some noise is also not good enough.

I think I’ve found something?

Here’s the first attempt:

tmp

Essentially, I generate little view-space oriented planes on a mesh in a shader, to which I can apply a tiling tree texture:

tmp

I hope what I’ve done makes any sense :sweat_smile:

23 Likes

Fantastic. Thanks for sharing the techniques you are using.

:smiley:

Despite the low sample rate, it does feel like a dense forest :slight_smile:


I just have to work on the transition from forest to open area, but I think this weird technique can work.

9 Likes

@ThomasKole, really great solution! May I ask, where did you get the tiled trees from? May there be other species of trees like this out there? I preferably go for cc0 ofc…

PS: textures.com if I guess right, maybe? :grin:

I made them myself:

With a tree model I found on BlenderMarket :slight_smile:

3 Likes

Popocatepetl and Iztaccihuatl, the twin volcanoes:


Kinda happy with how my trees can creep up the mountain

tmp

17 Likes



Made some changes to the terrain mesh, it tesselates better now.
I was struggling with adaptive subdivision, but I don’t use it anymore.

11 Likes

Great job!
I would be really interesting and thankful for knowing how you are doing this. Would be great if you could share a bit more about this shader.

1 Like

It’s not Popocatepetl if the Tepetl doesn’t Popoca, right?
I’m using the CC0 “high res smoke plume” from https://jangafx.com/software/embergen/download/free-vdb-animations/

Just one frame though, as the original animation is immense.
Even one frame is >20mb. Might have to find a way to compress

10 Likes

Hi Thomas, this looks brilliant! - and is exactly what I need for some massive forest landscapes I’m doing for a small movie project - please put me out of my misery and reveal how you are generating the “little view aligned islands” - I spent the last couple of evenings trying to figure it out with various combos of texture coordinates, vectors, normals, geometry nodes, drivers… and failed totally! - cheers, Stephen Norrington

@Artproject @Hoverkraft

I’ll see if I can make a quick video

2 Likes

Thanks, much appreciated. Don’t stress yourself, a simple paragraph and maybe a node tree about these voronoi view aligned islands and the in shader dithering would be great. I think I remember seeing a video about the second topic on youtube from way back when eevee didn’t have it.



I was dealing with two hard to track cycles bugs:
Regarding anisotropic volumes: https://developer.blender.org/T96153
And regarding volume reflections: https://developer.blender.org/T96204

But with those out of the way, I can proceed.
I’m working on the water and further working out the surrounding forests.

Sorry I haven’t yet gotten around to detailing my view-aligned island trees, I barely have time for the project itself :sweat_smile:

Once I find the time I’ll write a description.

7 Likes

@Artproject @Hoverkraft

Here’s a quick write-up on the view-aligned islands.

2 Likes