Drawing complex, high-res text displays in 3D world

Hi all,

I know that many variants of this question have been asked, but I’m still not sure what the best approach is for what I’m specifically trying to do.

In my game, I would like to have a large sign that shows lots of useful text to the player in real-time. The sign would have a dozen or so text fields on it. It is not interactive though, so it doesn’t need full GUI interactivity.

The sign would be something like this, like you’d see at a typical train station:

My question is: what is the best approach for doing this in Babylon?
Should I use DynamicTexture? I’d need a huge texture to do that and make all the text legible.
Should I split into many DynamicTextures? No idea what the performance limitations are there across all devices.
Should I use 3DGUI? Since the sign isn’t interactive, I’m not sure if this carries a lot of unneeded overhead.
Should I use HtmlElementTexture , which presumably gives me all the power of CSS to customize the look and layout of my text?

I’m hoping the solution also works well on low-end devices, including phones and low-end integrated GPUs.

If you’re going for a split flap display as illustrated, I’d approach it the same way it’s implemented in reality i.e. the lettering (texture) would be static and the geometry would be dynamic in that it’d just be a grid of instanced quads, each showing a different half of one letter or glyph (using dynamic UVs).

I’d imagine this would be more performant than continually updating a high resolution dynamic texture, but it would require testing to be sure.

However, this approach could become tricky if you need to support multiple languages.

Thanks! I’m not trying to mimic the split-flap display, the image is just meant to show the amount of text I’d like to show at once, and that I will be tracking many variables at once, which might change at different times. I could draw the whole sign any time one variable changes, but I could break it into pieces, too.

Ah OK. Yeah in that case I don’t know what would be better. It’s worth trying out both GUI TextBlock and HtmlElementTexture but I suspect under the hood there may not be much performance difference all else being equal (amount of text, resolution and bit depth of texture etc).

You may try HTMLMesh, if it will suit your use case.

2 Likes

WOW - this is the solution to my problem!

Turns out, this is also the solution to some other game design problems I’ve wrestled with for ages. This opens up an amazing new frontier for what level designers can do with very little work. Thank you so very much for sharing!

2 Likes