2013年04月13日
AvatarをBlenderにとりこむ(その2)
前回はAvatar.blendをBlenderに取り込むところまでをやりました。
このアバターモデルはセカンドライフの公式ものとは多少違うのですが、スカルプテッドプリムでアクセサリーなどを制作するときなどに利用するぶんには十分役にたちます。
しかしメッシュのリグつきドレスなどの制作になると微妙なサイズの調節ができないので直接セカンドライフのアバターなどを使ってモデリングしなければなりません。
ここではそのためにSLのアバターメッシュをエクスポートしてBlenderに取り込み、ボーンウエイトコピーするまでのやり方を勉強会用に書いておきます。(前回同様しろちゃさんのサイトhttp://shiros.slmame.com/c86799.htmlからの受け売りです^^)
まず「Bone Weight Copy」のアドオンが読み込まれていることを確認します。

前回同様2.65aの「工場出荷状態」で説明すると--

まず3D画面の上部をクリックして引きおろし「Info」→「User Preference」画面にします。

画面上部に並んでいるタグのうち「Addons」を選び、リストのなかに「3D view : Copy Bone Weight」があって右端の四角にチェックが入ってリスト名が黒文字になっていれば問題ありません。
文字が灰色でチェックがはいってないなら入れてください。(2.66だとこのチェックがなぜか入りません^^;)
追加:2.66以降のバージョンではこのアドオンのためのパイソンスクリプトが使えなくなったようです。したがってこのページの以下のやり方では2.66より新しいバージョンのBlenderではボーンウェイトコピーはできません。
代わりに同じことがWeight Paint Modeでできるようになりました。このやり方は別のページで説明します。
もしリストのなかに「Copy Bone Weight」そのものがない場合はちょっとやっかいです。

そのときは同じ画面の「Install from File」とあるボタンを押してファイルブラウザ画面を開き、あらかじめサイトからダウンロードしたアドオンファイル「space_view3d_copy_bone_weights_enhanced.py」を選択して読み込んでください。
これはPythonスクリプトなのでブラウザがテキストとして開いてしまうことがあります。その場合はリンクにもどって右クリック→「名前をつけてリンク先を保存」してください。
追記 : ブラウザの種類によっては上の操作がうまくいかないことがあるようです。そのときは開いたページにあるスクリプトをそのままコピーしメモ帳などにペーストして「space_view3d_copy_bone_weights_enhanced.py」の名前でわかりやすい場所に保存してください。(あるいはBlenderからloadしなくても以下の場所に直接保存するだけでもアドオン・リストに表示されます)
C:\Users\あなたのユーザー名\AppData\Roaming\Blender Foundation\Blender\2.65\scripts\addons
アドオンの説明は以上です。
さてSLからアバターをエクスポートするにはその機能をもった特別なビューアーを使わなければなりません。
Phoenixのオールドリリースバージョン1185がそれです。まず下のサイトを開いてください。
http://wiki.phoenixviewer.com/phoenix_downloads
Phoenixビューアーのサポートは2013年1月1日に終了、などと書いてありますが--

このページのなかほどにOlder Releases→Release 1185というのがあります。

ダウンロードリンクをクリックしてご自分のシステムにあったものを入手してください。
Phoenix 1185でアバターメッシュのエクスポートをするときはまず装着してる衣類はすべてはずさないといけません。プリム以外の衣類はご存知のとおりアバターのシェイプを変化させてしまうからです。(つまり「すっぽんぽん」の丸裸にならないといけないので作業中人目に触れないよう更衣室にこもるか誰もいない高い上空に移動してください^^)
つぎにAdvancedメニューからCharacter→Meshes And Morphsを選択します。(もしAdvancedメニューがないときは「Ctrl+Alt+Shift+D」で表示されます)

Meshes And Morphsのウインドウが開くのでエクスポートしたいボディパーツを選択します。たとえば頭部だったら「headMesh→headMesh→Current Mesh→Save OBJ」になります。

最初「headMesh」を選択すると「headMesh LOD 1」から「headMesh LOD 4」ぐらいまでずらっと並んで表示されますけど無視してください。肝心なのはただの「headMesh」です。
(LODはLevel of Detail =詳細レベルのことでカメラが離れたときアバターの形状を簡略化するときのため用意されているメッシュです)
同様にして上半身、下半身をエクスポート、Wavefont.objファイルとしてわかりやすい場所に保存してください。

前回の最後の画面にふたたびもどります。
Avatar.blendのボーンとボディメッシュはいますべて同じレイヤーにありますが、これをレイヤー1とレイヤー2に分割します。
そのためには(オブジェクトモードで)ボディのほうの頭と上半身、下半身をShiftキーを押しながら同時選択してください。

そのまま3D画面上でMキーを押すとレイヤー選択の窓がひらきます。グレーに着色されているのがレイヤー1ですから、その右隣のレイヤー2をクリックしてください。

ボーンだけを残してボディがレイヤー2に移動しました。こんどはこのレイヤー1にSLからエクスポートしたボディを取り込みます。

レイヤー1を選択した状態でFile→ Import→ Wavefont(.obj )を選びます。

ファイルブラウザで先ほどエキスポートしたSLアバターの各部位を選択しますがlmport OBJボタンを押すまえに赤枠の設定に注意してください。

ここでForward :を「Y Forward」に Up :を「Z Up」にしてください。これでボーンの向きとあわせて各パーツがインポートされます。

head upperbosy lowerbodyそれぞれが正しいむきにインポートされたら全部を選択してObject Tools→ Shading →Smoothでまえのボディと同じように滑らかにします。
ボディ全部が選択されている状態でさらにボーンを追加選択します。(選択の順序は重要です)

Ctrl+Pを押します。「Set Parent To」の窓のArmature Deforms のなかのWith Empty Groupsを選びます。

赤枠のアウトライナー画面を見ていてください。

With Empty Groupsを選ぶと後からインポートした身体部分が最初のアバターの部位と同列に含まれるようになります。
Aキーでいったん全選択解除してからあらためて新しくインポートした頭部(ここではavatar_head.llm_current)と以前の頭部(head)を選択します。

このときかならずAvatar.blendのheadのほうを「後で」選択するようにしてください。後から選択したほうが「親」になってボーンウエイトは「親」→「子」の順でコピーされるからです。

レイヤー1が選択されているはずなのでShiftを押しながらレイヤー2を同時選択してください。3D画面のObject Toolsの下のあたりにBone Weight Copyの設定(赤枠)が現れるはずです。

「Interpolation」を0から1にして「Copy Empty Groups」にチェックをいれます。

「Copy Bone Weights」ボタンを押すとコピーがはじまります。時間がすこしかかるかもしれませんから気長に待ってください。(まれに外枠にBlender「反応なし」という警告表示が出る場合もありますが砂時計アイコンがでるならだいじょうぶです)
おなじことをavatar_upper_body.llm_currentとupperbody 、そしてavatar_lower_body.llm_currentとlowerbodyとの間で繰り返してください。
すべてうまくいったら新しいボディとボーンの連携を確かめてみましょう。

いったんすべての選択を解除し、ボーンだけ選択した状態で3D画面のモードを「Pose Mode」にかえます。

ボーンの一部を選択して

Rキーで回転させたとき、ボディーもいっしょに動くならボーンコピーは成功しています。
動かしたパーツをもとへもどすときは「Alt+R」です。
「Object Mode」にもどします。ボーンを選択解除して今度はボディの頭、上半身、下半身をいっしょに選択します。

「Shift + D」を押します。マウスを動かさないようにしつつEscを押してください。
一見何の変化もないようですが、じつはボディが複製されています。

そのまま「M」を押してレイヤー3を選択します。

レイヤー3に移り、ボディーがすべて選択されている状態で「Ctrl + J」を押します。
これによってレイヤー3のボディは統合されてひとつのメッシュオブジェクトになりました。
SLから直接取り込んだこのボディにはメッシュ制作には不用な頂点グループがたくさん含まれています。それらを削除するために3D画面の右側のPropertisウインドウを引き上げ「Object Data」の画面にします。

赤く囲んだところに並んでいるのが頂点グループのリストです。このほとんどが不用のものなのでリスト右にある「-」(マイナスボタン)でどんどん消してしまってください。150個近くあるでしょうか。残すべきものは小文字の「m」で始まる26の頂点グループだけです。
この作業をやらなくても一応リグつきメッシュのドレスを作ることはできますが、ウエイトポイントの修正作業をやろうとすると無駄な頂点グループがあるととても邪魔になります。ちょっと面倒ですが消してしまったほうがいいでしょう^^
このアバターモデルはセカンドライフの公式ものとは多少違うのですが、スカルプテッドプリムでアクセサリーなどを制作するときなどに利用するぶんには十分役にたちます。
しかしメッシュのリグつきドレスなどの制作になると微妙なサイズの調節ができないので直接セカンドライフのアバターなどを使ってモデリングしなければなりません。
ここではそのためにSLのアバターメッシュをエクスポートしてBlenderに取り込み、ボーンウエイトコピーするまでのやり方を勉強会用に書いておきます。(前回同様しろちゃさんのサイトhttp://shiros.slmame.com/c86799.htmlからの受け売りです^^)
まず「Bone Weight Copy」のアドオンが読み込まれていることを確認します。
前回同様2.65aの「工場出荷状態」で説明すると--
まず3D画面の上部をクリックして引きおろし「Info」→「User Preference」画面にします。
画面上部に並んでいるタグのうち「Addons」を選び、リストのなかに「3D view : Copy Bone Weight」があって右端の四角にチェックが入ってリスト名が黒文字になっていれば問題ありません。
文字が灰色でチェックがはいってないなら入れてください。(2.66だとこのチェックがなぜか入りません^^;)
追加:2.66以降のバージョンではこのアドオンのためのパイソンスクリプトが使えなくなったようです。したがってこのページの以下のやり方では2.66より新しいバージョンのBlenderではボーンウェイトコピーはできません。
代わりに同じことがWeight Paint Modeでできるようになりました。このやり方は別のページで説明します。
もしリストのなかに「Copy Bone Weight」そのものがない場合はちょっとやっかいです。
そのときは同じ画面の「Install from File」とあるボタンを押してファイルブラウザ画面を開き、あらかじめサイトからダウンロードしたアドオンファイル「space_view3d_copy_bone_weights_enhanced.py」を選択して読み込んでください。
これはPythonスクリプトなのでブラウザがテキストとして開いてしまうことがあります。その場合はリンクにもどって右クリック→「名前をつけてリンク先を保存」してください。
追記 : ブラウザの種類によっては上の操作がうまくいかないことがあるようです。そのときは開いたページにあるスクリプトをそのままコピーしメモ帳などにペーストして「space_view3d_copy_bone_weights_enhanced.py」の名前でわかりやすい場所に保存してください。(あるいはBlenderからloadしなくても以下の場所に直接保存するだけでもアドオン・リストに表示されます)
C:\Users\あなたのユーザー名\AppData\Roaming\Blender Foundation\Blender\2.65\scripts\addons
アドオンの説明は以上です。
さてSLからアバターをエクスポートするにはその機能をもった特別なビューアーを使わなければなりません。
Phoenixのオールドリリースバージョン1185がそれです。まず下のサイトを開いてください。
http://wiki.phoenixviewer.com/phoenix_downloads
Phoenixビューアーのサポートは2013年1月1日に終了、などと書いてありますが--
このページのなかほどにOlder Releases→Release 1185というのがあります。
ダウンロードリンクをクリックしてご自分のシステムにあったものを入手してください。
Phoenix 1185でアバターメッシュのエクスポートをするときはまず装着してる衣類はすべてはずさないといけません。プリム以外の衣類はご存知のとおりアバターのシェイプを変化させてしまうからです。(つまり「すっぽんぽん」の丸裸にならないといけないので作業中人目に触れないよう更衣室にこもるか誰もいない高い上空に移動してください^^)
つぎにAdvancedメニューからCharacter→Meshes And Morphsを選択します。(もしAdvancedメニューがないときは「Ctrl+Alt+Shift+D」で表示されます)

Meshes And Morphsのウインドウが開くのでエクスポートしたいボディパーツを選択します。たとえば頭部だったら「headMesh→headMesh→Current Mesh→Save OBJ」になります。

最初「headMesh」を選択すると「headMesh LOD 1」から「headMesh LOD 4」ぐらいまでずらっと並んで表示されますけど無視してください。肝心なのはただの「headMesh」です。
(LODはLevel of Detail =詳細レベルのことでカメラが離れたときアバターの形状を簡略化するときのため用意されているメッシュです)
同様にして上半身、下半身をエクスポート、Wavefont.objファイルとしてわかりやすい場所に保存してください。
前回の最後の画面にふたたびもどります。
Avatar.blendのボーンとボディメッシュはいますべて同じレイヤーにありますが、これをレイヤー1とレイヤー2に分割します。
そのためには(オブジェクトモードで)ボディのほうの頭と上半身、下半身をShiftキーを押しながら同時選択してください。

そのまま3D画面上でMキーを押すとレイヤー選択の窓がひらきます。グレーに着色されているのがレイヤー1ですから、その右隣のレイヤー2をクリックしてください。

ボーンだけを残してボディがレイヤー2に移動しました。こんどはこのレイヤー1にSLからエクスポートしたボディを取り込みます。

レイヤー1を選択した状態でFile→ Import→ Wavefont(.obj )を選びます。
ファイルブラウザで先ほどエキスポートしたSLアバターの各部位を選択しますがlmport OBJボタンを押すまえに赤枠の設定に注意してください。
ここでForward :を「Y Forward」に Up :を「Z Up」にしてください。これでボーンの向きとあわせて各パーツがインポートされます。
head upperbosy lowerbodyそれぞれが正しいむきにインポートされたら全部を選択してObject Tools→ Shading →Smoothでまえのボディと同じように滑らかにします。
ボディ全部が選択されている状態でさらにボーンを追加選択します。(選択の順序は重要です)
Ctrl+Pを押します。「Set Parent To」の窓のArmature Deforms のなかのWith Empty Groupsを選びます。

赤枠のアウトライナー画面を見ていてください。
With Empty Groupsを選ぶと後からインポートした身体部分が最初のアバターの部位と同列に含まれるようになります。
Aキーでいったん全選択解除してからあらためて新しくインポートした頭部(ここではavatar_head.llm_current)と以前の頭部(head)を選択します。
このときかならずAvatar.blendのheadのほうを「後で」選択するようにしてください。後から選択したほうが「親」になってボーンウエイトは「親」→「子」の順でコピーされるからです。
レイヤー1が選択されているはずなのでShiftを押しながらレイヤー2を同時選択してください。3D画面のObject Toolsの下のあたりにBone Weight Copyの設定(赤枠)が現れるはずです。
「Interpolation」を0から1にして「Copy Empty Groups」にチェックをいれます。
「Copy Bone Weights」ボタンを押すとコピーがはじまります。時間がすこしかかるかもしれませんから気長に待ってください。(まれに外枠にBlender「反応なし」という警告表示が出る場合もありますが砂時計アイコンがでるならだいじょうぶです)
おなじことをavatar_upper_body.llm_currentとupperbody 、そしてavatar_lower_body.llm_currentとlowerbodyとの間で繰り返してください。
すべてうまくいったら新しいボディとボーンの連携を確かめてみましょう。

いったんすべての選択を解除し、ボーンだけ選択した状態で3D画面のモードを「Pose Mode」にかえます。
ボーンの一部を選択して
Rキーで回転させたとき、ボディーもいっしょに動くならボーンコピーは成功しています。
動かしたパーツをもとへもどすときは「Alt+R」です。
「Object Mode」にもどします。ボーンを選択解除して今度はボディの頭、上半身、下半身をいっしょに選択します。
「Shift + D」を押します。マウスを動かさないようにしつつEscを押してください。
一見何の変化もないようですが、じつはボディが複製されています。
そのまま「M」を押してレイヤー3を選択します。
レイヤー3に移り、ボディーがすべて選択されている状態で「Ctrl + J」を押します。
これによってレイヤー3のボディは統合されてひとつのメッシュオブジェクトになりました。
SLから直接取り込んだこのボディにはメッシュ制作には不用な頂点グループがたくさん含まれています。それらを削除するために3D画面の右側のPropertisウインドウを引き上げ「Object Data」の画面にします。
赤く囲んだところに並んでいるのが頂点グループのリストです。このほとんどが不用のものなのでリスト右にある「-」(マイナスボタン)でどんどん消してしまってください。150個近くあるでしょうか。残すべきものは小文字の「m」で始まる26の頂点グループだけです。
この作業をやらなくても一応リグつきメッシュのドレスを作ることはできますが、ウエイトポイントの修正作業をやろうとすると無駄な頂点グループがあるととても邪魔になります。ちょっと面倒ですが消してしまったほうがいいでしょう^^
Posted by もとちゃ at 18:06│Comments(0)
│Blender