www.jpct.net
jPCT-AE - a 3d engine for Android => Support => Topic started by: Darkflame on February 02, 2011, 02:10:50 pm
-
I'm working on a little AR app, and it would be helpfull if there was a way to make billboard sprites not scale with distance.
That is, if they are far away they are the same size as near.
I figured theres two ways of doing this, and I wondered if anyone could give feedback on what seems the best and what sort of maths would be required;
1. Each time the camera moves scale all the billboard sprites to compansate. This would mean mesuring their distance to then camera [insert formular] and scaleing based on that.
2. Drawing the sprites directly to the screen not using the 3D scene at all - obviously this takes care of the scaleing easily, but raise's issues such as drawing order and positioning.
I'm guessing number 1 will be more flexible, and 2 would be more efficiant in terms of cpu.
Number 1 would also let me scale by other methods too if I wished - like getting slightly smaller with distance rather then realisticly exponetialy smaller.
The camera in my app shouldn't be moving too much - walking pace in a city with gps updates probably means only once every few seconds at most.
So..and ideas on the direction I should take?
-
I would go with 1. Rescaling is pretty simply as scale is linear with distance. Another option might be to use an Overlay for this. It's like a scaled blit but can have a depth. You need the latest beta release to use it properly though.
-
Thanks, I'll go with that one.
Is it really just linear? Wouldn't it depend on lens/fov?
I'm basicly going to measure the distance between the objects and the camera and set their scale equal to there existing scale times that value. That seems...wrong..though. Too easy :p
-
Of course it depends on the fov and such but its still linear within the same fov. That's because the perspective projection basically is a divide by z.