Meshdrawer billboard curves

Hello! I’m new here!

Today I’ve studied building stuff using MeshDrawer (and Rope, too!) and stumbled upon some difficulty.

I want (currently) to build nice orbit curve around the planet. When I use MeshDrawer to draw it with ray sprites I get this:

Parts of line are crossing each other. It’s awful!

So I’ve tried the Rope module. But there I can’t get antialiased line because of some artifacts. See this:

Line flickering with dark borders. Here is this rope code:

        
r = Rope()
vs = drawCircleVert();
r.setup(4, vs)
r.setColor(0.1, 0.5, 0.1, 0.5)
r.setAntialias(AntialiasAttrib.MLine)
r.reparentTo(render)

drawCircleVert is a simple procedure to generate set of circle vertices. Also, I’ve tried using LineSegment with the same result.

Please, can anyone point me to the right solution to draw nice antialiased continuous circle?

Some graphics drivers seem to require transparency enabled in order to support line antialiasing. On your rope implementation, try adding:

r.setTransparency(TransparencyAttrib.MAlpha)

Or, you can abandon using line segments altogether, and try using polygons:

r.ropeNode.setRenderMode(RopeNode.RMBillboard)
r.setAntialias(AntialiasAttrib.MAuto)

This also depends on your graphics card. You could also engage full-screen antialiasing, if your card supports it; this requires adding “framebuffer-multisample 1” and “multisamples 4” to your Config.prc file.

David

Thank you for reply!

r.setTransparency(TransparencyAttrib.MAlpha) 

This absolutely fixed antialiasing issue. But line still seem separated by tiny gaps like at the screenshot above. Any guesses how to avoid that?

I think that’s a driver issue. Some drivers render line segments better than others.

The only way to avoid it is to avoid rendering line segments, for instance by using the polygon suggestion above.

David

Thanks anyway. It drived me to right path!