0

私はopengles 2.0を使用してAndroidで3Dアプリケーションに取り組んでいますが、いくつかのモデルを描画しますが、それらは

箱のようなモデルは、滑らかなシェーディングでは滑らかすぎるように見えます。球体モデルには滑らかなシェーディングが必要です。

ブレンダーから滑らかな色合いで .OBJ ファイルに 3d モデルをエクスポートしました。

今、私の3Dモデル構造は

頂点ごとの法線。

頂点インデックス配列を使用してモデルを描画します。

私のモデルの法線は頂点ごとの法線であるため、これに対処する私の計画は面ごとの法線を作成することです

通常の描画方法をすべて再構築して、頂点インデックス配列を使用しないようにすると、実行できなくなります。

頂点インデックス配列が消費するメモリが少ないため、この計画を実行したくありません。

補間された可変または別の方法からの中間値を使用してGLSLを作成する機能のように、描画用の頂点インデックス配列でフラットをスムーズにする方法はありますか?

あなたの助けに感謝し、私の悪い英語を申し訳ありません.

4

1 に答える 1

1

私もこれに取り組みました。パイプラインを変更して正確な面の法線を生成し、パイプラインに渡して、それを照明の計算に使用することができます。

または、モデル自体のBlender(または他の3Dプログラム)でその作業を行うことができます-各面が独自の頂点を持つようにフラットにしたい頂点を複製し、他の面に接続されていない場合、それらの頂点法線は法線に直面します(滑らかまたはフラットなシェーディングを使用)。元々6つの頂点からなる立方体は4*6 = 24の頂点になり、同じ6つのクワッド面がありますが、各頂点の頂点法線はクワッドの面法線と正確に一致します。

最終結果は同じで、より多くの頂点をパイプラインに渡す必要がありますが、モデルの滑らかでフラットなシェーディングが必要な場所で混合できるため、モデルのソリューションが気に入っています。

これを自動化するためのスクリプトがblenderにあるかもしれないと想像します。これは、 Blenderが行っていることと、プログラム可能なパイプラインにフラットシェーディングがない理由についての大まかに関連した記事です。

于 2012-12-02T16:19:59.100 に答える