Maya Script Python レイヤードテクスチャの入れ替え

import maya.cmds as cmds

def texchenge():
	result = "{0:=^100}\n".format("RESULT")
	result += "\n"+"\n"
	for x in cmds.ls( mat=1):
		if x not in ["lambert1","particleCloud1","shaderGlow1"] :
			result += "{0:-<50}{1:->50}\n".format(x,"Material")
			result += "\n"
			oCon = cmds.listConnections( x, connections=1, source=1, destination=0 )
#			for c in oCon :
#				result += "{0:-<50}{1:->50}\n".format(c,"Connections")
#			result += "\n"
			oCoc = [x for x in oCon if x.find(".color") != -1]
			oCoc = cmds.listConnections( oCoc, connections=1, source=1, destination=0 )
			oCol = cmds.ls( oCoc,type="layeredTexture" )
			if oCol != [] :
				oCol = cmds.listConnections( oCol, connections=1, source=1, destination=0, plugs=True)
				oColc = [x for x in oCol if x.find(".color") != -1 or x.find("outColor") != -1]
				oCola = [x for x in oCol if x.find(".alpha") != -1 or x.find("outAlpha") != -1]
#				for c in oColc :
#					result += "{0:-<50}{1:->50}\n".format(c,"LayerdTextureColor")
#				result += "\n"
				oNod,oImg = oColc[0::2],oColc[1::2]
				for o1,o2 in zip(oNod,oImg) :
					cmds.disconnectAttr(o2,o1)
					result += "{0:-<40}{1:-<40}{2:->20}\n".format(o1,o2,"OriginalConnection")
				result += "\n"
				oShif = oImg[1:]
				oShif.append(oImg[0])
				for nod,img in zip(oNod,oShif) :
					cmds.connectAttr(img,nod,f=1)
					result += "{0:-<40}{1:-<40}{2:->20}\n".format(nod,img,"ChangeConnection")
				if oCola != [] :
					result += "\n"
					for na,ia in zip(oCola[0::2],oCola[1::2]) :
						oNum = int(na.split("[")[1].split("]")[0])
						if oNum > 0 :
							oNum -= 1
						else :
							oNum = len(oNod)-1
						result += "{0:-<40}{1:-<40}{2:->20}\n".format(na,ia,"AlphaConnection")
						cmds.disconnectAttr(ia,na)
						na = na.split("[")[0]+"["+str(oNum)+"]"+na.split("[")[1].split("]")[1]
						cmds.connectAttr(ia,na,f=1)
						result += "{0:-<40}{1:-<40}{2:->20}\n".format(na,ia,"ChangeAlConnection")
				result += "\n"+"\n"
		result += "{0:=^100}\n".format("")
		print result
texchenge()

カラーノードに刺さったレイヤードテクスチャの順番を切り替えるスクリプトです。
実行するごとに順番が1つずつ変わります。1番が0番になる。という具合です。
そのレイヤードテクスチャにアルファがあれば、それも1つずつずれるようにしました。無意味に長くなった一つの原因です。
そして、もうひとつの原因はリザルトが出力されるようになっています。スクリプトエディタにプリントされます。
コメントアウト部分「#」だけを消すとリザルトが増えます。好きなように改造してください。

 

そのリザルトで使いましたが、文字列フォーマットの仕様がPython3.0で変更されるそうで、一応それに合わせて書いて見ました。

 

使い方は、コードをスクリプトエディタにコピペして実行すれば使えます。その際はスクリプトエディタのタブを「Python」にしてください。
全文選択して中ボタンでドラッグすればシェルフに登録することができます。
あれ、これってレイヤードテクスチャが無かった時の処理がない、、
ある程度色々な状況を想定したつもりでしたが、一番肝心なところを忘れておりました、、

2012/1/30追記
修正版を上げました。
レイヤードテクスチャが使用されていないマテリアルが存在する場合、そのマテリアルは何もしないようにしました。
あと、アルファが刺さっているところの処理を修正しました。
因みに番号を順番に変えてゆくだけなので、刺さっているテクスチャの数が違うとずれます。その場合はあくまでも確認用として使ってください。

ZBrush4 – お爺さん2

image930l
世間ではZBrush4R2bが出て、毛の表現などが出来るようになったにも関わらず、いまさらのように毛をスカルプトしております。

 

3Dcoatとの連携を試しているのですが、まだうまく行っておりません。
どうも落ちてしまう。もっと色々とテストする必要がありそうです。

 

「ReMesh All」でも、「Dyna Mesh」でも細かい形がうまく転写できない事があるので、
それを3Dcoatで簡単に補うことが出来たら楽しそうだなぁ、等と考えております。

 

「ReMesh All」も「Dyna Mesh」もどちらを使うにせよ、新たなメッシュは解像度をできるだけ低く設定し、
転写する方が、「SDiv」レベルを高く上げられるので良いかと思うのですが、最初の解像度が低いと指などの形状をうまく転写できません。
うーん、ローカルサブディビジョンを使うのもひとつの手なのかなぁ。
とにかくそのあたりを克服できるように実験してみます。
他の人はどうやっているのだろうか。
ZBrushが当然のように使われるようになると、人によってワークフローが大きく変わってくるかと思います。
人のやっている方法が自分にとっていい方法か分からない。その逆もしかり。
だからあまりワークフローが公開されないのだろうか?それとも自分が英語圏の情報を知らないだけなのだろうか?
謎は深まるばかりだ。
まぁ、やってみよう。

ZBrush4 – お爺さん

image929l
久しぶりにスクリーンショットを撮ろうとしたら、使っていたそれ用のツールの使い方を忘れて手こずりました。
更新も久しぶりです。
いや、このくらいがちょうどいいのかも知れない。
慌てずあせらず、そこそこサボらず続けてゆこうと思います。

 

ZBrushを使えば使うほどに思いますが、これは道具ですねぇ。
完全に物量に脳がごまかされているのを感じます。
今回作っているものは、数日かけてはいるのですが、恐らく始めの数時間とその後の変化はそれほどないかと思います。
初めのうちにきちんと時間をとって、ぱっぱと仕上げてしまったほうが恐らくいい結果になったかと思います。それが中々難しい。
とにかく時間をかけてやってみます。

 

リトポに関してですが、頭部のみのようなまとまった形状では、「ReMesh All」でもそれ程問題は無いかと思います。
少し複雑になってくると、「DynaMesh」の方が良いような印象を受けます。
しかし、指などの細かい形状はそれでも無理があるかと思います。要するに大きな形全体に対して、細かい部位があるもの。
そのあたりは3Dcoatと連携するのが良いのでしょうか?3Dcoatは「AppLink」という機能があり、他のツールとの連携が取れるようになっているようです。
とはいっても、ただのスクリプトなので、それ程込み入ったことはできないかと思いますが、ちょっと面白そうです。
modoとの連携を試してみたのですが、現状では、うーん、自分は使わないかなぁ、という感想を抱きました。

 

そう、modoといえば、UVの展開に関して最近分かりましたが、
リラックスを「モード」>「展開」で「反復回数」>「100」くらいで何度か適用した後、
「モード」>「アダプティブ」、「反復回数」>「10」くらいで何度か適用して調整すると、大抵のUVは殆ど歪みがとれてきれいに展開できることを知りました。
それでも綺麗にならない場合はUVを切る場所を変えて同じ手順を踏むと具合が良くなります。
数値を決定し、回数を様子を見ながら行うのが良さそうです。
今度機会があったら、画像入りの解説をします。うーん、こうやって書くとやらないような気がする、、

雑記87 – 訂正

書こう書こう、と思いながらも遅くなってしまいました。
前回の記事で、間違いがあったので修正しました。
言語の発達により、増える色数、という事を書きましたが、増える色はスペクトルと補色の関係により増えてゆく。
というのが正解でした。ちなみに以前はスペクトルだけでした。

 

間違い、ということで最近のホットニュースは、不確定性原理が否定されておりました。
新たな測定方法では、位置と速度を同時に計測することが出来るそうです。
量子コンピュータの実現が迫っているのでしょうか?
基板の上で神経細胞を増殖させることに成功させているので、バイオコンピュータの方が先なのでしょうか?

 

もしそうなったら、と勝手に妄想すると、
パソコンは使えば使うほどに、使っている人にとってより使いやすいものに変化しそうです。
神経細胞の数は変わらなくても、ネットワークの密度が増えることでより性能が上がる。まさしく脳みそです。
道具としての本来の形が再現されそうです。人の使っているパソコンでは作業ができない。なんてこともありそうです。
そのうち意識を持ち初め、パソコンとケンカするようになって、今日はケンカしたから作業が出来ません。なんてことにもなるのかな?

 

まぁ、妄想はそのくらいにするとして、
学問に置ける間違い、以前少し書いたようにも思いますが、現在定説とされているものは、新たな定説が出来ると、崩されます。
要するに仮説なのです。
近代医学の祖とされるヒポクラテスも、元々医者であったデカルトも当時の医療について書いております。
現代の医学からすると、どちらもとんでもなく間違っています。平たく言ってしまうと、嘘を書いております。
両人とも文面からすると、とても誠実な方々だと思います。嘘をつこうと思って書いているのではなく、そう思っているので書いている。のだと思います。
そう考えて、時間軸を反転させると、恐らく数百年後、数千年後の人類が現代の医学を見るとどう思うかが分かるかと思います。
そんな事本気で信じているの?そんな言葉が聞こえてきそうです。

 

更に時間軸をスケールさせるとまた面白い様に思います。
昨日医者にこう言われた。
なるほど、以前どこかで養老孟司さんが書かれておりましたが、医者仲間の方々は皆さん健康診断を受けないそうです。
要するにあてにならない。
文明が進歩し、情報が氾濫し、生活が豊かになる。本当なのかなぁ、等と思ってしまいます。
恐らく石器時代の人類は20歳~30歳くらいの寿命でした。現代の我々は約80歳、数百年後は何歳でしょうか?
200歳くらいに伸びていたとして、その人達が我々に対して、80歳で死んでしまうなんて可哀想、と言われた所で、「そりゃどうも。」としか答えられない。
恐らく、石器時代の人たちもそうだろうと思います。
周りがそうであれば、そんなもんだと諦める。要は相対的な問題でしか無い。
そして、大きく量が変わると質が変わる。同列にして論じるべきではない。と、思います。

 

さて、そんな事を書きながらZBrushをやっております。
3Dcoatを買ったのですが、何をして良いのか分からず、とりあえずボクセルでスカルプとしてみよう、などとやってみたのですが、ZBrushに慣れてしまうとちょっと辛いです、、
うーん、リトポとペイントで使うべきなのだろうか?もっと本腰を入れて探ってみないと分からない。
ZBrush、久しぶりに触ったら、その軽快さに驚く一方、自分の技術の劣化にも驚きました。元々大したものでもありませんが。
とにかくヤル気が出てきてしまったのでZBrushをやっております。

雑記86 – 線形近似

さて、自分なりに得た知識を自分なりに考え、それを表して見よう、と考えておりました。
上から斬り込むか、下から斬り込むか、そんな事を考えながら学んでいたのですが、どうやらそれは上と下がくっついている。
うーん、じゃあ適当に行きましょう。と、いった感じにこのタイトルを選びました。

 

一般的に自然界と呼ばれる、我々の身の回りの環境は、専門的な表現では非平衡開放系、と呼ばれます。
そして、我々生物は事象に対して因果関係を結び、経験則を得、それにより未来予測を行う。という平衡系に近似して把握してきた。
と、言えるのではないかと思います。
 

それを見てゆくには、人間の脳が他と比べてどうであるか、という事が重要であるかと思います。
鳥類は他の動物に比べ、図形の認識に優れていることを以前書いたかと思います。
流石は元々恐竜であった、といわれるだけあって、その歴史が古いせいかも知れません。
そして、鳩と人間に対して同じ実験をした人がいました。
その実験内容は、まずはじめに被験者(?)である鳩と人間に同じ図形を見せます。
その図形とは3つの点が書かれただけのものです。
その3つの点をつなぎ合わせると三角形ができますが、その三角形は歪な形をしている。というものです。

 

その図形を記憶させた後、今度は何枚かの紙に分けて同じような図形を見せます。
その図形はコンピュータで生成されたもので、正三角形を元に徐々に崩れてゆく3つの点で、最初に見せた図形はその内の中間辺りの中途半端なものです。
そして、図形を見せている間、脳神経細胞の発火状態を計測したそうです。
鳩の実験結果はとても優秀で、初めに見せた図形が提示された時に最も強く反応しました。
しかし、人間では初めに見せた図形よりも、正三角形の図形に強く反応を示したそうです。
 

要するにより抽象化された像に対して人間は強く反応する。
抽象化というのは、5つの丸と5つのりんごをつなぎ合わせる、というような作業で、現代社会に生きる我々にとっては必要不可欠な能力、と言っても過言ではないかと思います。
しかし、人間にとってそんな当然のような能力も実は生得的に備わった能力ではなく、経験により作り上げられた能力であることが分かります。

 

というのも、南アメリカで偶然発見された民族に対して行われた実験でも分かります。
彼らに対して、数字の把握能力をテストした実験がありました。
木の板に一本の線を書き、それを真似してもらう。というものです。
3本目まで難なくこなしておりましたが、それ以降いくら数を増やしても、彼らは3本の線しか書かない。
勝手な推察ですが、恐らく彼らにはそれ以上の数字は意味が無い。3つというのは我々が考える3つと言うよりも無限大の記号に近いのかも知れません。
そもそも村の全員の人の名前と顔を知っていれば、数は必要ない。
「昨日は何人来たの?」という質問は「昨日は誰が来たの?」という質問で事足りる。ということなのだろうと思います。

 

また、太平洋に浮かぶ島々で言語の進化を研究した人がいました。
その中で、文明度の低い言語を使っている民族はより色の数が少なくなっていることに気が付きました。
そして、最も少ない色数は3色で、黒白赤だそうです。(黒と白の順番は不確かです。すみません)そして次に増える色が緑、青、黄色、と続きます。
恐らくこれは人間の視神経であり、明暗を区別する杆状体細胞と呼ばれるものが中心近くにあるから、白黒がはじめに来るのかと思います。
そして、その後の色の順番はスペクトルと補色の関係に相当します。波長が長いほうが見えやすいのでしょうか?
では、色数の少ない民族は青をどのように表現するかというと、薄い赤、だそうです。
我々からすると、そこまで丸めちゃうの。とちょっとビックリしますが、同じ脳を持っている我々も程度の差こそあれ、近似で丸めております。
五十歩百歩、といったところでしょうか。

 

この辺りは、脳の可塑性と臨界期という、ものに関わってきます。
生物学者によっては10万年前の人間を現代に連れてきても、それが子供であれば恐らく現代に対応できるであろう。という人もいます。
それはニューギニア地方で近代化したところから飛行機のパイロットになった人もいる、という事を指して書かれておりました。
脳の臨界期とはある年齢に達するまでにそれを習得しないと、その後その能力を獲得するのが難しい。とされる時期です。だから子供には未来がある。
狼少女、少年と呼ばれる、人間に捨てられ狼に育てられた少年少女が言語能力を中々獲得できないのもそのためだろう、と言われております。
そういえば、同じような事象で全く逆の事もあります。幼い時の病気が元で大脳皮質が殆ど無い、という人がいたそうです。
その方はIQ126で大学で数学の賞も取るほどの頭脳の持ち主だそうですが、MRIを取るまで大脳皮質が無いという事実を知らなかったそうです。

 

20世紀に入り、原爆が投下された後、それまで学問の花形だった物理学(量子力学)が衰退して行き脳科学が盛んになって行くのも分かる気がします。

雑記85 – 2011年お詫び

うーん、去年は尻すぼみになってしまいました。

 

幾つかの要素が関連していることは確かなのですが、もはや色々な事象がスパゲッティの様にこんがらがっているような感じです。
すみません、個人的な感想です。
そんな時は、全体を見ずに一つ一つを丁寧に根気よく解いてゆくのが一番のように思いますので、そうします。

 

まずは言い訳から。
雑記を書く上で自分なりに得た知識を多くの人と共有しても良いんじゃない?くらいの気持ちで始めたかと思います。
そして、軸として養老孟司さんの唯脳論を置いて、展開してゆくことを考えておりました。
しかし、その中でも色々とこんがらがり、分けて書くのが難しくなってしまった。面倒くさくなった。という経緯になります。
更には自明のことであり、無意味なことである。という事と考え合わせると、中々気力が出なくなるものです。

 

そして、もう一つ大きな事としては、雑記中に他の方のサイトの引用などをしております。
自分にとっては、昔から一方的にお世話(読ませていただいて)になっており、気分としては諸先輩の胸を借りる、位に思っておりましたが、
よくよく考えてみると、その方々は自分を知らず、しかも仮名で書いているので、もしかしたらとてつもなく不快な思いをさせてしまったのではないだろうか?
という事に、後になって気が付きました。
その後も、何度かこのようなことを書こうかと思ったのですが、ただのうぬぼれだろう。とこれもまた書けない理由になりました。
なので、年が明けた、という理由にかこつけて、一層の事謝ってしまおう。という気持ちになりました。
もし、不快な思いをさせてしまっていたら、誠に申し訳ありませんでした。

 

記事の内容も、それに続いて更に反転させて提示してみる。という事を考えていたのですが、それすらも書かずじまいになってしまいました。
重ね重ねすみません。
個人的には、特に誰かを批判しよう、という気持ちはなく、物事の普遍性、多様性を探って、それらを考えてみる。
という何の生産性もない事がしたいだけです。
うーん、ちょっとすっきりした気がする。デトックス、というやつでしょうか。

 

そして、今後の方向性ですが、年末に意を決して3D-coatを購入しました。
それの習得をしてゆきたいと思います。
そして、Pythonです。やはり、リスト内包表記やlambda関数、面白いですねぇ。手品を見ているようです。
いやぁ、本当にやらなくてはいけないことはそれじゃないんだけどなぁ、と思いながらも興味のあることから手をつけてゆきます。
そんな感じですが、今年も宜しくお願い致します。

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です