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!
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
Now if I move the camera down, (translate downwards, no rotation), the strips again face the camera correctly, as seen here:
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:
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.