Low poly modeling & the KEX exporter

Alek

New member
When bringing models into RealFlight, the KEX exporter plugin enforces a 20,000 triangle limit (including collision frames). This is done for several reasons:

1. Performance implications in-game. The more polygons any individual model contains, the more resources are required to draw that model on screen. Performance in any 3D application is a delicate balance between polygon and texture budgets, multiplied by how many objects will be on screen at any given moment, added to all the other features an application needs processing time for (flight physics, screen effects, etc.). The 20k limit is enforced to help maintain this balance in RealFlight. RealFlight needs to be able to render full 3D scenery, background objects and multiple aircraft on screen at once.

For comparison, 10k is still actually considered quite high for a single asset in a game or simulator (Gears of War, Microsoft Flight Sim, etc.). In most cases, as hardware becomes faster, it is more effective to use those performance gains to render more complex lighting, better shaders, and more elements on screen at one time instead of throwing more polygons at any single asset.

2. Import performance. There is an upper limit to how complex a single mesh can be and successfully load into RealFlight without causing stability issues. The KEX poly limit is enforced to maintain stable application performance.


In-house we always shoot for as close to 10k as possible for an aircraft. Helicopters will usually be higher, but should never go above 15k. For example, the new P-51 in G5 is 9.3k, the Russian Thunder model in G5.5 is 13.2k, and the Thunder Tiger Innovator from G5 is 14.4k. These numbers include all cockpit details, and exclude collision frames, propeller and rotor blades.

Important! Artists should keep in mind that a ‘poly’ can have three or more sides, and when we’re talking about poly goals and limits, we are only referring to polygons with exactly three sides. In Studio Max, make sure you are displaying both the “Polygon Count” and the “Triangle Count” in your viewport statistics (Click the plus sign in the upper left of the viewport, select “Configure…” then the “Statistics” tab).


A few tips:

-Focus on the silhouette of the object. Nothing screams ‘game model’ like rough curves or jagged edges. Sweeping external edges are a better geometry investment than a lot of internal details that could be brought to life with simplified geometry and exceptional textures.

-Don’t be afraid to weld. After you’ve made an initial pass at the basic forms, you should be constantly looking for places the mesh can be simplified without destroying those shapes. Points and edges that can be welded or deleted resulting in fewer triangles should always be eliminated.

-Prioritize details. Keep in mind at what distance the model will most usually be viewed from, and what the minimum and maximum ‘safe’ viewing distances will be for the object. Distribute polygons and texture space accordingly.

-Use smoothing groups to your advantage. Smoothing groups are a very powerful tool in Max. Put many polygons in the same smoothing group to average the surface shading and make it appear as if there is more smooth geometry than there actually is. Likewise, consider creating hard edges by splitting the smoothing group, instead of creating a chamfer or bevel.

-Use normal/specular maps. By adding a normal or specular map to your model, you activate ‘per pixel shading’, which renders much smoother highlights and shadows on the model. Even if you don’t want to paint in every detail, adding a very small normal map (128x128 pixels) will give you smoother highlights over the whole model.

-Research. There are many great resources online and in print for 3D modeling, and forums like CG Society and Polycount are both great communities to visit for inspiration and learning. This simple Max tutorial may help illustrate some of the above concepts, and give further insights into modeling and texturing low poly assets.


Attached are a few screenshots which show the wireframes of some of RealFlight’s more complex models. These shots will hopefully give you a better idea of how we build our assets for optimum efficiency and visual impact.
 

Attachments

  • innovator_shaded.jpg
    innovator_shaded.jpg
    200.8 KB · Views: 98
  • innovator_wire.jpg
    innovator_wire.jpg
    369.1 KB · Views: 116
  • p-51_shaded.jpg
    p-51_shaded.jpg
    177.7 KB · Views: 99
  • p-51_wire.jpg
    p-51_wire.jpg
    253 KB · Views: 121
Well, Mikey, the good news is that you got KE's attention...

Thank you for the explanation, Alek.
 
Alek said:
When bringing models into RealFlight, the KEX exporter plugin enforces a 20,000 triangle limit (excluding collision frames and propeller/rotor blades).
Wait-clarification on my understanding:
The amount of triangles for the collision mesh is not counted with the number of triangles associated with the visual model?
 
Correct, Cowpig.

Any frame tagged as ~CS_COLL and parented to a visual frame will not be counted toward the overall visual triangle count at export. Instead it will be counted toward the separate 1,500 tri limit for collision frames.

For this reason I find it useful to establish separate selection sets for collision frames and visual frames, and make sure to enable 'total+selection' in the viewport configuration dialog. This way it is easy to keep track of how many polys you really have for the visual, and for the collision, respectively.
 
That's very helpful. Thanks.

20,000 for model, 1,500 for COLL.

I now have an extra 1,500 I can use on my current model.
 
Cowpig said:
That's very helpful. Thanks.

20,000 for model, 1,500 for COLL.

I now have an extra 1,500 I can use on my current model.

I'm not sure you got the "drift" of his topic. He's suggesting: Yes even though RF does have a poly limit of 20,000 (plus 1,500 collision) it's still BEST to limit your use of polys on any given model. Focus more on the exterior "visual" looks of the model, and possibly not so much on very minor detail or items that 99% likely will never be seen or noticed. This will help RF run more efficiently.

On the topic of RF performance: Which has more of a hit on RF performance.

Maxing out the poly limit at 20,000
or
Adding complex physics in the editor (movable pods, etc.)
 
pplace said:
On the topic of RF performance: Which has more of a hit on RF performance.

Maxing out the poly limit at 20,000
or
Adding complex physics in the editor (movable pods, etc.)
From personal experiance, I'd go with the complex physics (but by complex, I'm talking about many nested movable pods).
 
dhk79 said:
From personal experience, I'd go with the complex physics (but by complex, I'm talking about many nested movable pods).

Okay thanks. That was my thinking as well. If I remember correctly the only time I ever saw any sort of "sluggishness" was when I set up my Boeing Clipper (it had numerous movable pods for the control surfaces, water flaps, etc.

Obviously the best answer is to limit the use of both polys and real complex editors. Overall this has never been a big issue though, so I feel things are okie dokie with RF

Thanks again
 
fixed for G5+
but not for 3.+ / 4.+
I believe flex is running 3.5 so I would think it would effect him
.maybe he has not yet put so many that he sees a hit :confused:
 
It only takes a few pods to change performance, if you do not reset the defaults to 1 or 0.
 

Attachments

  • ScreenShot001.jpg
    ScreenShot001.jpg
    84.1 KB · Views: 64
Thanks Alek

Thanks for posting this information and the link for the tutorial. I think the best thing is the posting of the RF models in Wire frame. It is all way nice to show the New kids on the block what to shot for.
 
Dr.Moo! said:
Do 30 like that flex ;) See if it's still good performace
I don't have time for experiments. I know what works for me. The B-1 with aferburners is the only plane that might use more pods that I use, I don't know if (M) changes his defaults or not.
 
Back
Top