[SOLVED] Is there a practical limit to size of projects?

I’m working on another terrain project and it’s coming in at a 476mb .blend file with 4million faces.

It’s crashing when trying to run Armory Player in Krom and the exported Windows Krom crashes when starting the .exe

Running Armory Player (Browser) surpprisingly starts up, but appears to not load the material on mesh.

What are the expected limits for the engine - file size wise?

If you divide this up in 10 by 10 squares and use LOD all should be fine.
Even in Unity this wouldn’t be of any practical use being all in one. We aren’t yet on the unlimited “do what ever ones want” age, we have great graphics on games but still with a lot of tricks to get there :slight_smile:


There isn’t like a known limit on file size or anything like that, but Armory will load the mesh for an object all in one go if it is all one object, so loading all of those faces at the same time is probably not the most efficient way to do it. Especially because you don’t actually need to see all of that at the same time.

If your world is split up into small enough pieces and Armory can then decide not to render or load objects that you can’t see, I think you could get away with quite a large world.

1 Like

I don’t think there is any limit(mesh or file size) and armory should perform well even with 4 million faces
From @lubos’s tweet on armorpaint(pbr painting app made on top of armory):

and it been 7 months since that post, so except it to be improved a lot :wink:
Can you post the error you are getting when krom crashes or paste .blend file so that people can check it, it def might be something other than file/mesh size issue.
(p.s. Armory’s performance is way better than unity’s)


So after a bit of testing, I think it’s the resolution of the texture that was causing the errors rather than number of Faces/Tris etc.

I was getting this within Chrome dev mode:

And then this in console when exporting to Windows ©

So I set about finding out the maximum resolution that will pass the ‘Armory Player’ test.

Dimension Terrain (MB) Texture (MB) Tris (Million) Krom Browser
20000 89.2 80.7 12.5 fails fails
17500 67.5 61.6 9.5 fails fails
17000 64 58.3 9 fails fails
17000 64 35.4 9 fails fails
16000 55.7 51.3 7.9 ok ok
15000 45.5 42.9 7 ok ok
10000 18.8 19 3.1 ok ok

The highest I can get it to is 16000 x 16000, which is still fairly impressive.

But clearly as has been mentioned above I need the benefit’s of some kind of LOD setup & breaking up terrain into smaller sections. Is there any documentation on how to setup LOD with nodes in Armory?


There is a simple LOD example you can check out. It automatically calculates the detail level based on distance, so there is no need to use nodes or Haxe logic.

1 Like

Thanks zicklag,
Just had a play that is very cool, I’ll have to test asap - maybe I’ll write a big 1,2,3 in the middle of each tile so I can spot when it’s LOD’ing

And also have to figure out the best way to chop up a large terrain mesh!

This is clearly why I hit the 16k limit:
My GTX960 is in that 20% but it won’t go any higher than 16384 x 16384

1 Like

manually cutting up terrain for LOD sounds pretty painful.

Seems like there should be some specific support for marking a mesh as a “large scale” terrain mesh, and then have Armory3d automatically split into chunks and generate LOD. for each chunk… either using heighmap techniques like geo-mip-mapping, or more general mesh-simplification techniques.

1 Like

Your not far wrong to suggest it’s painful ! I’ve been battling this for days now - my main post trying to tackle it is here:

You can script the cutting up of terrain with python so no issue there.

I’m close but still getting edge anomalies, possibly due to floating point conversions - or some odd rounding going on. It’s likely because i’m trying to deal with such large mesh’s.

It would indeed be lovely if Armory dealt with LOD’s specifically for terrain, but at the moment I’m needing BlenderGIS to be able to import accurately real world GIS assets like sat data and heightmaps. I’m sure there is a way to work between the 2 plugins, I’m just not familiar enough with how blender handles large data sets.

Progress so far:

1 Like

I thought we were thanks to Unreal5’s Nanite system…

1 Like

Yeah… but my reply is from 2019 :laughing: They probably were just thinking on Nanite back then.
Even so, Nanite has its limits.