プロジェクトのJava(lwjgl)でOpenGLのものをいくつか実行しています。その中には、OBJ形式の3Dモデルのインポートが含まれています。すべてはのように見えます。頂点を移動しようとするまで、モデルが分割されると、それらを右に見ることができます。 ブレンダーからのSuzanneです.UVは完全に黒色のテクスチャ(可視性のために)でマップされています。 FRAGシェーダでは、私は通常、世界のアップベクトル間の断片角に応じて、フラグメントにいくつかの白い色を追加している:頂点変位破砕メッシュ
をこれまでのところは良いです。しかし、同じ頂点に小さなY成分の変位を適用すると、面の伸びが増すことが予想されます。代わりに、この問題が発生した:
頂点シェーダ:
#version 150
in vec3 position;
in vec2 texCoords;
in vec3 normal;
void main()
{
vertPosModel = position;
cosTheta = dot(vec3(0.0, 1.0, 0.0), normal);
if(cosTheta > 0.0 && cosTheta < 1.0)
vertPosModel += vec3(0.0, 0.15, 0.0);
gl_Position = transform * vec4(vertPosModel, 1.0);
}
フラグメントシェーダ:
#version 150
uniform sampler2D objTexture;
in vec2 texcoordOut;
in float cosTheta;
out vec4 fragColor;
void main()
{
fragColor = vec4(texture(objTexture, texcoordOut.st).rgb, 1.0) + vec4(cosTheta);
}
私が質問を改善する方法を教えてください。臆病者にならないでください。 – peanutops