私はコンピュータグラフィックスの初心者です(CGの基礎を1学期持っています)。
ImmediateRenderObjectを使用したTHREE.jsのシェーディング(フラットとスムーズの両方)に関する1つの質問:
同一平面上の三角形が、フラットシェーディングとスムーズシェーディングの両方で異なるシェーディングを行うのはなぜですか?下の写真でわかるように、三角形は正しい面の法線を持っています(つまり、三角形が置かれている平面に垂直な、すべて同じで、下の写真の青いものです)。頂点法線も正しく見えます(つまり、境界にある頂点の頂点法線、下の写真の赤い頂点を除いて、平面に垂直です)。
ひし形のジオメトリ(ImmediateRenderObjectとして)があり、そこから下部のCubeGeometryを減算します(THREE.CSGを使用)。
CSG操作の前後の両方で、面の法線は完全に正しいように見えますが、同一平面上の三角形は異なるシェーディングを取得します(頂点法線はダイヤモンドの鋭いエッジでは完全に正しいようには見えませんが、これは同一平面上のパーツに影響を与えないはずです。上部とさまざまな側面)。
なぜこれが起こるのか、そして正しいシェーディングを得るために私ができることは何ですか?助けていただければ幸いです。
前もって感謝します!:)
写真は次のとおりです。
フラットシェーディングの完全なダイヤモンド:http://i.stack.imgur.com/kWt6J.png
フラットシェーディングのカットダイヤモンドのトップ:http://i.stack.imgur.com/0OJZv.png