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ファイルの互換性を試してみました

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

2016年9月24日土曜日

Metasequoia EX の FBXファイルの互換性を試してみました

Can Metasequoia EX import and export compatible FBX files

CG動画やゲーム開発に使われる3次元CGはFBXフォーマットがデファクトスタンダードです。
FBXを扱うならAutodesk製品が最善策ですがコストがネックです。
無料で使えるBlenderはFBXのインポートやエクスポートができないことがあり悩みの種です。
そこで前回は Shade3D Basicを使ってFBXファイルをインポート・エクスポート してみたところ、シェイプ(頂点モーフ)が削除されることがわかりました。

今回は Metasequoia EX でFBXファイルのインポートとエクスポートをしてみました。

© Unity Technologies Japan/UCL


環境

  • Windows 10
  • Metasequoia EX 4.5


Metasequoia EXを選んだ理由

Metasequoia EXを選んだ理由は次のとおりです。
  • 値段が安い (2万円くらい)
  • FBXファイルのインポートとエクスポートができる
  • 頂点モーフ機能がある
以下、「Metasequoia EX」をMetasequoiaと略します。


FBXファイルをインポートした結果

ユニティテクノロジーズジャパンのUnityアセット・ユニティちゃんのFBXファイルをMetasequoiaにインポートしました。
Blenderのように顔が散らかりません。
blog.fujiu.jp Metasequoia EX の FBXファイルの互換性を試してみました

各材質にテクスチャ画像ファイルを指定して下のようになりました。
デフォルトでは全ての頂点モーフが合成されるため目やまゆ毛がたくさん表示されますが、オブジェクトビューで非表示にできます。

モーフを使ってみたところ、口は動作しましたが

目やまゆ毛のモーフは問答無用で削除されました


FBXファイルをエクスポートした結果

Metasequoia からエクスポートしたユニティちゃんをCLIP STUDIO MODELERやBlenderにインポートしたら顔が消えたり、服の形が変わっていました。
下の画像はCLIP STUDIO MODELERにインポートした結果です。
顔がなくなりました。
ユニティちゃんは3次元キャラクターとしては珍しく服を重ね着しているのですが、上着から見えないはずの服がはみ出ています。
下の画像はBlenderにインポートした結果です。CLIP STUDIO MODELERとは違う形で服がはみ出ています。

Pose modeで動かすとウェイトがおかしいことがわかりました。


まとめ

MetasequoiaでユニティちゃんのFBXファイルをインポート・エクスポートすると結果、Blendeとは違うところで互換性が保たれないことがわかりました。
ですが全てのFBXでこの現象が起きるわけではありません。Metasequoiaでモーフやウェイトが正常にエクスポートできるモデルもありました。
BlenderにインポートできないFBXファイルがMetasequoiaにインポートできることもありました。


© 株式会社インターネット

現時点でなるべく安くFBXフォーマットを交換したければMetasequoiaとBlenderの両刀使いがよさそうです。
※このブログを書いているのは ZBrush Core が正式発表直前のため、近い将来評価が変わる場合があります。


関連ブログ

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

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

2016年9月10日土曜日

Shade3D の FBXファイルの互換性を試してみました

Can Shade3D import and export compatible FBX files

ゲームエンジンの Unity3D や Unreal Engine などで使われる3次元CGはFBXフォーマットが広く使われています。
FBXフォーマットのファイルを加工して再利用することが必要になることもあります。
そこで3次元CG用モデリングソフトのShade3Dを使ってFBXファイルのインポートとエクスポートを試してみました。
blog.fujiu.jp Shade3D の FBXファイルの互換性を試してみました
© Unity Technologies Japan/UCL


環境

  • Windows 10
  • Shade3D Basic Ver.16


Blenderではダメなのか

FBXが扱えるフリーソフト(寄付歓迎)といえば Blender があります。
ですが、BlenderのFBXファイルのインポートとエクスポートは互換性が低めです。
下の画像はユニティ・テクノロジーズ・ジャパンのキャラクター・ユニティちゃんのFBXファイルをBlenderに取り込んだ結果です。
顔が大きさも配置場所もばらばらで元に戻す手直しが必要です。

FBXフォーマットはAutodeskの規格でありプロプライエタリーな FBX SDK が公開されています。
一方、BlenderはGPLのオープンソースソフトウェアです。
GPLのBlenderは非GPLのFBX SDKと動的リンクして公開することができないため、BlenderにFBXとの高い互換性を望むのは難しい事情があります。
FBXを扱うならAutodeskのMayaや3dsMaxが最善の選択ですが厳しいコストがかかります。


Shade3Dを選んだ理由

Autodesk製品よりコストが低いFBXファイルの交換用としてShade3Dを使ってみました。
Shade3Dを選んだ理由は次のとおりです。
  • 値段が安い (一番安いグレードで1万円くらい)
  • FBXフォーマットのインポートとエクスポートができる
  • Webサイトのチュートリアルが充実している
  • ベンダーがUnity3Dのサポートに積極的に見える
  • 毎年バージョンアップしている


Shade3DのFBXの互換性

Shade3Dでユニティちゃんをインポートしてみました。

各パーツは正常な位置にあります。
テクスチャは指定する必要がありますが、Blenderに比べると少ない操作で済みます。


Shade3Dを使ってみた結果

Shade3DにインポートしたユニティちゃんをFBXでエクスポートし、Blender や CLIP STUDIO MODELER にインポートしたらShape Keys(頂点モーフ)がなくなっていました。
下の画像はShade3DのFBXをBlenderにインポート下結果です。12種類あるはずのMTH_DEFのSyape Keysが全てなくなりました。

Shade3DはFBXファイルのShape Keysのインポート・エクスポートの互換性がないか、モーフ機能がないようです。

その他の面では
  • マウス操作によるビューのスクロールがBlenderの逆方向に動く
  • Blenderにある「マテリアル(材質)が割り当てられた面を選択する機能」と同じ機能が見当たらない
  • 自分の環境ではCOLLADAファイルへの書き出しが必ずフリーズする
といった事がありました。


まとめ

Shade3Dは低価格であるもののBlenderユーザーがデータ交換用として使うには機能が足りないように思いました。
ただし造形機能が豊富なのでモデリングに集中したい人に検討をお勧めします。


© 株式会社インターネット


関連ブログ

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

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

MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法

How to create 3D models for CLIP STUDIO with MakeHuman

MakeHumanは人型の3次元CGモデルを作成できるオープンソース・ソフトウェアです。
MakeHumanで作成したモデルは著作権が放棄されたCC0ライセンスのコンテンツとして利用できます。
MakeHumanで作ったモデルはCLIP STUDIOの3Dキャラクターに登録できるのでその方法をまとめてみました。
今回は表情や髪型が固定のキャラクターを作ります。
blog.fujiu.jp MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法


環境

  • Windows 10
  • MakeHuman 1.1.0
  • CLIP STUDIO MODELER 1.6.0


MakeHumanでモデルを作る

MakeHumanを公式サイトからダウンロードして解凍し、makehuman.exeを実行します。
MakeHuman | Open source tool for making 3d characters: http://www.makehuman.org/download.php

起動後はモデルが全裸なので画面上部のメニューの
Geometries - Clothes
で服を設定しました。

体格・肌の色・髪型などのパラメーターを設定します。
各パラメーターは自由に設定していいわけですが、ボーンとポーズは次の設定にするとCLIP STUDIOで編集しやすくなります。
Pose/Animate - Skelton で Game engine を設定する。

Pose/Animate - Pose で Tpose を設定する。


MakeHumanのモデルをFBXにエクスポートする

モデルが完成したら
File - Export
で Filmbox (fbx) を選択して名前をつけてfbxファイルにエクスポートします。

textureというサブフォルダーに保存されるテクスチャ画像ファイルはfbxファイルと同じ場所に移動します。


CLIP STUDIO MODELERにインポートして登録する

CLIP STUDIO MODELER は有償製品ですがこのブログを書いている時点では体験版で人型モデルの登録ができます
公式サイトからダウンロードしてインストールし起動します。
3Dデータセットアップツール CLIP STUDIO MODELER: https://www.clip-studio.com/clip_site/download/clipstudiomodeler/clipstudiomodeler_top

起動したらキャラクター構成ウィンドウのボディの「ファイルから追加」でfbxファイルを追加します。

画面右下の骨のボタンをクリックして標準ボーンのマッピングを行います。

腕の角度はそのまま次へ

MODELERのバグなのか、たまにボーンが表示されないことがあります。
ボーンを頭・右腕・左腕・右脚・左脚の順にクリックして次へ。
だいたいの場所をクリックすれば認識します。

5種類のポーズアイコンをクリックして、全てガイドモデルと同じポーズになれば完了をクリックします。

これで最低限の設定ができたのでメニューの
ファイル - 新規素材として登録
でCLIP STUDIOの素材として使えるようになります。

今回は表情が固定なのでモブキャラやデッサン人形として使うことになると思いますが、無料で増やせるのはありがたいですね。


関連ブログ

CLIP STUDIO PAINT を使ってみました
CLIP STUDIO版 クエリちゃん 3Dモデルのファイルを公開しました

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

2016年9月3日土曜日

Live2D を Unity3D で動作させる方法

How to import Live2D models and animations into Unity3D

Live2Dで作成したモデルやアニメーションはゲームエンジンのUnity3Dで動作させることができます。
前回作成した東北ずん子のLive2Dアニメーション で実際に試してみたのでその手順をまとめました。
blog.fujiu.jp Live2DをUnity3Dで動作させる方法


環境

  • Windows 10
  • Live2D Cubism 2.1.12
  • Unity 5.3.5
  • Visual Studio 2015 Community
Live2DとUnity3Dは無料で使える範囲で試しました。


Live2D Cubism SDK をダウンロードしUnity3Dプロジェクトにインポートする

公式サイトからUnity用Live2D Cubism SDKをダウンロードしインストールします。
このブログを書いている時点では2.1が最新バージョンでした。
http://sites.cybernoids.jp/cubism-sdk2/

自作モデルを動作させるにはこのSDK内のサンプルのスクリプトを流用する方法が簡単でした。
今回は自作のモデルとモーションを動作させます。

ダウンロードしたら展開し、sampleフォルダーのMotionフォルダーを丸ごとUnity3Dプロジェクトにインポートします。
このフォルダーには必要なDLLやシェーダーが含まれているのでサブフォルダーごとインポートします。
blog.fujiu.jp Live2DをUnity3Dで動作させる方法


モデルとモーションを配置するサブフォルダーを作成する

Unity3DのプロジェクトフォルダーにLive2D用モデルを配置するサブフォルダーを作ります。
例として Live2D_Modelsフォルダーを作成


Cubism Modeler でモデルデータを書き出し拡張子を bytes に変更する

Cubism ModelerでUnityアプリ化したいモデルを開き、メニューの
ファイル - mocファイル書き出し
を実行し、Unity3Dプロジェクトの Live2D_Models フォルダーに書き出します。

書き出し後、フォルダーをエクスプローラーで開き(右クリック Show in Explorer)、mocファイルに.bytesという拡張子を追加します


Cubism Animation でモーションデータを書き出し拡張子を bytes に変更する

Cubism Animationでモデルに適用したいモーションのプロジェクトを開き、
ファイル - モーションデータを出力
を実行し、Unity3Dプロジェクトの Live2D_Models フォルダーに書き出します。

mtnファイルに.bytesという拡張子を追加します


Spriteにスクリプト・モデル・モーションを適用する

Hierarchyウィンドウに新しいSpriteを追加します。

Hierarchyに追加したSpriteにインポートしたサンプルのフォルダーの
MOtion - Assete Scripts
にある SimpleModel をドラッグ&ドロップします。

SpriteのInspectorウィンドウを操作します。
描画処理はSDKでオーバーライドしているようなのでSprite RendererをオフにするかRemove componentします。
Simple Model(Script)にMoc Filesに自作のモデルデータのファイル、Texture FilesのSizeを1にして、Element 0にLive2D_Modelsフォルダーのサブフォルダーにあるtexutureファイル、Motion Fileに自作のモーションを指定します。

これで実行すると自作のモデルが動作しました。
Spriteのサイズやカメラの視野は要調整です。


トラブルシューティング

一部のテクスチャが表示されない場合

Cubism Editorでコピー反転したテクスチャは手を加えないとUnityで表示されないようです。
Motion - Assets - Live2D Resources - Shader - merged
のフォルダーにある Live2D.shader というファイルを開いて

Cull[_Cull]

Cull Off

に置き換えたら、正常に表示されるようになりました。


Androidで動作確認

Android用にビルドし、Xamarin Android Playerで動作させることができました。



関連ブログ

Live2D を使ってみました 2016
[Unity3D] Unity5のプロジェクトをAndroid Studioにインポートする方法
[Unity3D] 透視投影と平行投影を合成するには
VOCALOID SDK for Unity でユニティちゃんをリアルタイムに歌わせる方法
VOCALOID SDK for Unityでユニティちゃんにvsqxを歌わせる方法
[Android] Xamarin でアプリを作ってみました

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