   label over a mesh like world of warcraft
  hello,im trying to display a text right near the top of a sphere mesh. i would like the text to become smaller as i move farther away from the mesh, just as the mesh sphere itself becomes smaller. it should also become larger as one moves towards it, just like the sphere does. how can i do that?basically like how the names for characters in world of warcraft are displayed together with the 3d character. it goes with them wherever they go.thanks for your time,Zahid   
  I've never played world of warcraft, but if I guess correctly, a billboard should do the job honestly. If you dont know what it is, just google it or read this article (will open on a new window);  Definitely billboarded sprites. You can have a variable that holds the distance of the mesh to the camera or some kind of scaling variable. When the mesh  comes closer to the camera, increase this variable and then scale the billboarded sprite appropriately and visa versa. That's a simple way to do it.I hope this helps.Take care.   ;  You'll want a font-class capable of printing scaled fonts.Take the position of the character + the offset to where you want the label to be (in world-space)Transform that point from 3D -> 2D by multiplying it with the WorldViewProjection matrix. That will give you the position in [0..1][0..1][-1..1] coordinates. <0 for Z means that it's behind you, and should not be drawn.Pick a scale the size of the text based on the distance from the camera. Easy way to do this is to say Distance = (Target-Camera).Magnitude;at 0..D1, text is size AD1..D2, text is lerped A-BD2..Outofrange, text is size Bfurther away than Outofrange, don't draw.Then pass the screen-position and the scale into a font-class to draw the text on screen as a 2D effect after the world's finished rendering.Allan   ;  hello Allan,i have a Vector3 object that represents the center of the mesh that im drawing on screen. So i projected that to screen space using the Project method of the Vector3 class. I took the X and Y values of the projected vector and made a point object called 'nelementNameLocationOnScreen' and than i used the DrawText method of the Font class to draw a text using that point. below is some code:this.nelementOriginLocation.Project ( nelementsDrawingDevice.Viewport, nelementsDrawingDevice.Transform.Projection , nelementsDrawingDevice.Transform.View , nelementsDrawingDevice.Transform.World );this.nelementNameLocationOnScreen = new Point ( Convert.ToInt32 ( this.nelementOriginLocation.X ), Convert.ToInt32 ( this.nelementOriginLocation.Y ) ); this.nelementOriginLocation.Unproject ( nelementsDrawingDevice.Viewport, nelementsDrawingDevice.Transform.Projection , nelementsDrawingDevice.Transform.View , nelementsDrawingDevice.Transform.World );this.textFont.DrawText ( null, this.representedNelement.nelementName, this.nelementNameLocationOnScreen, Color.White ); the problem is that when the text is shown on screen, its location keeps changing and doesnt show up right in the center of the sphere as i want it to. the text keeps going in circles around the screen and doesnt stay in one place on top of the sphere. is this because the project method isnt very accurate and keeps projecting different values each time it is run?how do u suggest i should fix it?by the way, im also apply a rotation to the sphere. do u think that is causing the circling of the text and if it is how should i proceed to achieve a rotating sphere and a text that stays near the sphere instead of moving around?thanks for your time,Zahid   ;  solved it by using Matrix.Identity as the 4th parameter for the Project and Unproject methods. thanks for the help guys.   