Modo

Tips

modoのパーティクルアイテムマップ

modo 14.2でパーティクルアイテムマップが追加されました。パーティクルアイテムマップはパーティクルアイテムIDを制御するマップです。リプリケータを使用してアイテムを複製したときに、どのアイテムを複製するかを指定することができます。

メッシュオペレーターと組み合わせてパーティクルアイテムマップを編集する場合は、Remap Weight使います。

 

これまでもパーティクルシミュレーションでは同様のことが出来ましたが、パーティクルアイテムマップはモデルの頂点を直接選択して編集することができるので便利になりました。

modo 14.2ではパーティクルアイテムマップを編集できるのノードがRemap Weightに限定されてるのがちょっとわかり難いですね。Vマップ関連のノードは他にもパーティクルサイズマップなど使用できないマップが多いのが残念です。今後のバージョンで他のマップにも対応して欲しいですね。

 

参考

Tips

modoのエレメントとソフト選択 フォールオフ

modoのモデリングに関するちょっとしたTipsです。

アクションセンターの「エレメント」を使用すると、クリックしたエレメント(頂点、エッジ、ポリゴン)にセンターとアクシスが自動的に整列します。
アクションセンターのエレメントはとても便利でよく使うのですが、同じく便利なフォールオフの「ソフト選択」を組み合わせて使用すると、エレメントをクリックしてもアクションセンターは整列しません。

エレメントとソフト選択 を併用する場合は、Shift + クリックするとアクションセンターがエレメントに整列します。

 

 

参考

CG News

ACS3 for Modo 早期アクセス開始

去年から開発中だったオートリガーACS3 (Auto Character Setup)の早期アクセス販売が開始されました。ACS3ではCharacterBoxのようにモジュールを使用してリグを作ることが出来るようです。早期アクセスということで開発中の機能が含まれてない状態のようです。

ACS2は人型固定リグでバイドできるのも1メッシュでしたが、ACS3ではその辺りの問題が改善されてるようです。Pythonを使用したカスタムリグにも対応予定とのことで、将来的にはカスタムリグを共有することもできるようです。
ACS2はmdoo標準機能で組み立てられたリグと、リグを構築スクリプト群という内容のキットだったこともあり体験版はありませんでした。ACS3では一部独自の機能開発してるようなので体験版でるかな?Youtubeのデモ映像見たいのに字幕追加されないですね。

 

価格
  • 新規購入 $299  (早期アクセス$225)
  • アップグレード $249 (早期アクセス$ 175)
動作環境
  • MODO14.1v2以降

https://www.autocharactersystem.com/

 

自然界のモジュラー

  • 事前に作られたアセットからリグを組み立てることができる完全モジュラーシステム。
  • モジュールは簡単なドラッグ&ドロップ操作で接続されます。
  • モジュールは、対称性の有無に関わらずミラーリングすることができます。左右対称のセットアップではガイドの片側のみを取り付ける必要があります。

 

モジュール

  • モジュールのプリセットには、二足歩行/四足歩行、二足歩行アーム、水平/垂直背骨、FKジョイントチェーン、エイムジョイントなどがあります。
  • モジュールは標準的なMODOアセンブリプリセットです。
  • モジュールの中には、アイテムプロパティパネルから直接アクセスできるものもあり、例えば背骨やFKチェーンはセグメントの数を設定できます。開発が進むにつれて、さらに多くのモジュールが追加されていく予定です。

 

ノンリニアワークフロー

アニメーションプロセスがすでに進行中であっても、リグはいつでも再調整できます。これはガイドのフィッティング、リジッドメッシュのアタッチ、バインドメッシュのプロキシの生成など、リグの様々な側面に関係しています。

 

最適化されたバインディングワークフロー

  • 複数のバインドメッシュをサポート。
  • MODOネイティブのバインドコマンドをサポート。
  • 既にメッシュに埋め込まれているウェイトマップを使ってバインディングを設定するための、マップからのバインディング機能。
  • 同じウェイトマップのセットを使って複数のメッシュをバインドするためのコピーバインド機能。
  • 別のメッシュと形状が近く、個別にウェイトをかける必要のない服やその他のアイテムなどのアクセサリーをバインドするための転送バインド。
  • ウェイトをバックアップし、バインドマップを保存して後で再利用するためのオプションを持つバインド解除コマンド。

 

ウェイトツールパレット

  • パレットはMODO標準ツールとカスタムツールを組み合わせたものです。
  • すべてのウェイトマップの選択、ビューポート内のマウスポインタ下でのウェイトマップの選択、ウェイトマップの影響を受ける頂点の選択を含む選択コマンド。
  • 0~100%の範囲のウェイト値を素早く、直接、正確に設定するためのコマンドのセット。
  • 選択した頂点ウェイトを最高、最低、または平均値にシフトするためのコマンド群。
  • MODOのネイティブ機能をより使いやすく堅牢なバージョンにラップしたコマンドセット:メッシュ間でのウェイトの転送(ACSリグを必要としない一般的なバリアントを含む)、1%または0.5%ステップでのウェイトの量子化、1%または2%未満の値を持つウェイトのカリング。
  • 標準とトポロジカル対称性の両方をサポートするシングルクリックウェイトミラーリング。

メッシュソリューション

  • Proxy、Low、Highなどの解像度を設定して、再生パフォーマンスを最適化します。
  • キャラクターのバリエーション(解像度ごとに異なる服やアクセサリー)を設定できます。
  • メッシュとボックスのプロキシを自動的に生成します。

 

アニメーションフレンドリーなリグ

  • コントローラーを拾いやすい。
  • わかりやすい配色。
  • コントローラを選択すると自動的に適切なツールが使えるようになる(変形ツールやスライダベースの操作に設定されたチャンネル)。
  • 設定されたコントローラ間のピックウォーキング(未実装)
  • コントローラの形状を特定のキャラクターに素早く簡単にフィットさせるためのカスタムツール
  • キーフレームを高速に管理するためのツールセット:キー、アンキー、リセット、アニメーションの削除、静的キーのフィルタリング(未実装)、キーフレームの統計(未実装)。

 

ポーズ&アクションライブラリー

  • ポーズやアクションをネイティブMODOプリセットとしてサムネイル付きで保存できます。
  • 保存したポーズやアクションを、ドラッグ&ドロップを使って、同じキャラクターや異なる互換性のあるキャラクターに適用することができます。
  • ポーズやアクションのミラーリング(未実装)。

 

シームレスIK/FKワークフロー

  • ブレンドを気にすることなく、IKとFKをシームレスに切り替えられます。
  • キャラクターのポージングやアニメーションの補間に適した方法を簡単に選択できます。
  • IKキーフレームとFKキーフレームの自動同期。
  • 自動同期ではカバーしきれない場合は、手動で簡単に同期できます。

 

サマリ

  • 完全にモジュール化されたアーキテクチャにより、ドラッグ&ドロップ操作を使用してあらかじめ作成されたアセットからリグを組み立てることができます。
  • ノンリニアなワークフローで、アニメーションプロセスがすでに進行中であっても、いつでもリグを再調整できます。
  • コンテクストに基づいたアプローチにより、組み立て、フィッティング、バインディング、ウェイト、アニメーションなど、一度に一つのタスクに集中して作業を行うことができます。
  • 二足歩行と四足歩行のリグプリセット搭載
  • 二足歩行/四足歩行の脚、二足歩行の腕、脊椎、ジョイントチェーンモジュールなど、カスタムリグを簡単に組み立てることができる豊富なモジュールが含まれています(すべてのモジュールがまだ利用可能なわけではなく、利用可能なモジュールはまだ開発中のものです)。
  • リグのバリエーション(プロキシ、低解像度、高解像度など)を設定したり、異なるウェアセットなどのキャラクターのバリエーションを作成するためのメッシュ解像度。
  • 既存のウェイトマップを使ったバインディング(マップからのバインディング)、バインディングセットアップのコピー、あるメッシュから別のメッシュへのバインディングセットアップの転送、Unbindコマンドなどのツールを含むバインディングワークフローが改善されました。
  • 標準ツールと独自のツールを組み合わせたカスタムパレットによるウェイトワークフローの改善
  • 標準とトポロジカルシンメトリーの両方をサポートするシングルクリックウェイトミラーリング
  • アニメーションのパフォーマンスを向上させるための自動メッシュとボックスプロキシのセットアップ
  • ポーズとアクションライブラリ(完全には未実装)、ポーズとアクションのミラーリング(未実装)
  • アニメーションプロセスを高速化するためのツールセット:シームレスなIK/FKワークフロー、リグコントローラのスペース切り替え(未実装)、キーフレーム編集コマンド
  • 多くの機能と設定がアイテムのプロパティパネルから直接利用可能なシームレスな統合インターフェース
  • ACS3シーンをバニラMODOと互換性のあるものにするための標準化ツール
  • .fbx形式で外部アプリケーションにエクスポートするためのリグベイクツール(未実装)
  • カスタムモジュールやリグを構築したり、標準アセットのカスタマイズ版を保存したりするためのリギング開発環境(カスタム開発に関するドキュメントは後日公開予定
Tips

Syflex for modoのパラメータ

Syflex for modo のよく使うパラメータの覚え書きです。他のソフトでもだいたい同じように動くと思います。

 

Syflexとは

SyflexはModo、Maya、3ds Max、LightWave、Cinema 4D、Softimageなど様々なプラットフォームにリリースされてるクロスシミュレータプラグインです。2001年に公開された映画ファイナルファンタジーで使用されたクロスシミュレータの技術が元になった製品です。

ソフトは古い時代の作りのままなので少し使い勝手はよくない所もありますが、高速で比較的安定したシミュレーションを行うことができます。

 

メリット
  • シミュレーションの計算速度が速い。
  • シミュレーション結果が比較的安定している。震えが発生しにくい。
  • modo内でシミュレーションできる。
デメリット
  • サブフレームの計算ができない。速い動きでり抜けが発生しやすい。
  • ホストアプリケーションとの統合が弱い。例えばモーフなどデフォーマリストの前の変形を考慮しない。
  • シミュレーションキャッシュをファイル保存する必要があるのがやや面倒。
  • 恐らくMarvelous Designerの方がシミュレーション安定してそう(使ったことない)。

 

デフォーマリストはsyClothでシミュレーション後のメッシュをスケルトンやモーフ変形できるけど、スケルトン変形した後にsyClothでシミュレーションすることができません。

 

Softimageでは標準機能のクロスシミュレーションとしてSyflexを搭載していました。完全に同じものではありませんが、シミュレーションの注意点などSoftimageのマニュアルも参考になると思います。

http://docs.autodesk.com/SI/2015/JPN/#!/url=./files/GUID-1A8166A7-7768-42FC-8A6A-D4CC9913F845.htm

 

仮想のバネ

Syflexはmodoのソフトボディと同じくstretch、shear、bendの3つの仮想のバネを使用して計算します。

 

パラメータの設定が同じでもメッシュの細かさによってクロスの伸縮が若干変わります。今回テストに使用したのは正方形1メートル、Subdivision 6のメッシュです。

 

 

Syflexのパラメータ

 

syCloth

クロスシミュレーションに必須のノードです。

mass

クロス オブジェクトの質量です。単位はグラム。

•綿(シャツ) 100
•フリース(パーカー) 250
• デニムジーンズ) 500

 

stiff

バネの硬さです。3つのバネ、stretch、shear、bend全体の硬さを設定します。
一般的な値の範囲は0.1〜10。20、30など10以上の値の場合は変かが少なくなる。

 

damp

バネのダンピング係数です。クロスの振動を抑えることができます。
一般的な値の範囲は0.00001〜0.1。0.1以上の値を設定すると計算が遅くなります。0.5以上は変化が少ない。stretch、shear、bendの値に応じて設定を変える必要があります。

 

stretch

ポリゴンメッシュのエッジに沿ったバネです。 stiffの値を基準にしたバネの強さです。
1.0=100%=stiffという感じらしい。

 

shear

ポリゴンメッシュの対角線状のバネです。stiffの値を基準にバネの強さを設定します。
stretch、shear、bendの順番で値を小さく設定するといいらしく、bendとのバランスが重要なようだ。

 

bend

頂点を 1 つおきにつないだバネです。stiffの値を基準にバネの強さを設定します。

 

 

syDamping

移動速度を低下させるダンピング フォースです。空気抵抗や水中での動きっぽくなる。

damp

 

syNail

クロスをウェイトマップで固定するフォースです。トランスフォームにオブジェクトやロケーターに接続することで固定箇所を移動できるようになります。
同様のフォースにsyPinがありますが、syNailはアイテムへの「位置コンストレイント」で、syPinは変形するメッシュに固定する「ジオメトリコンストレイント」という違いがあります。

dist

固定する頂点の距離です。0は完全に固定、0以外にすると仮想のバネが作られて吊された状態になります。

 

stiff

固定する頂点のバネの硬さです。distが0以上の場合に動作します。
stiffの値を上げても頂点を完全に固定することができないので、頂点を完全に固定したい場合はdist 0に設定したNailフォースをもう一つ追加するといいです。

 

damp

バネのダンピング係数です。振動を抑えます。

 

map

Nailの影響をウェイトマップで指定します。

画像左はリニアフォールオフを使ってウェイトを設定したもので、画像右はリニアフォールオフのイーズアウトを使用してウェイトに偏りを持たせた設定です。

 

syCollideMesh

メッシュと衝突させるフォースです。

friction

摩擦係数です。一般的な値の範囲は0~1。

 

damp

接触している頂点の移動を減速させます。

 

sticky

濡れた布がひっつくような設定になります。

 

envelopeExt

衝突オブジェクトからの距離を指定します。単位はメートル。

 

envelopeInt

衝突判定の反応エリア距離です。単位はメートル。envelopeIntの範囲に頂点が入るとenvelopeExtの距離だけ押し戻します。
マニュアルには高速移動時には値を小さくした方がよいと書かれてますが、envelopeIntの値が小さいと速い移動でCollisionがすり抜けてしまうようです。逆に値が大きすぎてシミュレーション開始時に衝突オブジェクトと重なった状態だと計算が不安定になります。

 

sySelfCollision

クロス自身の衝突です。計算に時間がかかるのと震えが止まらない。

 

syVolume

体積維持するフォースです。風船のような閉じたオブジェクトで機能します。

pressure

オブジェクト内の圧力です。パラメータの単位はわからないですが100で元の形状を維持するように見えます。

 

volume

volume単体で値を上げても効果がなくpressureと併用して使います。
volume 3、pressure 100にするとサイズが3倍なってるように見えます。

 

damp

オブジェクトの移動速度が遅くなります。

 

 

syPinの使用方法

Syflexはフォースの設定方法が少し複雑です。毎回Pin追加に失敗するので画面キャプチャしました。

  • 頂点選択(アイテムを選択してると追加に失敗する) + syClothモディファイヤ選択 + メニューからAdd Pin

 

 

Syflexは専用プラグインなので当然ですがmodo標準のソフトボディよりクロス表現に適してます。セルフコリジョンの計算はそれなりに時間が掛かり、クロスが折り重なる場合はdampの値を10以上に設定しても頂点の震えを抑えるのが難しいことがあるようです。

syWindも試そうかと思いましたが単純なメッシュでも布が極端に柔らかくなる現象に遭遇てしまい、安定して動かすのがちょっと困難なのであきらめました。サンプルファイルだとちゃんと動いてるのですが、新規シーンに適用しようとするとクロスが暴れてしまいます。たまに上手く動くんですけどね。

参考資料

modoで選択したアイテムの名前をテキストファイルに出力するスクリプト

modoで選択したアイテムの名前をテキストファイルに出力するスクリプトが公開されてます。たまに欲しくなるので助かる。

https://community.foundry.com/discuss/post/1212480

ファイルパスを設定して実行する必要があります。

import os
import modo

# Get the scene item
scene = modo.Scene()
# The path to write out the file to your desktop
file = os.path.expanduser("~/Desktop/selected_items.txt")
# Get all selected items names ass a list
# Adding \n to the end of the name for a new line in the file.
item_names = [item.name+"\n" for item in scene.selected]

# Write data to file.
with open(file, "w") as item_name_file:
item_name_file.writelines(item_names)

Tips

modoのクラッシュコマンド

modoのdebug.crashコマンドについて書いてみます。

modoでUIをカスタムしたとき、カスタム結果に納得がいかず設定を保存せずにmodoを終了したい場合があります。そんなときはクラッシュコマンドを使用してmodoを強制終了することができます。

debug.crash

 

debug.crashを実行するとmodoはクラッシュするので、コンフィグファイルに編集結果を保存することはありません。まさか自爆コマンドがあるとは驚きですね。

CG News

Modo14.2 リリース

Modo14.2がリリースされました。プロシージャルウェイトマップ、パーティクルアイテムマップ、コマンド範囲を拡張したリグクレイ、CryptoMattem、ベジェツール挿入モード、トポロジビューと気になる機能追加が多いです。こういう細かな改善がもっと多いと嬉しいですね。

https://campaigns.foundry.com/modo-14-2
https://learn.foundry.com/modo/content/help/pages/welcome_modo/whats_new_summary_modo14_2.html

 

Modo14.2

Modo 14.2 は、さらに多くの機能と改善点を備えた今年のシリーズを完成させ、創造性を加速します。​Edge Chamferの継続的なモデリングの改善と大幅なブール演算パフォーマンスの向上、USDエクスポートのサポート、トポロジビューの改善、新しい頂点マップ編集メッシュオペレーション、拡張されたコマンド範囲、Cryptomatteサポートとステンシルマッピングを含むmPathの継続的な改善をお楽しみください。

 

ダイレクトモデリング

モデリングは、多くの場合、一連のコミットメントのように感じることがあります。面取り編集では、直接モデルでも手続き型モデルでも、既存のフラット面取りまたはベベルのオフセット、深さ、または方向を変更できるため、アーティストの柔軟性が高まります。

  • 面取り編集
  • シャープコーナー
  • マイタリングオフセット

  • ベジェツール挿入モード
  • 背景コンストレイントのマイナスオフセット
  • サブディビジョンエッジのウェイトを無視する
  • 頂点インデックスの並べ替え

 

プロシージャルモデリング

メッシュフュージョンシャープコーナー

14.0で追加したエンボスツールセットを使用すると、ユーザーはサーフェースのどこにでも正確なストリップを簡単に作成してエンボス加工できます。新しいシャープコーナー機能はそのアイデアをさらに一歩進め、ユーザーが詳細なテキストなどの複雑な形状に対して追加のブール演算を実行できるようにします。

 

プロシージャル 頂点マップメッシュオペレーター

​Grow 、Flood 、Remap 、Jitter を使用し、プロシージャル vmapを選択すると、プロシージャシステムでの編集が改善されます。​これによりモデリングとリギングの両方の目的でvmapを活用する方法が大幅に改善されます。

削除されたジオメトリの頂点を保持

​手続き型ワークフローでは、必要なときに必要なデータをインテリジェントに操作する必要があります。​新しいkeep vertices オプションを使用するとこれらの機能が拡張され、スタック内で追加のモデリング操作を行うために保持する頂点を正確に定義できます。

 

​パーティクルアイテムマップ

​新しいタイプのパーティクルマップが追加され、リプリケータが特定の頂点で作成する入力項目をメッシュパーティクルソースで定義できるようになりました。

 

レンダリングとシェーディング

​mPath CryptoMatte

​CryptoMatteは、クイックマットを作成しポストプロダクションでマテリアルを簡単にマスキングするための業界標準です。​ポストプロダクションの微調整に必要なマスクから推測を取り除き、mPathを使用してCryptoMatteレンダー出力を作成します。

 

​mPathステンシルマッピングを実行中に保存

​ステンシルマッピングは、木の葉や葉のように透明度の高いオブジェクトを高速レンダーするのに適した方法です。​mPathは、IntelEmbreeおよびNVIDIA OptiXTM Raytracingでステンシルマッピングをサポートするようになりました。これにより、mPathレンダリングエンジンに新たな速度と互換性のレイヤが追加されます。

 

​PBRローダー/パックされたマップおよびUIの拡張

​PBRローダはマテリアルに関係するイメージの読み込みを大幅に簡略化します。​新たにパックされたマップ機能により、複数のエフェクトを1つのイメージ内の別々のチャンネルにパックしたマテリアルのサポートが改善され、標準的な業界パラダイムのサポートが改善されました。

 

​アニメーションとリギング

​リグクレイ

​アニメーションはキャラクタのポーズやデフォーメーションをコントロールするために何百ものカスタムコントロールをいじらなくても十分にハードです。​リグクレイを使用すると、アニメータはこの余分な障害物のレイヤを取り除き、重要なものであるアニメーションに集中することができます。​
アニメートするキャラクタの部分をロールオーバーしてドラッグをクリックするだけで、目的のポーズ、表情、変形を得ることができます。​リガーは新しいコマンド範囲ノードの包括的なセットを使用して、何を動かすかを完全に制御できます。アニメータは、散らかったり気が散ったりすることなくアニメートできます。

 

​USDエクスポータ

​PixarのUniversal Scene Description (USD) は、3 Dコンテンツ作成アプリケーションのためのファイルのインポートおよびエクスポートの将来の標準になりつつあります。​USDを使用するとModo 14は、ジオメトリ、カーブ、ライト、カメラ、マテリアル、およびアニメーションをプロダクションワークフローの他の一般的なアプリケーションと交換することができます。

 

​パフォーマンス

​ブール演算コンポーネントの選択速度

​密集したポリゴンと複雑なシェイプを使用するUpブール演算では、生成に時間がかかる場合があります。​Modo 14.2は、直接モデリングツールと手続き型モデリングツールの両方でブール演算のパフォーマンスを加速します。確認された速度の改善は38,000%に達しており、これはブーリアン型ワークフローを根本的に改善する拡張です。​
コンポーネントを選択するときは、スピードが重要です。​単純で重いメッシュ上のコンポーネントの選択が最大200%高速になりました。

 

​UV拡張機能

​リアルワールドサイズとUVタイルの表示

​実世界のテクスチャスウォッチを操作する場合。​アーティストは、ジオメトリとテクスチャが適切な実世界のサイズに一致していることを確認する必要があります。​UVビューポートのこの新しいオプションを使用すると、UVレイアウトに正しい実世界サイズを設定して、スキャンまたは生成されたテクスチャスウォッチと正確に一致させることができます。
​アーティストは、しばしばイメージを表面に並べます。​ただし、UVビューにはこのタイリング動作は表示されません。​UVビューにこの機能が追加されたので、UVビューと3 Dビューの間のコンテキストを気を散らすことなく維持できます。

 

​アドバンスドビューポートの拡張機能

​アップグレードされた透明度レンダリング

​ビューポートでの透明なサーフェスの品質が向上し、表示が高速になるため、アーティストは設計上の決定を改善し、反復を増やすことができます。​透明度レンダリングがアップグレードされたModoの高度なビューポートは、アーティストがより多くの視点で作業できるようになり歓迎すべき改善です。

トポロジビュー

​Modoのトポロジツールセットは、そのクラスの中で最高だと多くの人が考えています。​新しい透明度のオーバーライドを活用することにより、アドバンスドビューポートトポロジビューは、トポロジの再作成タスクに役立つ優れたプリセットを生成します。

 

​ワークフローとユーザーエクスペリエンス

  • ビューポートシェーディングメニュー
  • ビューポートシェーディングオプション
  • Altキーを押しながらクリックして非アクティブなメッシュ設定を表示
  • フォームプリセット
  • アイテム、シェーダーツリー、およびグループのソロ

Tips

modoのダイナミックリプリケーターと変形したメッシュのコリジョン設定

modoのダイナミックリプリケーターと、デフォーマ使用して変形したメッシュとのコリジョン設定について書いてみます。

 

 

modoにはダイナミックリプリケーターと言う、リプリケーターを使用して複製したアイテムをリジッドボディダイナミクスとして使用する機能があります。ダイナミックリプリケーターとコリジョン設定する場合、通常は「キネマティック」または「スタティック」リジッドボディを適用します。

 

しかし、スケルトン変形などデフォーマ使用して変形したメッシュに「キネマティック」や「スタティック」を適用しても、デフォーマのアニメーションが無視されてしまいます。

 

コリジョンメッシュに「ソフトボディ」を適用すると、デフォーマでアニメーションしたメッシュとコリジョン判定するすることができます。

■サンプルファイル

 

コリジョン用のアイテムに「ソフトボディ」を適用すると重力の影響を受けてメッシュが落下してしまうので、メッシュが元の位置を維持する用に「ゴールマップ」にウェイトマップを指定し、「ゴールを一致」を100%に設定してメッシュが落下しないように設定します。

 

 

ソフトボディを適用したメッシュと、デフォーマで変形したメッシュのコリジョン判定する場合も同様に「ソフトボディ」を使用します。

■サンプルファイル

 

ソフトボディとソフトボディのコリジョン設定はとてもシビアです。ソフトボディの「マージン」が短いとメッシュのすり抜けが発生します。また、solverアイテムの「演算頻度」が低いと、素早い動きでメッシュが交差してしまい、頂点が震えたり爆発したりします。正直あまり実用的ではありません。

 

 

ソフトボディを使用したコリジョンは少しハックな使い方です。ソフトボディを使用してるので「跳ね返り」を設定できないなど制限があるので、他のソフトと同じようにキネマティックやスタティック状態のメッシュでデフォーマに対応して欲しいですね。

 

参考

Tips

modoでオブジェクトの形状をハイライトに使用する表現

modoでオブジェクトの形状をハイライトように見せる表現について書いてみます。作りかけの不完全な内容ですが、興味があれば試してみてください。

アニメやNPR表現では特長的なスタイライズドされたハイライトが使用されることがあります。こういう表現を使用したい場合、従来はテクスチャを使用するのが一般的ですが、今回はReycastノードを使用してオブジェクトの形状をハイライトのようにレンダリングしてみました。

 

スケマティックはこんな感じです。

Reycastの「ヒットした色」をマテリアルの「ディフューズ色」に入力すると、反射のようなディフューズ色を設定用することができます。

「ヒットした色」を「ディフューズ色」に直接入力すると環境色も完全に反射してしまうため、条件式の「AはBより大きい」を使用してReycastの「ヒットした距離」が一定以上離れている場合は、任意の色に置き換えるという処理にしてます。
距離が近い場合はTrue値としては「ヒットした色」をそのまま出力し、距離が離れてる場合はFalse値として任意の色を出力します。

反射してるオブジェクトはルミナンスを設定使用して、シェーディングしない単色になるように設定しています。

 

 

このままの方法だと近くにあるオブジェクトが全て反射してしまうので、反射対象のオブジェクトを制限する方法を追加する必要があります。今回はそこまで考えていないので、興味があるひとは続きを作ってみてね。

オブジェクト形状を使用する方法はテクスチャと異なり、カメラが近づいても荒くならないというメリットがあります。またリグを組んでアニメーションできるというのも面白いと思います。Reycast以外にUV Transformを使用する方法でも似た表現ができるような気がします。

 

3dsMaxにはShape Mapというスプラインをテクスチャでレンダリングする機能があり、リグを組めば表情用のテクスチャを動的に作ることがでそうだなと思ってましたが、Mayaで再現してる人を見かけました。modoもシーン内のパスやオブジェクトからテクスチャ作れたら似たようなことができて夢が広がりそう。

 

参考

Tips

CBOXのマッスルで車体を揺らしてみた

modo用のキャラクターリグプラグイン「CharacterBox」のマッスル機能で車体を揺らししてみました。

 

CharacterBoxにはマッスル機能というメッシュを筋肉のように伸縮するためのデフォーマが搭載されています。マッスルにはアイテムの移動量からメッシュを揺らす「ジグル」という機能が搭載されていて手軽に揺れを設定することが出来ます。
マッスルはメッシュだけでなくIKゴールにも適用することができるため、車体のよにアイテムを揺らすような表現に使用することが出来ます。

 

スケマティックはこんな感じです。

マッスルはアイテムインフルエンスを使用してIKゴールを動かしています。リグに車体を直接ペアレントしてもいいのですが、位置や回転の影響を調節したいのでコンストレイントを使用しました。
コンストレイントのプロパティには「出力オプション」ボタンがあり、ボタンを押すとMatrix Channel Effectを追加してくれます。Matrix Channel Effectを使用するとXYZ軸ごとにコンストレイントの強さを制御できるので便利です。

コンストレイントを使用する場合は「コンストレイント補正オプション」を使用するとアイテムの位置関係を維持したままコンストレイントすることができます。

 

マッスルを使用すると自動で揺れをつけることができるので便利です。

 

今回は試しということで腕リグ1本で揺らしてるためおもちゃのような動きになってます。実際の車のように前後それぞれマッスルを分けてリグを配置すれば、もう少しリアルな挙動が作れる気がします。

マッスルのように揺らすmodo標準機能として「ソフトラグ」があります。ソフトラグを使用しても似たようなことができると思いますが、ソフトラグはアイテムインフルエンスを使用することができないため少し手間がかかりそうです。

 

参考

Tips

ZBrushにクリースをインポートする方法

Maya、3ds Max、modoからZBrushにサブディビジョンサーフェイスの「クリース(折り目)」をインポートする方法について書いてみたいと思います。

一般的な3Dソフトのサブディビジョンサーフェイスには、クリースと呼ばれる鋭角なエッジを設定する機能が搭載されています。クリースは曲線と直線で構成された機械的なモデルを作るときに便利です。
FBXファイルはクリースの情報を保存することができるので、3DソフトからZBrushにクリース情報を持ったままモデルを読み込むことができます。

 

 

ZBrushにクリースをインポートする

一般的な3Dソフトではクリースに0~100など、重みを無段階で設定することが出来ます。しかし、ZBrushは特定の値が設定されたクリースしか読み込みまないので注意する必要があります。

 

Maya

Mayaからクリースを出力する場合は polyCrease で「折り目」の値を 10 に設定します。

 

3ds Max

Maxからクリースを出力する場合はエッジプロパティで「折り目」の値を 1.0 に設定します。画像はOpenSubdivですがターボスムーズでも出力できます。

 

modo

modoからクリースを出力する場合はサブディビジョンのウェイトを 100% に設定します。modoではマイナスや100%以上の値で保存することができますが 100% 以外は無視されます。

 

ZBrushに読み込んだ結果

ZBrushにFBXをインポートし、ダイナミックサビディビジョンを適用したモデルです。エッジに破線が表示されクリースの設定が読み込まれるのを確認できます。

 

 

ZBrushからクリースをエクスポートする

ZBrushから クリースを出力する場合は「FBXエクスポートインポート」の「スムースレベルをエクスポート」をONにします。

「スムースレベルをエクスポート」はマニュアルに説明がないので何を意図した機能なのかわかりませんが、恐らくキャットマルクラークサブディビジョンの折り目(Crease、エッジウェイト)の出力に関連する機能だと思われます。
スムースレベルという名称なのでSubDivの値を変更してエクスポートして見ましたが、折り目の出力意外に目立った変化はないように見えました。

 

ZBrushのFBXは特定の値のクリースしか読み込まないという仕様が罠ですね。本来は無段階に設定できるクリースをZBrushではON/OFFしかできないのはいいのですが、その値がキャットマルクラークの実用的な値の範囲である0~50%ではなく最大値以外読み込まないのはわかり難いかもしれません。FBXインポート時には少しでも値が入ってたらクリースとして読み込んでくれる方が動作がわかりやすい気がします。

 

参考

このビデオではクリースを1000に設定していますが、ZBrush 2020でFBX2020で出力したファイルをMayaに読み込むとクリースの値は 10 でした。Mayaで出力する場合は一度ZBrushからファイル出力して値を確かめるといいと思います。

Tips

modoのエッジウェイトをFBXに出力する方法

modoのエッジウェイトをFBXに出力する方法について書いてみたいと思います。

FBXファイルはメッシュやモーフ、スケルトン、アニメーションの他にも、頂点法線、選択セット、画像、コンストレイントなど3DCGに必要な様々なデータを格納することができるようになっており、サブディビジョンサーフェースの「エッジウェイト」の保存にも対応しています。

 

エッジウェイトとは

エッジウェイトサブディビジョンサーフェイスに重みづけし、鋭角なエッジを設定する機能です。例えばiPhoneのように曲線と直線で構成される機械的なモデルで、直線的なエッジを立てるときに便利です。MayaやMaxでは折り目(クリース)と呼ばれています。

modoには2種類のサブディビジョンサーフェイスが搭載されていますが、FBXにエッジウェイトを保存する場合はキャットマルクラークを使用します。

 

FBXファイルの出力結果

modoでエッジウェイトを設定したデータをFBX形式で保存してMayaとMaxで読み込むテストをしてみました。

テストに使用したエッジウェイトの画像です。キャットマルクラークは「頂点」「エッジ」2種類のウェイトを設定することができます。画像ではキューブ左側に頂点ウェイト、右側にエッジウェイトを設定しました。

左からウェイト値を-100、-50、0、10、20、30、40、50、100、200に設定しています。

modoはエッジウェイトとして-1000や1000のように好きな値を設定してFBXに保存/読み込みできますが、MayaとMaxではマイナス値に対応してないためファイル読み込み時にマイナスは無いものとして扱われます。

 

Maya

FBXファイルを開くと「折り目」の設定が読み込まれます。

polyCreaseでエッジや頂点の折り目の値が正しく読み込まれてるのが確認できます。

 

 

3ds Max

FBXファイルを開くと「折り目」の設定が読み込まれます。

エッジプロパティで「折り目」の値が正しく読み込まれてるのが確認できます。

 

 

エッジウェイトの検証はここまで、以降はキャットマルクラークのちょっとした解説です。

 

Catmull–Clark subdivisionとは

キャットマルクラーク(細分割曲面)は1978年に開発された歴史のあるサブディビジョンサーフェイスです。以前はアルゴリズムが特許で守られていたため、3Dソフトは独自にサブディビジョンサーフェイス機能を開発していました。このため使用する3Dソフトごとにサブディビジョンサーフェイスの結果が異なっていました。

2012年「OpenSubDiv」としてオープンソースライブラリとして公開され、Mayaや3ds Maxなど多くの3Dソフトが「OpenSubDiv」を追加しました。これによりどの3Dソフトを使用しても同じ見た目になるサブディビジョンサーフェイスを使用できるようになりました。

他の3Dソフトでモデルを読み込むときはFBXを使うことが多いと思いますが、キャットマルクラークを使用すればエッジウェイトの情報も受け渡し可能なので、modoでモデリングした状態と他の3Dに読み込んだ状態が一致するのが最大のメリットです。

 

そもそもエッジウェイトを使うのか問題

昔は3Dソフトごとに独自のサブディビジョンサーフェイス機能を開発していた経緯から、ソフトをまたぐ場合はエッジウェイトを使用する代わりに、エッジ付近にループスライスを追加して鋭角なエッジを立てることが多かったです。
ループスライスを追加するとエッジウェイトに比べてポリゴンは多くなりますが、エッジがラウンドされた感じが出るのでレンダリングしたとき好ましい場合があります。

ループスライスを使用してエッジを立てる例。

エッジウェイトを使用してエッジを立てる例。

 

サブディビジョンレベルによってエッジのRが変わる問題

キャットマルクラークは様々なソフトで採用されていますが、エッジウェイトに関しては使いやすいアルゴリズムだとは感じません。エッジウェイトがサブディビジョンレベルの影響を受けるため、ウェイト設定後にサブディビジョンレベルを変えるとエッジのRが変わってしまいます。

3Dソフトが独自に開発したサブディビジョンサーフェイスでは、このような問題が発生しにくいアルゴリズムになってたりします。古い時代に開発されたキャットマルクラークにはこのような問題もありますが、機械的な形状で便利に使えるしソフト間でエッジウェイトをやり取りできるので必要に応じて使うといいと思います。

 

参考

Tips

modoでパーティクルをサーフェースでうず状に動かす表現

modoでパーティクルをサーフェースに沿ってうず状に動かす表現について書いてみたいと思います。

 

スケマティックはこんな感じです。

 

スケマティックの右側は以前書いた「パーティクルをサーフェースに沿って動かす方法」と同じです。
今回はうず状にパーティクルを動かしたかったので、うず状のカーブを作成してSurface Particle GeneratorとReplicatorを使ってメッシュ表面に複製しました。
このカーブをMerge Meshesで1つのメッシュにまとめて、Curve Forceを使ってうず状のフォースを発生させています。

カーブを表示した状態。

パーティクルの軌跡は、プラグインの Particle Tracer X を使用してます。レンダリングはmodo標準の「カーブをレンダリング」を使用し、カーブの質感には「虹色マテリアル」を使用して金属っぽくしてます。

カーブをアニメーションさせても面白い表現が出来そうです。

 

ロゴでアニメーションしたやつ。

 

今回のパーティクルアニメーションはC4DのField Forceのデモ映像がかっこよかったのでまねしてみました。
Curve Forceは影響範囲が重なると相互に影響を受けてしまうため、Field Forceに比べると軌跡が交差してしまうのがちょっと残念です。綺麗な軌跡を描けるように、プロシージャルテクスチャからフォース生成するような機能追加して欲しいですね。

 

参考

https://twitter.com/GSG3D/status/1246071202772406272?s=20

CG News

Applicator Kit for Modo

フェイシャルキャプチャデータを使用するためのキット「Applicator Kit for Modo」がリリースされました。価格は$49、9月末までお試し価格$ 35。

このキットはTrueDepthカメラを搭載したiPhoneで、Apple ARKit Face Trackingを使用してキャプチャしたデータをmodoに読み込むためのキットです。フェイシャルキャプチャするには別途ソフトウェアが必要です。

https://gumroad.com/l/applicatorkit

 

概要

アプリケーターキット for Modoを使えば、iPhoneやiPadのTrueDepthカメラで撮影したApple ARKit Face TrackingデータをModoのキャラクターに適用することができます。
Apple ARKit Face Trackingは、あなたのiPhoneやiPadでパフォーマーの頭の位置だけでなく、50以上のユニークなブレンドシェイプ係数(Modoではモーフターゲット)を60フレーム/秒で追跡することができます。アプリケーターキット for Modoを使えば、このデータを取り、4つの簡単なステップでModoのキャラクターに適用することができます。

  1. マッピングファイルを定義する
  2. 顔のキャプチャパフォーマンスを記録する
  3. パソコンにデータを転送する
  4. データを自分のキャラクターに適用する

 

主な機能

  • アイテム階層ターゲット:シーン内のアイテム階層内にマッピングされたすべてのターゲットにデータを適用します。
  • アクターとアクションターゲット: データをアクターに適用し、オプションでアクション(新規または既存)として適用します。
  • マッピングファイル:トラッキングデータを適用する対象のモーフマップとアイテムを設定することができます。
  • マルチターゲット:単一のブレンドシェイプのトラッキングデータを複数のモーフマップに適用することができます。
  • 独立した有効化/無効化:シーンに適用するデータポイントを完全にコントロールできます。
  • マルチプライヤー: キャプチャーが微妙すぎて(または極端すぎて)、必要なパフォーマンスが得られないことがあります。マルチプライヤーを使用すると、シーンに対するトラッキングデータの値を増加(または減少)させることができます。
  • バリューシフト: 乗算器のように、バリューシフトはパフォーマンスを微調整することができますが、トラッキングデータを乗算するのではなく、一定の値を使用して上下にシフトします。
  • スムージングアルゴリズム: オプションでトラッキングデータにスムージングアルゴリズムを適用します。
  • FPS変換:60fps記録データをシーンのfpsに自動的に変換します。サポートfpsオプション。60、50、48、30、29.97、25、24。
  • ニュートラルアルゴリズム:オプションでニュートラルな顔のキャプチャ(ニュートラルな状態でパフォーマーの顔を5秒程度録画)を提供することで、アルゴリズムはパフォーマーのユニークな顔の形状に合わせてキャプチャデータを調整します。
  • 開始フレーム: データアプリケーションを開始するフレームを指定します。
  • キャプチャフレームをスキップ:スキップする録画のフレーム数を指定します。

 

サポートされているフェイストラッキングアプリ

注意: アプリケーターキットは顔のトラッキングデータをキャプチャしません、これはModoであなたのシーンにデータを適用するだけです。顔のパフォーマンスをキャプチャするには、以下のアプリのいずれかを使用してください。

Tips

ZBrushで作成したディスプレイスメントマップをmodoで使用する方法

ZBrushで作成したディスプレイスメントマップをmodoで使用する方法について書いてみます。使用バージョンはmodo 14.0、ZBrush 2020.1.4です。

 

ZBrushでディスプレイスメントマップを作成する方法

ディスプレイスメントマップ作成 オプション

ZBrushからディスプレイスメントマップを出力する場合の設定です。「スケール」1、「中央値」0.5であることが重要です。それ以外のオプションは必要に応じて設定します。

 

 

アダプティブ

アダプティブはポリゴンの領域計算が正確になります。しかし、このオプションは信頼性が低く大きな解像度では不要という情報を見かけます。使用するデータに合わせて見比べるのがよさそうです。

 

DPSubPix

DPSubPixはサブピクセルの精度で、値を上げると滑らかなピクセルになります。4が望ましいですが値を高くするとレンダリング時間が長くなります。高解像度のメッシュ(16mil以上)や、マップサイズが2048以下と小さい場合は2でも十分なようです。

中央値

ディスプレイスメントの押し出し基準となる値です。16bit画像はマイナス値を持つことが出来ないので、中央値がディスプレイスメントしないグレー色、凸が白色、凹を黒色のピクセルとして出力されます。

 

垂直反転

垂直反転はUVのV軸を反転します。modoからGozを使用してZBrushにメッシュを転送した場合、UVはmodoのUV方向と一致します。objやfbx形式でメッシュをインポートした場合はUVが「垂直反転」します。必要に応じて使用します。

 

マップを作成してエクスポート

「ディスプレイスメントマップ作成」で作成されるマップは16bitフロート固定です。16bitでも十分な結果が得られますが、32bitのマップが必要な場合は「マップを作成してエクスポート」を使用します。

 

32Bit

32bitをONにすると32bitフロート画像でファイル出力することができます。OFFの場合は16bit画像として出力します。32bit出力する場合は「3チャンネル」「32Bit」ONにして「マップを作成してエクスポート」を実行します。

「3チャンネル」がOFFの場合はグレースケールのファイルとして出力されるのですが正常です。しかし、「マップを作成してエクスポート」を使用した場合は以下の問題があります。

  • tif形式を使用した場合、壊れたtifが出力されます。
  • exr形式を使用した場合、Rチャンネルにマップを書き込むためmodoに読み込んだとき赤い画像になってしまいディスプレイスメントとして使用することができません。

マルチマップエクスポーター」はtifのグレースケール出力が正常に動作してるので、基本的にマップ作成はマルチマップエクスポーターを使用するのがいいと思います。UDIMを使用したモデルのマップを作成するときもマルチマップエクスポーターを使用します。

 

modoのメッシュにディスプレイスメントマップを適用する場合のマップ作成

modoで作成したメッシュをZBrushでスカルプトしてマップを作成し、そのマップをmodoのメッシュに適用する場合はモーフターゲットを使用した状態でディスプレイスメントマップを作成する必要があります。

ZBrushからGoZでmodoに転送したメッシュを使用する場合、この作業は必要ありません。

 

モーフターゲットを使用したマップの作成方法

  1. モーフターゲットサブパレットで「MT格納」をクリック
  2. 「インポート」を使用して元のメッシュを読み込みます
  3. 「切り替え」でモーフターゲットの状態になってることを確認して「ディスプレイスメントマップ作成」を行います

 

ZBrushで「ディバイド」したりスカルプトした場合、低SubDivのメッシュも変形します。このため元のメッシュにディスプレイスメントマップを設定する場合は、元のメッシュとスカルプトで変形したメッシュとの差をなくす必要があります。

モーフターゲットを使用してマップを作成することで、元のメッシュで正しい変形結果を得られるディスプレイスメントマップを作成することができます。

 

オリジナルメッシュ
立方体と平面

 

スカルプトしたメッシュ SubDiv7
立方体のみスカルプトで凹凸を作成

 

スカルプトしたメッシュの SubDiv1
スカルプトの影響で低SubDiv時のメッシュが変形している

 

モーフターゲットを使用しない状態で作成したディスプレイスメントマップ。立方体の角が膨らんでしまいます。

 

モーフターゲットを使用した状態で作成したディスプレイスメントマップ。ZBrushと同じ形状でレンダリングできます。

 

 

modoでディスプレイスメントマップを設定する方法

ZBrushから出力したディスプレイスメントマップをmodoで使用する方法です。modoでディスプレイスメントマップを正しくレンダリングするにはいくつか設定が必要です。

  • 画像レイヤーとマテリアルを設定
  • サブディビジョンをCatmull-Clarkにする
  • UV補間をリニアにする

 

画像レイヤーとマテリアル設定

画像が16bitと32bitで設定方法が異なります。

 

16bit画像

画像レイヤーで「下限値」「上限値」にZBrushのディスプレイスメントサブパレットの「強度」×100を設定し、マテリアルの「ディスプレイスメント距離」を500 mmに設定します。これはGoZを使用したときに設定される方法と同じです。

デフォルトのレンダリング設定だとポリゴンが荒いので、レンダー設定の「ディスプレイスメント評価間隔」に小さい値を設定します。「ディスプレイスメント評価間隔」は小さいほど良好な結果になりますが、レンダリング時間が長くなります。

ZBrushのディスプレイスメントサブパレットの「強度」の値。「強度」はZBrushが作成する画像ファイル名にも追加されます。

 

32bit画像

画像レイヤーの「下限値」-100%、「上限値」100%に設定して、「ディスプレイスメント距離」を500 mmに設定します。ただし、マップに保存されている値が1より大きい場合、デフォルトではディスプレイスメントがクランプされてしまいます。

 

このような場合はチャンネルビューポートで「source High」の値を高く設定します。「source High」はプロパティに表示されないチャンネルなので、ちょっと不親切ですね。

 

ディスプレイスメント距離の「500 mm」という値は、modoのレンダラーが使用するディスプレイスメントの基準値と思われます。

3Dソフトはソフト内で使用する基準となる大きさがあり、modoの場合は1 mが基準になっています。ディスプレイスメントマップには何センチのように絶対的な距離が保存されているわけではないので、ディスプレイスメントの押し出し方向 ±500 mm の基準値+マップの値でディスプレイスメントされます。

 

 

サブディビジョンをCatmull-Clarkにする

modoには2種類のサブディビジョンが搭載されています。modoオリジナルのサブディビジョン(Tab)と、Catmull-Clarkサブディビジョン(Shift+Tab)です。
ZBrushの「ディバイド」はCatmull-Clarkサブディビジョンを使用しているので、ZBrushからディスプレイスメントマップを出力してmodoで使用する場合は、Catmull-Clarkサブディビジョンを使用すると形状が一致します。

下の画像はmdooのCatmull-Clarkサブディビジョン(白色)と、ZBrushでディバイドしたメッシュ(赤色)を同じ位置に重ねてレンダリングしたものです。形状が一致してるのが確認できます。

まだら模様に見えるのはレンダラーの特性によるものと思われます。ポリゴンが同じ位置にある場合どちらのポリゴンを前面にレンダリングするか優先順位がポリゴンごとに変わっているため、まだら模様が発生しています。Dキーを使用して細分化したメッシュや、ジオメトリキャッシュを比較すると頂点位置が一致していることが確認できます。

 

MayaのArnoldでメッシュスムーズプレビューをレンダリングした画像、同じく形状が一致してます。

ZBrushのSubDiv4はmodoの「レンダーレベル」3に対応します。同様にMayaのMesh Smoothも3になります。

 

UV補間をリニアにする

modoはサブディビジョンをONにしている場合、UVマップに対してもサブディビジョンを適用します。ZBrushから出力したマップを使用する場合は、メッシュのプロパティで「リニア UV」をONにします。

 

ZBrushのマップ作成オプションに「スムーズUV」というオプションがありますが、modoでUVを一致させるには「スムースUV」をOFFの状態でマップを作成する必要があります。

 

ZBrushの「スムーズUV」は他のソフトでも基本OFFがいいように思います。3dsMaxはOpenSubdivモディファイヤにUV補間に関するオプションがあります。Mayaも同様にUV境界のスムーズ設定があるのですが、ZBrushの「スムーズUV」とは計算が一致しません。ZBrushの「スムーズUV」と同じような補間が出来るのは、Arnoldの「pin_borders」が近いように思います(試したけど微妙にずれる気がする)。

 

メッシュの比較

modoでディスプレイスメントマップを適用したモデル(白色)と、ZBrushから出力したハイメッシュ(青色)の比較です。だいたい同じような形状になってるのが確認できます。

 

 

ノーマルマップを作成/使用する方法

おまけでZBrushからノーマルマップマップを出力する場合の設定です。

 

Gozで読み込んだ法線マップはカラースペースの設定が「デフォルト」になってます。この状態だと法線マップによるシェーディングがおかしな状態になることがあります(カラーマネジメントの設定によります)。そんな時はカラースペースを「リニア」にすると解決します。

 

 

参考

ZBRUSH DISPLACEMENT IN MODO

modoのチュートリアル。
http://www.xuanprada.com/blog/2014/7/30/zbrush-displacement-in-modo

このチュートリアルではマップ作成時に「中央値」0、modoのレイヤー設定では「下限値」0%「上限値」100%、「ディスプレイスメント距離」1mに設定しています。

私の記事で「中央値」0.5を使用したのは16bitと32bit画像で共通して使用する設定にするためです。Arnoldと設定を合わせたい場合は「中央値」0の方がいいかもしれません(ArnoldのScalar Zero Valueで合わせられる気もします)。

 

ACCURATE DISPLACEMENT WORKFLOW

ディスプレイスメントの基本的から解説されてます。
https://www.cggallery.com/tutorials/displacement/