pedro,

your problem has nothing to do with android.  I think you may need a
3D refresher to solve it.  Normals are not UVs.  Your UVs will depend
on how you want to map, but the easiest way to do it is to map from
the sphere center out using angles, like this.  Since GL has 2D
texture coordinate 0,0 as upper left, you will want to define where
upper left is on your sphere.  I'd use straight up and center as a
unit vector, or (0, 0, 1) if z is up in your world.  If y is up, then
(0,1,0) will be 0,0 in UVs.

so starting with that, you can calculate the UV of any point by
getting the difference of angle of that starting angle and the new
point.  Remember that if they both come from the sphere center, you'll
have complete 2PI radian coverage on both axis... so naturally
dividing the resulting angle by 2PI will give you a UV number between
0 and 1.

The process is like this (assuming z=up)

For each point:
// for U just look at the sphere from overhead
U = (atan2(point.x - center.x, point.y - center.y) + PI) / (2PI)
hyp = distance(point, center);
V = ((point.z - center.z) / hyp) + 1) / 2

I believe that is correct and there will be a more elegant way to do
it but today my head is in 2D math world so I can't remember how to
dot it out.  The idea though is that for every point, you can
determine the angle needed for U by looking at the sphere from
overhead and just using an arctan of the xy differences (assuming
z=up) of the center to the point.  The resulting range is in radians (-
PI to PI) so you have to add PI to change it from 0 to 2PI and then
dividing by 2PI gives you 0 to 1.  Then for the V value, you can just
examine the "height" (z) of the point and in conjunction with its
distance from the center, you've got an opposite over hypotenuse which
is the same as the sine of the angle, which is what you want to get a
evenly distributed texture top to bottom.  The number will also be
ranged from -1 to 1 so you need to add 1 and divide it by 2 to get the
0 to 1 range.  The texture should touch in the corners and if you use
the right one, look seamless.

If any of my math is wrong, please correct it after debugging, but at
least this should get you going in the right direction.

Cheers

On Dec 22, 9:09 am, pedr0 <pulsarpie...@gmail.com> wrote:
> Please see the link and reply inside  this post if you have not an
> account on OpenGL forum, the question is over there.
>
> http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&N...
>
> Thanks a lot.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to