2014/12/11

スイッチセット


スイッチセット


以前紹介したスイッチンググループの発展版です。
以前のグループでスイッチする方法を使用していた場合、
大量のスイッチがシーンにあると、どこにスイッチが隠れているかわからなくなり管理が大変でした。

なので、今回はMayaの標準機能であるセットにスイッチ機能を付け加えてみました。

以下起動画面















ウィンドウが起動するようになりました。
グループの作成、ShowAll,HideAll機能の追加、名前の事前設定ができます。
スイッチしたいオブジェクト、またはグループを選択し、スイッチセットを作成を押します。




するとこのようなセットが作成されます。
 
セットにはEnumアトリビュートが追加されて、表示したいオブジェクトを選ぶことができます。

セットを削除すれば、表示の状態にもとに戻すことができます。

それから、おまけでVRayマテリアルの切り替えも可能です。(VRay2.0のみ動作確認済み)
 こちらはセットは作成されず、VRayBlendMaterialのBlendAmountを1,0で切り替えてスイッチさせる事ができます。

 パーツの切り替えとかバリエーションを大量に出すときに役たつのではないでしょうか。
この発展として、シーンにあるスイッチをリスト化、保存、読み込みをできるようにしたいと思います。大枠はできてますが、公開はもう少しお待ちを。




2013/06/17

スイッチンググループ

ここ数日、Mayaでどのオブジェクトを表示するか選択できるような機能を探していたが見つからない
手動では論外だし、レイヤーでやるのは数が多いとややこしくなる。
選択セット…?うーんなんか微妙…

なのでスクリプトを組んでみた。


001_20130617144734.jpg

複数のオブジェクト、グループなどを選択し、スクリプトを実行するとSwitchアトリビュートを持ったグループが作成されます。
この選択肢を選ぶことで、このグループのどれを表示するか切り替えることができます。

このスイッチンググループをスイッチンググループに入れることも可能。

削除するには、中のオブジェクトを一回外に出してグループを削除します。
conditionノードも一緒に消えてくれます。


現状の問題点として、グループ内のオブジェクト名の変更や、オブジェクトの追加をしても、
スイッチアトリビュートには反映されません。
スクリプトの限界なのでこの辺はあきらめて、変更、追加をする場合は一旦削除してグループを作り直してください。


002_20130617144735.jpg


中身的には、conditionノードを組み合わせて、表示を切り替えています。
参考にしたサイト
http://mayaspiral.blogspot.jp/2012/05/utilities-switching-objects-visibility.html
こっちはNullのポジションで表示非表示を切り替えています。
応用すればいろんなことができそう。

スクリプトはここからダウンロードできます。
CreateSwitchingGroup_nkymScript.txt
ブログの都合上、melファイルがアップできなかったのでtxtで。
拡張子変更して使ってください。



ここまで書いたけど、こんなの昔からありますよ!っていう情報があればおまちしてます。

2012/04/14

MakerBot Replicator の続き。(すてm
何度かプリントしてわかってきたことのメモ。

プリントの段差を0.1mmまで小さくすることができる。
写真 12-04-09 16 24 12
↑0.1mmでプリントしてるところ。
ほぼ段差は見えないです。触って段差があるなってのがわかるぐらい。
ただし、プリントの速度はめっちゃ遅いです。上の写真は5cmくらいの球体なんですが、8時間ぐらいかかるって出たので途中で止めました。
台座にこういうガイドが出力されるんですが、あんましうまくいかない印象。
あとで切り取ってヤスリがけすればいいんだけどなんか微妙だし、
途中で、ミスってダマになったりするとそれ以降のプリントで失敗し続けるという…。縮れてる部分なんかは失敗してる部分ですね。

段差に関してはなんとなく0.15mmぐらいが一番いいんじゃないかなあとかってに結論付けとく。
早く出したいとか、形状が単純だったらもっと太くてもいいかもしれないけど。もっと細かくしたいんだったら0.1mm?ただ、結構薄くて途中で失敗する印象。

中身はハニカム構造になるみたいです。
密度も変えれるのでここ調整したらもっとプリント速度向上できるかも

あと、プリント台の調整は結構重要で、プリンタヘッドからの位置をぎりぎりにしておく必要がある。
近づけすぎるとヘッドがぶつかって機械が壊れそうになった時があるので慎重に。
ヘッドがプリント台に引っかかって煙ふいたときはマジで焦った。

20120414.jpg
で、せっかくだから面白いモデルをってことでZBrushに標準で入ってたこのモデルを出力してみる。
指とか、顔のディテールがどの程度来るかテスト。

ここで一つ問題が。
ReplicateorG にOBJモデルをインポートするときに、180万ポリ以上だと読み込まれない。
あんまりでかいファイルだとダメってことですね。

で、試行錯誤…
写真 12-04-10 12 16 51
だ、台座がひどい。。
足が細いのが原因で、プリント途中に足が折れるという。足が毛むくじゃらの状態。

支える部分が足りないのかな、と言うことで支えをモデリングしてプリントしてみた。
写真 12-04-10 20 36 02
あ、だめだこれえ!
足が安定してないとどうしてもダメみたいです。
モデルが途中で細くなるとかもかなり失敗しやすい感じ。


しょうがないのでバラバラにしてみた。
写真 12-04-11 19 09 07
おお、そこそこプリントできた!
ただ、指、顔が怪しい感じ?1mmぐらいのディテールなのでこのぐらいが限界なのかもしれません。
ノズルの太さがいま0.4mmなのでそれ以上はどうしてもきついって感じですかね。
顔に関しては口の中が空洞だったので失敗したのかも。

合体!
写真 12-04-11 23 45 57
段差が少しできてるかな。
隙間はパテで埋めました。

写真 12-04-13 17 14 34
顔も埋めた笑

写真 12-04-14 13 25 19
塗ってる最中。

今のところここまでです。
プリントするモデルを意識したモデリングが必要だなあと感じました。
あと、段差はやっぱり出てしまうのでヤスリがけ必須です。
紙やすりでやったけど、細かいところが結構きついのでリューターを買おうか検討中。


まとめ
・質=時間
・細い、出っ張り、穴のプリントは苦手
・台座で失敗すると全部失敗する
・プリント台の調整が結構重要
・仕上げのヤスリがけ必須


次は自分で作ったモデルプリントするぞー

2012/04/09

MakerBot Replicator

先日、2ヶ月ほど前に注文していた3Dプリンタ「MakerBot Replicator」が届きました。
注文から随分時間が立っていたのですっかり購入時の熱が冷めてたのですが!面白いです!

写真 12-04-06 11 12 08

まず、届いた箱!でかい!
想像以上にでかくて当初予定してた場所に置けないという…。
このシリーズから組立が必要なくなったみたいで到着したその日にプリントすることが出来ました。
プラスチックセットして、付属のSDカードから試しに出力。

写真 12-04-08 18 10 11

出力ミスのゴミが散らかってます。
はじめ、出力する板の調整を全くやってなかったのでちじれ毛のようなものが出まくってました。
板の位置をキャリブレーションすることで出力できるようになりました。

写真 12-04-07 16 19 45


設定しなおしてSDカードに入ってたデータを出力。
結構段差が目立つみたい。

写真 12-04-07 16 30 29


サンプルでついてきたモデルと並べてみた。
編み編みの台座がいい感じ。

20140409_SS.jpg

んで、付属のソフトをMakerbotのHPからダウンロード。

特に問題なくインストールできた。Pythonが入ってないとか言われたけど、基本YES連打でOK。
入力形式はOBJサポートしてるのでモデリングした3Dデータも簡単に出力できそう。
はじめ接続できないみたいなエラーが出てたけど再起動したらつながった。

で、MayaのデータをOBJに変換して読み込んでみた。
当然といえば当然ですが、閉じたオブジェクトじゃないとダメみたいですね。
面の裏表とかちゃんと設定しておかないといけないみたい。

それから、台座がある程度大きくないと失敗しやすいみたい。
足が細くて頭が大きいようなモデルだと結構失敗します。
ひっくり返すとか、パーツを分ける工夫が必要そう。

写真 12-04-09 0 18 10


下に空間があるオブジェクトだと写真のような台座が作られる。
ただこういう形状は失敗しやすいみたいです。台形型だとかなり安定します。
アナログスティックとか、LRボタン部分がかなり怪しいです。

写真 12-04-09 15 59 35

台座の部分を取り除いた状態。
結構荒いです。もっと細かい設定も出来るみたいなのでそれも試してみたい。
このモデル5cmぐらいですけど、出力に2時間くらいかかりました。まあ、そんなもんかなあ。
スピードも調整できるみたいです。早くすれば質が落ちるのかな。

それから、ところどころダマになってる部分があります。台座の出力ミスのような感じ。
一箇所ダマになるような部分ができるとその周りが結構壊れてしまうみたいです。

まあ、それは後でヤスリいれたり、パテで埋めればいいのですが。
意外とこのプラスチック硬いです。普通の紙やすりでは削れないかも。
溶剤かなんかで溶かしたほうがいいのかな。

しばらく遊んでみます。
しばらくコレ系の記事になるかも。

2011/01/09

最近、ポリゴンでプロダクト系のモデリングをしていて限界を感じる時が多々あります。いままで見て見ぬふりをしてきましたが、そろそろナーブスにも手をつけたほうがいい時期なのかもしれません。年も明けていいタイミングなので今年はナーブスでもモデリングするという目標を立ててみます。

なぜポリゴンが限界なのか、というと、ポリゴンモデリングだときれいな曲面に穴を開けた場合、面が微妙にゆがんでしまうんですね。サブディビかけた場合なんかはそれが特に顕著で面がぐにゃぐにゃになってしまいます。以前記事にしたように、サブディビかけずに曲面をきれいに保つ方法もありますが、ポリゴンが細かくなると後調整が大変だったり、バーテックスをちまちま調整する必要があります。なにより曲面に丸い穴を開ける場合が非常に難しい。

プロダクト系のモデリングの場合反射が少しでも歪むと工業製品っぽくなくなるんですね。手作りっぽくなるというか。手作り感出したいときはポリゴンで作るってのもありだとは思います。

そんなわけで、ナーブスモデリングをやってみます。
ナーブスモデリングでまず躓くであろう、穴あけフィレットを今回はやってみます。


nurbs_01.jpg
まず、ナーブスの平面を作ります。

nurbs_02.jpg
穴を開けたい形のカーブを描きます。

nurbs_03.jpg
ナーブスとカーブを選択し、Edit NURBS > Project Curve on Surface でサーフェイスにカーブを投影させます。

nurbs_04.jpg
カーブが投影されました。後から位置の調整もできます。

nurbs_05.jpg
投影したカーブを元に押し出しします。

nurbs_06.jpg
フィレットする量より多めに押し出しておかないとフィレットできないので多めに。このとき面の向きも重要になるのでチェック。

nurbs_07.jpg
ナーブス平面と、押し出したサーフェイスを選択し、Edit NURBS > Surface Fillet > Circular Fillet のオプションを選択。

nurbs_08.jpg
上三つの項目にチェックを入れてフィレット

nurbs_09.jpg
フィレットサーフェイスができたら成功です。


nurbs_10.jpg
Edit NURBS > Trim Tool で不要な面を切り取ります。
残したい部分にマーカーを配置してEnter。

nurbs_11.jpg
押し出したほうも同様に。

nurbs_12.jpg
これで完成です。
手順さえ抑えてしまえば簡単ですね。


nurbs_13.jpg
んでMayaのナーブスの問題なのかよくみると面と面がつながってないんですね。
テッセレーションがうまくいってないのか、解決しないといけないです。この辺は次回やってみようと思います。

2010/11/07

リニアワークフローまとめ2

前回のリニアワークフローまとめ1に引き続き、リニアワークフローについて。

その前に、前回の記事について一部不明な点があったので修正しました。
至らない部分もあると思いますので、フォローお願いします。



さて、では実際にMayaVRayでどうやったらリニアな環境で作業できるかについてまとめようと思います。
その前に前回のおさらいとして、リニアワークフローについて文章じゃ分からないのでちょっと図にしてみました。
NWF_20101106.jpg
まずは今まで行っていた通常のワークフロー。たぶんこんな感じ。

Maya内ではリニアで計算するので、このワークフローだと、入力と出力の部分でおかしなことになってます。それをライティングとかディフューズの調整で無理やり自然に見えるようにしていたわけです。写実的な表現でなければ、このフローでも全然問題ないと思いますが、実写に近い表現をしようとすると微妙なずれが出てくることになります。これがリニアなディスプレイでガンマもかかっていなければ問題ないと思うんですが、そうも行きません。(リニアガンマのディスプレイっていくらするんだろう。ていうか売ってる?)
まあ、そんな機材があったとして、全部そっちに乗り換えるのも現実的ではないので、今使ってるガンマのかかったディスプレイでやろうと思います。

んで、これから説明するリニアワークフローはこんな感じ。
LWF_20101106.jpg

ガンマ補正のかかっている画像に対して、逆ガンマを掛けてまずリニア画像にして、Mayaにもっていきます。この入力の画像がリニアであれば、逆ガンマをかける必要はないですが、リニア画像と通常の画像が入り乱れていたりすると管理が面倒なので、とりあえず、全部ガンマ補正のかかっている画像として処理します。

そして最終的にレンダリングする画像に出力する媒体に合わせたガンマ補正を掛けて出す。そうすれば、全体のフローがリニアになって綺麗になります。厳密に言うと、コンポジットから、編集まで全部リニアにする必要があると思うんですが、今回は3D側のみでやる方法として書きました。







さて、では本編。
MayaVRayで実際にどのように設定すればいいかについて書きます。

まず、テクスチャに逆ガンマをかける部分。

Mayaのノード、GammaCorrectをカラーノード、テクスチャノードの間にはさみます。

WS000035.jpg

ガンマの値は以下のとおり(ディスプレイガンマが2.2の場合)

WS000037.jpg


自分が検証してた時に、ふとスペキュラ、リフレクション、バンプにも逆ガンマをかけるの?という問題が出てきたんですが、結果から言うとかける必要はありません。なぜなら、スペキュラ、リフレクション、バンプ等のテクスチャは結局レンダリング画像の見た目で調整するからです。本当はディフューズに関しても見た目あわせということになるので逆ガンマは必要ないといえばないですが、テクスチャデータとして非常に扱いづらいので逆ガンマを掛けます。

以上のように質感を設定する際に一手間いれるわけなんですが、そんなのいちいち設定するのメンドイなーと思うかもしれません。考えることはみんな同じなんですね、すでに便利なMELを作ってくれている人がいます。
http://3dlight.blogspot.com/2008/09/gamma-tools-10.html
選択したテクスチャの前に逆ガンマをいれるMEL



んではVRayの設定について。VRayタブ、ColorMappingで、

linearworkflow_colormapping.jpg


以上のような設定にする、だけです。非常に簡単ですよね。

Gammaにディスプレイガンマの値を入力します。

さらに、LinearWorkflowのチェックを入れておくと、テクスチャ、カラーノードに自動で逆ガンマをかけてくれるので、最初に説明したGammaCollectをはさむ作業は必要ありません。自分で管理したい場合はここのチェックは外しておきます。

また、AffectSwatchesにチェックを入れておくと、HyperShadeのマテリアルの見た目がガンマがかかった状態の見た目に切り替わります。最初は淡い色で戸惑うかもしれませんが、慣れます。


以上、VRayの設定は終わりです。


作業的にはちょっと設定するだけなんですが、リニアワークフローの利点、どうしてこういう作業をするのか、という部分はちゃんと把握しておかないと簡単に破たんするのでしっかりと基礎は理解したうえでリニアワークフロー導入するといいんじゃないかな、と思います。

また、この方法は完璧な方法とは言えないのでちゃんと検証したうえで試してみてください。

2010/11/02

リニアワークフローまとめ1

近頃、リニアワークフローってなんだろう、っていう疑問があり、いろいろと調べていました。

まず、リニアワークフローとはなんぞやというと、ガンマとか、カラースペースとかいろんな用語が出てくるのでここでは省略します。
詳しく説明している記事は以下を参照してください。
http://kimpara.tumblr.com/post/1397322868
詳しく説明されています。また、MaxVRayの具体的な設定法も載っています。

ほかにも参考にしたブログ
http://maxmint.blog82.fc2.com/blog-entry-27.html
http://kotozone.blog55.fc2.com/blog-entry-145.html
http://blog.livedoor.jp/morisoba123/archives/51573480.html


私的見解ですが、リニアワークフローをざっくり説明すると、リニアな環境で作業しよう!って・・・字面のまんまですが、

実際まじめにリニアな環境で作業するにはガンマのかかっていないディスプレイが必要だし、カメラなんかも全部リニアにする必要があります。しかし、その状態だと人間の目にとって自然に見えません。

今回は作業を3D環境のみに絞ってまとめようと思います。
現在、作業してるディスプレイは大抵ガンマがかかっているので、レンダリングもガンマを考慮した出力にすれば物理的に正しい結果になります。(・・・このへんちょっとよくわかってませんが要するに今までのレンダリング結果は間違ってたってこと?

それをやるにあたって、マテリアルに割り当ててあるテクスチャ、カラーデータには実はガンマ補正がかかっているので、レンダリングの入力データとしては間違った状態にあります。それを逆ガンマをかけてリニア状態にしてちゃんとしたデータにして出力しないといけません。

実際この逆ガンマをかけるという工程は、リニアな画像を入れてやれば必要ない工程なのですが、見た目が認識しにくいので、ガンマがかかった状態で作業して、入力するときに変換することにします。

要するに全作業をリニアにして作業しようよって理解してしまえば簡単なのですが、いかんせん逆ガンマを掛けたりガンマをもどしたりして混乱してしまいます。
ひとまず、こういう手法があるってことだけ頭に入れておいて、作業は単純なのであまり深く考えずに作業しましょう。すると次第に分かってくるかと思います。


そもそも、リニアワークフローにする利点ってなに?っていうと、
・GI、IBLの光の回り込みがでる
・リアリティが上がる

などなど・・・
言葉で説明しても分かりにくいので普通のレンダリングとリニアワークフローにしたレンダリングを出力してみました。画像はMaya VRayです。

linear_workflor_01.jpg
まず、普通にレンダリングした画像。
通常のライティングで適当なマテリアルを割り当て、GIをonにして出力しています。

linear_workflor_02.jpg
それをガンマを考慮した画像
このままだとカラーの入力にガンマ補正されているので色が薄くなってしまっています。

linear_workflor_03.jpg
なので、カラーに逆ガンマをかけ、リニアにして計算させると正しい結果になります。

どうでしょう?見た目が全然違いますよね。
なんというか、今までのレンダリング結果の一歩上をいったというか、まったく調整しなくても綺麗な画像になっています。

GlossyReflectionを入れると白飛びしやすいとか、黒つぶれしやすい、といったことが改善されます。GIの回りこみ方もすごくよくなってますよね。


とまあ、いろいろと利点があるけど、理解しにくいので、足踏みしている人は一度試してみるといいんではないでしょうか。下ごしらえ的にガンマ補正かけとこうとか料理で言う下味をつけると思って作業すればいいと思います。


とまあ、こういう方法があるよ!ということで、
次回は具体的にMaya VRayを使ってどうすればいいのかをまとめてみようと思います。結構簡単ですよ!