SergeyMakeev / maya_greenCageDeformer

A study of the cage deformer implementation for Maya based on Green barycentric coordinates.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

maya_greenCageDeformer

Green Coordinates によるケージデフォーマーのMayaプラグインのテスト実装。

上記の論文と Hans Godard 氏の動画 を参考にしました。

Python API 2.0 で MPxDeformerNode クラスがサポートされていなかった為、旧 API で実装しています。

SS

元のシェイプを維持するような変形が可能で、非常に粗いケージを使用しても品質が良いです。 反面、一つのポイントの変形位置を算出するのにケージの全頂点と全トライアングルが参照されるので重いです。 C++ で並列化実装すればその恩恵を受けやすいかも知れません。

ディレクトリ構成

  • scripts: デフォーマーを生成するための簡単なスクリプト。
  • plug-ins: Pythonによるプラグイン。
  • examples: ごく簡単なMayaシーンの例(バインド済み)。

使用方法

デフォームする一つ以上のターゲットシェイプ(ポイント選択で部分的なデフォームも可能)、 一つのケージメッシュを用意します。

ケージ、ターゲットの順に選択し、スクリプト scripts/createGreenCageDeformer.py を実行するとバインドされます。

制限事項

勉強として実装したので、そこそこ動作はしますが、実用レベルのものではありません。

  • ケージはターゲットシェイプの外側にある必要があります。 もしケージの外にターゲットポイントがあると酷い結果になります。

  • Python 実装(しかも 2.0 でない)であり、何の最適化もしていないため、動作が大変重いです。 ターゲットはそこそこ大丈夫ですが、ケージにはごく簡単な形状しか重すぎて使用できません。

  • ターゲットの全ポイントはケージの全頂点の影響を受けます。 そのため重いですし、良い結果を得にくい部分かも知れません。

  • バインド情報をアトリビュート保存していない為、シーンを開く時間がかかります(シーン開く際に再バインドされる)。

  • デフォーマーのウェイトや envelope アトリビュートを無視しています。

About

A study of the cage deformer implementation for Maya based on Green barycentric coordinates.

License:MIT License


Languages

Language:Python 100.0%