説明:見つける顔
私はメッシュとそのすべての頂点顔情報(頂点インデックス、頂点位置、顔インデックスなど)を持っていると私はこれのサブパーツをレンダリングしたいですメッシュ。たとえば、私が手メッシュを持っている場合、私は指のうちの1つだけをレンダリングしたい。
私は、私がレンダリングしたい指の頂点インデックス、頂点位置などを知っていることを意味する各サブパーツの関連頂点の情報を持っています。しかし、私はどの顔が指に関連しているのかわかりません。だから、私は、サブパーツをレンダリングするために、関連する顔のインデックスを見つける必要があります。
質問:
私が設定し顔全体指数でサブ部品の関連する指標を見つけることができますどのように?私は徹底的な検索アルゴリズムを使用することができますが、私はより良いアプローチ、それを行うための既知のアルゴリズムがあることを願っています。三角形、正方形メッシュの
class Vertex
{
Vertex(float _x, float _y, float _z)
{
x = _x; y = _y; z = _z;
}
float x, y, z; // Positions
};
class Face
{
Face(int _v1, int _v2, int _v3)
{
vertIndex1 = _v1; vertIndex2 = _v2; vertIndex3 = _v3;
}
int vertIndex1, vertIndex2, vertIndex3; // Vertex indices
};
使用例:
詳しく
一部ベクターようstd::vector<Vertex> verts
とstd::vector<Face> faces
として。私はVertex
v1(0,0,0)、v2(1,0,0)、v3(0,1,0)、およびv4(1,1,0)を持っています。したがって、対応するFace
オブジェクトはf1(0,1,2)およびf2(0,3,4)です。ここで0,1,2および4はVertex
オブジェクトのインデックスで、verts
ベクトルです。ご覧のように、頂点は異なるFace
にある可能性があります。
ここで、verts.size()
が6000、faces.size()
が12000であるハンドメッシュがあるとしましょう。ただし、ハンドメッシュ全体ではなく、ピンクの指だけをレンダリングしたいのですが、ピンクの指の頂点インデックス(345,369,541、...)として計算される。
私は使用する必要がある頂点を知っています。私は顔情報全体を知っています。これらの与えられた頂点についてのみ顔のインデックスを探したいと思います。
*すべての頂点が指定された部分部分頂点にある面が必要ですか? *任意の*頂点がサブパーツ頂点集合内にあるものは?または何?あなたが考えている網羅的な検索は何ですか? –
私はメッシュ全体について持っている情報。私は顔のためのN要素を含むセットを持っています。しかし、私はこのセットのほんの一部しか必要としません。 – ciyo
それは私の質問に答えません。私の質問は:正確にどの顔が必要ですか? (私はあなたの入力がすべての顔のセットであると仮定しています。各顔には、それを構成する頂点のリストと、サブパーツに対応する頂点のサブセットがあります。 、正確には、与えられた顔が結果セットの一部でなければならない基準は何ですか? –