0

基本的にクラスの形式の .obj 形式である現在の実装よりもメッシュを処理するためのより良い方法を探しています。

私の現在の構造は

Class Vertex
{
    float[3] Pos;
}

Class Face
{
    Vertex[3] Verts;
    float[3][3] Norm;
    float[3][3] Tex;
}

Class Mesh
{
    Face[] MeshData;
}

ほとんどの場合これで問題なく使用できますが、頂点を操作したり、ランダムに移動したりできるようにしたいと考えています。私はそれをしましたが、接続された面はそれで動きません。

これはおそらく、同じ位置にある頂点へのすべての参照、同じ頂点への参照を作成することで修正できますが、事前にそれを行う方法がわかりません。私のセットアップでの操作。

4

1 に答える 1

0

メッシュを操作し、レンダリング速度が二次的なものである場合は、ハーフエッジ データ構造を調べてください。

レンダリング速度が最も重要な場合は、すべてをインターリーブされた頂点/texcoord/法線配列にフラット化して、VA/VBO との親和性を最大限に高めます。

struct Vertex
{
    float x, y, z;
    float u, v;
    float nx, ny, ny;
};

通常sizeof(Vertex)、32 バイトの倍数にする必要があります。

于 2011-04-04T17:51:26.163 に答える