OpenGLの法線
by Ton Roosendaal
OpenGLによるライティング、法線、負のスケール
このシチュエーションはOpenGLでDouble Sidedをライティングした時です。背面・前面が入れ替わった所為で、球が完全に黒くレンダリングされています。 負のスケールのObjectを使用する時、Blenderの"Double Sided"をOFFにすることが、通常の回避のアドバイスです。 |
したがって、この問題の解決方法はObjectが「反転した」行列を持っているかどうか計算することです。幸運にも、ここにシンプルかつ信頼性の高い方法があります。 |
(blenkernel/intern/object.c の where_is_object()より)
/* set negative scale flag in object */
Crossf(vec, ob->obmat[0], ob->obmat[1]);
if( Inpf(vec, ob->obmat[2]) < 0.0 ) ob->transflag |= OB_NEG_SCALE;
else ob->transflag &= ~OB_NEG_SCALE;
描画中の前面・背面の決定を正しくしました。
if(ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW);
else glFrontFace(GL_CCW);
かなりの年月の後に、ついに…。
投票数:50
平均点:10.00
Blender2.34 gameBlender |
Blender機能別 |
Blender2.34 Other additions and fixes |
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki