Logo

¡Bienvenido a Stratos!

Acceder

Foros



Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - LC0

#346
 
Citar
No será error de la normal de las caras? cada una mira para donde le parece.

Eso pensé en un principio, pero,como dice zupervaca, mira algunos vértices: salen demasiado estirados, y otros parecen que no encajan en el "puzzle".
Y no te creas que no activé la capacidad de renderizar las caras por los dos lados, pero... nada de nada.
#347
 En teoría, a los vértices de una malla se puede acceder desde las caras, que contienen una lista con los vértices que la forman (que pueden ser 3 o 4, pero a la hora de generar la malla he tenido cuidado de que esta wsté formada por triángulos).
te paso el link donde viene la referencia de los objetos y los miembros del API.
#348
 Saludos a todos.
Me ha dado por empezar a investigar un poco  en el asunto de los scripts en Python de Blender.
Así que he decidido crear uno de prueba, donde se coge una malla de la escena y se guarda en un formato muy muy muy simple: un fichero de texto con las coordenadas de los vértices de cada cara.

De este modo, he creado también un pequeñísimo programa que, con la ayuda de sdl y opengl, visualiza los objetos generados en este formato.

El problema es que parece que los vértices de las caras no son los adecuados, con lo que se observa que la forma del objeto es la adecuada, pero, internamente, el cúmulo de vértices es extrañísimo:

(El objeto que se observa en la imagen es la cabeza de Mono "estándar" de Blender :) ).

Os posteo aquí el script y el visualizador:


from Blender import *
import sys

def grabar():
obj = NMesh.GetRaw("Suzanne")
f=open("bicho2.3dt","w")
for i in obj.faces:
 print len(i.v)
 for j in range(len(i.v)):
  f.write(str(i.v[j].no[0]) + '\n')
  f.write(str(i.v[j].no[1]) + '\n')
  f.write(str(i.v[j].no[2]) + '\n')      
  f.write(str(i.v[j].co[0]) + '\n')
  f.write(str(i.v[j].co[1]) + '\n')
  f.write(str(i.v[j].co[2]) + '\n')
     
       

f.close()


grabar()




int main(int argc, char *argv[])
{
cout <<"Initializing SDL." << endl;

if(SDL_Init(SDL_INIT_EVERYTHING)< 0)
{
 cerr <<"Could not initialize SDL:" << SDL_GetError() << endl;
 SDL_Quit();
}

SDL_GL_SetAttribute(SDL_GL_RED_SIZE,8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,8);

SDL_Surface* Video=SDL_SetVideoMode(800,600,32,SDL_OPENGL |SDL_HWSURFACE| SDL_HWPALETTE/*|SDL_GL_DOUBLEBUFFER*/);
if(Video==NULL)
{
 cerr << "Error en modo de video:" << SDL_GetError() << endl;
}

double x=0, y=0;

glEnable(GL_SMOOTH);
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
   gluPerspective( 45.0f, 640.0f / 480.0f, 0.1f, 100.0f);

int e=0;
bool fin=false;
SDL_Event evento;
double d=1;

ifstream fich("bicho2.3dt");
vector<Coord> objeto;
double coordx, coordy,coordz;
while(fich >> coordx >> coordy >> coordz) //Colorear cada cara con un tono grisáceo: MUY LENTO, pero, como esto es solo una prueba...
{
 objeto.push_back(Coord(coordx,coordy,coordz,rand()%255));
 srand(SDL_GetTicks());
 SDL_Delay(1);
}

while(!fin)
{
 
 SDL_PollEvent(&evento);
 if(evento.type==SDL_KEYDOWN)
  if(evento.key.keysym.sym==SDLK_LEFT) x-=1.5;
  else if(evento.key.keysym.sym==SDLK_RIGHT) x+=1.5;
  else if(evento.key.keysym.sym==SDLK_UP) y+=1.5;    
  else if(evento.key.keysym.sym==SDLK_DOWN) y-=1.5;    
  else if(evento.key.keysym.sym==SDLK_ESCAPE) fin=true;
 
 
 if(SDL_MUSTLOCK(Video)) SDL_LockSurface(Video);

 Uint32 color_pixel=SDL_MapRGB(Video->format,255,0,255);
 
 glClear(GL_COLOR_BUFFER_BIT);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 glPushMatrix();
 glTranslatef(0.5,0.5,y);
 glRotatef(x,0.0,1.0,0.0);
 vector<Coord>::iterator i=objeto.begin();


 while(i<objeto.end())
 {
  glDisable(GL_CULL_FACE);
  glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);  
  glBegin(GL_TRIANGLES);  
   glColor3ub(i->color,i->color,i->color);
   glNormal3f(i->x,i->y,i->z);
   i++;
   glVertex3f(i->x,i->y,i->z);
   i++;
   glNormal3f(i->x,i->y,i->z);
   i++;
   glVertex3f(i->x,i->y,i->z);
   i++;
   glNormal3f(i->x,i->y,i->z);
   i++;
   glVertex3f(i->x,i->y,i->z);
   i++;
  glEnd();  
 }

 glPopMatrix();
 
 SDL_GL_SwapBuffers();  
 if(SDL_MUSTLOCK(Video)) SDL_UnlockSurface(Video);

 
}

SDL_Quit();
return 0;
}


A ver si podeis ayudarme, porque esto, que es tan sencillo, me trae de cabeza. De antemano, muchas gracias.

PD: Perdón por la identación: Los ficheros originales están bien identados, pero al pasarlo aquí, he hecho (y me ha hecho :D) cosas raras, y no tengo demasiadas ganas de retocarlo todo ahora.
#349
General Programadores / Stl Y Streams
01 de Agosto de 2005, 02:07:36 PM
 ¿Por qué no usas el posicionamiento a partir de seek_beg?  
#350
General / Gameinstitute.com
31 de Julio de 2005, 03:57:00 PM
 Muy buenas.
Estaba mirando los cursillos y seminarios que se imparten en GameInstitute (aunque en inglés, permite hacer cursos a distancia sobre programación de videojuegos) y, a simple vista, parecen estar muy bien, añadiendo la comodidad de estudiar en tu propia casa y siguiendo tu planning, paralelamente a tu actividad profesional no-virtual :D.
Mi pregunta es que si alguien ha tenido experiencias con esto, y si, efectivamente, va más allá del típico tutorial que puedes bajarte de internet totalmente gratuito.
Es de pago, pero obtienes un título que puedes añadir al currículum (ya sabeis, por aquello de la "titulitis" :D). ¿Merece la pena pagar?¿No es una estafa, en el sentido de que los servicios que te proporcionen sean de pésima calidad?
Gracias de antemano y saludos.
#351
General / Posible Solución
24 de Julio de 2005, 02:43:59 PM
 Vaya por Dios...
Me he confundido y que he creado un nuevo topic.
Mi mensaje se supone que es una respuesta a esta discusión.
Lo siento.
#352
General / Posible Solución
24 de Julio de 2005, 02:41:46 PM
 Hola.
Yo tuve que configurar ese módem en el ordenador de un familiar. Hice todo lo posible, me lei 500 howtos, etc. Pero nada de nada.
A final, parece que la solución es, efectivamente, esa, echar mano de pppoe, en lugar de pppoa, como suele ser lo habitual (Timofónica llevando la contraria, como siempre).
No he podido probarlo porque este familiar está de viaje, pero mírate este link, que parece que es la solución a todos tus males (y a los mios :D).
Lo malo es que está en mallorquín, pero vamos, es entendible.
Ya contarás.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.