私は問題をよく包括的に説明する方法がわかりません。だから私はあなたの例を紹介します...四角形と三角形のメッシュを三角形だけで構成されたメッシュに変換します
は、私は、各クワッドまたは三角形のための頂点のインデックスを示す。この配列を持っている:
>>> faces
array([[0, 1, 2, 3],
[4, 7, 6, 5],
[0, 4, 1, 0],
[1, 5, 6, 2],
[2, 6, 7, 3],
[4, 0, 3, 7],
[1, 4, 5, 0]])
三角形は、私が欲しい0
で終わる要素であり、
>>> faces
array([[0, 1, 2, 3], #->[[0, 1, 2], [0, 2, 3],
[4, 7, 6, 5], #-> [4, 7, 6], [4, 6, 5],
[0, 4, 1, 0], #-> [0, 4, 1],
[1, 5, 6, 2], #-> [1, 5, 6], [1, 6, 2],
[2, 6, 7, 3], #-> [2, 6, 7], [2, 7, 3],
[4, 0, 3, 7], #-> [4, 0, 3], [4, 3, 7],
[1, 4, 5, 0]]) #-> [1, 4, 5]]
この変換を効率的に行うにはどうすればよいですか?
私はそれを別の方法で解決しました。クワッドによって得られたティラングルを配列の最後に置きます。
def v_raw_to_tris(tessfaces):
len_tessfaces = len(tessfaces)
quad_indices = tessfaces[:, 3].nonzero()[0]
t3 = np.empty(((len_tessfaces + len(quad_indices)), 3), 'i4')
t3[:len_tessfaces] = tessfaces[:, :3]
t3[len_tessfaces:] = tessfaces[quad_indices][:, (0, 2, 3)]
return t3
しかし、結果の三角形が配列の最後にあることは望ましくありません。そして元のクワッドの前にイエス
ので、出力は例えば、リストの可変数を持っているでしょう最初のelemには2つのリストがありますか? – Divakar
または、それらをすべて列に入れて合計12行を与えることはできますか? @Divakar、noope。 – Divakar
各要素には3つのアイテムがあります –