0

メッシュ処理アルゴリズムの結果を表示するためのレンダリング プラットフォームが必要です。これは非常に基本的で簡単です。OpenGL のデフォルトの照明が少し奇妙であることを除けば、私はそれを実行しました。

私のレンダリング結果は次のようになります。

スタンフォードバニー

OpenGL のライティング パラメータは次のようになります。

    // Lights properties
    float ambientProperties[]   = {0.4f, 0.4f, 0.4f, 1.0f};
    float diffuseProperties[]   = {0.8f, 0.8f, 0.8f, 1.0f};
    float specularProperties[]  = {1.0f, 1.0f, 1.0f, 1.0f};
    float lightPosition[]       = {0.2f, -0.3f, -0.3f, 0.0f};

    glLightfv(GL_LIGHT0, GL_AMBIENT, ambientProperties);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
    glLightfv(GL_LIGHT0, GL_SPECULAR, specularProperties);
    glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
    glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1.0);
    glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);

    // Material Properties
    float   MatAmbient[]  = {0.3f, 0.3f, 0.3f, 1.0f};
    float   MatDiffuse[]  = {0.7f, 0.7f, 0.7f, 1.0f};

    float   MatSpecular[]  = {0.8f, 0.8f, 0.8, 1.0f};
    float   MatShininess[]  = { 64 };
    float   MatEmission[]  = {0.0f, 0.0f, 0.0f, 1.0f};

    glMaterialfv(GL_FRONT, GL_AMBIENT, MatAmbient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, MatDiffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR, MatSpecular);
    glMaterialfv(GL_FRONT, GL_SHININESS, MatShininess);
    glMaterialfv(GL_FRONT, GL_EMISSION, MatEmission);

私が欲しいのは次のようなものです:

手 http://iparla.inria.fr/publications/2007/BS07b/sketch_teaser.jpg

レンダリング結果のフル解像度バージョンを頂点法線に変更し、単純化したバージョンを追加して、比較をより説得力のあるものにしました。色を無視して、後者の方が明らかに明るく照らされていることがわかります。

デフォルトの OpenGL 照明は、希望する結果のようにパラメータ調整できますか?? または、照明用の高品質 GLSL シェーダーのコードを取得するにはどうすればよいですか?? 私はグラフィックス レンダリングの初心者であり、そのようなライティング ルーチンは珍しくないと思います。

4

0 に答える 0