« C4D Python R12 テスト:そう言えば…オブジェクトが複数選択されていたら? | トップページ | C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを変更する。 »

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

今回も、スクリプトマネージャを使います。

テストなので、全く実用的ではないコードを書いています。
ちっともc4d Pythonの参考にはならないね。

とりあえず、ポリゴンオブジェクトからポリゴンを取得してコンソールに表示してみる。

Py_polygon_01

上の面だけ三角ポリゴン化しました。

Python C.O.F.F.E.E.
"""
ポリゴンオブジェクトのポリゴンを表示
2011.2.7
"""


import c4d


def PrintPolygon(obj):
    if not isinstance(obj, c4d.PolygonObject):
        return
    ply = obj.GetAllPolygons()
    for c in xrange(obj.GetPolygonCount()):
        print c, ":", ply[c]

if __name__ == '__main__':
    PrintPolygon(op)
/*
ポリゴンオブジェクトのポリゴンを表示
2011.2.7
*/


PrintPolygon(obj)
{
  if(!instanceof(obj , PolygonObject))return;
  var ply = obj->GetPolygons();
  var c;
  for(c = 0 ; c < obj->GetPolygonCount() ; c++){
    println(c , " : " , ply[c*4] , ", " ,
                        ply[c*4 + 1] , ", " ,
                        ply[c*4 + 2] , ", " ,
                        ply[c*4 + 3]);
  }
}

main(doc , op)
{
  PrintPolygon(op);
}
0 : 0, 1, 3, 2
1 : 2, 3, 5, 4
2 : 4, 5, 7, 6
3 : 6, 7 ,1, 0
4 : 1, 7, 5
5 : 6, 0, 2, 4
6 : 1, 5, 3
0 : 0, 1, 3, 2
1 : 2, 3, 5, 4
2 : 4, 5, 7, 6
3 : 6, 7 ,1, 0
4 : 1, 7, 5, 5
5 : 6, 0, 2, 4
6 : 1, 5, 3, 3

C.O.F.F.E.E.の方は、PolygonObjectのGetPolygons()で、全てのポリゴンの配列…
一連のポイント番号が収まった配列が取得できます。
配列の取得後、4つづつ切り分けて3番目と4番目が同じポイント番号だと三角ポリゴンで、同じでなければ四角ポリゴンと言うことです。

C4D Pythonの方は、c4d.PolygonObjectのGetAllPolygons()メソッドで取得します。
表示結果から見ると、ただのポイント番号のリストの様に見えますが、c4d.CPolygonのリストを取得しています。

このc4d.CPolygonの要素にアクセスするには、a,b,c,dを使います。

Python
    for c in xrange(obj.GetPolygonCount()):
        print c, ":", ply[c].a, ",", ply[c].b, ",", ply[c].c, ",", ply[c].d
0 : 0 , 1 , 3 , 2
1 : 2 , 3 , 5 , 4
2 : 4 , 5 , 7 , 6
3 : 6 , 7 , 1 , 0
4 : 1 , 7 , 5 , 5
5 : 6 , 0 , 2 , 4
6 : 1 , 5 , 3 , 3

表示結果はC.O.F.F.E.E.と同じ三角ポリゴンも4点になりました。

|

« C4D Python R12 テスト:そう言えば…オブジェクトが複数選択されていたら? | トップページ | C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを変更する。 »

コメント

コメントを書く



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




« C4D Python R12 テスト:そう言えば…オブジェクトが複数選択されていたら? | トップページ | C4D Python R12 テスト:ポリゴンオブジェクトのポリゴンを変更する。 »