   2D->3D or 3D->2D?
  What is the easiest way to do this?I have a 3D perspective viewport, and I want to draw a line segment in 3D, but I want it to have a fixed length in 2D.  So, if I zoom the view in or out, the length of the line segment does not change,but it maintains it''s position in 3D.What is easiest to do, drawing it in 2D or 3D? 
  Let me get this right: you want to have a point which is fixed in 3d space and the direction vector to another point must have fixed length in 2d?I would do it in 2d. Basically, you have to project both your points into 2d screen coordinates, then you adjust the second point so that it is always the correct distance.So the basic pseudocode would be  // project the 3d coordinates to 2d coordinatescreenpoint0 = project3dto2d(3dpoint0)screenpoint1 = project3dto2d(3dpoint1)// now you find your difference between pointsscreendelta = screenpoint1 - screenpoint0deltalength = vector2dlength(screendelta);if (fabs(deltalength) < 0.01){  // the 2 points will be projected to a point, not a line  // now draw in 2d a single vertex at screenpoint0  // ...}else{  // normalize the difference vector  screendelta *= (1/deltalength)  // now calculate where you 2nd point should really be  screenpoint1 = screenpoint0 + (screendelta * FIXED_LINE_LENGTH)  // now draw in 2d between screenpoint0 and screenpoint1  //...}The check against deltalength is done so that if you''re looking exactly down the line it won''t fail.Hope this helped! More specifically, I hope it was what you were looking for.FReY;  You can set the points in 2D, then project the points into 3D and draw it in 3D.Like if the line is always extending from 1,1 to 100,100, you take those points and do the inverse of the projection and view matrices to get their points in 3D, then just use those points to draw them in 3D.im not sure about this though, the theory is correct I think, but I suck at math ;  Thanks for the reply.Projecting all points from 3D to 2D, then fixing the line length proved to be the best solution.  Thanks.