「Kd Ka Ks」をどのように使用/描画しますか?
これらのオプションの使用方法に興味があります。
Ks[3]
Kd[3]
Ka[3]
glcolor3f(..., ..., ...);
ありがとう。
これらは反射係数です。Ka はアンビエント コンポーネント、Kd はディフューズ コンポーネント、Ks はスペキュラ コンポーネントです。
Ks、Kd、および Ka は、3 つの要素の配列です (4 番目の値であるアルファ コンポーネントを使用することもできます)。要素は RGB カラーを表します。光が表面からどのように反射するかを変更したい場合は、これらの値を調整できます (鏡面照明を増やして表面をより光沢のあるものにするには Ks を増やし、拡散反射を増やすには Kd を増やし、周囲光を増やすには Ka を増やしてすべてを明るくします)。 .
たとえば、次を使用してマテリアルを変更できますglMaterialfv
。
GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 };
GLfloat mat_diffuse[] = { 0.1, 0.5, 0.8, 1.0 };
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat shinyness[] = { 5.0 };
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, shinyness);
S、D、および A は、スペキュラー、ディフューズ、およびアンビエント ライティングを表す必要があります。周囲のコードがなければ、ベクトルが何を表しているのかよくわかりません。それは、サーフェスに適用されるスペキュラー、アンビエント、ディフューズ ライトの色だと思います。ライティングを実装するためにチェックアウトできるシェーディング モデルは多数あります。Phong を参照してください: http://www.arcsynthesis.org/gltut/Illumination/Tut11%20Phong%20Model.html、http://en.wikipedia.org /wiki/Phong_shading