BlendShapeのアトリビュート名取得

スクリプトを作り始めると、どうも他の事がそっちのけになってしまう。
で、Mayaのブレンドシェイプ。

シーン内に存在するブレンドシェイプを調べ、ブレンドシェイプとして登録されているノードを調べるには、

import pymel.core as pm
bShapes = pm.ls(type=pm.nt.BlendShape)
for b in bShapes:
	print b.getOutputGeometry()
	print b.getTarget()

こんな感じですぐにできる。

しかし、実際のアトリビュート名はターゲットの名前と同一であるとは限らない。
ブレンドシェイプを設定した後、ノードの名前もアトリビュートの名前も変えられる。
うーん、困った。
で、デフォルトのMayaに組み込まれているmelの関数。
editNormalizationGroupsを調べてみた。
すると、attributeNameというコマンドを発見。
早速テスト。

import pymel.core as pm

bShapes = pm.ls(type=pm.nt.BlendShape)
for b in bShapes:
	wCount = b.getWeightCount()
	for i in range(wCount):
		print pm.attributeName(b + '.w[%s]'%i)

思えば、pythonを使っていて、久しぶりにrange()関数を使った気がする。
やっていることは、ブレンドシェイプに設定されているウェイトカウントを取得し、
それをrangeで回してattributeNameで名前を取得。
なるほどねぇ。そんなコマンドあったのですね。
メソッドでもっと簡単に取得できる方法があるのだろうか?
全部試したわけではないので、分からない。ありそうな、なさそうな。

Groboto

2013_10_05Image_01
ZBrushで厚みを付けてExtractし、Dynamesh化したものをベースメッシュにし、MODOに持って行きリトポ。
リアルタイムモデルであれば、スジボリやビスなどのディテールは3Dcoatでペイントしたほうが早いし、質感の管理もしやすいと思う。
なんかもっとこう、という思いが消えない。

 

で、groboto
そういえば以前3D人さんのサイトで見つけた時に、暇な時に試してみよう。と思いながらも忘れておりました。
SubDfusion(mesh fusion)の機能自体はGrobotoのものだそうです。

 

なので、それ自体を試してみました。
体験版は30日間の機能無制限のようです。
これまた、独特なインターフェイスでちょっとややこしい。ただ、機能がシンプルなだけに使ってゆくと自然と理解ができる。
2013_10_07Image_01
完全にパラメトリックな編集のみなので、頂点などの編集はできない。
エクスポート時にどれくらいのポリゴン密度にするか、オブジェクト別に設定し、OBJでエクスポート。
2013_10_07Image_02
ある程度細かくしてやらないと、サブディビジョンをかけた時にシワが目立つ。
ZBrushでのExtractなどと同じような感じで、必要なエッジループ部分に流れに沿ったポリゴンの流れが入る。
大本の形の流れと接続するため、3角形を挟むのでどうしてもシワはできる。でも凄い。

 

MODOには専用のスクリプトも用意されており、出力されたデータを元にウェイトマップが作成される。
それらのチュートリアルビデオもある。なるほどプラグインを作るわけだ。

 

それはともかく、今までにないモデリングの手法に、脳みその違う部分を使っている感じがとてもしてしまう。
これはこれで面白い。
ただ、このツールの一番の欠点はアプリケーションに違うアプリケーションで作成いた形状が読み込めないことだろう。
あるのかもしれないが、今のところ自分には分からない。
MODOのプラグインとして出れば、その欠点が解消される。それは楽しみだ。
でも、すでにこのツール単体でも欲しくなってきてしまった、、まだダウンロードしたばかりだからそれを楽しもう。

ZBrush 練習1

2013_10_03Image_01
ノープランで作っております。
ZBrushでモデル作成。
ダイナメッシュを使用し、64等の低い解像度から256までの少し高い解像度でベースメッシュ作成。
モデルをサブツールで複製しZRemesherで、リトポ。で、転写。

 

ハードサーフェイスがほしいところをマスクし、Extract。Thickは0。
それをMODOに転送。でリトポ。
クリースエッジが持って行けないので、サブディビジョンレベルを3にした状態でフリーズ。
それをGoZでZBrushに転送。適当なスカルプトの追加。

 

うーん、まだしっくりこないなぁ。
Extractを厚みを実行し、ダイナメッシュに変換して大まかな形をスカルプとしてからMODOに持って行って、
新たなメッシュとして作ったほうが良さそうだ。

 

先日紹介したMeshFusionの記事。3D人さんのところで紹介していただいたようです。ありがとうございます。
どうも海外では結構前にニュースが流れたようですが、不思議と情報が少ない。
自分が記事を見つけたときは、仕事中にも関わらず思わず声を上げて驚いてしまった。
調べても中々それに関する記事が少なく、興奮しているのは自分だけなのだろうか。などと考えておりました。
やっぱりそうですよねぇ、現状のハードサーフェイスモデリングの手法は結局力技で、修正は作り直しになってしまう。
やっていて釈然としない思いを抱いておりました。

modo mesh fusion

突然仕事でハードサーフェイスモデリングをしなくてはならない事になり、色々とやっておりました。
で、自分なりの手法を何とか、何となく確立したので忘れないように家でも復習しておこう。
などと思っていたら、こんなものを見つけました。

MODO701のプラグインmesh fusionというそうです。
年内に出るのでしょうか?

 

全くびっくりです。
レンダーブーリアンのような機能に見えます。
計算後の形状を新たに作成するのは難しそうですが、ローポリにノーマルを転写できるのであれば、ゲームモデルでは問題無さそうです。
有機的な部分はZBrushでモデリングして3Dcoatでリトポ。無機的な部分はMODOでモデリングしてMODOでリトポ。というワークフローでしょうか?
ノーマルベイクも色々と試してみましたが、xNormalで焼くよりもMODOで焼いたほうが綺麗に焼けることが多く、
それよりもMODOでオブジェクトスペースで焼いてHandPlaneでタンジェントにした方が綺麗でした。

 

うーん、昔に比べるとワークフローの幅が広がり大変になった、というべきだろうか、楽しくなったというべきだろうか。

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

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

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