1

球体と円柱を使用してスプリングをレンダリングしたいと考えています。各シリンダーには両端に 2 つの球があり、すべてのシリンダーはスプリングの中心線に沿って配置されます。私はこれを達成できました..そしてレンダリングは良いです。私は現在、gluSphere と gluCylinder を使用してそれを行っています。

パフォーマンスを見ると、非常に遅いです。したがって、次のことが可能かどうかを知りたいです。

球と円柱の表面を組み合わせて、外側の船体のみをレンダリングし、球の内側の覆われた部分をレンダリングしないことは可能ですか?

VBOについても読みました.. VBOでgluSphereとgluCylinderを使用することは可能ですか..?バネの性質がコロコロ変わるのでディスプレイリストが使えない…!

誰でもより良い提案を提案できますか?

4

2 に答える 2

3

ばねの描画方法を再考することをお勧めします。私の意見では、2 つの有効なアプローチがあります。

  1. Assimpまたは OpenGL と簡単に統合できるその他のモデル読み込みソフトウェアを使用して、ばねモデルを読み込みます。無料の 3D モデルは、Turbo Squidまたは Google の 3D ウェアハウス (Google Sketch-Up 内) から入手できます。

  2. オブジェクトを純粋に OpenGL で描画します。ポスト固定関数 OpenGL パイプラインを使用してこの種のオブジェクトを描画する慣用的な方法は、ボリューム 3D ラインを描画することです。描画する線が多いほど、レンダリング時間を犠牲にしてスプリングに与えることができる曲率が大きくなります。

    スプリングを描画するには、スプリングの形状を定義する一連のポイント (隣接性を含む) を定義し、GL_LINE_STRIP_ADJACENCY のプリミティブ タイプでこれらのポイントを描画することをお勧めします。次に、シェーダー プログラムでジオメトリ シェーダーを使用して、このピクセル バウンド ライン ストリップを、三角形ストリップで構成されるボリューム 3D ラインのセットに拡張します。

    このブログ投稿では、この手法について優れた説明が提供されています。

于 2013-03-17T19:23:02.457 に答える
1

おそらく最善の策は、任意の 3D モデリング ソフトウェア ( Blenderが思い浮かびます) で簡単なチュートリアルを受講してから、 CSG操作を使用して静止ポーズでスプリングをモデリングすることです。

このアプローチは、冗長なプリミティブを取り除くだけでなく、VBO でモデルを非常に簡単に使用できるようにします。Blender の出力ファイル (最も簡単なのは.obj ) を解析し、頂点データ (位置、法線、場合によってはテクスチャ座標) で満たされた配列を取得するだけです。

最後に、スプリングを「アニメート」するには、頂点シェーダーを使用できます。スプリングがどれだけ変形するかを説明する別のユニフォームを渡して、そこで残りの変換を行うだけです。

于 2013-03-17T19:25:16.183 に答える