Custom nameplates/billboards in 3d worldspace

Hi, i have a question about rendering billboards/nameplates in a custom way and i really hope, someone can help me with this.
Please take a look at this:

[PW Billboards - YouTube][1]

As you can see, the nameplate is

  • always facing the camera
  • behind other 3d objects
  • perfect pixel ratio, not blurry or artifacts when scaled or moved (sorry for the bad video quality)

The font is Arial (without antialias, i think a bitmap font)

I also made an in-game screenshot to see the correct quality:

299423-image-188084.png

So, how they do that?? A long time ago i search for an answer or technique to realize that, but no luck. If i use a widget in screenspace, its not behind 3d objects. If i use a 3d widget in worldspace, then the text is not perfect pixelated - its blurry or got artifacts. I saw many tutorials about billboards to facing the camera or widgets on screenspace and simple blend them out behind 3d objects - but thats not what i want. I want to cut them, wtf is this so complicated? I saw that in many mmorpg. I really like UE4, but it would be very sad, if that isnt possible…

Anyone have an idea how they do this or know a technique for that, maybe with ortographic camera or… shader or…a pixel grid… or??

So no one can help or know a solution for that problem?
I was really wondering… so many mmorpg use that and this is so a big problem in ue?

Thank you for your answer. Yes, thats what i said - i can use simple UI widget in screenspace, to make sure, that the text isnt blurry or got artifacts. The big problem is, if i make this in screenspace, then the widget is always over the screen and not cutted. You can see it in the video what i posted. There you can see, that the text is behind other 3d objects… thats the main problem, or i missunderstood what you mean.

Hello NeoJones,

my apologies for the previous post, seems I misread your problem, turns out doing this at 1 a.m. wasn’t the best idea.
The simplest way to achieve this would probably be via a world space widget fixed to the camera, mimicking a screen space widget, but at certain distance to said camera. I.e. Have the world space widget be fixed to the camera and correctly scaled so it covers the whole screen at the given distance. With that you can use the same technique I discussed in the previous post. It is now possible to intersect with world geometry but the results would be the best, as all nametags would be in the same plane, so nametags won’t be able to appear over geometry even if they’re closer than the referenced one.You could of course create multiple planes and circumvent the problem that way.

I think the best solution would be screenspace widget stencil masking solution. Although I’d have to look into how exactly that would work with unreal.

Just a side note, those games you mentioned probably all used forward rendering. By default unreal uses the deferred renderer, you can switch to the forward renderer in the project settings, this requires SM5 though.

Hope that helps. Just let me know if you have any questions.

Regards,

Vecherka.

Hello Vecherka,

my apologies for the previous post, seems I misread your problem, turns out doing this at 1 a.m. wasn’t the best idea.

No problem, i understand :smiley:

I think the best solution would be screenspace widget stencil masking solution.

Yes, same here. I also dont know how this work - or if this cost to much performance.

Sure, the world space widget solution i tried in the past and it works very well but without a good quality. All the math to scale, rotate etc. and the result was a very blurry text - nevermind wich filter i used. Thats why I still believe, that this only possible with screenspace widgets, but to cut them by a mask. I.e. I have 10 nameplates in the view - of course all as planes in worldspace, but without any text and faced to the camera + correct scaling to represent the position and visibility of the screenspace widget then. I would be really happy if anyone have an idea how this works or can give an example how this works.
This problem was the reason why i left the project, because without any “names” above players - all other stuff made no fun anymore.

Best regards, Neo