Sphere Mapping?

Started by
0 comments, last by Jankey 22 years, 5 months ago
Does anyone know how Sphere Mapping works? If i want to Render my own Generated Model! Everytime when i try to Render an Object of my Own ... the sphere Mapped Texture doesnt''t look Correctly, do i have to Look how my Triangle Lists are Sorted? I have calculated my Normal Vectors but it doesnt look great when i put on the Light, I can see every TriangeEdge and it isn''t really smooth ...
J.A.N.K.E.Y.: Journeying Artificial Nocturnal Killing and Exploration Youth
Advertisement
void CreateSphere(fVect c,float r,int n,
float theta1,
float theta2,
float phi1,
float phi2)
{
int i,j;
float t1,t2,t3;
fVect e,p;

/* Handle special cases */

if (r < 0) r = -r;
if (n < 0) n = -n;
if (n < 4 || r <= 0)
{
glBegin(GL_POINTS);
glVertex3f(c[0],c[1],c[2]);
glEnd();
return;
}

glBegin(GL_TRIANGLE_STRIP);

for (j=0;j {

t1 = phi1 + j * (phi2 - phi1) / (n/2);

t2 = phi1 + (j + 1) * (phi2 - phi1) / (n/2);


for (i=0;i<=n;i++)
{

t3 = theta1 + i * (theta2 - theta1) / n;

e[0] = cos(t1) * cos(t3);
e[1] = sin(t1);
e[2] = cos(t1) * sin(t3);
p[0] = c[0] + r * e[0];
p[1] = c[1] + r * e[1];
p[2] = c[2] + r * e[2];

glNormal3f(e[0],e[1],e[2]);
glTexCoord2f(i/(float)n,2*j/(float)n);
glVertex3f(p[0],p[1],p[2]);

e[0] = cos(t2) * cos(t3);
e[1] = sin(t2);
e[2] = cos(t2) * sin(t3);
p[0] = c[0] + r * e[0];
p[1] = c[1] + r * e[1];
p[2] = c[2] + r * e[2];

glNormal3f(e[0],e[1],e[2]);
glTexCoord2f(i/(float)n,2*(j+1)/(float)n);
glVertex3f(p[0],p[1],p[2]);

}
}
glEnd();
}

try this , call like that

where c is the centre,r the radius

CreateSphere( c,5,r,0,2*__PI,-__PI/2,__PI/2);


This topic is closed to new replies.

Advertisement