チュートリアル / 3ds Max:プラグイン活用で表現の幅を拡げよう!
第3回:3Dスキャンとエフェクトを絡めて遊ぼう

  • 3ds Max
  • コラム
  • シミュレーション
  • チュートリアル
  • 上級者
  • 中級者
  • 建築・製造・広告

こんにちは!
株式会社DEFT、代表取締役の子安と申します。

今回は3ds MaxとtyFlowに加えてスマートフォンで収録出来る3Dスキャンデータを活用した内容となっております。

tyFlow導入の手順などは前々回の「第1回:もう怖くない!無料で始めるtyFlowと仕組みを公開!」をご確認くださいませ。

前回の記事と同じくtyFlow FREE v1.123で進めております。
後半でtyFlowPROに関しても触れております。

また今回もレンダリングはV-Ray7 Hotfix .7.00.04を使用しております。

30日間のトライアル版もありますので、下記にリンクを貼っておきます。
https://www.chaos.com/jp/free-trial

今回は以前テレビドラマシリーズなどでも活用した事のある手法で、スマートフォンで収録可能な3Dスキャンを活用したエフェクト表現となります。

今回は完成動画からお見せ致します。

こちらの動画の作り方を進めて参ります。
それでは早速始めて参りましょう!

Step1 ~超簡単!3Dスキャンをしてみよう!~

私が主に使用しているスマートフォン(iphone)で行うスキャンアプリは以下の2つです。

Scaniverse
Ver4.0.6
https://scaniverse.com/

Luma 3D Capture
Ver1.3.11
https://apps.apple.com/jp/app/luma-3d-capture/id1615849914

今回はScaniverseを使用して進めます

「レモン」のスキャン準備をしていきます。

「レモン」のスキャン準備

今回用意したのは
・レモン
・クリアカップ
・串
こちらの3点となります。

レモンを串などに刺して高さを作る

画像の様にスキャンを準備していきます。

床に置いてスキャンしてしまうと、下面部がスキャン出来なくなるので串などに刺して高さを作り下面スキャン出来る様にしておきます。

スキャン手順

Scaniverseを起動します。

Scaniverseを起動。①「メッシュ」を選択します。

①「メッシュ」を選択します。

②「小さなオブジェクト」を選択します。

②「小さなオブジェクト」を選択します。

③収録画面が出ますので被写体にカメラを向け赤いボタンを押す

③収録画面が出ますので被写体にカメラを向け赤いボタンを押す

④被写体の周りをくまなく周り込み収録する

収録が終わると、上記動画の様にスキャン後のデータ結果をアプリ上で確認出来ます。

アプリからデータを送出し、取り込みの手順は以下となります。

①画像のサムネイル「Lemon_Take01」をタップします。

スキャンしたあとはライブラリとしてアプリ内で保管されます。
赤い丸を押すと名前変更などが出来ますので、データ名を付けておくとより管理が楽になります。

①画像のサムネイル「Lemon_Take01」をタップします。

②スキャンしたデータが出てきますので右下の「共有」をタップします。

②スキャンしたデータが出てきますので右下の「共有」をタップします。

③「モデルのエクスポート」をタップします。

③「モデルのエクスポート」をタップします。

④「FBX」をタップします。 type.

④「FBX」をタップします。
ここからは任意でデータを取得してください。
私はiphoneを使用しておりますのでAirDropでMacに送信してサーバーに配置しました。

Step2 ~3ds Maxに取り込み整理をする!~

動画の様に3ds MaxにFBXを読み込みます。

スキャンデータは高性能な機材を使用するとより精細なデータを取得できますが、今回の様な手法ではデータが完璧に近いものとはなりません。

しかしながらアタリとしては制作の手助けになりますので、このデータを整理していきます。

スキャンデータのテクスチャマップは動画内のように、ジオメトリ生成した際のフレームをアプリ内でUV配置し、それらを繋ぎ合わせてオブジェクトのテクスチャとして成立させているようです。

このUVを一度整理したいと思います。
人物スキャンなどでは特に有効かもしれません。

Render to Textureを使用しスキャンしたテクスチャを綺麗に整えていきます。
①スキャンジオメトリのレモン単体のオブジェクトに整理する。
②スキャンジオメトリの外側にスフィアを配置する。スフィアのUVエッジに注意しながら。
③自動UVは外し、今のUVを保持(スフィア)した上でレンダーする。
④スフィアにプロジェクションされテクスチャ転写。
⑤転写したテクスチャにレタッチをしていく。
⑥レモンオブジェクトにUVW Mapを適用する。
⑦UVW Mapの種類からSphericalを選ぶ。
⑧②で生成したスフィアと同じ場所にギズモを配置してUVのエッジも同じく合わせる。
⑨⑤で作成したテクスチャをレモンに適用する。

以上の流れで、スキャンしたジオメトリに対してUVの整理が可能となります。

レモンジオメトリの作成

スキャンしたデータをアタリにして、レモンをモデリングしていきます。
スキャンジオメトリはハイメッシュな場合が多いので、下記2パターンで整理が考えられます。

1.ジオメトリのリトポロジー
2.スキャンしたデータをアタリにしてモデリング

今回は2を選択します。

レモンのモデリングをこの様に進めて作成致しました。

アタリを付けやすいので、簡単な形状(今回はSphere)からスキャンしたレモンに合わせてながらモデリングを進めました。

UVも動画の中の通りですが、前行程において、既にSphericalMappingにてUVを生成していたので、UVの作成は比較的容易です。

しかしながらSphericalMapのみですとテクスチャのへそ(集約されてテクスチャが均一では無い場所)などが出てしまうので、上の行程を違う角度からMappingなど施し、最終的に整理されたUVとテクスチャを生成します。

レモンのモデリング
整理されたテクスチャ
整理されたテクスチャ

レモンのマテリアルを作成します。
今回はVRayのVRay sssを使用します。

レモンのマテリアル

設定はこの様な感じに致しました。

レモン完成。

Step3 ~アニメーションとエフェクト~

レモンにアニメーションをつけていきます。
動画の様に回転するレモンから水がたなびいていく感じを出したいので、放り投げられたレモンが回転しつつスローで飛んでいる雰囲気を作成します。

単調ですがアニメーションが出来ました。
特殊な仕組みは入れておりません。

次はエフェクトの作成。
いよいよtyFlowの出番です。

とはいえ、今回は手続き的な見せ方で特殊なフローは作成せず、シンプルな作り方で簡単に動画の様な表現が出来る仕組みを紹介します。

①tyFlowを配置します。

①tyFlowを配置します。

②tyFlow GUIにBIRTHを配置。Event001が作成されます。
500フレームのアニメーションですがStart0,End400としておきます。
Per Frame(1フレームで何個のパーティクルを生成するか)に設定し、60と入力します。

②tyFlow GUIにBIRTHを配置。Event001が作成されます。

③Birthの下にPosition Objectを追加。
Position_ObjectのObjectsからアニメーションしたレモンをPickします。

③Birthの下にPosition Objectを追加。

④Position Objectの下にShapeを追加。ShapeはPebble(任意)を選びます。
Scaleをアクティブにして、ランダムのパーセンテージも入力します。

④Position Objectの下にShapeを追加。ShapeはPebble(任意)を選びます。

⑤Shapeの下にRotationを追加。

ここまでの状態で動画の状態となります。

⑥Forceを追加。タービュランスなどを設定する。
⑥Forceを追加。タービュランスなどを設定する。

⑥Forceを追加。タービュランスなどを設定する。
Built-in Forces内のBuilt-in gravity Strengthを-0.006
※シーンが小さい為です。
Built-in Noise 1
画像の設定です。
設定パネルをスクロールするとBuit-in Noise 2の設定が出てきます。
画像の様な設定です。

ここまでの設定で動画の状態です。
Forceを入れると挙動に自然さ(流体感)が出てきます。

⑦physix ShapeをShapeの下に追加します。

⑦physix ShapeをShapeの下に追加します。
今回パラメーターは特に設定しておりません。

Fhysx Shapeの設定

Physx Shapeを入れるとtyFlow自体の設定が優先されます。
先にForceでGravityを設定していたので、そちらを優先させます。
tyFlowアイコンを選択→tyFlow自体のプロパティを表示(右のパネル)します。
PhysXロールアウトを開きDefault gravityのチェックを外します。

メモ

なぜShapeの下に割り込ませて追加させたのか?

基本的には下記の様な手続きや流れを考え、その流れの順番にオペレーターを設定していくとパーティクルの挙動と整理、判断がしやすくなります。

流れと順番
パーティクルを誕生させたい→Birth
 ↓
どこから?→物から出したいのでPosition obejctを選ぶ
 ↓
パーティクルを形状にしたい→Shape→形状を選ぶ
 ↓
パーティクルを物理オブジェクトにしたい→Phisx Shape
 ↓
挙動開始時からそれらを回転させたい→Rotation
 ↓
挙動を自然な動きにしたい→Force

この様な考え方でオペレーターを追加すると思い通りに行く可能性が高まります。

ここまでの動きは動画の状態となります。
Physx Shapeを入れることで物理判定が行われリアル感が出てきますね!

⑧Slowを追加。

⑧Slowを追加。
Slowは挙動を遅くしてくれるオペレーターです。
今回はデフォルトのVelosity5,5,5に設定しております。
スピンの量を抑えたい場合はSpinに数値を入力する事でスピンの量を抑えれます。

今回のSlowを追加した動画です。
スロー感が出てきましたね!

⑨Meshを追加。

⑨Meshを追加。
レンダリングする為にMeshが必要です。

そしてここまで来ましたが、レモン全体からパーティクルが発生しているのが、重たい印象を受けます。

エミッターの場所をテクスチャで指定する事で、より気持ちの良いシミュレーション結果が生まれます。

エミッターの場所をテクスチャで指定する

先の整理されたテクスチャに対してパーティクルを出したい場所に白くペイントしていきます。
場所が分かりやすいようにレイヤーを半透明で表示しております。

先の整理されたテクスチャに対してパーティクルを出したい場所に白くペイントしていきます。

今回はレモンのヘタなどがある両端と、横身に3か所エミッターポイントをテクスチャで設定しました。
画像のように白黒マップのみで保存します。

Position ObjectのDensity、Density by textureにチェックを入れます。

Position ObjectのDensity、Density by textureにチェックを入れます。
No Mapに先に作成したエミッターポイントマップを入れます。
シミュレーションしてみましょう。

エミッターポイントを指定した動画です。
より自然で気持ちの良いシミュレーションになりました!

メモ

レモンのUVを先に整えておくことで、後から沢山のアプローチが可能となりますので、UVはしっかりと整理しておきましょう!
業界歴20年以上経った今でも、デビュー当時と変わらずディレクターや経営をしながらUVはしっかり開いてCG制作をしております。

ブロッブメッシュ化を施してみる

tyFlowはパーティクルを別のアプローチでメッシュ化する事も出来ます。

CreateタブからドロップダウンリストでtyFlowを選択→tyMesherを選択してシーンに配置します。

CreateタブからドロップダウンリストでtyFlowを選択→tyMesherを選択してシーンに配置します。

Input objects and particlesのPickをクリックして、ここまで作成してきたtyFlowを選択します。

Input objects and particlesのPickをクリックして、ここまで作成してきたtyFlowを選択します。

Brobmesh内の設定をします。
・パーティクル間の距離
・メッシュのサイズ
強度などを整えていきます。

作成した動画となります。
水の表現も様々なシチュエーションで活かせそうですね!

しかしながらtyFlow FREEでtyFlowのパーティクルを直接tyMesherに受け渡すのは都度計算を必要とするので、アプローチに時間を要してしまいます。

私の場合は、案件進行中の際はtyFlowPROを使用しております。
tyFlowPROの場合はtyCacheを書き出す事ができます。

Export Particlesを空いているスペースに追加します。

Export Particlesを空いているスペースに追加します。

書き出すディレクトリなどを設定してtyCacheを書き出します。
基本的にはデフォルトの設定で進めます。

設定パネル内 Post-export action
Create tyCache objectにチェックを入れるとキャッシュ化すると同時にシーンにキャッシュを配置してくれます。

書き出したCacheをシーン内で位置を移動したい場合、各チャンネルを書き出したい場合、キャッシュのタイプを変えたい等、細かくCacheの設定を施す事が出来ます。

詳しくは下記ページに掲載されております。
https://docs.tyflow.com/tyflow_particles/operators/export/

tyMesherの設定はtyMesherパネル内のInput objects and particlesのPickをクリックして、tyCacheを選択する流れとなります。

以上となります。

今回作成したデータとなります!
データ内、tyMesherは外しております。
パーティクルの数も下げておりますので、PC環境に合わせて数値を上げてみてください。

また、次回はPhoenixFDで遊んでみようと思っております。
楽しみにお待ち下さい!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。