WIP - Guam Theatre
-
No. CE doesn’t export OSM data.
OSM has export functionality and CE has import functionality for OSM exported data. CE uses a simplistic interface to import the OSM data to CE.
You can export OSM by web manually or by using their API or other GIS tools.
Now CE by using it’s integrated python engine can report the building positions which actually got from OSM data.I’m 1000% Sure those 16000 buildings are one object.
And one of the reasons I say all those years that this compromise is needed.Στάλθηκε από το MI 5 μου χρησιμοποιώντας Tapatalk
-
From my experiences done in POH in Gibraltar area, (thanks to Arty’s teachings ) it is actually possible and relatively easy to create huge cities as a single objective and, in fact, provided we create very low poly buildings, the fps impact is close to zero, even on a hot campaign environment.
What I found hard is to match each building elevation with the terrain elevation, but I’m sure you guys have figured a simple way to do it already…
-
OK so CE is eventually exporting OSM data? I guess that’s understood now. So no other way to do what I want but to learn how to export OSM data
16K is a huge number, but 16K separated building objects will FOR SURE cause a FPS hit, some FPS hit. It doesn’t matter even if you draw identical boxes and untextured. Assuming this is BMS you are showing, 16K buildings mean 16K draw calls, which will cost ~2ms on GPU alone, and so many draw calls, the CPU will also spend some cycles for preparing those. 2ms for 60 FPS means ~6-7 FPS drop at least.
Here are 16K “buildings” all in view (Identical untextured cubes actually), these cost ~2ms with 16K draw calls, but with single draw call, only ~0.17ms :mrgreen:
So if you have no FPS hit, there are 2 options:
1. A very small number of these buildings is in view and actually rendered (As the engine will cull models not in frustum)
2. The 16K buildings are 1 objects and drawn in a single draw call –> Make sense for no FPS hit.Cheers!
No. CE doesn’t export OSM data.
OSM has export functionality and CE has import functionality for OSM exported data. CE uses a simplistic interface to import the OSM data to CE.
You can export OSM by web manually or by using their API or other GIS tools.
Now CE by using it’s integrated python engine can report the building positions which actually got from OSM data.I’m 1000% Sure those 16000 buildings are one object.
And one of the reasons I say all those years that this compromise is needed.Στάλθηκε από το MI 5 μου χρησιμοποιώντας Tapatalk
@Nuno:
From my experiences done in POH in Gibraltar area, (thanks to Arty’s teachings ) it is actually possible and relatively easy to create huge cities as a single objective and, in fact, provided we create very low poly buildings, the fps impact is close to zero, even on a hot campaign environment.
What I found hard is to match each building elevation with the terrain elevation, but I’m sure you guys have figured a simple way to do it already…
Hmm Gents lets start here:
@ I-Hawk yes “ONE DRAW CALL” as I have stated many times in this Fora and others. That is all she needs for these “STATIC” features. She only needs to load to MEM once. The problem is that unless you clean up the Parent to One LOD deagg’d at 60000 she will try and draw the lesser LOD’s that exist in the Data. Don’t need them unless the Feature is a target with VALUE on the Objective i.e. an Ammo dump or Supply, basically anything that produces DATA for resupply and attrition in Camp.
@Arty……LOL…You are 2000% CORRECT…LOL!!! ONE Object in Max That contains (100,00 polys) that becomes ONE feature in Falcon with ONE LOD on an Objective and the feature only needs to be drawn ONCE in DX
@Nuno If CE is giving you a problem matching Shapes to your Terrain Layer then try this option in CE…highlight your Terrain and click on Match Terrain to Objects…Lemme know if that solves the problem…
Have FUN,
demer -
Maybe Nuno means the falcon terrain.
For poh I’m sure u have the initial files e0 e2 iirc make them psd and then png. If u use the low res on big city the pic might be like 1cm in your sceen in CE.
So u must scale it up to fit. Also overlap the falcon roads and falcon terrain to easily spot where your city will be placed. U can alter the falcon terrain tiles to create refference points or a screenshot with the objects from terrain editor so to create the holes so that already placed buildings can be used or be used just as reference. U can remove the falcon buildings - targets and from CE in 3ds max isolate some buildings, export them individually, import them in falcon, place them to the exact position with FE and set them as targets with damaged and destroyed models.
What I was doing was note and use square selection when I import in CE the sat terrain image and topo and OSM values. If u do it repeatedly CE keeps the initial square selection so each time u get the exact same area.
Some times CE freezes in the process so u must start over.
When u import if u observe u can import and height data, using low (I said loooow) resolution u can mimic the falcon heights, not exactly but close. Now on the options after ok u will see and the option for terrain to snap - match to the imported height map.
U can always do it later as easy as Demer said.Now for the one object for some xxxxxx buildings since it gives such a good fps hit we can benefit from it.
Now if u have the crazy time u can export each building from 3ds individually and flood the database with what? Some millions entries?
Sure u can create some let’s say 50-100 buildings and import them in CE as obj. Then instruct the CE to use only those. That way u can reduce the zillion entries in DB for individual.
But those 50-100 buildings library must be triple (normal damaged destroyed) so 150 - 300.
Now since u will see all that exhausting beauty u will want to place and realistic buildings that are well known in some major cities, some stadiums, etc.
All those xxxxxx buildings must be placed individually in falcon editor in the objective… Lol yeah right.I-Hawk most probably is looking for something like that to do it code wise, maybe like get the OSM data for buildings position use the buildings library and spread them - place them to those points. I assume. That way u have automated city creation based on realistic data in no time. If that’s the case well it’s a good thought. Actually CE does the same thing kinda and it’s the most painful process. Pro teams that create exact buildings must place them by hand which takes years for large teams and large cities.
In the past I posted a link where the whole Berlin data and 3d is public. U can view the whole city in 3d in web with a 3d view plugin for web browsers. Well it took them years for just one city.
Now for the one draw call again. The roads in CE can also be exported as one object. Also the LOTs. LOT is the base of the buildings. Like the backyard the pavement etc. That way city terrain tiles are obsolete. Which is more fps hungry?
In CE u can procedurally create road bridges that we can’t think off the detail level and place them to the exact position . Just create the roads , select the area , lift it and assign the rules… There bam one bridge ready. U can do it and more custom , declare bridge start bridge end and curve it lift it what ever. Oh and have a road passing under, or make a lifted ring road conjunction.
Street signs that we see in Tom’s theater, lol just places them. Now if u want beer that way directions on those signs well lol.
Another issue is when u don’t have the OSM data. North Korea?
Somebody stop me, I can go on for ever… lol
Στάλθηκε από το MI 5 μου χρησιμοποιώντας Tapatalk
-
2. The 16K buildings are 1 objects and drawn in a single draw call –> Make sense for no FPS hit.
Cheers!
Won’t 16k buildings with one object at least has 16k * 6 poly (If Each building has been considered Hexahedral) = 96k poly?
I recall you called 100k JanHas single F-16 object crazy because of its poly counts and described us how Drawcall kills FPS (I’m not sure but more polycounts for single objects also increase draw call?). -
@Nuno:
From my experiences done in POH in Gibraltar area, (thanks to Arty’s teachings ) it is actually possible and relatively easy to create huge cities as a single objective and, in fact, provided we create very low poly buildings, the fps impact is close to zero, even on a hot campaign environment.
What I found hard is to match each building elevation with the terrain elevation, but I’m sure you guys have figured a simple way to do it already…
Hi Nuno Santos!
What about when a bomb is falling on one those objects? I mean, if ithe entire city is a single object, the damage and destroy status can not be applied to a single building. (?)
-
Hi Nuno Santos!
What about when a bomb is falling on one those objects? I mean, if ithe entire city is a single object, the damage and destroy status can not be applied to a single building. (?)
A coder must create code and display an effect on that building.
For the values when the whole model is one object one city and is bombed you can set the values and have a degradation of that value.
The particle system will display the smoke and you will not be able to view the not affected building. A special particle effect can be created and kinda hide the lack of damage or destroyed model.the other way is deagregate the model and split it to unique models when it’s impacted and display the damaged or destroyed.
The total solution is implementation of procedural rules in Falcon.
This exists with the trees in a very simplistic way and if u change the trees textures with buildings texture u already have a wonderful outcome but needs tweaking and code, not to forget declaration in Terrain Editor as now iirc there is only urban when you have thin forest and thick forest. you will need more options for urban industrial village, high rise, stores, etc.
for the tiles u can project the osm imagery and then create the areas… but for the areas circles will be difficult it will need a polygon creation on the tile to draw the areas or even better an import and split functionality. The buildings areas we can import as polygons even from CE as they are the LOT’s.Same thing can happen and for forests. There are zilion data for landmass like polygons that project forest areas. so instead going tile by tile (really how many tiles? 4.096? ) to declare the forest areas it would be suuuuuuper quick to just import…
Sakis Monster are you watching m8? can this be done?
same for the roads and paths… and sometime end the countless hours just for the basics.Guys the theater tools need a major update - upgrade, a bumb up, we you build in large scale and doing so pixel by pixel or 1km by 1km many times the same to declare different things well it’s an 80’s thing. We keep up with it but that doesn’t mean it should stay as is for ever… and we r talking about zillion spend manhours here.
The code since it can isolate the instances of points - thus buildings it can calculate if it will be damaged or destroyed and replace in that point the model with the damaged or destroyed. I’m assuming u must already be fiddling with something like that… as said the procedural trees can destroy an airplane if it touches a tree and you said u disabled it, so you could make it and the other way around.
Since we don’t have all those and mainly the time, and if u break down the city in unique buildings (not Falcon procedural) there is no vga card to handle the load, we at least say that just place them for eyecandy or even more realism and immersion as a step forward and not a complete fully realistic solution.
There are ton’s of documents and examples and with python those procedural things can happen, but will need major implementation.
OSM has the API and IIRC is free
https://wiki.openstreetmap.org/wiki/API
CE has the SDK
https://github.com/Esri/esri-cityengine-sdk
but needs CE installed to work. So it’s a no go.Now the rules that manipulate the build up are well documented and maybe help if we want something familiar in falcon. we actually need boxes u can skip the details.
CE for me actually ain’t the complete solution for all the reasons mentioned but since we don’t have other options solutions… we proceed as we see fit or like.
-
Small buildings of an entire city might be undestroyable one object, and landmark buildings or important infrastructure like factory to be each single destroyable object. That seems possible implementation for current BMS isn’t it?
-
Thanx guys for info!
But… I’m really not interested at 1 large object. I just need pure data, so I’ll dig into that deeper to find my format/export/whatever.
No worry about the rendering itself
Won’t 16k buildings with one object at least has 16k * 6 poly (If Each building has been considered Hexahedral) = 96k poly?
I recall you called 100k JanHas single F-16 object crazy because of its poly counts and described us how Drawcall kills FPS (I’m not sure but more polycounts for single objects also increase draw call?).Yes, a rectangular building has 6 polys, 12 tris, so 16K buildings will be exactly 192K tris. However, you need to understand that there is a HUGE difference between drawing many “dumb” tris, and drawing a full model that may use many different textures, smoothing groups, materials etc etc…
Actually, I can show you an example that drawing 1 million such untextured cubes will take only ~8ms (~115 FPS) with a single draw call (You can think of it as such large model, but actually it is called instancing, and anyway, the GPU work is same as 1 cube x 1M times). With 1M draw calls you get same rendering but draw time increase to ~130ms (~7 FPS), as with such a huge number of draw calls, the GPU is loaded only to ~50-60% as the CPU cannot feed it fast enough, hence the huge loss of performance.
My plan is to eventually get there, i.e draw many many buildings in 1 Draw call, but as separated objects. It is possible (You see many sims/games do it right?). I think that dividing a Falcon theater to sectors/areas/whatever will help drawing buildings in the same sector with 1 Draw call, or alternatively with a single simple test, deny rendering of entire sector if it’s out of rendered frustum.
-
Thanx guys for info!
But… I’m really not interested at 1 large object. I just need pure data, so I’ll dig into that deeper to find my format/export/whatever.
No worry about the rendering itself
Yes, a rectangular building has 6 polys, 12 tris, so 16K buildings will be exactly 192K tris. However, you need to understand that there is a HUGE difference between drawing many “dumb” tris, and drawing a full model that may use many different textures, smoothing groups, materials etc etc…
Actually, I can show you an example that drawing 1 million such untextured cubes will take only ~8ms (~115 FPS) with a single draw call (You can think of it as such large model, but actually it is called instancing, and anyway, the GPU work is same as 1 cube x 1M times). With 1M draw calls you get same rendering but draw time increase to ~130ms (~7 FPS), as with such a huge number of draw calls, the GPU is loaded only to ~50-60% as the CPU cannot feed it fast enough, hence the huge loss of performance.
My plan is to eventually get there, i.e draw many many buildings in 1 Draw call, but as separated objects. It is possible (You see many sims/games do it right?). I think that dividing a Falcon theater to sectors/areas/whatever will help drawing buildings in the same sector with 1 Draw call, or alternatively with a single simple test, deny rendering of entire sector if it’s out of rendered frustum.
so split the ~130ms to 4 cores or worst 3 cores (leave one for the other threads) you end up to 43,3 so it would be around 20fps? and if u are on 8cores and give it 6 cores u could reach 40 but maybe the GPU will top up.?
-
so split the ~130ms to 4 cores or worst 3 cores (leave one for the other threads) you end up to 43,3 so it would be around 20fps? and if u are on 8cores and give it 6 cores u could reach 40 but maybe the GPU will top up.?
GPU will top always, because GPU renders the same in 8ms
GPU is THE ultimate parallel machine, that’s the whole idea of it
But it’s not only about that actually, Draw calls has some API overhead (i.e DX and driver), means that 1 draw call for 100K tris will always be in orders of magnitude faster than 100K draw calls for 1 tri.
However, as I stated, this isn’t a problem… how do you think other sims are doing the same? -
Actually, I can show you an example that drawing 1 million such untextured cubes will take only ~8ms (~115 FPS) with a single draw call (You can think of it as such large model, but actually it is called instancing, and anyway, the GPU work is same as 1 cube x 1M times). With 1M draw calls you get same rendering but draw time increase to ~130ms (~7 FPS), as with such a huge number of draw calls, the GPU is loaded only to ~50-60% as the CPU cannot feed it fast enough, hence the huge loss of performance.
well u confused me here. u said that the GPU tops at 50-60% so this means there is room for 50-40% more calculations that can be done that are not done cause the GPU waits for the CPU.
u said the GPU tops at 50-60% with 1M draw calls (DC) cause the CPU can’t feed it.
But the CPU is on auto mutithread or multicore.
If this was specific programmed then you could instruct the CPU to specifically load balance the load between cores and threads.
That way you can cover the 50-40% that the GPU has free to be fed by the CPU, that way logically u will increase the FPS in the same 8ms.
u and we all know well that auto multicore and multithread ain’t so efficient.Or I got it wrong?
-
well u confused me here. u said that the GPU tops at 50-60% so this means there is room for 50-40% more calculations that can be done that are not done cause the GPU waits for the CPU.
u said the GPU tops at 50-60% with 1M draw calls (DC) cause the CPU can’t feed it.
But the CPU is on auto mutithread or multicore.
If this was specific programmed then you could instruct the CPU to specifically load balance the load between cores and threads.
That way you can cover the 50-40% that the GPU has free to be fed by the CPU, that way logically u will increase the FPS in the same 8ms.
u and we all know well that auto multicore and multithread ain’t so efficient.Or I got it wrong?
I meant that GPU is utilized to 50-60% with 1M draw calls, i.e 1 draw call for 1 cube, but with 1 draw call for 1M cubes, it’s fully utilized (~98-99% which is about max you can get).
-
Ok but for how long does this 98-99% utilizing takes place?
I understand that has 2 do with hw specs and etc, but ain’t that the point of optimization? Finding the sweet spot?Στάλθηκε από το MI 5 μου χρησιμοποιώντας Tapatalk
-
GPU will top always, because GPU renders the same in 8ms
GPU is THE ultimate parallel machine, that’s the whole idea of it
But it’s not only about that actually, Draw calls has some API overhead (i.e DX and driver), means that 1 draw call for 100K tris will always be in orders of magnitude faster than 100K draw calls for 1 tri.
However, as I stated, this isn’t a problem… how do you think other sims are doing the same?Thanx guys for info!
But… I’m really not interested at 1 large object. I just need pure data, so I’ll dig into that deeper to find my format/export/whatever.
No worry about the rendering itself
Yes, a rectangular building has 6 polys, 12 tris, so 16K buildings will be exactly 192K tris. However, you need to understand that there is a HUGE difference between drawing many “dumb” tris, and drawing a full model that may use many different textures, smoothing groups, materials etc etc…
Actually, I can show you an example that drawing 1 million such untextured cubes will take only ~8ms (~115 FPS) with a single draw call (You can think of it as such large model, but actually it is called instancing, and anyway, the GPU work is same as 1 cube x 1M times). With 1M draw calls you get same rendering but draw time increase to ~130ms (~7 FPS), as with such a huge number of draw calls, the GPU is loaded only to ~50-60% as the CPU cannot feed it fast enough, hence the huge loss of performance.
My plan is to eventually get there, i.e draw many many buildings in 1 Draw call, but as separated objects. It is possible (You see many sims/games do it right?). I think that dividing a Falcon theater to sectors/areas/whatever will help drawing buildings in the same sector with 1 Draw call, or alternatively with a single simple test, deny rendering of entire sector if it’s out of rendered frustum.
Thanks for putting it down. I know I have repeatedly stated this in this Fora and others going back some years, never included the details of WHY though. BUT you put the Technical in there….NICE…maybe now we\they will understand!!!
Going forward I have not had much success with “instancing” when translated through LOD Edit??? Do you have it to work???Cheers,
demer -
Ok but for how long does this 98-99% utilizing takes place?
I understand that has 2 do with hw specs and etc, but ain’t that the point of optimization? Finding the sweet spot?There is no “How long” for that
I mean, utilizing of resources depends on the engine only. If the engine is good enough, it should be able to utilize the GPU nicely all the time. I don’t know if a sim like BMS that is very much CPU dependent can get to a status that the GPU is fully utilized, but the general direction should be towards that goal.
Going forward I have not had much success with “instancing” when translated through LOD Edit??? Do you have it to work???
No not talking about LE (Sorry if the term lead you there). By Instancing I refer specifically to what is known as “Hardware Instancing” (You can read about it). The meaning in short is:
Use same geometry (In “GPU language” same Vertex and Index buffers) and draw many instances of that geometry but with different properties, in a single draw call.Generally the 16K cubes I showed above in this thread are rendered this way, each cube has different position, and by using some more techniques, it can also use different textures, materials, colors and what have you, as long as geometry stay same.
-
So with 20 different cubes it will be 20 draw calls or it breaks the sequence?
Στάλθηκε από το MI 5 μου χρησιμοποιώντας Tapatalk
-
No not talking about LE (Sorry if the term lead you there). By Instancing I refer specifically to what is known as “Hardware Instancing” (You can read about it). The meaning in short is:
Use same geometry (In “GPU language” same Vertex and Index buffers) and draw many instances of that geometry but with different properties, in a single draw call.Generally the 16K cubes I showed above in this thread are rendered this way, each cube has different position, and by using some more techniques, it can also use different textures, materials, colors and what have you, as long as geometry stay same.
No sorries M8,
Other than you almost made me wet my Depends……LOL!!!
Yeah on the Cubes, that is what got me started down “this rabbit hole”…Sigh!!!
https://www.benchmarksims.org/forum/showthread.php?8768-WIP-Guam-Theatre&p=462569&viewfull=1#post462569demer
-
So with 20 different cubes it will be 20 draw calls or it breaks the sequence?
As long as it is a cube, an instance can use the different properties, but still be rendered in the same draw call.
Only limitation of instancing - It isn’t for DX9 –> Hence not anything that will come “soon”…
-
So , after “Playing” with this a Falcon minute or moreeeeeeeeee….Hmmph.
Here is what i|WE have come up with to answer “How in the Hell you gonna pull this one off Demer”…LOL!!!So #1 gonna limit the buildings to Cities and Major towns, because only Cities and Towns can be Primary or Secondary and split them out to new objectives.
#2 add objectives of value separately to the game but using the elev. data\model from CE, I have a little concern though that we may be outside the CODE constraints (kms) when it comes to DATA producers for resupply…etc…!!! Dunno ATM. Though IDRC that we had a problem with another iteration of Falcon where in the the Data producer was outside the box and we had to move it i.e. a Power plant but maybe the new resupply Code has fixed that. I’ll take a chance on it.
#3 PLEASE REMEMBER that GUAM is a WIP\POC theater and is not intended to be a FULLY working theater for Falcon…it is just a little Sandbox we play in to test some “Out of the Box,Off the Wall, Crazy ASZ Chit ideas for Falcon that crosses my mind at times…ROTFLMAO”Some Devs already have a copy of this iteration and the Public will have one too, sooner than you think
Cheers,
demer