0

選択したメッシュ (創造的には「選択済み」と呼ばれます) をローカル スペースで操作したいので、次を使用します。

    tmesh = NMesh.GetRawFromObject(selected.name)
    tmesh.transform(selected.matrix)

次に、その頂点に対して一連の計算を行い、インデックスごとにそれらを削除します。これはうまく機能します。

うまくいかないのは、後で vert.co オブジェクトのリストからそれらを追加しようとしたときです。それらは互いに相対的に正しく配置されますが、元の頂点の近くにはありません。

            for v in tmesh.verts:
                 toAdd.append(v.co)
              mesh = selected.getData(mesh=1)
              mesh.verts.extend(toAdd)

これは、オブジェクトが別の空間にあるためだと気付きました。だから私がする必要があるのは、新しい頂点を古い空間に戻すことだと思います...しかし、ここで正確に何が起こっているのかについての私の理解はせいぜいあいまいです. tmesh.transform(selected.matrix) コマンドを「元に戻す」にはどうすればよいですか?

私がやっていることのより徹底的な説明はここにあります: http://www.kellbot.com/2010/11/lego-plans-now-with-better-rendering/

4

1 に答える 1

1

私は特にBlenderに精通していませんが、ドキュメントをざっと見てみると、原則として、メソッドを使用して の逆変換を取得できるように思われます(おそらく最初に を作成した後)。invert() Matrixselected.matrixcopy()

于 2010-11-30T20:45:27.263 に答える