#mox-motion presents #ChainUpVector2Roll (Pyhton) #12/11/1 #使い方:チェインルートをシングル選択して実行 app = Application for oSel in app.Selection: oBone = oSel.FindChild("","bone") #ボーンを取得 oBone1 = oBone.FindChild("","bone") #その次のボーンを取得 oEff = oSel.FindChild("","eff") #エフェクタを取得 #ダミーを用意しディレクションとアップベクターを設定 oDummy = oSel.AddNull("dummy") app.ResetTransform(oDummy) oDireCns = oDummy.Kinematics.AddConstraint("Direction",oEff,False) oDireCns.Parameters("upvct_active").Value = True oDireCns.UpVectorReference=oBone1 #Plot処理 intPlyin = app.getValue("PlayControl.in") intPlyout = app.getValue("PlayControl.out") app.PlotAndApplyActions(oDummy.fullname + ".kine.local.{rotx,roty,rotz}", \ "plot", intPlyin,intPlyout, "", 20, 3, "", "", "", "", True, True) #plotしたデータをロールにコピペ app.CopyPaste((oDummy.fullname +".kine.local.rotx"), "", (oBone.fullname + ".joint.roll"), 2) app.SetValue((oBone.fullname + ".joint.resplane"), 0, "") #チェインアップベクターとダミーを削除 oBoneUpve = app.Dictionary.GetObject(oBone.fullname + ".joint.SkeletonUpVectorOp",False) app.DeleteObj(oBoneUpve) app.DeleteObj(oDummy)