maya exportするとマテリアルが剥がれる問題

師走のこの忙しい時に遭遇したネタを

よしデータ完成、ごみを残さないようにexport selection　でモデルデータを保存して・・・

開き直したら・・・・
oh, green world!

マテリアルのアサインが剥がれてる！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/f0e09e55-2dcd-d47f-865c-812edcef1636.png)

というか
マテリアルがおらんがな！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/754ea5ee-329b-259a-856a-4fb5c3045c48.png)

検証
-
メッシュの問題か、マテリアルの問題か

とりあえず**lmabert1にアサインして、差分を見てみますか**

```
// Warning: line 1: Node 'moge_geoShape.instObjGroups[0]': cannot make assignment to 'initialShadingGroup' shader. // 
// Error: line 1: Connection not made: 'moge_geoShape.instObjGroups[0]' -> 'initialShadingGroup.dagSetMembers[-1]'.  Source node will not allow the connection. // 
// Error: line 1: Error while parsing arguments. // 
```
(´A)えー・・・・どういうことー？アサインできなーい？

マテリアルのアサインができないシーンかしら？

新規オブジェクトを追加して、
lambert1から新規マテリアルにアサイン -> **できる**
新規マテリアルから消失しちゃうマテリアルにアサイン -> **できなーい**
```
// Warning: line 1: Node 'pCubeShape1.instObjGroups[0]': cannot make assignment to 'lambertrASG' shader. // 
// Error: line 1: Connection not made: 'pCubeShape1.instObjGroups[0]' -> 'lambertrASG.dagSetMembers[-1]'.  Source node will not allow the connection. // 
// Error: line 1: Error while parsing arguments. // 
```

まとめると

- **駄目っぽいマテリアルがアサインされているオブジェクトに別のマテリアルをアサインできない**
- **駄目っぽいマテリアルを別のオブジェクトにアサインできない**

マテリアルがダメっぽいなぁ

SGとlambertだけなシーンを比較してみると

駄目な奴
```
createNode shadingEngine -n "lambertrASG";
	rename -uid "3D692AC6-4898-8F38-0570-C180B677F552";
	setAttr ".ihi" 0;
	setAttr ".ro" yes;

relationship "link" ":lightLinker1" "lambertrASG.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" "lambertrASG.message" ":defaultLightSet.message";
connectAttr "lambert3.oc" "lambertrASG.ss";
connectAttr "lambertrASG.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[7].dn";
connectAttr "lambertrASG.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo1.tgi[0].ni[0].dn";


createNode lambert -n "lambert3";
	rename -uid "6F7C3E14-4309-D2F8-07DD-E098B9062588";

connectAttr "lambert3.oc" "lambertrASG.ss";		;		;
connectAttr "lambert3.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo1.tgi[0].ni[1].dn";
connectAttr "lambert3.msg" ":defaultShaderList1.s" -na;
```

大丈夫なやつ
```
createNode shadingEngine -n "lambert2SG";
	rename -uid "C02AE22C-4BFF-BBD5-EB10-1AB33BC84B55";
	setAttr ".ihi" 0;
	setAttr ".ro" yes;


relationship "link" ":lightLinker1" "lambert2SG.message" ":defaultLightSet.message";
relationship "shadowLink" ":lightLinker1" "lambert2SG.message" ":defaultLightSet.message";
connectAttr "lambert2.oc" "lambert2SG.ss";
connectAttr "lambert2SG.msg" "materialInfo1.sg";
connectAttr "lambert2SG.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[1].dn"
connectAttr "lambert2SG.pa" ":renderPartition.st" -na;


createNode lambert -n "lambert2";
	rename -uid "ED4B3561-4E45-A6A5-CBEB-578310794917";

connectAttr "lambert2.oc" "lambert2SG.ss";
connectAttr "lambert2.msg" "materialInfo1.m";
connectAttr "lambert2.msg" "hyperShadePrimaryNodeEditorSavedTabsInfo.tgi[0].ni[0].dn"
connectAttr "lambert2.msg" ":defaultShaderList1.s" -na;
```

差分はこの辺。
```
connectAttr "lambert2SG.pa" ":renderPartition.st" -na;
connectAttr "lambert2SG.msg" "materialInfo1.sg";
connectAttr "lambert2.msg" "materialInfo1.m";
```


materialInfoか？
-

とりあえず雑に作ってコネクトしてみようかと

```
node = cmds.createNode("materialInfo")
cmds.connectAttr("lambert3.msg",node + ".m")
cmds.connectAttr("lambertrASG.msg",node + ".sg")
```

この状態で新規オブジェクトにアサイン・・・
できなーい！
```
// Warning: line 1: Node 'pCubeShape1.instObjGroups[0]': cannot make assignment to 'lambertrASG' shader. // 
// Error: line 1: Connection not made: 'pCubeShape1.instObjGroups[0]' -> 'lambertrASG.dagSetMembers[-1]'.  Source node will not allow the connection. // 
// Error: line 1: Error while parsing arguments. // 
```


```
cmds.connectAttr("lambertrASG.pa",":renderPartition.st",na =True,f=True)
```

じゃぁこっちか？！
あっさいーん
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/d9dac789-d10f-c407-f7d2-6dadfbf52e05.png)

oh,green world again....

と思いきやアサインできてますね。
save & open で正常になりました。

駄目だったシーンで同じく実行してみると。。。
アサイン変えられました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/34c7ff5e-22f9-079b-69ea-1f55b004de01.png)

で、元々のエラーのexport slectionできない問題は・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/d7d0c437-ed8c-4a75-6c85-e2c3f72e0685.png)

クリア！

結局のところ
-

```
cmds.connectAttr("lambertrASG.pa",":renderPartition.st",na =True,f=True)
```

この部分のコネクションが外れてしまってたのが原因で、何で外れたんだろうなぁ

雑にチェックするならばー

```python

SGs = cmds.ls(type = "shadingEngine")
connectedSGs = cmds.listConnections("renderPartition.st", s =True, d =False)
unConnectSGs = list(set(SGs) - set(connectedSGs))

print(unConnectSGs)
#['lambertrASG']
```

今年の不具合はこれで終わりになるといいな！