2016年10月29日土曜日

[Blender] Pythonスクリプトで頂点グループをまとめて選択する方法

How to select multiple vertex groups

過去のブログ CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法 で書いたとおり、3DキャラクターをCLIP STUDIOへ移植するにはスカート部には専用のマテリアルが割り当てられている必要があります。
「サファイアートちゃん」のように誰でも利用できるスカート着用の3Dキャラクターモデルはたくさん公開されていますが、そのほとんどがスカートと衣服に共通のマテリアルが設定されています。
しかし、スカート部に割り当てられた頂点グループに別のマテリアルを割り当てれば解決します。
とはいえ、たくさんの頂点グループを選択する操作が必要なので手間がかかります。
そこで、複数の頂点グループをスクリプトで一括選択する方法をまとめました。
blog.fujiu.jp [Blender] Pythonスクリプトで頂点グループをまとめて選択する方法
© SAPPHIART CHAN


環境

  • Windows 10
  • Blender 2.78


頂点グループを一括選択するPythonスクリプト

スカートの頂点グループは Skirt という文字列が含まれている場合次のようになります。


「オブジェクト名」の文字列はモデルに応じて変更します。
3D ViewをEdit Modeにし、Python Consoleに次のように入力またはコピー・ペーストします。
サファイアートちゃんの上着は ClothOuter というオブジェクト名なので次のようになります。




どんなときに役立つか

複数の頂点グループをまとめて編集したいときに役立ちます。
下の画像は「Imagine GIrls・R1N4(リナ)」の3DモデルをBlenderにインポートしたものです。
スカートの頂点グループが100個近くあるので手作業で選択するのは気の遠くなる作業ですが、スクリプトなら一瞬で済みます。

© ImagineVR Inc.
スクリプトの Skirt を別の文字列に置き換えれば名前にその文字列を含む頂点グループを一括選択できます。
また、select() を deselect() に書き換えれば選択状態を一括解除するスクリプトになります。


関連ブログ

[Blender] 複数のShape keyを一つにまとめる方法
CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
[Blender] Pythonで複数の設定を一瞬で編集する方法
[Blender] ボーンを削除したらメッシュが動かないときの直し方
[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
BlenderのモデルデータをMMDに変換する方法

以上、参考になれば幸いです。

2016年10月22日土曜日

[Blender] 複数のShape key を一つにまとめる方法

How to mix multiple shape keys

3次元CG編集ソフト・Blenderにはを移動してアニメーションさせるShape Keyという機能があります。
人物モデルの目や口の開閉アニメーションなどによく使われます。
複数のShape Keyを一つにまとめる方法をまとめました。

© SAPPHIART CHAN


環境

  • Windows 10
  • Blender 2.78


Shape Key付きモデルを用意する

過去のブログ Shape key の変形を固定する方法
でBlenderにインポートした実績がある株式会社サファイアートの「サファイアートちゃん」のFBXファイルをサンプルとします。


サファイアートちゃんの顔は右目・左目・口にそれぞれ独立したShape Keyが複数設定されています。


複数のShape key を一つにまとめる方法

ここから本題です。
Object Mode で一つにまとめたいShape Keyをすべて変形させます。
両目と口の変形をまとめることにします。

右の下向き三角ボタンをクリックして New Shape From Mix をクリックします。

複数の変形をまとめたShape Keyが追加されます。

新しく追加されたShpae Keyだけで両目と口をアニメーションできるようになりました。
※GIFアニメーションです
blog.fujiu.jp 複数のShape key を一つにまとめる方法


注意

まとめられるShape Keyは同一オブジェクト上のものに限るようです。
ユニティちゃんのようにまぶたや目など顔が複数のオブジェクトに分かれているShape Keyをまとめる場合はJoinコマンドで結合するとできるようになります。
blog.fujiu.jp 複数のShape key を一つにまとめる方法
© Unity Technologies Japan/UCL


関連ブログ

[Blender] Shape key の変形を固定する方法
[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
BlenderのモデルデータをMMDに変換する方法
[Blender] ボーンを削除したらメッシュが動かないときの直し方
[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
[Blender] Pythonで複数の設定を一瞬で編集する方法

以上、参考になれば幸いです。

2016年10月15日土曜日

[Blender] Shape key の変形を固定する方法

How to freeze deformed vertices with shape keys

3次元CG編集ソフトの Blender には頂点を移動してオブジェクトを変形する Shape Key という機能があります。
人物モデルなら口や目の開閉アニメーションなどによく使われます。
口を開けたまま、目を閉じたままなど、Shape Keyの変形を固定してFBXファイルにエクスポートする方法をまとめました。
blog.fujiu.jp [Blender] Shape key の変形を固定する方法
© SAPPHIART CHAN


環境

  • Windows 10
  • Blender 2.77


Shape Key付きFBXファイルをインポートする

複数のShape Keyを持ち、Blenderに比較的インポートしやすい株式会社サファイアートの「サファイアートちゃん」のFBXファイルをサンプルにします。
サファイアートちゃんはゲームエンジン・Unity3DのAssetストアや公式サイトから無料でダウンロードできます。
BlenderはFBXインポート時のパラメーターによってShapke Keyを動かすと顔が爆発することがあるのですが、今回は下記の設定でインポートしました。

Main
Manual Orientation を オン

Armatures
Automatic Bone Orientation を オン

「faceFlat」というパーツは使わないので削除します。
一部ボーンの向きやマテリアルの割り当てなどが不正な気がしますが無視します。


Shape Key の変形を固定する方法

サファイアートちゃんは15種類ほどShape Keyがあり目や口を変形できます。

ここから本題です。
Shape Keyの変形を固定するには固定したいShape Keyを選んで Move To Top でリスト内の一番上に移動させます
Shape Keyの変形を固定するには固定したいShape KeyをShape Keysリストの一番上に移動させます
口を開けた face_jaw_open_BS という表情で固定したければ、右の下向き三角ボタンをクリックして face_jaw_open_BS を一番上に移動させます。

2番目以降のShape Keyをすべて削除すれば変形を固定したままFBXファイルにエクスポートできます


変形の確認

確認のため、変形を固定したFBXファイルにエクスポートし、CLIP STUDIO MODELERにインポートしてみました。
Blenderでは非表示だった舌や歯が表示されていますが、変形していることが確認できました。

ほかのモデルでも同じ方法で変形を固定できます。

© Unity Technologies Japan/UCL


関連ブログ

[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
BlenderのモデルデータをMMDに変換する方法
[Blender] ボーンを削除したらメッシュが動かないときの直し方
[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
[Blender] Pythonで複数の設定を一瞬で編集する方法

以上、参考になれば幸いです。

2016年10月8日土曜日

[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法

How to port 3D human models to CLIP STUDIO

MMDモデルの「プロ生ちゃん」(PMXファイル)とUnity3Dアセットの「サファイアートちゃん」(FBXファイル)をCLIP STUDIO用3Dキャラクターに移植できたのでその方法をまとめました。
blog.fujiu.jp CLIP STUDIO に Unity3D や MMD のキャラクターを移植する方法

CLIP STUDIOに移植するとマンガ・イラスト作成ソフトのCLIP STUDIO PAINTやCG動画作成ソフトのCLIP STUDIO ACTIONで使えるようになります。
移植には3次元CG編集ソフト Blender などを使います。
CLIP STUDIO MODELERはハングアップすることが多いため移植中に起こったトラブルはすべて自己責任で処理するようお願いします。
また、各ソフトの操作説明は省略します。


環境

  • Windows 10
  • CLIP STUDIO MODELER 1.6.3 無料版 (以下、MODELERと省略します)
  • Blender 2.77a + PMXインポーターアドオン(改変Blender2Pmx)
  • PMX Editor 0.2.2.2
  • PMX2FBX.exe (Nora氏が公開しているUnity3D用ユーティリティ MMD4Mecanim に含まれるコマンド。PMXファイルをFBXファイルに変換するのに使います)


モデルを体・頭・髪の3つに分ける理由

大まかな手順を説明すると、モデルの体・頭・髪ごとのFBXファイルを作成してMODELERにインポートするだけです。
ただし、過去のブログ MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法 のように必ずしも体・頭・髪に分ける必要はありません。
CLIP STUDIO PAINTでは頂点モーフが使えませんが、顔のパーツを表情ごとに分けての用意すれば差し替えることができます。
体は衣装ごとに、髪は髪型ごとに分けて用意すれば差し替えることができます。


[Unity3D・MMD共通] 体のパーツをBlenderでFBXファイルにエクスポートする

MMDモデルの場合はBlenderにインポートする前にPMX Editorで次の通りに編集しておきます。特にモーフは削除しないと MODELER がハングアップすることがあります。
  • 全ての親ボーン、センターボーン、モーフ、剛体、Jointは全て削除する
  • 上半身ボーンの親を下半身ボーンに変更する
  • あらかじめTポーズにした方がいい

移植したいモデルをBlenderにインポートして次の通りに編集します。
  • メッシュは頭・目・髪などを削除し、首から下を残す
  • ボーンは頭を含めて頭から下を残して他(髪のボーンなど)は削除する。頭の末端ボーンはあれば残す
  • 頂点グループに影響がないボーン(Rootなど)を削除する
  • 表示しないパーツのメッシュを削除する
  • 腕や手首の捻りボーンは削除した方がいい
  • 親指の向きを人差し指と同じ向きにそろえた方がいい
  • 指のボーンが4本以上で構成されている場合は削除して3本に減らす
    Blenderでボーンを削除するときの注意点は過去のブログ
    [Blender] ボーンを削除したらメッシュが動かないときの直し方
    にまとめてあります。
  • 衣装がスカートの場合、スカートの頂点グループのメッシュにスカート用マテリアルを割り当てる

最後のスカートは、後述するMODLERのスカート設定でスカートのメッシュをマテリアル名で指定する必要があるため特別な措置です。
サファイアートちゃんの衣装 ClothOuter を例に説明します。
この衣装は Sapphi_clothes というマテリアルが割り当てられています。

Sapphi_clothes マテリアルをコピーして Skirt_Sapphi_clothes というマテリアルを作り、スカートの頂点グループに割り当てます。

こうしておくとMODLERで Skirt_Sapphi_clothes のマテリアルを選んでスカート設定できるようになります。
サファイアートちゃんのスカートは複数の衣装が重なっているのでこの作業を全てのスカートの頂点グループに行います。

以上の編集が済んだらFBXファイルにエクスポートします。


[Unity3Dの場合] 顔のパーツをBlenderでFBXファイルにエクスポートする

  • メッシュは顔、目、耳などを残して他は削除する
  • ボーンは頭を含めて頭から上を残して他(首から下)は削除する
  • 髪のボーンは削除する

以上の編集が済んだらFBXファイルにエクスポートします。


[MMDの場合] 顔のパーツを PMX2FBX.exe でFBXファイルに変換する

顔パーツに必要なメッシュとボーンは [Unity3Dの場合] と同じです。
ただし、原因は不明ですが自分の環境ではMMDモデルの顔をBlenderでFBX化すると MODELER がハングアップしてしまいます。
PMX Editorでモーフ、剛体、Jointを削除した顔のみのPMXファイルを作り PMX2FBX.exe でFBXファイルに変換したら MODELER にインポートできました。

ちなみに自分の環境ではPMX2FBX.exeでFBX化したモデルとBlenderにPMXをインポートしてFBX化したモデルとでは2.5倍のスケール差がありました。
そのためBlenderにインポートした体と髪を、顔と同じスケールに倍率修正する必要がありました。


[Unity3D・MMD共通] 髪のパーツをFBXファイルにエクスポートする

MMDモデルの場合はPMX Editorでモーフ、剛体、Jointを全て削除してからBlenderにインポートします。
  • メッシュは髪と付随するアクセサリーを残して他は削除する
  • ボーンは頭を含めて頭から上を残して他は削除する
以上の編集が済んだらFBXファイルにエクスポートします。


MODELER に体のFBXファイルをインポートする

MODELER に体のFBXファイルをインポートして標準ボーンマッピングを行います。
この操作は MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法 にまとめてあります。

スカートを着用したキャラクターならスカート設定をします。

脚がスカートを突き抜けないようコライダーを設定します。

長い髪に物理演算を入れる場合は、髪が体を突き抜けないように物理設定で衝突グループやジョイントを設定をします。
揺らせたいところがあれば物理演算とジョイントを設定します。


MODELER に顔のFBXファイルをインポートする

顔をインポートします。位置や向きがずれる場合は数値入力して調整します。


MODELER に髪のFBXファイルをインポートする

顔をインポートします。位置や向きがずれる場合は数値入力して調整します。
揺らせたいボーンには物理演算とジョイントを設定します。


ここまで完成したら
ファイル - 新規素材として登録
でCLIP STUDIO PAINTなどで使えるようになります。


注意点

  • Blender や PMX2FBX.exe で作成したFBXファイルはCLIP STUDIOでは動作保証外です。
  • 各モデルのライセンスには十分にご注意下さい。
  • いかなるライセンスであってもライツホルダーでなければCLIP素材に出品することはできません。


関連ブログ

[Blender] ボーンを削除したらメッシュが動かないときの直し方
[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
[Blender] Pythonで複数の設定を一瞬で編集する方法
MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法
BlenderのモデルデータをMMDに変換する方法

以上、参考になれば幸いです。

2016年10月1日土曜日

[Blender] ボーンを削除したらメッシュが動かないときの直し方

How to duplicate vertex weight

3DキャラクターをBlenderにインポートし、ボーンを削除したらそのボーンに割り当てられていた肌(スキニングされていたメッシュ)が動かなくなり、関節を曲げると肌が餅のように伸びてしまいました。
blog.fujiu.jp [Blender] ボーンを削除するとメッシュが動かなくなるときの直し方
© SAPPHIART CHAN

ボーンを消す前に頂点ウェイト(ボーンと肌の関連度)を親ボーンにコピーしたら解決したのでその方法をまとめました。


環境

  • Windows 10
  • Blender 2.77


ボーンを削除すると起きる問題

株式会社サファイアートがUnityアセットとして公開している「サファイアートちゃん」を例に挙げます。
UnityアセットのFBXファイルとテクスチャ画像ファイルをコピーしてBlenderにインポートしました。
サファイアートちゃんは両腕に手首を捻らせるための ForearmTwist ボーンがあります。

これらの捻りボーンを削除して腕を動かすと下の画像のように手首が伸びてしまいます。

サファイアートちゃんの腕の各頂点は複数の頂点グループを共有し、どの頂点グループの影響をどれくらい受けるかという「頂点ウェイト」が設定されています。
頂点ウェイトに影響を与えるボーンを削除したため、動かなくなってしまったわけです。


Modifierで頂点ウェイトを親ボーンにコピーする方法

ボーンを削除する前に削除したいボーンの頂点ウェイトを親ボーンにコピーすれば解決します。
しかし頂点ウェイトは無数の頂点ごとに0.0から1.0までの数値を指定するため、手作業でコピーするのは現実的ではありません。
頂点ウェイトをコピーするには Modifier を使うと簡単です。
Modifierの設定方法は次の通りです。

(ドロップダウンメニュー) VertesWeightMix
Vertex Group A: 削除したいボーンの親ボーン (の頂点グループ)
Vertex Group B: 削除したいボーン (の頂点グループ)
Mix Mode: Add
Mix Set: VGroup B

Modifier で VertesWeightMix を設定するときはWeight Paint画面にしてボーン名を表示すると変化がわかりやすくなります。

Modifierが正しく設定できたらApplyボタンをクリックし、ボーンを削除します。
下の画像は左手首のみ捻りボーン (ForearmTwist_L) の頂点グループを親ボーンにコピーしてから左右の手首捻りボーンを削除した結果です。


ModifierをPythonスクリプトで実行する方法

ModifierはPythonスクリプトでも実行できます。
下のスクリプトの日本語で書いた部分を個別に修正すればコピー・ペーストで実行できるサンプルです。




どんなときに役立つか

UnityアセットやMMDモデルなど、ボーンの数や構成はそれぞれ異なりますです。
多くの人型モデルの指は3本のボーンで構成されることが多いですが、下の画像のように4本の指で構成するモデル作者もいらっしゃいます。

マンガ・CG動画の作成ソフト CLIP STUDIO では3Dキャラクターの各指のボーンは3本と決められているため4本ボーンのキャラクターを登録した場合、手を握りしめるポーズが下の画像のようになります。
これでは手に見えません。

CLIP STUDIOの仕様に合せて各指のボーンを3本に減らす必要がありますが、前述の通りボーンを削除するだけでは肌が伸びてしまいます。
4本目のボーンの頂点グループを親ボーンにコピーしてから4本目のボーンを削除し、手を握りしめるポーズをとった結果が下の画像です。
期待通りの表現になりました。

モデルデータを他のアプリケーションに移植する際にボーンを削除する必要があるかもしれません。
そんなときに知っていると便利です。


関連ブログ

[Blender] ボーンを曲げてもメッシュが曲がらない原因と修正方法
BlenderのモデルデータをMMDに変換する方法
Blenderで作ったアニメーションがUnity3Dで違う動きをする原因と直し方
[Blender] Pythonで複数の設定を一瞬で編集する方法
MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法
Metasequoia EX の FBXファイルの互換性を試してみました
Shade3D の FBXファイルの互換性を試してみました

以上、参考になれば幸いです。