Billboarded triangle strip/ribbon math/code

Started by
0 comments, last by Buckeye 9 years, 8 months ago

Hey guys, I am programming my own billboarded strips/ribbon. I am trying to generate the mesh for the strip. I have a list of points, and each will be expanded out to 2 verticies and they will all be joined together to create a billboarded triangle strip.

I have it working relatively well. I implemented it the way it was outlined in this topic here: http://www.gamedev.net/topic/644649-bill-boarding-oriented-rectangle/

That topic was really helpful! smile.png

I have a problem however. My code does not seem to take into consideration the rotation of the camera. I think it is because I am converting the camera position to local quad position incorrectly, but I can't figure out what I need to do to fix it.

So, here is 2 triangle strips on either side of the camera, and the camera is in the middle of them. They orient themselves correctly

BIPy2vo.png

Now if I move the camera down, (translate downwards, no rotation), the strips again face the camera correctly, as seen here:

YrItk6M.png

I expect this same effect when I rotate the camera downwards, however my code seems to just ignore the camera rotation. So if I return the camera to where it was in image one and instead rotate downwards, I just get this:

zOWNZRZ.png

Its, uhh, hard to see, but basically the strip is exactly as it was in image 1, but the camera is rotated. It didn't bother to align itself with the camera properly. I expected something similar to image 2.

Again, I think my problem lies in converting the camera position to the points 'local space'. I don't take into consideration any rotations. I just do this:

Vector3 camLocal = camera.position - point.Position;

Which gives us the cameras position as if it was relative to the point at 0,0,0, but it doesn't take care of any rotation.

Hope I am making some sense guys, I've been trying to figure this out for most of the day and I'm not sure what to do.

Advertisement


Hope I am making some sense

Not really. Can you describe what you want to accomplish? In general, "billboarding" means orienting the entire object to face the camera. From the first two pictures, which you say is the desired result, the objects aren't facing the camera, but.. some line perhaps from the eyepoint to.. a "look at" point? Though you say the third picture is the same as the first, that's not how it appears. The quads seem oriented in a similar fashion with respect to the up-down angle as in the second image.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

This topic is closed to new replies.

Advertisement