J'ai été à l'apprentissage d'OpenGL pour les deux dernières semaines et j'ai rencontré quelques difficultés de mise en œuvre d'un module d'éclairage de Phong. Il semble ne pas faire de l'interpolation entre les sommets malgré mon utilisation de l' smooth
de qualification. Suis-je manqué quelque chose? Pour donner du crédit lorsque le crédit est dû, le code pour le vertex et fragment shaders crèches fortement de l' OpenGL SuperBible Cinquième Édition. Je recommande vivement ce livre!
Vertex Shader:
#version 330
in vec4 vVertex;
in vec3 vNormal;
uniform mat4 mvpMatrix; // mvp = ModelViewProjection
uniform mat4 mvMatrix; // mv = ModelView
uniform mat3 normalMatrix;
uniform vec3 vLightPosition;
smooth out vec3 vVaryingNormal;
smooth out vec3 vVaryingLightDir;
void main(void) {
vVaryingNormal = normalMatrix * vNormal;
vec4 vPosition4 = mvMatrix * vVertex;
vec3 vPosition3 = vPosition4.xyz / vPosition4.w;
vVaryingLightDir = normalize(vLightPosition - vPosition3);
gl_Position = mvpMatrix * vVertex;
}
Fragment Shader:
#version 330
out vec4 vFragColor;
uniform vec4 ambientColor;
uniform vec4 diffuseColor;
uniform vec4 specularColor;
smooth in vec3 vVaryingNormal;
smooth in vec3 vVaryingLightDir;
void main(void) {
float diff = max(0.0, dot(normalize(vVaryingNormal), normalize(vVaryingLightDir)));
vFragColor = diff * diffuseColor;
vFragColor += ambientColor;
vec3 vReflection = normalize(reflect(-normalize(vVaryingLightDir),normalize(vVaryingNormal)));
float spec = max(0.0, dot(normalize(vVaryingNormal), vReflection));
if(diff != 0) {
float fSpec = pow(spec, 32.0);
vFragColor.rgb += vec3(fSpec, fSpec, fSpec);
}
}
Ce (domaine public), l'image de Wikipedia montre exactement quel genre d'image que je suis et ce que je vise, je suis l'obtention de l'image "flat" mais je veux que la "Phong" de l'image.
Toute aide serait grandement appréciée. Merci!!!!
edit: Si cela fait une différence, je suis en utilisant PyOpenGL 3.0.1 et Python 2.6.
edit2:
Solution
Il s'avère que le problème était avec mon géométrie; Kos était correcte. Pour quelqu'un d'autre que de l'avoir ce problème avec Blender modèles, Kos a souligné que cela Edit->Faces->Set Smooth
fait le tour. J'ai trouvé que les Ailes 3D travaillé "hors de la boîte."