Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sombreado Smooth

Iniciado por misscelan, 31 de Octubre de 2005, 09:44:15 AM

« anterior - próximo »

misscelan

 Buenas.

Quería aplicar smooth shading o shaded o como se diga. A mi modelo de milkshape. Al cargar el módelo también se pueden cargar las normales por vértice. Además yo he generado la normal al triángulo.

Activando glShadelModel(GL_SMOOTH) ya le ponga las normales por vértice o por triángulo, no lo hace, no hace smooth al modelo entero.

Supongo que esto no valdrá así y me tendré que poner con un sistema de iluminación, SI ES ASÍ, cual que recomendáis. No uso shaders.

Muchas gracias.

Un saludo.

Ray

 Si la normal está bien orientada te debería funcionar sin activar nada, y según dices las caras las ilumina correctamente solo que en modo plano.

Yo creo que no las defines bien, si no no me lo explico, ¿hayas la normal calculando la média de las normales de cada cara que comparte?.

misscelan

 No, realmente no me sale sombreado FLAT, me sale una especia de sombreado Smooth pero por cada cara, además parece como si no tuviese mucho en cuenta la luz.

Si no defino ninguna normal el sombreado del modelo se comporta como una textura plana.

Las normales por vertice las cargo directamente del modelo.
Las normales por triángulo las calculo restando los puntos B-A, C-B y despues haciendo el producto vectorial de esos vectores.

Una cosa que no he probado es a crear una única normal para el modelo. ¿Eso tendría sentido?. Si tiene sendtido ¿Cómo se haría?

Muchas gracias.

Un saludo.

Ray

 No entiendo mucho que luego hagas un calculo de normales a parte. Si están bien exportadas, deben salir bien.

Quizás deberías averiguar si el problema está al exportarlo, o al cargar el modelo en openGL. ¿No lo puedes ver en algún visor para ver si esta bien?.

¿No estarán invertidas las normales y parece como si la luz estuviera en el interior del objeto?. o... ¿no estará la luz situada en el interior del objeto?

De todos modos también asegurate que las luces y los estados son correctos dibujando una esfera o algo con GLU, a ver si se ve bien.


GLUquadricObj *obj=gluNewQuadric();
gluSphere(obj, 100.0, 16, 16);
gluDeleteQuadric(obj);






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.