« 「C4D プラグイン インストール方法」等で、極まれに検索されますね… | トップページ | C4D Python R12 テスト:現在の編集モードを取得 »

C4D Python R12 テスト:ポリゴンのポイントのグローバル座標

ポリゴンやスプラインのポイントのグローバル座標って、どうやって求めるんだっけ…
久ぶりだから忘れてしまった…
以前に書かなかったっけか?

とりあえず、正多面体を追加し、位置/スケール/角度を適当に設定。
編集可能にして適当なポイントを1つ選択。

Globalpos_01

ポイントのワールド座標を座標マネージャで確認
X : -87.178 cm/Y : 67.029 cm/Z : -89.084 cm

Python
'''
選択ポイントのグローバル座標を取得する。
'''

import c4d
   
   
def main():
    if not isinstance(op, c4d.PointObject):return #ポイントオブジェクト以外は終了
   
    mg = op.GetMg() #グローバルマトリクスの取得
   
    pts = op.GetPointS() #ポイント選択範囲を取得
   
    for id in xrange(op.GetPointCount()):
        if pts.IsSelected(id):
            print 'point', id
            print ' ローカル:', op.GetPoint(id)      #ローカル座標の取得
            print 'グローバル1:', op.GetPoint(id) * mg #グローバル座標の取得 ローカル座標×グローバルマトリクス
            print 'グローバル2:', mg * op.GetPoint(id) #グローバル座標の取得 グローバルマトリクス×ローカル座標
   
   
   
if __name__=='__main__':
    main()
point 2
 ローカル: Vector(80.902, 0, -50)
グローバル1: Vector(-87.178, 67.029, -89.084)
グローバル2: Vector(-87.178, 67.029, -89.084)

コンソールに表示されている結果は問題ないようだ…

グローバル座標を求めるには、ローカル座標 × グローバルマトリクス で問題ないね…
乗算の順番は反対、グローバルマトリクス × ローカル座標 でも問題ないようだ。

|

« 「C4D プラグイン インストール方法」等で、極まれに検索されますね… | トップページ | C4D Python R12 テスト:現在の編集モードを取得 »