Using "hollow" trees and other large entities improve performance?

Hello everyone. I was just wondering if making trees and other large entities “hollow” improve the overall performance of Stonehearth? Or would it have no effect at all? Just something that crossed my mind. Kindly forgive my ignorance of voxels in general for those experts in the forum. Thank you.

1 Like

To the best of my knowledge…it would not make a difference in terms of performance. The game is only rendering what you see, and uses a wireframe structure to deal with collision boxes (so you can’t walk through things), so it doesn’t matter if it is “hollow” or not. But I am not a voxel performance expert…@not_owen_wilson or @Albert would probably be able to give a much better, more technical, and more correct answer than that.

4 Likes

Sorry but if anything it would have a negative impact on performance, since it would probably create surfaces for the inside as well, so there would be more polygons which is what is actually drawn on screen. The voxel-to-polygon-converter might handle it by not creating surfaces for hidden spaces, but checking for them will have a negative impact on performance and even if it does, making things hollow probably wont decrease the file size of the voxel-model either, since the voxel-matrix is still the same size.

3 Likes

Correction
The voxel-to-polygon converter probably won’t have to check for hidden surfaces and remove them. It probably just starts with the voxels at the edge of the matrix and don’t even look at the rest of them if they are not next to a transparent voxel that it has already looked at.

3 Likes

From my experience modding other games, inner surfaces kill fps.

At least in my experience with Valve games, the ‘nodraw’ texture can be applied to the back sides of map blocks to not render them, making it run loads better. I’m assuming that inner, non-visible blocks (i.e. ones surrounded on all six sides) are not rendered in stonehearth and only the outer surfaces (including surfaces lining cavities) are rendered.

Another consideration is that, because SH uses voxels rather than textures, a voxel of a different colour needs to be converted into polygons separately. I’m not 100% sure about this, but I remember Tom mentioning it in a stream a while ago.

Some examples your reference:


6 sides x 2 polygons per side = 12 polys. If you were to hollow this out, you’d double that number to 24.

11 sides x 2 polygons per side = 22 polys


12 unique rectangles make up the outer surfaces of this block, so 12 x 2 = 24 polys

4 Likes

Thank you @jomaxro, @Agon and @phector2004. Your answers are very much appreciated. Cheers!

2 Likes

Is that a unique mesh? Because if so, I would have say 26! :scream:

???

Maybe I’m missing something, because my understanding is quite basic here, but why 26?

If it’s a unique mesh, you have to remove the co-existing face between both cube so here is a possible triangulation:

  • 10 tris for the purple cube
  • 16 for the red cube

Now if the model is made of two meshes, then 22 tris (all faces, 2 tris), that’s why I was asking! :sweat_smile:

3 Likes

Thanks for the illustration, I get what you mean!

How wasteful, though! It’s so much easier to make it as two meshes out of only right-triangles (and ignore the bit that continues under the purple cube!) Maybe the devs could clarify the details of what happens between making the model in qubicle and seeing it in-game. I would certainly be interested to know how to make more efficient models.

2 Likes