0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 5

editMAでアニメーションを書き出したい

Last updated at Posted at 2024-12-04

Mayaでアニメーションを読み書きする方法は幾つかあるのですが、editMAを使った読み書きをやってみます。

書き出し

exportEditsというコマンドがありました。
これを使ってやってみます。

選択したノードのアニメーションキーだけを書き出す場合であればこんな感じでしょうか。

image.png

import maya.cmds as cmds
exportFilePath = "D:/test/testAnimation.editMA"
cmds.exportEdits(
                            exportFilePath,
                            type = "editMA",
                            selected =True,
                            includeAnimation =True,
                            f =True
                        )

書き出せてますね。

//Maya ASCII 2022 scene
//Name: testAnimation.editMA
//Last modified: Sun, Dec 01, 2024 02:45:03 PM
//Codeset: 932
requires maya "2022";
requires -nodeType "aiOptions" -nodeType "aiAOVDriver" -nodeType "aiAOVFilter" "mtoa" "5.0.0.4";
requires "stereoCamera" "10.0";
currentUnit -l centimeter -a degree -t film;
fileInfo "fileCreationSource" "ExportEdits";
createNode animCurveTA -n "pSphere1_rotateY";
	rename -uid "4791779C-4CEF-EF31-DECD-ABAE55E28704";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
createNode animCurveTA -n "pSphere1_rotateZ";
	rename -uid "C25A9C42-48BB-726B-F329-418F3E6482E3";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
createNode animCurveTA -n "pSphere1_rotateX";
	rename -uid "2F0CE1C7-4E03-64A2-C2E4-3DB2E72EAC1F";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
createNode animCurveTL -n "pSphere1_translateZ";
	rename -uid "0CF890E7-47FA-C5EE-AF1B-03854F71FA86";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
createNode animCurveTU -n "pSphere1_visibility";
	rename -uid "0E898703-4A7E-EF90-7FD5-8CBAC512F603";
	setAttr ".tan" 9;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 1;
	setAttr ".kot[0]"  5;
createNode animCurveTU -n "pSphere1_scaleX";
	rename -uid "792E4EB4-4BB4-E439-AC71-34B9854F8247";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 1;
createNode animCurveTU -n "pSphere1_scaleY";
	rename -uid "031AEBC5-485B-42DD-E583-24AE8FE40D15";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 1;
createNode animCurveTU -n "pSphere1_scaleZ";
	rename -uid "6723FC29-4730-9A89-F952-128D6A6F9C53";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 1;
createNode animCurveTL -n "pSphere1_translateX";
	rename -uid "68623C64-4443-50BB-3889-8FB915D885CC";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
createNode animCurveTL -n "pSphere1_translateY";
	rename -uid "861B8D53-4DA8-1367-850D-C09DF3CA5B83";
	setAttr ".tan" 18;
	setAttr ".wgt" no;
	setAttr ".ktv[0]"  1 0;
connectAttr "pSphere1_rotateY.o" "<main>:pSphere1.ry";
connectAttr "pSphere1_rotateZ.o" "<main>:pSphere1.rz";
connectAttr "pSphere1_rotateX.o" "<main>:pSphere1.rx";
connectAttr "pSphere1_translateZ.o" "<main>:pSphere1.tz";
connectAttr "pSphere1_visibility.o" "<main>:pSphere1.v";
connectAttr "pSphere1_scaleX.o" "<main>:pSphere1.sx";
connectAttr "pSphere1_scaleY.o" "<main>:pSphere1.sy";
connectAttr "pSphere1_scaleZ.o" "<main>:pSphere1.sz";
connectAttr "pSphere1_translateX.o" "<main>:pSphere1.tx";
connectAttr "pSphere1_translateY.o" "<main>:pSphere1.ty";
// End of testAnimation.editMA

ネームスペース部分が に書き換わってますね。
読み込み時にnamespaceを指定するのかなぁ?

読み込み

これを読み込んでみます。

読み込みはー・・・・・importEditsとかあるのかと思ったらないですね。
とりあえずfileコマンドを覗いてみます。

関係ありそうなフラグはこれですがー

applyTo(at)
オフライン編集ファイルの読み込み時または参照時に、それを指定のリファレンスに適用します( のマップ先を決定します)。引数としてリファレンス ノード名を指定します。メイン シーン(ルート ネームスペース)のノードに編集を適用するには、「:」で渡します。 を折り畳むには(つまり、「なし」にマップするには)、"" に渡します。ファイル -i/import または -r/reference フラグと一緒に使用した場合のみ使用できます。

シンプルにやってみます。

import maya.cmds as cmds
exportFilePath = "D:/test/testAnimation.editMA"
cmds.file(exportFilePath,
        type = "editMA",
        i =True,
        applyTo = "sampleAsset_v01RN"
        )

image.png

お、無事読み込めました。
applyToで指定するのが namespaceではなく、リファレンスノード名 というのが注意ポイントですね。

シンプルなアニメーションの読み書きは割と簡単でした。

アニメーションが読み込み済みのシーンに同じアニメーションを読み込んでみます。

# Error: file: D:/test/testAnimation.editMA line 61: ':sampleAsset_v01:pSphere1.rotateY' already has an incoming connection from ':pSphere1_rotateY.output'. # 
# Error: file: D:/test/testAnimation.editMA line 62: ':sampleAsset_v01:pSphere1.rotateZ' already has an incoming connection from ':pSphere1_rotateZ.output'. # 
# Error: file: D:/test/testAnimation.editMA line 63: ':sampleAsset_v01:pSphere1.rotateX' already has an incoming connection from ':pSphere1_rotateX.output'. # 
# Error: file: D:/test/testAnimation.editMA line 64: ':sampleAsset_v01:pSphere1.translateZ' already has an incoming connection from ':pSphere1_translateZ.output'. # 
# Error: file: D:/test/testAnimation.editMA line 65: ':sampleAsset_v01:pSphere1.visibility' already has an incoming connection from ':pSphere1_visibility.output'. # 
# Error: file: D:/test/testAnimation.editMA line 66: ':sampleAsset_v01:pSphere1.scaleX' already has an incoming connection from ':pSphere1_scaleX.output'. # 
# Error: file: D:/test/testAnimation.editMA line 67: ':sampleAsset_v01:pSphere1.scaleY' already has an incoming connection from ':pSphere1_scaleY.output'. # 
# Error: file: D:/test/testAnimation.editMA line 68: ':sampleAsset_v01:pSphere1.scaleZ' already has an incoming connection from ':pSphere1_scaleZ.output'. # 
# Error: file: D:/test/testAnimation.editMA line 69: ':sampleAsset_v01:pSphere1.translateX' already has an incoming connection from ':pSphere1_translateX.output'. # 
# Error: file: D:/test/testAnimation.editMA line 70: ':sampleAsset_v01:pSphere1.translateY' already has an incoming connection from ':pSphere1_translateY.output'. # 
i

ん~ お断りされました。

となると、editMAの使いどころはスタジオライブラリの様な作業中のアニメーションの読み書きというよりは、
作業開始時・終了時にクリーンなシーンを作成する為に読み込み・書き出しを行う感じですかね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?