Jump to content

model too many frame drop


photo

Recommended Posts

My model causes too many frame drop.

For individual control, I did not combine models (such as buttons, instruments, and Controllers).

As a result, there were many surfaces, polygons, and Marterials.

test computer's spec is i7-7740x 4.30ghz, GTX 1080ti sli, 32GB ram.

Triangles = 800000

materials = 170

primitives = 800000

surfaces = 4000

dips = 4000

image.thumb.png.9c0ca36638f09bf9c3c0725dd00b078e.png

image.png.9da66b44d01bc4f4faa5415795b05821.png <- a lot of child node (about cockpit's mesh)

 

Is the gpu not used for rendering?
 or Is the model too heavy?

 

I wan't to combine components of a cockpit because they must be individually controllable.

I can't think of any more ways to optimize.

In this case, is there an optimization method in unigine?

Edited by dongju.jeong
Link to comment
34 minutes ago, dongju.jeong said:

I can't think of any more ways to optimize.

oO.

There is always a possibility. ^__°

34 minutes ago, dongju.jeong said:

Triangles = 800000       Can definitely be optimized. I am sure!  If you need these kind of detail, build low res models and texture with normal maps. Otherwise, reduce polygons. You can build whole Cities out of 800K Polygons °__°

materials = 170    Combine materials and textures, UV layouts!

primitives = 800000 same as above

surfaces = 4000

dips = 4000 Really, you need 4000 individual nodes? Can it be surfaces? Intersections, Interaction, Animation purposes? Combine, LODs, Occlusion, hide/show when necessary.

 

Edited by werner.poetzelberger
  • Like 1
Link to comment

Hello Dongju,

Werner pointed the right direction. I'll summarize some general ideas on optimization and leave a couple of links.

  1. Try to keep as less unique objects ass possible
  2. Merge meshes that be merged into one
  3. Use UV maps and texture atlases to minimize the number of materials
  4. Simplify hierarchy, there's probably a way to do this

Here's our video on content optimization: https://www.youtube.com/watch?v=Iqsr3fEvnis&feature=youtu.be

General article: https://developer.unigine.com/en/docs/2.7.3/content/optimization/

And this recent thread: https://developer.unigine.com/forum/topic/4746-low-fps-need-to-bring-more-fps-in-project/

Hope this helps.

Thanks!

 

  • Like 1

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Assuming that you want to control each individual button, indicator and switch I would expect that some GPU-based vertex-shader based animation approach will be required to get rid of your fine-grained object hierarchy. Otherwise it will be hard to significantly reduce the performance-killing draw call count/dips (as standard CPU-side node transform matrix manipulations per switch/button/indicator will force them to remain individual objects = draw calls) 

A GPU custom shader solution could use a single small CPU-controlled 1-2K texture for storage of numerical values of all button/switch/indicator positions. Such a state texture can easily be updated on the CPU and uploaded to the GPU on each frame or state change. All the vertices of ALL buttons/switches/ indicator then could (at least in theory, using texture atlas etc.) be put into a single big vertex array = single draw call. Each vertex additionally will have to encode its individual state texture cell index as an additional vertex attribute. Based on this dependent state texture value lookup the required trsnsformation matrix could be calculated on the fly by the GPU within the vertex shader.

In a way this approach is similar to the skinned mesh implementation, where a huge amount of static buffer character vertices (bind pose) are transformed on-the-fly on the GPU using small bone transformation matrix arrays.

Maybe using MeshSkinned could therefore also be a viable solution without the requirement to do all shader coding on your own. In practice there is a bone limit per mesh instance (64,128, 256,even more?), but this could be worked around by splitting the animated switch/button/indicator geometry into multiple MeshSkinned instances.

Compared to your current implementation I would expect dramatic improvments with the customized vertex-shaderaporoach and significant improvements with the MeshSkinned approach (but I am just guessing here, of course you have to test it)

As Werner said: There is always a possibility 

  • Like 1
Link to comment

Could you use skinned mesh and bones for your interfaces? 

Each Button/Trigger etc is skinned and controlled by a bone.

You could combine several panels to skinned meshes and maintain freedom of individual animation.

Weired... how is this handled normally in flight simulators or simulators generally where you have a massive amount of interactive elements?

o_o Werner

  • Like 1
Link to comment

I would assume with a specialized GPU vertex shader solution using indirect texture state lookups and on-the-fly transformation matrix calculation ;-)

Link to comment
On 4/30/2019 at 3:43 PM, ulf.schroeter said:

I would assume with a specialized GPU vertex shader solution using indirect texture state lookups and on-the-fly transformation matrix calculation ;-)

Rock it!!

Link to comment
×
×
  • Create New...