« C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを表示する。 | トップページ | C4D Python R12 テスト:立方体プリミティブをシーンに追加してみる。 »

C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを変更する。

今回は、四角ポリゴンを三角ポリゴンに変更。ただし、ポリゴン数はそのままです。

立方体を編集可能な状態にした物を使います。

Py_trianglepoly_01

c4d.PolygonObjectにはGetAllPolygons()メソッドで全てのポリゴンを取得できますが、C.O.F.F.E.E.でのポリゴン配列を適用するSetPolygons()に当たるメソッドが見当たりません。

C.O.F.F.E.E.
/*
ポリゴンオブジェクト四角ポリゴンを三角ポリゴンへ。
ポリゴンの四番目のポイントを三番目と同じにする。
GetPolygonsで取得し処理後、SetPolygonsで適用する。
2011.2.8
*/



toTrianglePolygon(obj)
{
  if(!instanceof(obj, PolygonObject))return;
  var ply = obj->GetPolygons();
  var c;
  for(c = 0 ; c < obj->GetPolygonCount() ; c++){
    ply[c*4 + 3] = ply[c*4 + 2];
  }
  obj->SetPolygons(ply);
  obj->Message(MSG_UPDATE);
}


main(doc , op)
{
  toTrianglePolygon(op);
}

ですのでSetPolygon()メソッドで1枚づつ適用していきます。

Python C.O.F.F.E.E.
"""
ポリゴンオブジェクト四角ポリゴンを三角ポリゴンへ
GetAllPolygonsで取得し、CPolygonを使用して、SetPolygonで1枚づつ適用する。
2011.2.8
"""


import c4d


def toTrianglePolygon(obj):
    if not isinstance(obj, c4d.PolygonObject):
        return
    ply = obj.GetAllPolygons()
    for c in xrange(obj.GetPolygonCount()):
        obj.SetPolygon(c, c4d.CPolygon(ply[c].a, ply[c].b, ply[c].c))
    obj.Message(c4d.MSG_UPDATE)


if __name__ == '__main__':
    toTrianglePolygon(op)
    c4d.EventAdd()
/*
ポリゴンオブジェクト四角ポリゴンを三角ポリゴンへ
GetPolygonsで取得し、Polygonを使用して、SetPolygonで1枚づつ適用する
2011.2.8
*/



toTrianglePolygon(obj)
{
  if(!instanceof(obj, PolygonObject))return;
  var ply = obj->GetPolygons();
  var c;
  var pl = new(Polygon);
  for(c = 0 ; c < obj->GetPolygonCount() ; c++){
    pl->a = ply[c*4];
    pl->b = ply[c*4 + 1];
    pl->c = ply[c*4 + 2];
    pl->d = ply[c*4 + 2];
    obj->SetPolygon(c, pl);
  }
  obj->Message(MSG_UPDATE);
}


main(doc , op)
{
  toTrianglePolygon(op);
}

結果はこんな具合…

Py_trianglepoly_02

c4d.CPolygonは、3点を指定すると三角ポリゴンになり、勿論4点は四角ポリゴンになります。
C.O.F.F.E.E.の場合は、三番目のポイントと四番目のポイントと同じにしないと三角ポリゴンにはなりません。

これもまた、実用的なものではありません。

|

« C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを表示する。 | トップページ | C4D Python R12 テスト:立方体プリミティブをシーンに追加してみる。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを表示する。 | トップページ | C4D Python R12 テスト:立方体プリミティブをシーンに追加してみる。 »