maya スタジオライブラリをちょっといじる

スタジオライブラリをちょっといじる

**※ver 2.9.11 でのお話**
**※最新ver 2.14.1　では対応されてました。**

書き出せない
-
アニメーションを書き出そうとするとこんなエラーが出て
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/29ac951b-acfb-670f-e5e4-b08cd40914de.png)

なんか謎のCURVEが生成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/9da76dec-8cc9-b335-f2cb-9c0b6334a6ba.png)

スクリプトエディタも盛大にエラーを吐いている状態
```
# Traceback (most recent call last):
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\animation.py", line 652, in save
#     maya.cmds.pasteKey(dup_node)
# ValueError: More than one object matches name: nurbsCircleShape1
# # 
# During handling of the above exception, another exception occurred:

# Traceback (most recent call last):
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\studiolibrarymaya\basesavewidget.py", line 448, in accept
#     self.save(path=path, thumbnail=thumbnail)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\studiolibrarymaya\basesavewidget.py", line 473, in save
#     **kwargs
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\studioqt\decorators.py", line 24, in wrapped
#     return fn(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\studiolibrary\libraryitem.py", line 655, in safeSave
#     self.save(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\studiolibrarymaya\animitem.py", line 272, in save
#     bakeConnected=kwargs.get("bakeConnected")
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\animation.py", line 135, in saveAnim
#     bakeConnected=bakeConnected
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\decorators.py", line 42, in wrapped
#     ret = fn(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\decorators.py", line 55, in wrapped
#     return fn(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\decorators.py", line 133, in wrapped
#     return fn(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\decorators.py", line 102, in wrapped
#     return fn(*args, **kwargs)
#   File "K:\tools\maya\scripts\python\studiolibrary\studiolibrary-2.9.11\src\mutils\animation.py", line 706, in save
#     maya.cmds.delete(deleteObjects)
# ValueError: More than one object matches name: ['nurbsCircleShape1']
```

予想
-

**CURVEというオブジェクトは　選択したコントローラーのアニメーションを書き出すために、
複製したノードで、最終的に削除するはずがshape名がオリジナルと被ってしまって削除できない**
的な？

とりあえずコケてるところを眺めてみる

この辺かなぁ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/f368f342-901a-d97f-7f34-fd49ce6791a5.png)

とりあえず順にみてみる


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/1a161504-31c5-57db-cbe5-39884fc7b41f.png)

ターゲットとなるノードを複製するんだけど、
- transformノードの場合はtransformノードのみでそれをlistに追加
- transfromノード以外の場合はshape名をlistに追加

(´A)？
locator とか mesh とか nurbsSurfaceとかはshapeを指定しない限りはtransformノード扱い

elseの方に流れる可能性があるのは **joint**くらいかぁ・・・・・・

(・A・)あ

実はアニメーションが書き出せなかったコントローラーですが、
実体はjointなんですね。
joint　に nurbsCurveShapeをparentして、　joint自体は drawStyle = Noneで非表示に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/fdb43189-0893-21ac-1ad2-74f138e642ed.png)

これはelseの方に流れ込んでますね。

試しに改修
-

jointも仲間に入れてあげて　と　雑に改修してテスト

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/208b137a-f377-83f6-919c-e468a672ef47.png)

書き出せた！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/878e38d2-f91b-5e58-ea31-aa2f40d0c319.png)

書き出せたものの
-
ツール全体を把握してる訳ではないので、ここだけ直したところで他に影響がないかどうかはもう少し詳しく確認しないと解りませんね。

なので
問題が無いなら　**最新版を使った方がいい**　と思います！