3D プログラムでオブジェクトの 3D モデルを表示できるようにしたいとしますが、このメッシュの形状はいくつかのパラメーター (a、b、c..) によって管理されているため、インスタンスは数千のいずれかを持つことができます。可能な組み合わせ。
たとえば、ボルトのライブラリを想像してみてください。ボルトの基本的な形状は、ボルトの1 つの特定のインスタンス (特定の長さ、直径、頭の直径) に対して標準の CAD プログラムで簡単に描画できますが、何千ものインスタンスを作成する必要はありません。メッシュを「動的」または「パラメトリック」として作成したいすべての順列に対してほぼ等しいモデル ファイル。モデル全体またはモデルの一部の単純な縮尺では不十分であることに注意してください。個々の頂点は、基本的に動的な位置を持つ必要があります(x,y,z) = f(a, b, c)
この問題を解決するには、ファイル形式 (動的テンプレート モデルをファイルにエンコードするため) と、パラメーターを適用して最終的なモデルを取得するためのコードの両方が必要になる可能性があります。AutoCad に「動的ブロック」と呼ばれるものがあることは知っていますが、それらを解析してスタンドアロン アプリケーションで使用できるかどうかはわかりません。
私がこれまでに思いついた唯一の解決策は、モデルのさまざまな平面が既知の座標と一致するように、整数座標を持つ正規化された座標系で、標準の CAD 形式でモデルを描画することです。次に、マッピングをコーディングします。たとえば、任意の座標 (x,y,3) が(x,y,a)
たとえばマップされます。これは、平面セクションのマッピングのみを許可するという点でかなり制限されており、モデル自体は、ファイルとそのファイルの外部ハードコーディングされたマッピングのセットの両方で構成されます。
モデルは明示的に取得する必要があります。つまり、最終的な変換されたメッシュを保存できるようにする必要があるため、視覚化ステップでのみスケルトンと頂点シェーダーを使用するなどの「暗黙的な」変換を使用することはできません。
視覚化は Direct3D9 を使用して行われ、コードは C#/.NET 4.0 です。