Tips:VRoid StudioからBlenderへ

ページ名:Tips_VRoidStudiotoBlender

<<Tips

Outdated: 当時のまま記事を残しています。スクリプトへのリンク切れ等ありますがそのままです。

VRoid StudioからBlenderへ

PixivのVRoid Studioからファイルをエクスポートし、Blenderにインポートしましょう。

Blenderを経由しなくてもVRChatには持っていけますのでそういう方はわざわざこのページに書いてある方法は採らなくてもいいと思います。

 

VRoidから出力されたVRMファイルをBlenderにインポートする方法は現在2つあります。

@iCyPさんの作られたVRM importerを使った方がボーンやマテリアルの設定が反映されて、そちらの方が取り回しが楽なようなので、そちら使いましょう。

方法 ノート
glTF importerを使う このページの手順(対象:Add-onバージョン0.3.0)
VRM importer(by @iCyP)を使う 

 

Vroid Studioとは:

VRoid Studioは、人型アバター(キャラクター)の3Dモデルを作成できるWindows・Mac用アプリケーションで、どなたでも無償で利用可能になります。作成した3Dモデルは、3Dアプリケーションで利用可能なファイルにエクスポートすることができます。

glTFインポーターを利用する

※ io_scene_gltf-0.4.0 では使用するシェーダーが変更されたようで、マテリアル関係の互換性がなくなっています(その代わりボーンを読み込んでいる模様?)

以下、glTFインポーターを利用する方法を記載。

Vroidは現在ベータ版の利用が可能です。なお、以下は2018年10月くらい、v0.2.5 を元にこの記事を書いています。

なお、VRoidからBlenderへのインポートまでは確認していますが、FBX等でエクスポートするなどは確認しておりませんのでご了承ください(うまくいったら教えてください)。

大まかな手順:

概要としては、VRoid Studio からBlenderにインポート、各マテリアルごとにシェーダーの置き換えを行います。

  1. install ksons/gltf-blender-importer add-on to blender
  2. rename .vrm file to .glb
  3. import as gltf
  4. replace the shader ( Optional: for transparent texture(eyeblow etc...)  )

環境

以下の環境で確認しました。

項目 Ver.
OS macOS 
Blender 2.79b(公式リリース版)
Vroid Studio 0.2.5

Blenderにインポートできるデータ

(gltf-blender-importer 0.3.0 Add-on使用時)

種類 可否
メッシュデータ ○
UVデータ
テクスチャ
ボーン ×
ボーンのウェイト ×
アニメーション(ポーズ、表情) x
シェイプキー x?

 

事前準備:gltfインポーターのBlenderへのインストール

gltf-blender-importer Add-onをBlenderにインストールします。(参考:Tips:glTFインポーターAdd-onをインストール(2.79) )

  1. ksons/gltf-blender-importer にジャンプ。
  2. ページ中、"Find the latest archive here:"と書いてあって、その下の[⬇︎]の画像がリンクになっているのでそこをクリックして "io_scene_gltf-0.3.0.zip" をダウンロード
  3. Blenderを起動して、ユーザープリファレンス画面の Add-on タブをクリック、"Install Add-on File..."ボタンを押し、ダウンロードしたファイルを選択、インストール。
  4. インストールしたAdd-onがリストに出て来ているはずなのでそれを有効化。

VRoid Studioからファイルのエクスポート

Vroid Studio 上でキャラクタを作成し、VRM形式でエクスポートします。Vroid Studio の"撮影・エクスポート"タブの"エクスポート”を押し、アバター情報を入力してエクスポートします。

+作成したサンプルキャラ-作成したサンプルキャラ

 

 

 VRM形式ファイルをインポートするためにすること

VRM形式について:

「VRM」はVRアプリケーション向けの人型3Dアバター(3Dモデル)データを扱うためのファイルフォーマットです。glTF2.0をベースとしており、誰でも自由に利用することができます。

VRMファイルの読み込みかた(簡易版)でも言及されていますが、.vrmからglTFの拡張子、.glbにリネームすることでglTF対応アプリケーションで読み込みが出来るようになります。

[Note]VRM形式ファイルのライセンス等の拡張部分はglTF対応アプリケーションでは保持されません。

Blenderで.glbファイルをインポート

Blenderを起動し、メニューから File > Import > glTF JSON(.gltf/.glb) をクリックし、拡張子を変更したファイルを読み込みます。

  • インポート時にレンダリングエンジンが強制的に Cycles に変更されます。
  • 体のメッシュとその周りに線(emptyオブジェクトの線)がたくさん出ている状態でインポートされます。
  • UVマップ、テクスチャは読み込まれ、metallicRoughnessPBR シェーダー が設定されます。

metallicRoughnessPBRシェーダー(ノードグループ)置き換え

gltf-blender-importer でインポートした時に、metallicRoughnessPBR シェーダー が設定されています。ボディのマテリアルを適当に選んで、ノードエディタで確認してみてください。まつ毛、眉毛あたりのマテリアルがわかりやすいですね。

この状態だと、アルファ情報が無視された状態で表示されますので、アルファ情報を有効に扱えるようにシェーダーを組みます。イメージテクスチャはそのまま利用します。

 

ノード  
Multiply Color1にテクスチャを、Color2にベースカラーを入力し、かけ算を行なって色を決定します。髪の毛等色を変更できる部分ではColor2のベースカラーにmetallicRoughnessPBRのBaseColorFactorを指定します。Color>MixRGB 
Transparent BSDF 透明部分のシェーダーです。 Shader>Transparent BSDF
Diffuse BSDF 不透明部分のシェーダーです。マットな質感。Shader>Diffuse BSDF
Mix Shader テクスチャのアルファ値を要素としてTransparent BSDFとDiffuse BSDFをミックスします。 Shader>Mix Shader

上記の4つのノードをグループ化します。複数選択して[Ctrl]+[G]でグループ化します。ノードグループ名はTexturedDiffuse としておきます。

ベースカラー用にインプットを増やしておきます。

ノードグループの設定が終わったら、ヘッダにあるボタンでグループから抜けます。

ノードをつなぎなおします。

 

metallicRoughnessPBRのBaseColorFactor の色とBasecolor を合わせます。色の部分をD&Dで反映させることができます。

作成したノードグループTexturedDiffuseをクリップボードにコピーします。別のマテリアルを開いてクリップボードのペーストを行うとノードグループが追加されるので、ノードをつなぎなおします。これをマテリアルすべてで繰り返します。

 

以上です。

ほか

  • 体・頭皮部分・髪の毛(複数) の3つの部分のメッシュに分かれています。
  • メッシュについて、スカートなどシャープエッジの部分は頂点が分かれた状態でインポートされるので、「重複頂点の削除」を行います。
  • スキニングする場合にはボーンの追加(これはスクリプト書いてみて不十分ながら生成できてます)とウェイト付けは各自行う必要があります。
  • インポート直後のヒエラルキーを維持したまま体部分にボーン設定しようとArmatureとメッシュオブジェクトの親子付けをすると、メッシュが90度倒れます。事前に親子関係の解除を行っておきます。メッシュオブジェクトを選択して、[Alt]+[P] > Clear and Keep Transformation で。
  • 現状スクリプトでシェーダー、マテリアルを自動的に変更できているようですが、これはあくまでBlender内の話で、FBX等エクスポート等は考慮していないのでエクスポートしたらテクスチャついてこないと思います。

番外編:Blender Internalで

Blender Internalでこのモデルを使いたい時、画像とUVマップはデータとして読み込めているのですが、Cycles用マテリアルは使えません(透明でレンダリングされるっぽい?)。マテリアル作って割り当て直したらいいんじゃないですかね?他にエクスポートする場合にはノード使わないほうが良さげですね。(惜しいとこまで来てるっぽい?)

番外編2:ボーン

体の周りにたくさん出てきているEmptyはジョイント相当っぽいのでそれをたどっていけばボーン作れるんじゃね?ってことで試してみた感じ。もちろんウェイトなんて再設定に決まってるじゃないですか。

Tips

手順まとめ

こちらの都合でまとめました(動かなくても知りません)。色々解消されていないものもありますので「暫定」扱い、でお願いいたします。

工程 共通 Cycles BI ボーン
.vrm->.glb 手動 - - -
インポート gltf-blender-importer  - - -
重複頂点の削除
透明部分の表示を正常に
スクリプト スクリプト -
四角形化(オプション) スクリプト - - -
ボーンの追加 - - スクリプト
(頭頂部、指先、爪先は無し)
スキニング 手動 - - -

 

番外編3:髪の毛のポリゴン削減

VRoidでキャラクター作成して、いざ目的のプラットフォームにインポートしようとしたら、ポリゴン数の制限に引っかかってしまった、という方がいらっしゃいます。髪の毛盛りすぎてその分超過、という「惜しい」ケースであればもしかしたら以下のツイートが役にたつかもしれません。

 

おまけ(VRM Importerインストール)

[VRM Add-on インストール、詳し目な手順]

1.  https://github.com/iCyP/VRM_IMPORTER を開く
2.  "Download ZIP"ボタンをおしてダウンロード
3.  VRM_IMPORTER-master.zip を展開
4.  VRM_IMPORTER-master フォルダ以下にpythonスクリプト等入っていることを確認
5.  フォルダ名を VRM_IMPORTER に変更
6.  VRM_IMPORTER フォルダを[Ctrl]+クリックしてメニューから"VRM_IMPORTER"を圧縮
7.  VRM_IMPORTER.zip ができていることを確認
8.  Blenderを起動
9.  User Preference 画面を開く
10. Add-ons Tabを開き、下の Install Add-on from File ボタンをクリック
11. ファイルブラウザでVRM_IMPORTER.zip を選択して右上の Install Add-on from File ボタンをクリック
12. Add-ons の Supported Level を Testing にする
13. Import-Export: VRM_IMPORTER にチェックを入れる

 

See Also:

 

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する
osuepo

great tutorial, thanks fam

返信
2018-09-05 09:26:58