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 2023

Day 25

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

Posted at

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

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

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

マテリアルのアサインが剥がれてる!
image.png

というか
マテリアルがおらんがな!
image.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

oh,green world again....

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

駄目だったシーンで同じく実行してみると。。。
アサイン変えられました!
image.png

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

image.png

クリア!

結局のところ

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

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

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


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

print(unConnectSGs)
#['lambertrASG']

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

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?