Suggestions with Exterior Scene regarding Trees / Plants

Hello All,

I am currently working on an exterior scene where there are too many Trees and plants to be shown. The problem here is that I want to keep the scene with low number of total polygon/triangles, so that the scene is not laggy, works smooth and even the load time is low initially.

I tried with the below solutions, and here are the results -

Solution #1 : Use 2D Trees
Problem : Looks too artificial as they look flat and doesn’t give a good look overall.

Solution #2 : Use low poly 3D Trees
Problem : Low poly 3D trees when used in too much in quantity makes the scene very large in terms of total triangle/polygon size. It also puts pressure on GPU when the scene is played and causes lag / freeze and move effect on low end PCs.

Solution #3 : Use low poly 3D Trees but less in numbers
Problem : The Landscape looks vacant / less filled with limited number of trees, hence the realistic look is not there anymore.

Can anyone help me out of this problem ? I want the scene to be realistic and also at the same time, should not be heavy to download.

Did you try to work with instances of the tree model? Maybe this will help you to find a working solution:

The original object is NAME
1st copy is __NAME __
Following copies are named __NAME__001, __NAME__002, and so on

Thank you @tim for the support and suggestion.

Can you please put more light on this topic as I am not able to understand how this would help me… I am sure you’d also solve a lot of people’s problem by solving such an issue where there are a lot of instances.

----- Update ----

@tim,

To try out “Instances” solution, I made a test scene with 1000 3D Trees in it. Each tree has around 4,600 polygons. So the total scene size is around 4.6 Million polygons. Every tree is instanced out, meaning that all trees are copies of 1 original tree.

Test Scene Link : https://tour.virtualhomes.in/tree_test/

Here are the observed problems -

  1. The load time is very long. I first thought that the load time would be low as maybe there would be a need to only download 1 tree object and everything else would be loaded like a zap. But, during the scene load, it takes a long time as it downloads all the instances. Hence, there are no visual improvements / benefits of load time.

  2. FPS rendering (Walk mode Camera) doesn’t work as expected. When there are too many trees positioned close to each other, the rendering becomes slow and it gives a very weird lag effect on low end PCs, without GPU boost.

Hence, to conclude, having instances of an object would not make a great difference in load time, and slows down rendering and overall user experience of the scene.

That is a surpising result.

Are you working with 3DS Max or Sketchup?

Yes, we use SketchUp. Does this kind of a problem has something related to SketchUp?

The total download size of this scene is 39.4MB out of which 38MB is a lightmap, geometry is a tiny (about 100KB) part of the total because of the instancing. You can check how large are individual downloaded resources in the ‘Network’ tab of the Chrome developer tools (F12).

The instances reduce memory used and download size but do not improve frame rate. Each instanced object needs to be rendered separately in different positions. Each instance will also have a separate entry in the lightmap, so the lightmap space is not reduced for instanced objects.

@jan,

Can you please suggest any work around solution to this issue ? As we have close to 2000 trees in the scene which we are trying to build

You could use trees only for plants that are close to a building and sky sphere with trees for more distant ones. You could also disable lightmap for the trees to reduce lightmap size. In general If you have 2000 instanced objects within the camera frustrum, they will need to be all rendered and the frame rate will drop.

Unreal Engine solves this problem with LOD elements (instances with 10-100 x fewer polygons) depending on the distance of the camera.

Is that possible in Shapespark?

1 Like

No, Shapespark doesn’t support LODs