カテゴリー別アーカイブ: MODO

カレーを作ろう(ただしCGで) – その2 ライス1

あけましておめでとうございます!今年もよろしくお願いします。
2016年の初投稿は、カレーへの挑戦の話。
MODOをご存じない方も、何となく雰囲気だけでも楽しんで頂ければと思います。


#前回の続きです。

 ※細かい説明は端折り、要点だけに絞ります。
  用語や手順を全部説明していると、かなりの量になり、情報密度が薄くなるため。
  不明な用語など出てきたら、Web検索等で調べて頂ければと思います。

まずは、ライスの部分から作ろうと思います。
理由は、途中で挫折しても、普通のご飯として流用出来るからです(汗)。

…と思って初めて見たものの、いきなり超難問です。
問題は幾つかありますが、大きく分けると以下の二つ。

問題1: 大量の米の塊をどう表現するか?

 色々実験してみたのですが、サーフィスパーティクルジェネレータ(Surface Particle Generator)を
 使ったパーティクルでの表現が、もっとも目的に近くなると判断しました。
 これは、メッシュの表面にパーティクルを散布する機能です。
 これを使って、米粒をリプリケータで複製します。

 メッシュを変形すると、パーティクルも追従します。
 米粒のモデリングも数種類で済み、差し替えも可能なので、変更にも強いです。

Suraface Particle Generator

Suraface Particle Generator

 今回、上記のベースメッシュを、3枚重ねにして使います。
 (パーティクル間の隙間が出来ないように。)

問題2: どうしたら炊けているように見えるか?

 「炊けたお米」の質感は難問です。地道なトライ&エラーを繰り返している所です。

 ライティング、シェーダー、マテリアル(特にSSS)、
 更にはPhotoshop等でのポストプロセス、どれが不十分でも、ご飯には見えませんでした。
 プラスチックにしか見えません(超キモい絵になるので注意)。特に、SSSは非常に重要です。

 目標は欧風カレーですが、米は、日本人に親しみのあるジャポニカ米にしましょう。
 お米のモデルと、SSS、サーフィスパーティクルジェネレータ、リプリケータの設定は以下の通り。

お米(ジャポニカ米)の設定

お米(ジャポニカ米)の設定

 ご飯は炊くと膨張するので、現実世界ではもう少し大き目かもしれませんが、
 お米全体を大き目にすると、SSSの結果が期待通りになりませんでした(原因は不明)。
 なので、いったん上記のサイズで進めます。

 ※サーフィスパーティクルジェネレータのお米の間隔は、3.3mm。

 ※また、お米の方向は、(掻き混ぜた後、膨張するので)ほぼ全てランダムに近いと仮定して、
 リプリケータのランダム角度を全方向90度にしてみました。

そんなこんなで、出来たのがこちら。いったん、ご飯茶碗に盛りつけてみました。

冷や飯1号

冷や飯1号

冷や飯ですね。ちょっと芯が残っていて、質感も十分ではないです。
次回、温かくしてみたいと思います。

欧風カレーの場合、ラグビーボール型に盛り付けるのをよく見かけますが、
これまたパーティクルの方向調整が難しそうです。
出来たら、ラグビーボール型にしてみたいと思います。

おまけ:サフランライス(もどき)
ジャポニカ米をインディカ米(細長い)に差し替え、盛り付けてみました。

サフランライス(?)1号

サフランライス(?)1号

という訳で今回はここまで。お目汚し失礼。次回に続きます。
カレーへの道は険しいです。

カレーを作ろう(ただしCGで) – その1 はじめに

またお久しぶりです。年の瀬のバタバタもようやく落ち着いてきました。
過去の投稿に反応を下さった方は有難うございます!


突然ですが、最近カレーが食べたいです。皆さんも好きですよね。嫌いな人は少ないと思います。
私も勿論、人並みには好きだったのですが、最近は尋常ならず食べたいです。

なぜか?
マツヤさんのtwitterに、じわじわはまったのを切っ掛けに、
ボリウッド映画や、近所のインドカレー屋の豆カレー等が気になるようになった次第です。

その後は、以下のような感じです。

無性にカレーが食べたい
  ↓
しかし、友人の精神科医師の著によれば、カレーライスは糖質の化身(印度っぽく表現)です。
特に私のような中年の内臓には優しくないらしい。というのを思い出す
  ↓
漫画で食べた気になろうと、前から断片的に読んでいた、「華麗なる食卓」を全巻読破
  ↓
カレーすげー…すごすぎる。欲を抑えるどころか、世界中のカレーが気になり始める
  ↓
しかし、人間ドック面談の怖い医師の顔が、脳裏でチラチラして食べられない
  ↓
グルメ漫画・ドラマなどで欲望を紛らわしていたが、2D媒体では満足出来なくなり始める
  ↓

じゃあ3DCGで作るしかないな!!
はい繋がった~~Here we go!!!
使用ソフトは、もちろんMODO、バージョンは902です。


■その1 どんなカレー?

さて、カレーにも沢山ありますが、大きく分類すると4パターン。
 参考:カレー雑学大百科「2.世界のカレー」
  
   ・インド風(北インド・南インド)
   ・東南アジア風
   ・欧風
   ・和風
 
どれも魅力的ですが、挫折しない目標を立てるべく、

 「欧風」

にしたいと思います。
理由は、CGとしては、ナンよりライスのほうが、学ぶ事が多そうな点。
また、ご飯とルウの境界がハッキリしている(一定の粘度がある)方が作り易そう、という点です。


では、次回に続きます。

MODOで髪の毛 – ファー編 その2 – モデリング

さて、前回の続きで、Gregさんメソッドでのヘアモデリングをご紹介します。
動画ではMODO801と書かれていますが、701以降なら、可能な方法のはずです(701で実験済)。
細かく説明するので、たくさん手順が有るように見えますが、
慣れると、全工程(5-1まで)、5分以内で出来ます。

■0:準備

  ひとつだけ準備が有ります。
  途中で、エッジをカーブに変換するスクリプトを使います。
  既にお持ちの方も多いと思いますが、以下をダウンロードしておくのが望ましいです。

 ・Forumにもある、senecaさんのスクリプト
 もしくは、
 ・こちらのスクリプト

 スクリプトが無くても代替手段が有りますが、持っておくのがお奨めです。

■1:髪の房のベースとなるメッシュの作成

 今回は、前回紹介した動画の後半部分をベースに、この顔に前髪を一房作ってみたいと思います。
 一房できれば、あとは流用・応用です。

ベース

ベース

(1-1)
 まず、髪の毛用に新しいメッシュを作ります。名前は”Bangs”とします。
 リトポロジー機能(「トポ」タブ)で、ポリゴンを張っていきます。
短冊を作ったときと同じですね。

トポロジーペンで面張り

トポロジーペンで面張り


 ※リトポロジーって何?という方はこちら

 ここで、あまりハイポリだと制御しにくくなるので、最低限にします。
 今回は4×1の縦長ポリゴンにします。

(1-2)
 次に、「モデル」タブに移り、「厚み」ツールで、立体にします。
 ここでの厚さは、前髪の厚さの目安になります。

(1-3)
 髪の毛の根本となるポリゴンを選択し、
 カット(Ctrl+X)、すぐにペースト(Ctrl+V)します。これにより、ポリゴンが他と切り離されます。
 そして、反転(Fキー)します。

  結果的に、下図のような構成になります。
制御メッシュの構成

  (a)は髪の毛が生えるポリゴン、(b)は髪の房の形をコントロールするケージです。
  以後、(a)(b)とします。

  ※(a)は内側を向いてるので、選択しにくくなります。
   選択するときは(b)を隠す(Hキー)か、選択セットを使っても良いと思います。

■2:ガイドメッシュのマテリアルの設定

 (2-1)
  続いて、(a)(b)それぞれにマテリアルを割り付けます。
  名前は

    (a) … ”hairGrow”
    (b) … ”hide”(レンダリングされない、隠しポリゴンなので。)

  とします。
マテリアル追加

 (2-2)
  ここでは、先に(b)のマテリアルを設定します((a)は後で詳しく設定します)。
  レンダリングされないようにします。
  シェーダーツリーの「レイヤー追加」> 「処理」> 「シェーダー」を追加します。
  hideマテリアル全体を、”Base Shader”(グローバルシェーダ)より
  上に持っていくのを忘れないようにしましょう。

(b)のマテリアル構成

(b)のマテリアル構成

   シェーダーの設定は以下の通り。シェーディング・可視属性をすべて外します。

(b)のシェーダー設定

(b)のシェーダー設定

   また、ビューポート表示で半透明になるように、
   マテリアルの透過量を高め(今回は90%)にしておきます。
  

(b)の透過量

(b)の透過量

  こんな感じになるはずです。

■3:ヘアをコントロールするカーブの作成

 (3-1)
  続いて、エッジ選択モードで、(b)のメッシュの以下のエッジを4本選択します。

 (3-2)
  この状態で、「0.準備」で用意したスクリプト(今回はedgeToCurve.pl)を実行します。
  (スクリプトの実行は、Shift+F5、もしくは「システム」メニューの「スクリプトの実行」から。)
  下図のようにカーブが出来るはずです。
edgeToCurve.pl実行後

 ※スクリプトが入手できない場合は、こちら

 (3-3)
  めでたしめでたし、と言いたい所ですが、このカーブは「方向」が非常に重要です。
  カーブの根本(○が付いてる方)が髪の毛の根本に来るようにします。
  逆になっていたら、反転(Fキー)で、方向を揃えます。

カーブの方向

カーブの方向

  カーブが上図の右のような方向になったら、メッシュ部分は完成。
  ためしに、ポリゴンを一つ、引っ張ってみましょう。

  カーブがポリゴンについてきますね!これが今回のポイントになります。

■4:ファーマテリアルの設定

 髪の毛のマテリアルを設定します。
 (4-1)
  (2-1)で作った(a)hairGrowに、ファーマテリアルを追加します。
  シェーダーツリーの「レイヤー追加」> 「特殊」> 「Fur Material」です。

ファーマテリアル追加

ファーマテリアル追加

 (4-2)
  各種設定を以下のようにします。簡単のため、要点だけ列挙します。
  ご自分の作品に合わせて、調整してみてください。
 
  【ファーマテリアル】
   ・長めの毛なので、「最大セグメント数」を増やす。今回は64。
   ・「基本サーフェイスの除去」をON。これで(a)はレンダリングされなくなります。

ファーマテリアル

ファーマテリアル

  【ファーガイド】
   ・「基本サーフェイスからガイドを使用」はOFF。
   ・「アイテム」はガイドとなるメッシュ(Bangs)を選択
   ・「ガイド」は「範囲」
   ・「ガイド範囲」をメッシュの実寸に合わせて調節
   ・「ブレンド量」を高めにする(ガイドが重なり合った部分を馴らす)。今回は80%

ファーガイド

ファーガイド

  【ファーキンク】
   ・「ジッター」はすべて抑え目にする。今回は5%
   ・「ベンド振幅」は0%

ファーキンク

ファーキンク

 (4-3)
  レンダリング(プレビュー)してみます。こんな感じになるはず。
  ガイドメッシュに非常に近い形になります。

  ヘアマテリアルを割り当てるとこんな感じ。

お試しレンダリング

お試しレンダリング

■5:スタイリング

  さて、ここからが真骨頂です。

 (5-1)
  (b)のメッシュを、スカルプトツールや、エレメント移動など、
   ポリゴンモデリングツールで編集してみます。
   (※カーブは直接編集しないように)
   今回は、簡単にベンドツールで変形してみました。すると…

スタイリング例

スタイリング例

  この再現度です。初めて見たとき、目からウロコでした。
  正直、ヘアスタイリングツール(櫛ツールなど)よりも
  遥かにコントロールしやすいです(901時点)。

 (5-2)
  この繰り返しで作ってみた、習作第1号がこちら。

ヘア習作第1号

ヘア習作第1号


  (P4の雪子をイメージしたつもり…)
  次回はもっと凝ったのが出来そうな感触を得ました。 

基本的な手順は以上です。


今回は説明のためにワンセット作ってみましたが、
マテリアルグループを作って、ひとつの(a)に対して複数の(b)を適用するなど、
応用は様々です。

ちなみに、ヘアマテリアルについては、また非常に奥深いので、
需要が有れば、別の機会にご紹介したいと思います。
ではまた!

■補足:スクリプトが無い場合

 以下の手順でカーブを作れます。
 頂点モードで根元から順に頂点を選択し、Shift+O(オー)を実行します。
  (poly.makeCurveOpenコマンドが実行されます)

頂点からカーブ作成

頂点からカーブ作成


 これを必要な数だけ繰り返します。
 手作業だと面倒なので、やはりスクリプトがお奨めです。

MODOで髪の毛 – ファー編 その1 – イントロダクション

あれよあれよ、お久しぶりになってしまいました。
すっかり涼しくなってきましたね。


以前、MODOでの髪の毛表現に関する記事を書きましたが、
需要が有りそうですので、今回も髪の毛について書きます。

以前書いた、短冊形ポリゴンにテクスチャを張り付けるのは、
古来より伝わる先人の知恵で、ローポリ用の簡易的表現と言えます。

映像系など、リアリティにこだわる場合、やはりファーを使いこなしたいところです。
今回は、ファーについて書きたいと思います。

MODO ファー 実験(雪子)

MODO ファー 実験(雪子)

さて、MODOのファー機能で、長い髪の毛を思い通りに作るのは、
現時点では、かなり難しいと思います。
(MODO801で、ヘア機能が強化されましたが、それでもロングヘアは難しい)

ガイドの制御が難しい上に、レンダリング時間がかかるので、
トライ&エラーも中々厳しいです。

そんな中、The Foundryのインサイダーと思われるGreg Brownさんが、
革命的とも言えるヘアスタイリングの方法を紹介されています(英語)。

■フォーラムの記事はこちら。
Hair Sculpting workflow video/chat

■ビデオはこちら。

動画の11:00ごろからに注目。
この方法の凄いところは、通常のモデリングツールで
ヘアをコントロール出来るところです!

Gregさんメソッド

Gregさんメソッド

上図のように、髪束を覆うメッシュと、ヘアを制御するカーブが、
頂点を共有しているのがポイントです。
メッシュを編集すると、ヘアが追従するというわけです。マジックだ。

冒頭の雪子(モドキ)は、この方法で作りました。
自分も初めてなので、あんまり複雑な髪型はまだ出来ないのですが、
基本的にどんな髪型でも出来そうです。

以上!やってみてください!
…と言いたいところですが、

上記はすべて英語なので、次回、日本語で具体的手順を記事を残しておきますね。
今回はイントロダクションまでに。

日本語で紹介してよ!という方は、次回更新をお待ちください。

ではまた。

MODOでPySide(Qt)を利用してみよう ~ ビューポートのカスタマイズ

いかがお過ごしでしょうか? あっついですね~
今日は絶好の引きこもり日和です。

今回もMODOの記事です。
ちょっとテクニカルなので、興味の無い方はスルーでお願いいたします。


MODO901から、Win/MacでPySideが利用できるようになり、スクリプト開発の選択肢が広がりました。
ただし、注意点が有ります。

まず、PySideで実装したコードを、そのまま「スクリプトの実行」で実行することは出来ません。

私も勘違いしていたのですが、サポート担当の方に確認したところ、
スクリプト実行においては、「Fire & Forget」タイプのスクリプト(ざっくりいうと非同期)は
実行できないとの事です。
イベントループでデッドロックが起こり、フリーズすると思われます。なるほど。

では、どうすればPySideを利用できるか?

それは、「カスタムビューポート」を使うとの事です。

これは、ビューポート(※)をカスタマイズする機能で、Win/Macでは、MODO901の新機能です。
つまり、自作したビューポートの上に、PySide製のGUIを配置するわけです。

 ※ビューポート:MODOの画面を構成するフレームのこと。
  3Dビューポートだけでなく、アイテムリストやシェーダーツリーなどもそうです。
  ヘルプの「ビューポートってなに?」を参照

以上!

……と言いたい所ですが、
上記のサイトは、MODOでのキット開発に慣れている人向けの記述のようで、
他にもいくつか手順が必要です。
なので、以下にまとめておきますね。

手順1. PySideスクリプトを作成する。

 今回は例として、アバウト画面を表示した後、
 ”Congratulations!”とポップアップを表示するサンプルを作成してみます。

 コードは以下。続いて、内容を順に説明します。

 ■1~5行目:
  lxに加え、lxifcとPysideをインポートします。

 ■8行目:
  ”lxifc.CustomView”クラスを派生し、カスタムビューポート用のサンプルクラスを定義します。
  これが本体です。

 ■11行目:
  customview_Init()関数をオーバーライド実装します。
 
 ■12~28行目:
  この部分は、お決まりで良いと思います。
  paneが渡ってくるので、その親オブジェクトから、GUI部品を配置するWidgetを用意します。

 ■30~43行目:
  PySideを使った実処理。
  「Show [About MODO]」という名前のボタンに、
  スロット(onClicked:クリックされた時の処理)を割り当てて配置。
  最後にTrue(初期化正常終了)を返却します。
 
 ■46~53行目: 
  前述のボタンがクリックされた時の処理。
  アバウト画面の表示と、ポップアップ表示と、「Finished」というログの表示を行います。

 ■55行目:
  上記のクラスを”PySide Sample”という名前でPython serverに伝えます。

 コードは以上です。

手順2. ユーザスクリプトフォルダの”lxserv”フォルダに格納する。

 カスタムビューポートは、Python serverとして起動する必要が有ります。

 ユーザスクリプトフォルダに、”lxserv”という名前のフォルダを(無ければ)作成し、
 手順1.で作ったスクリプトを保存します。

 ファイル名は、かならずクラス名と一致させます。
 今回の場合は、「PySideSample.py」となります。

 場所は、「システム」メニューの「ユーザスクリプトフォルダを開く」で確認できますが、
 通常は、以下です。
   ■Windows:
   C:\Users\(ユーザ名)\AppData\Roaming\Luxology\Scripts\lxserv\

   ■MacOS:
   /Users/(ユーザ名)/Library/Application Support/Luxology/Scripts/lxserv/
 

スクリプトを格納

スクリプトを格納

 このlxservフォルダ、キット開発のベテランにはお馴染みなのかもしれませんが、
 私のようなニュービーが気づくには、ちょっと苦しかったです。

手順3. MODOを起動する。

 MODOを起動すると、スクリプトがコンパイルされます。
 エラーが無ければ、バイトコード(*.pyc)が出来るはず。

MODO起動後

MODO起動後

手順4. カスタムビューポートを表示する。

 では、表示してみましょう。
 適当なビューポート(アイテムリストなど)の「+」マークをクリックします。

新規タブ追加

新規タブ追加

 続いて、「アプリケーション」→「カスタムビュー」を開くと、
 先ほど作成したビューポート(“PySide Sample”)が出てくるはずです。
 これを選びましょう。

作ったビューポートを選べるようになる

作ったビューポートを選べるようになる

 下ようになれば成功です。

完成

完成

 関係無いですが、901の新機能の「Script Editor」が同じところにいますね。
 つまり、スクリプトエディタも、同様の方法で、カスタムビューポートで実装されているのが分かります。
 (こちらは、MODOインストールフォルダの、\extra\scripts\lxservにいます。)

 さて、ボタンを押してみましょう。
 アバウト画面が表示され…

アバウト画面

アバウト画面

 クリックして閉じると…

 

おめでとうございます

おめでとうございます

 はい、おめでと~ございます。

 手順は以上です。
 オリジナルスクリプトをばりばりと作っていきましょう。


ここまで書きましたが、最後に、思ったことを述べておきます。

確かに出来る事は増え、UIもリッチになります。
しかし、この方式だと、結局ユーザーに手順2.~4.を強要してしまう事になるんですよね。

個人的には、PySideの機能そのものよりも、
いちいちユーザーがキット用に設定を変更する手間が省けるかもしれない、
という所にメリットを感じていました。

なので、これを積極的に使っていくかどうかは、ちょっと迷っている所です。

もちろん今後、自作ビューポートの提供が一般的になって、
この手順が当たり前になれば、どんどん使っていけそうです。

ではまた。