Is there a practical limit to size of projects?

#1

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?

0 Likes

#2

This is the kind of stuff that makes one run away from Armory3d. It looks so grate but no info on what it can do really.

I’m not sure (I’m a noob here) but Unity have a limit of 65000 vertices per mesh as that is what Unity gives a error message if you try going above that. So if you have a 4million faced mesh and try and run it in a game engine? Unity might be crap but dam that 4million mesh might be hard to load?
It sucks as I love the hole concept of this blender integration and Haxe + Bullet physics. But no way to learn how to use the engine. Like yea it might do FPS games but is it going to be able to make a GTA kind of open world? Or what is a good example of where the game engine itself can’t limit what you can or can’t do I mean.

(yes I know it’s not production ready) I hope the best for this game engine but dam if it looks like a flop from how it looks now. What can it do actually? Not graphics but world space stuff?

But just because if Unity is anything to go by. 3 vertices = 1 triangle. 2 triangles = 1 square. What a face now happens to be I’m not sure. But!

6500 / 3 = 2166 ish. Let’s say 2048 faces.
Or more likely. 6500 / 6 = 1083 ish. Let’s say 1024 faces.

So not strange if 4million faces in a game engine might not just work. Why? Don’t know but you have to split it up into chunks anyways to LOD the terrain mesh. Soooo why even have a 4million faced mesh??? And if it’s not 1 mesh and maybe 100 meshes I who’d be worried if it can’t handle that…

But agen I’m just a noob. 1024 faces sounds VERY low. But ones agen how dose a Unity game look like most of the time? XD

0 Likes

#3

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:

2 Likes

#4

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

#5

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)

2 Likes

#6

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:
image

And then this in console when exporting to Windows ©
image

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?

2 Likes

#7

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

#8

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:
https://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE
My GTX960 is in that 20% but it won’t go any higher than 16384 x 16384

1 Like

#9

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

#10

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