Cinema4Dメモ

Cinema4Dという3DCGソフトに関するメモ書きです。

位置のベクターのX,Y,Z値を個別に取得

2015-04-17 14:50:16 | Python & Cinema4D

GetAbsPos()等で位置を取得すると、vector(634.11, 1172.49, 405.83)と感いうじでXYZが1つに纏めて保持されてまして、一方でアニメーションのトラックは、位置のX,Y,Zがそれぞれ一つのトラックを持つので分かれています。なので、GetAbsPos()のオプションかなんかでXだけ、Yだけ、Zだけと言ったふうに別々に取得する方法があるのかと思ったけど、なさそうなんで、いろいろ考えて・・・SDKにそういう機能が無いってことは、言語側でどうにかするしかないんじゃないかと思って調べたらありました。

タプルってのがそれで、上の画像の71行目~の

71     pos = cameraData.GetAbsPos()
72     # タプルから抽出
73     pos_X = pos[0]
74     pos_Y = pos[1]
75     pos_Z = pos[2]

と言う感じで・・・

GetAbsPos()はvector(Xの値, Yの値, Zの値)という、中をコンマで区切られた()を返すのですが、これはPythonのタプルそのものなので、[]大括弧をつけて中に0を入れると、1番目(一番左、つまりX)の要素だけを返してくれるンですよ奥さん!まぁ素敵ね![1]なら2番目だけを返します。

そしてこれら別々に取り出した値を使ってキーを追加すればいいんだよね・・・(続く)


コメントを投稿