2014年12月15日月曜日

MMD と SL ~ モーフ編

これはセカンドライフ技術系 ADVENT CALENDER 2014 12月15日向けの投稿になります。

モーフとは

今日はモーフの話しです。
モーフ(Morph)もしくはモーフィング(Morphing)と呼ばれる技術があります。ある形状から別の形状に徐々に変化させることを指します。
セカンドライフの標準アバターでもモーフィングの技術が採用されています。一番わかりやすいのは「シェイプスライダー」を使って体型を変えるアレです。また、ボイスチャットの LipSync の口をパクパクさせるアレもモーフです。笑う、怒る、ウィンクするなどの顔の表情もモーフです。(*1)

セカンドライフの LipSync 

3DCG のモデルの表面は「頂点」、「面」、「辺」から構成される「メッシュ」で表現されています。この頂点を移動させて形状変化を作っています。
LipSync も口の周りの頂点や、歯、舌の頂点が動いて「口パク」しているように見せています。
モーフとは頂点を移動させることによって形状変化することを指します。

Wireframe 表示での LipSync による頂点の動き

(*1) もしかすると、ここにあげたすべてをモーフといえない可能性があります。隠しボーン(Armature)があって、それを動かして形状変化しているものは、モーフと見た目は一緒で、頂点が移動しますが、厳密には頂点だけで形状変化をするモーフとは言えません。詳細に調べたわけではありませんが、組み込みアニメーションを使って形状変化しているものは隠しボーンのようなものを動かしてメッシュを追随させている可能性があるからです。

MikuMikuDance のモデルでもモーフが至るところで使われています。まばたきをする、ウィンクをする、笑う、など顔の表情から、キュンキュン眼鏡のサイズおよび場所の変更、照れを表現するテクスチャのサイズ・場所変更などなど。キュンキュン眼鏡や照れテクスチャはサイズを小さくして頭の中に入れ、モーフスライダーでサイズ・位置を変更して装着、表示しています。

PMX Editor の Transform ビューでモーフを確認

Blender でのモーフ 「ShapeKey」

MMD モデルを Blender にインポートする mmd_tools は MMD モデルに設定されているモーフも Shape Key としてインポートしてくれます。 Blender の Shape Key は MMD でいうところのモーフに相当します。


ShapeKey をざっくり説明すると、ベースとなるメッシュ オブジェクトの形状に「Basis」という名前の ShapeKey をつけ、頂点を移動させて変形させた(つまり、モデルを編集した)結果の形状を「Key 1」と設定すれば、Basis から Key 1 までの形状変化を 0 (basis) から 1.0 (key1) でスライダーを使って連続して変化させる機能です。大切なのは Basis と Key 1 は変化する頂点数に増減がないことです。

Shape Key がサポートされないセカンドライフ メッシュ

セカンドライフのメッシュでは、これら モーフ / Shape Key がサポートされていません。
私も暫くの間「あ~、じゃぁ、まばたきとか、できないじゃん」と思ってあきらめていました。MMD モデルをお借りして Rigged Mesh アバターは作っても表情ないと面白くない、、、

スカルプを使ったアニメヘッドの表情などはテクスチャアニメーションを切り替えることで表情を作ることができました。形状が変化する Mesh でテクスチャアニメーションでの実装はありません。

顔全体を透明・不透明で切り替えることも考えましたが、そうすると表情のバリエーションが限られてしまう、オブジェクトの数が表情の数だけ必要になる、など、ちょっと無理ゲー。。。

ところが 2012年の11月に、この動画を見て「!?」と衝撃が走りました。


SNOW RABBIT さんのところの NEA ちゃん(発売前)の動画ですが、3日間くらい「なに、なに、これ、なに使ってるの?」と悩み、Linden のサイトを探しましたが、モーフができるなんて一文もない、、、

で、口元をよくよく見ると、これ、どうも、透明・不透明の切り替えを行っているっぽい、、、と気が付くわけです。それも「口元」だけ。

そこで、気が付きました。顔のパーツを口元、目元などに分けて、それぞれに形状を変化させたオブジェクト(もしくは材質)合わせて構成すれば、単独で瞬きしたり、瞬きしながらクチパクしたりできる!

でも、問題が発生しました。顔をパーツで分割すると、パーツの境界線が見えてしまうのです。NEA ちゃんはそんな境界線見えてないのに、、、

分割したオブジェクトの境界線を消す - WELD EDGE NORMALS

境界線が見えてしまうのは、分割後、重なっている頂点の「法線の向き」が違うからです。


この法線の向きを均一に保ってくれる機能は Blender にはありませんが、あのツールにオプションとして実装されていたのです、、、そう Avastar です。それが Weld Edge Normals オプションです。

英語ですが、なぜ線がでるのか、どうやって直すのか、というのを Avastar の開発者の Gaia さんが YouTube で解説しています。



この分割線対応は「ばけもの屋」のこんじょさんも工夫して対応しています。
こんじょさんはある理由から Avastar を使うことができずに、独自で目立たなくする方法を見つけて、ブログで公開されています。

http://conjoh.blogspot.jp/2013/10/wyvern-5.html

あと、Nea ちゃんが発売されてすぐ購入して、Neaちゃんでビデオ作った関係で、その後スノラビのうさぎちゃんとお友達になったのですが、うさぎちゃんが使っているツールは Maya で、Maya にはこの法線を均一にする機能が最初からあるそうです。なので、Maya ユーザーは普通に消しているとのこと(泣



そして、もう一つ重要だったのは頂点をうまく選択し、分割すると Shape Key が有効のままオブジェクトを分割できることでした。

Shape Key 有効のままオブジェクト分割

これは試行錯誤するしかないのですが、分割するための頂点の選択に失敗すると Shape Key によるモーフでオブジェクトがぐちゃぐちゃになります。

Shape Key を有効にしたまま分割するための方法は私の経験上、分割するエリアの「材質名を変える」、そして「材質名で分割する」で分割する方法が良いようです。(それでもたまにぐちゃくちゃになる場合があります。その時は試行錯誤します。)

Shape Key を有効にしたままで目元や口元、眉といった「モーフで形状変化するパーツ」のベースとなるオブジェクトを作成して、そのオブジェクトから表情パーツを作成していきます。

この時「パラパラ漫画」の手法をとります。まばたきを表現するのであれば、まぶたを閉じるまでの中間の形状を入れます。口パクの場合は、「あ」「い」「う」「え」「お」などをそれぞれ別形状として保存します。この時、それぞれのオブジェクトの「材質名」はすべて連番などをつけて違う名前にします。最終的には1オブジェクトに統合するためです。

1つのオブジェクトに統合する際、そのオブジェクトは最大8つの材質(面)を持つことができます。顔は結果的に2つ以上の分割されたオブジェクトから構成されますが、そのままセカンドライフにアップすると、セカンドライフでは「リンク オブジェクト」とみなされます。セカンドライフ内のリンク解除で再度わけることが可能です。


アップしたオブジェクトにスクリプトを組み込むことで、パラパラ漫画による「疑似モーフ」を実装することができます。このお話はすでに以下のブログでご紹介しています。

まばたきを実装せよ
http://snumaw.blogspot.jp/2014/09/blog-post.html

モーフ/Shape Keyではありませんが、手の形状変化も同じ方法でそれぞれの形状変化後のパーツをつくり、1つのオブジェクトにまとめて、スクリプトで変化させます。

オブジェクトがちらつく

最後に、この透明・不透明切り替えのスクリプトをいれるパーツでセカンドライフへのアップロードの際のオプションで「ジョイント」を入れると、セカンドライフ内で変な挙動(ちらつきのような動き)を起こすことがあります。ジョイントは関節(ボーン)の位置を修正したパーツでは必須ですが、そうでなければジョイントを入れる必要はありません。ジョイントを入れないことでちらつきを防ぐことができました。


以上、セカンドライフ技術系 Advent Calender 2014 12/15 分でした。
みなさま、良いお年を~

2014年12月14日日曜日

MMD と SL ~ メッシュ編

この投稿は セカンドライフ技術系 Advent Calender 2014 の 12月14日向けのものになります。

正直、技術的な話題という意味ではあまりに広く、深いテーマなので何をどう書いたらいいか悩むところではありますが、MMD (MikuMikuDance) のモデルさんをセカンドライフのフルメッシュアバターとしてインポートしようとした時に、「簡単にできる」ことと「頑張ればなんとかできる」ことと「ムリです、それ」なことにわけて書いてみようかと思います。

MMD モデルとは

MikuMikuDance には標準でボカロファミリーのいくつかのモデルがついてきますが、それ以外にもユーザー作成モデルが多く公開されています。

ユーザー作成モデル 紹介サイト「みさきる!」様
http://blog.psocafe.com/

モデルは PMD もしくは PMX データと呼ばれるものですが、一般にはメタセコイアMayaBlender といった 3DCG ツールでメッシュによる造形や表情付けのモーフ設定を行います。骨格・関節に相当するボーン入れやボーンとメッシュを関連付けるウェイト付けなどもこれらのツールで行いますが、リグ用(ウェイト付け)のアドインなども存在しています。

ゼロからモデルを作るには上述のツールで作りますが、ちょっとした修正などは PMD/PMX 専用エディターの PMX Editor を使うことができます。また、MMD向けの最適化(スカートなどの調整、材質名の修正や統合、モデルとして不正な頂点の確認と削除など)を PMX Editor で行うことができます。



MMD の動画を見ていると、髪の毛やスカードの動きがとても自然に感じると思います。セカンドライフ ユーザーの観点からすれば、フレキシなプリムの動きをしながらも、そのプリムが体に貫通しないような動きです。MMD モデルではスカートや髪の毛にも「ボーン」を入れて、かつ「剛体」と呼ぶ透明な「重り」をボーンに関連付けることができます。この剛体は他の剛体と衝突判定をすることができるので、剛体同志がぶつかって貫通しなくなったり、重りの調整をすることでふわふわな感じを表現することができます。また、剛体をつなげる「ジョイント」というバネのような蝶番があって、それを調整することで撓りや復元力をつけることができます。

また、これらボーン・剛体・ジョイント・ウェイト付けの調整を自動化する PMX Editor 用のプラグインもあります。


セカンドライフの Rigged Mesh のスカートは腰、足、膝にウェイト付け(腰や足や膝の動きに追随)されていますが、MMD のスカートはスカートの入れたボーンに追随します。これがふわふわする理由です。

セカンドライフ アバター モデルとの違い

セカンドライフ メッシュアバター モデルとの違いはざっくり言うと以下です。
  • 骨格が違う。特に「手・指」の骨格はセカンドライフのモデルにはありません
  • スカートや髪のボーンがない
  • 剛体・ジョイントによる重力設定がない
  • モーフで実装されている瞬きや口の動き、眉の動きがない
メッシュデータ(およびテクスチャ)そのものはほとんどの場合そのままインポートできます。ただし、頂点に含まれているモーフ情報(Blender では ShapeKey 情報)はセカンドライフ モデルの Collada では反映されません。モーフ、ShapeKey については明日の投稿で取り上げるのでここでは割愛します。

たとえば、リグしていない(アバターとして動かない)、お人形モデルを作るのであれば、上記の違いを意識し解決する必要はほとんどありません。

上記でご紹介した PMX Editor の使い方を覚えれば(ただし、PMX Editor も奥が深いのでこれを覚えるだけでも相当時間がかかります)、ポーズをとって、スカートなどが物理演算された状態で固定することができます。それを Blender に取り込んで、オブジェクト(プリムに相当)の材質数(面の数に相当)を調整すればいいのです。(オブジェクトと材質については、モデルの違いというよりは、セカンドライフのメッシュオブジェクトの制限(1オブジェクト8材質)です)
ただ、その調整は Blender の使い方、特にオブジェクト統合・分割、材質統合・分割、テクスチャ貼り付け、などを知っている必要はあります。(この Blender の使い方を覚えるのも、それほど平坦な道ではありませんけど。。。)

スカートの物理演算が適用されポーズをとった状態(ダンス途中で停止状態)
上記とポーズ違いですが同じモデルを SL に上げた場合
MMD モデルをセカンドライフ Rigged アバターにする工程

ざっくりと以下の工程をふんで MMD モデルをアバターとしてインポートすることが可能です。

1) 改造可能、再配布可能などのモデル使用条件に注意してモデルを選ぶ
  • これを無視すると「SLユーザーって酷いよね」と言われるので、本当に気を付けてください)
2) PMX Editor でモデルの特徴を観察する
  • チュートリアルのようなものが作れないのは、モデルごとに特徴が違うからです。
  • そのモデルの特徴をみて毎回調整方法を変えています
  • 材質数、特殊ボーンの有無、モーフの数、隠れオブジェクトの有無、物理演算などなど
  • もう、これは経験でカバーするしかありません><
3) PMX Editor で調整するものは調整して、mmd_tools で Blender に取り込む
  • PMX Editor の調整は材質統合や、不必要オブジェクトの削除など
  • mmd_tools は Blender でモデルを修正するためのインポート/エクスポートツールです
  • セカンドライフのことは考えていません。あくまで MMD-Blender のためのアドオンです。
4) Avastar を使って、セカンドライフ用に MMD モデルの修正を繰り返す
  • 1オブジェクト8材質に収まるように、MMD モデルを分割する
  • 法線の向きをそろえる(難しい話なので割愛します。他の私の投稿などを参照してください)
  • なお、Avastar は必須ではありませんが、私はこの便利アドオンで相当効率化していますので、使わない場合についての知識はほとんどありません~アドバイスもできません><
5) モーフに対応するオブジェクトを用意して材質名を変えて統合する
6) MMD モデルのボーンに合わせて、セカンドライフのボーンを修正
  • こちら参照。http://snumaw.blogspot.jp/2013/09/secondlife.html 
  • MMD モデルは腰の位置が高く、膝下が長い「アニメ体型」なので、セカンドライフのシェイプをシェイプスライダーを使って調整する範疇を超えている場合がほとんどです。よって、特殊なボーン(関節の位置)を持つ Joint 入り Rigged メッシュとして上げる必要があるのです
  • 最近の MMD モデルは上半身2ボーンという準標準ボーンが入っていますが、もし入っていない場合は、セカンドライフ ボーンの chest に対応するボーンがありません。上半身2ボーンがなくてもインポートできますが、ダンスモーションで上半身2ボーン前提のものが少なくありません。また、セカンドライフで販売されているモーションは chest 前提ですから、上半身2ボーンと chest を関連付けたほうがより自然なダンスになります。
    上半身2ボーンがない場合は PMX Editor とアドオンで MMD モデルに上半身2ボーンを追加することができます。ウェイトも自動調整されます。

    そぼろさん作成の準標準ボーン追加プラグイン
7) セカンドライフへアップロード
  • モーフ対応(透明・不透明切り替え)の箇所は Joint なしで(理由は明日)
  • モーフ対応なしは Joint 付きでアップロード
  • PNGやTGAなどの「アルファチャンネル(透過)サポート」の画像は描画順番がおかしく透けてしまうことが多いです。アップして確認してJPEG などに画像を変換し入れ替えることが多いです
  • アップしてはじめて「法線」が裏返っていて表裏逆になっていることに気づくことがあります。裏地を作るか、法線を逆転させるといった作業が発生するので、Blender で見た目に判断されずに法線の向きの確認をしたほうがいいです。

    Making liner - Normals Inside (英語ブログ) 
8) モーフ対応スクリプトを入れて、HUD を作成する

難易度分けしてみる

正直、、、簡単じゃないです。簡単じゃない理由は覚えることが多いからです。
  • PMX Editor と MMD モデルの特徴(SL関係なしにMMD モデルの改造とかして習得)
  • Blender の使い方 (未だお勉強中)
  • mmd_tools / Avastar といった Blender アドオン
  • 表情スクリプトと HUD 作成 (LSLの知識と実装)
とはいえ、できることとできないことをまとめてみると以下。

比較的簡単にできること
  • Blender への MMD モデルのインポート (mmd_tools のおかげです)
  • ボディのウェイト付け (Blenderの仕組みを理解することで、MMD モデルがもっている元々のウェイトを流用することができます。ただし、標準ボーン対応部分のみです。Blender の操作とMMDモデル構造の知識とSLのボーン構造の知識が必要ですが、覚えれば簡単。そして超時間短縮。)
頑張るところ
  • 1オブジェクト8材質制限にあわせて、MMD モデルを分割 (Blender の操作知識必要)
  • モーフ対応のために、対応するオブジェクトを作るところ (やり方さえわかれば簡単)
  • セカンドライフ向けにエクスポートで使うセカンドライフ標準ボーン関節の位置を変更すること(仕組みと作業を覚えたら比較的容易になります)
  • スカートのウェイト付け (100%手作業で貴方のオリジナルになります。よってウェイト職人的な作業の繰り返しとなります。)
  • LSL(スクリプト) モーフ対応するならスクリプト必須です。
それ無理、今は無理
  • モーフ実装 (モーフ対応で擬似的にモーフ「らしき」ものを実装)
  • 物理演算実装 (スカートなどは、もう、手作業で腰や足にウェイト付けするしかありません)

結局最後はモチベーションと気長にやることが肝要かも

ここまで読まれたら「めんどくさいなぁ~」と思うでしょう。はい、その通りです。正直、かなり、めんどうな作業です。

私も途中挫折したり、MMD しか触らなかったり、Blender しか触らなかったり、LSL しか触らない、何もやりたくない、、、といった時間が数か月単位で繰り返してます。初めて MMD モデルのインポートして「コレジャナイ」状態から、Tda 式ミクのフルメッシュアバター+表情付きに至るまで2年かかりました><  LSL の知識はその前からあったとはいえ、それ含めると3年とか4年とかのスパンです、、、。

なので、いきなり Rigged フルメッシュ アバターを作るよりも、まずはお人形から作っていくことをお勧めします。そこで PMX Editor と MMD モデルの特徴を覚えて、Blender の基本操作を覚えて、 SL にアップしてみることです。その時、SL へのアップの設定次第でランドインパクトの数値が変わることもわかります。造形を崩さずに、どの程度調整すればランドインパクトを抑えることができるか、、、など、Rigged をやる前に体験すべきことがあると思います。

私の場合は、お人形はどんどん作っていって、モーフは無理~とあきらめていたんです。だから、Rigged によるアバターを作ることは、一度表情なしのものを作った後していませんでした。

でも、スノラビさんの Nea ちゃんみて感動して、もう一度、モーフ作り、、、というか、モーフらしきものをセカンドライフで作るモチベーションが出てきて、 お人形でまばたき、クチパクを実装しました。

そこから、購入してから1年くらい放置していた Avastar でボーン修正を覚えて、やっとフルメッシュアバターを作ることができました。

だって、ミクちゃんやグミちゃんで踊ると楽しいですからw

2014年12月13日土曜日

MMD と SL ~ モーション編

これは セカンドライフ技術系 Advent Calender 2014 の12月13日向けとして投稿するものです。

MikuMikuDance とセカンドライフを両方楽しんで遊ぼう「モーション編」です。
その関連の概要をご紹介するのが目的です。

ポーズとモーション

セカンドライフのモーション(アニメーション)って作成したことありますか?
ポーズや短いモーションなら QAvimator で作成したことがある人も多いと思います。基本的にはポーズもモーションも同じ仕組みです。ポーズは1フレーム(場合によっては数十フレームの最後の数フレーム)の無限繰り返しです。アニメーションはそれが30秒とか、最大60秒で繰り返しているものです。(ほとんどのセカンドライフのダンスアニメーションはループアニメーションです)

BVH ファイルとは

このセカンドライフのモーションはパソコンの編集ツールで BVH ファイルと呼ばれるものを作成して、それをインワールドにアップロードすることになります。セカンドライフでダンスモーションを販売しているところは、この BVH ファイルの作成に「モーションキャプチャー」を使って実際に人が踊っているダンスをデータ化し、セカンドライフにアップできるように変換・調整して作成されています。


BVHファイルはテキストファイルで「メモ帳」などのテキストエディターで内容を見ることができます。
ファイル構造そのものの詳細な説明は長くなるのでここでは省きますが、セカンドライフの標準ボーン(骨格、関節の位置など)の情報と、そのボーンが1フレームごとにどの位置・回転で移動するか、というデータの集まりになります。

MikuMikuDance のモーションファイル

一方、MikuMikuDance (MMD) はあにまさ式初音ミクモデルを踊らせるためだけに樋口M様が開発しました。その後、数年をかけてさまざまなアドオンや拡張があり、今では総合的な動画作成ツールとなっていますが、もともとは「ダンスモーション作成・編集ツール」だったのです。


そのため、MMD とモーション/ダンスのつながりは強く、数多くの MMD 用のモーションファイルが公開され、ダウンロードが可能になっています。

その公開されているモーションファイルの形式が VMD フォーマットと呼ばれています。

上述のようにもともとダンスアニメーションを作るためのツールだったので、MikuMikuDance にはダンスアニメーションを作りやすい仕組みが組み込まれています。セカンドライブの BVH ファイルにはない、モーション作成のための仕組みが数多くあります。

代表的なものとしては IK (Inverse Kinematics) と補間曲線です。簡単にいうと IK は足を動かしたいなら、足を動かしたいところに移動させると、ひざやふとももがそれに沿って動く、という仕組みです。(すごいざっくり) セカンドライフ用の QAvimator だとふとももを動かし、ひざを動かし、足の向きを、、という順になります。(Blender の Avastar は IK をサポートしています)

補間曲線は、人間の動きは「等速」ではなく、最初はゆっくり、だんだん速くなって、そして遅くなって、停止する、という速度の微妙な変化を「曲線」で表す手法です。この補間曲線の設定により、フレームごとに調整せずに、32秒から45秒の間はこの補間曲線で!という指定で済みます。ちなみにフレームは1秒間に30フレームとか、そういう単位です。13秒のあれば390フレームなので、ひとつひとつ調整しようとしたら気が遠くなりますよね。

このような情報を含んだ VMD ファイルですので、BVH ファイルの構造・フォーマットは全く違うのです。

VMD ファイルを BVH ファイルに変換する

それでも、セカンドライフとは関係のない世界で VMD ファイルを BVH ファイルに変換するツールが公開されます。BVH ファイルは「汎用的なモーションファイル」なので、他の 3DCG ツールでもインポートして利用できたからです。そのあたりは過去に私のブログでも紹介しているのでご参照ください。

mio を使った VMD->BVH 変換
http://snumaw.blogspot.jp/2012/03/windows7-64bit-mio-01-20123.html

難しいのは IK の計算です。BVH ファイルは汎用的であるため、IK によるデータを持ちえません。IK の仕組みで結果的に決定された各ボーンの位置や回転のそれぞれのフレームの「データ」が必要です。その計算を各ツールが実行しています。

また、私の知る限るでは VMD -> BVH 変換の際に補間曲線による速度の変化を実装しているものは知りません。補間曲線についてはサポートしていないものが多いと思います。

なお、セカンドライフの標準ボーンに合わせるために、MMDモデルの準標準ボーン「上半身2ボーン」の利用を勧めています。このあたりは次回の「メッシュ編」で触れることになります。

上半身2ボーンとchestボーンについて
http://snumaw.blogspot.jp/2012/09/chest.html

BVH ファイルをセカンドライフ用に調整する

ツールを使って VMD ファイルを BVH ファイルに変換して「やった!これでセカンドライフにアップロードできる」と一番最初の私も思いました(笑 でも、それだけじゃだめなんです。セカンドライフ用に調整してあげなければなりません。

その調整をしてくれるのが MMDBVHToSLBVH.EXE です。

やっていることはおおよそ以下です。
  • セカンドライフの標準ボーン情報に置き換える(関節名の変換など)
  • 回転などをセカンドライフ用にあわせる(右手、左手、、、とかいう話)
  • 30秒や60秒以上のモーションファイルを60秒以内の指定秒数に切り分ける
  • フレーム0に初期ポーズを入れる
元のアイディア、オリジナルソースは esetomo さん(SLでは いちご先生)が作成し、私が 60 秒対応とか、上半身2対応とかしたものが Git に上がっています。ちなみにプログラミング言語は C# ですが、私自身は得意ではありませんので、こんなの1から作れません(笑 本当に必要なところだけに手を加えた、という程度ですから。。。

このあたりの話は上記の「上半身2ボーンとchestボーンについて」のリンクとか、以下で過去にご紹介いたしました。

60秒対応したよ~
http://snumaw.blogspot.jp/2013/02/60.html

もしかしたらすごいかもしれない Blender + mmd_tools + Avastar Retarget

と、ここまでの話であれば、セカンドライフ ユーザーの方で結構やられている方もいらっしゃると思いますが、もうひとつご紹介したいツールがあるんです。

Blender と mmd_tools と Avastar の組み合わせです。

まず、以下の動画をご覧ください。


Avastar のセカンドライフ シェイプが踊っています。これは、mmd_tools を使って MMD のモデルとVMDモーションファイルをインポートして、まずは Blender の中で MMD モデルがダンスできるように設定します。その後で、Avastar を使って Avastar シェイプを追加して、MMDモデルとセカンドライフ シェイプの各関節のマッチングを指定して「Retarget」という機能を使ってダンスをさせたものなんです。


これ、、、VMD ファイルを直接 セカンドライフ用の BVH ファイルに変換できちゃうんです。

残念ながら、、、というか、変換したファイルはとても長いファイルなので、やはり MMDBVHToSLBVH.exe で細切れにする必要がありますが、Blender の中でアニメーションの修正ができるようですし(実はこのアニメーションの編集(NLA)方法をまだよく理解していないんです。。。)、もしかしたら、もしかする!と期待している方法です。

ただ、現在このエリアの興味が薄くなってきているので、、、まだ時間はかかると思いますが><

あと、私以外にもこのエリアでがんばっていらっしゃるユーザーさんがいます。


ツールのご紹介をいただいたのですが、私自身あまり試せていなくて申し訳ないです。

まだまだやれることいっぱいな MMD - SL モーション編でした。

[追記] 上記方法 Blender+mmd_tools+Avastar で変換したモーションでダンスした動画が以下になります~
http://youtu.be/Rkshfg-BfQE

2014年12月9日火曜日

わたしのセカンドライフの楽しみ方


この投稿は セカンドライフ 非技術系 Advent Calender 12月9日向けの投稿です。
今年のお題は「セカンドライフの魅力を語れ」だそうです。

サブカルのるつぼ

感覚的に私にとってのセカンドライフは「デジタル コミケ」なんです。
クリエーターとユーザーがごちゃまぜになって、作ったものを提供したり、買いに走り回ったり(会場内では走らないでくださーい)、コスプレ楽しんでる感じ。

思えば、2007年2月からセカンドライフやってます。まだ、日本語入力や表示が不自由な頃で、日本のメディアも、広告代理店もそれほど取り上げていなかったころ。そこからのセカンドライフ内での興味の移り変わりは、まぁ、、、節操がないというか(笑

・ ショッピング(とくに Skin、服飾、Hair)
・ プリムいぢり(早々に挫折 -> 玉しか作れないから珠姫と呼ばれる)
・ ソーシャル アクティビティ(要は、クラブの常連。ASUKAとか雷神とか)
・ ダンス(踊らされるだけ。でも楽しい)
・ イベント用の LSL スクリプト作成
ダンスコントロールスクリプト作成 (MLDU)
フォトグラフ(SLでフォトを撮ってはレタッチだの、被写界深度でボケの実装、WindLight設定など)
・ インワでの YouTube 視聴スクリプト作って、みんなで鑑賞会
・ 動画作成(動画編集ソフトなんて、これではじめて触ったわ。YouTubeへの投稿も。)
・ DJソフト、音楽配信(ほにゃららキャストとか、MIXXX とかトラクター(農作業じゃない)とか)
Poser(買ったけど、使いこなせるところまでいかず)
QAvimator(これはポーズ作成でよく使いました)
・ MikuMikuDance(直接セカンドライフとは関係ないけど、よくインワでお友達と Video みてた)
・ 見るだけじゃなくて MMD で動画も作り始める
・ ニコニコの動画で東方系にはまる、曲も聴くようになる。(算数教室Bad Apple のせい)
・ アニメなんか見てなかったのに「まどまぎ」とか「マクロスF」とか、新旧織り交ぜてみるようになった。。。(昔のものは YouTube で拾ってみてるので若干ストーリーがあやしい)
・ ボカロPの MitchieM の曲に衝撃が走る。なにこれすごい。
MikuMikuDance モーションをインポート(モーションファイルフォーマットを覚えました)
・ ダンスマスター目指している人に MLDU の講習会(G+ソーシャル活用系)
Blender で Mesh いぢり(MikuMikuDance モデルのおかげ)
・ Blenderで MMD モデルをインワにエクスポート(単なる、動かないお人形レベル)
・ ちょっと「艦これ」もおもしろいんじゃない?
・ Blender で MMD モデルを Rigged Mesh にしてアバター化(スクリプトの知識が花開く)

あらためて振り返ると、どの要素もいわゆる「サブカルチャー」なんですよね。そこに IT/デジタル技術的な要素が入ってくるのですが、基本はサブカル。なので「儲かりません」。ここが昔の悲劇の、ボタンの掛け違いなんですけどね。

だって、ミクになれるんだもん

たぶん、サンフランシスコのリンデンはわかってないかもしれないと思うのですが、Rigged Mesh サポートをした時点で、その手の 3DCG コンテンツがある日本(のユーザー、クリエータ)にとっては、本当にすごい変革?進化だったと思うんです。3DCGデータが無料で、すごいクオリティのものが手に入るのは「日本だけ」なんですよ。ええ、MikuMikuDance 関連ですけど。でも、この事実は本当に異色で世界中から「日本おかしいよ」と言われています。

また、MikuMikuDance の有志が MikuMikuOnline を作ってます。たぶん、セカンドライフと技術的に同じ課題を持ちながら進化していきそうだと思うのですが、セカンドライフでもそこそこやれるのよ、って、ご存じない人が多いのかもしれません。もちろん、MMDのデータをそのまま使おうとする MMO のコンセプトと、Collada 形式に変換しなきゃいけない手間がかかるセカンドライフの Rigged Mesh サポートとは方向性が違うので仕方ありませんが、「一人で楽しんで、動画で他の人と共有」する MikuMikuDance が「複数人同時参加でリアルタイムに経験共有」のセカンドライフのような形になるには、インフラとしての仕組み(マーケットプレースや、コピー、譲渡などの権限設定、SIM管理など)が必要で、Linden は時間をかけてそこを整備してきた、と言えるでしょう。


気を付けたいのは、セカンドライフで MMD のデータをお借りするにしても、クリエーターさんが善意で、無償で公開しているわけです。もちろん、モデルの(再)利用規約があります。版権を持っている会社(クリプトンなど)の規定や、クリエーターさんの意思を尊重することが、このようなサブカルの世界では大切だと感じています。

そして、一般に言われるバタくさい、北米ミクさんみたいなアバターじゃなくて(北米さん、ごめんなさい。でもインワで似たようなアバターよくいるんですよ、、)、Kawaii アバターを Rigged Mesh の世界は提供してくれるわけです。GUMI ちゃんもまさにそれでした。


Rigged Mesh によるアバターは「着ぐるみ」のようなものですが、気分的には完全にコスプレです。
Mesh サポートはフルメッシュ アバターだけじゃなくて、衣装製作に対しても柔軟性を提供してくれたので、マクロスFのシェリルになりたい人も絶賛増殖中ですよね。(私含む)

衣装:YB TOPSTAR

つまり、サブカルだから人を選ぶ

だって、サブカルなんだもん(笑
セカンドライフそのものがコンテンツではなくて、どこかにコンテンツが存在して、その派生コンテンツを共有するための「場」だと思うのです。(だから、コミケ。もちろんオリジナル コンテンツでもいいのよ、的なものですが。)

そして、そのコンテンツが「サブカルチャー」のようなものであれば、派生コンテンツや場合によっては権利侵害の要素を含んでいるコンテンツも「黙認」される。ただ、そのコンテンツがメジャーになったら当局の規制だったり、権利者からの削除要請が入る、という図式だと感じています。

そして、それ故に「万人のためのものではない」かもしれません。

ただ、初音ミクやボカロのコンテンツはセカンドライフとの親和性が高いと思います。派生コンテンツに対する権利関係の整備にいち早く対応していますし、音楽、Mesh モデル、モーションデータといった「デジタル コンテンツ」であるため利用・再利用・派生をつくりやすいと言えます。ボカロからセカンドライフに興味を持たれる方も増えてくるかもしれません。ミクちゃんのコスプレして、クラブにいって DJ さんによるボカロ REMIX 聴きながら、ダンスを踊る、他の人とチャットする、という楽しみ方です。セカンドライフは手段であって、興味はボカロが中心。それでいいと思います。

今後、このような「派生コンテンツの拡散」を前提としたコンテンツが出てくれば、セカンドライフでの利用コンテンツとなって、コンテンツを共有して同じ趣味の人と交流ができるデジタルでソーシャルな場になる可能性をセカンドライフはまだ持っていると思っています。そこが魅力だと思っています。

2014年9月11日木曜日

まばたきを実装せよ。

お久しぶりです><
ブログの更新がなくてもいろいろとやっておりました。ブログはある程度「ちゃんとした情報」を上げるようしていますが、日々のくだらない話などはG+のほうをご覧いただければ、と思っています。

ちなみについ最近「勝手にみっくみくダヨー夏祭り」をやってました><



ところで、何度も紹介していますが、以下の動画をご覧くださいませ。

口パクもそうですが、「瞬き」してます。はい、するんです。

ただ、YouTube の動画のコメントにもあるように、「どうやってるの?」と思われる方も多いようです。これ、別に「秘密の奥義」なるものは存在せず、要は「パラパラ漫画」をセカンドライフ内で実装しているだけなんです。

多くの 3DCG の世界だと「モーフ」とか「シェイプキー」でこのような動きを実装しているのですが、セカンドライフにはモーフも ShapeKey もありません。無いんだったら何とかするしかないわけですw

で、このビデオの Head のパーツは以下のようなメッシュから構成されています。


このメッシュパーツをすべて「材質名」を個別にして1つのオブジェクトにします。1オブジェクトの材質数の上限は「8」なので、必ず8以下にします。そうすると1つのオブジェクトに8つの材質名をもったメッシュをアップロードできるわけです。

材質はセカンドライフでは「面」となります。あとはスクリプトで面の透過・不透過を繰り返すわけです。

が、ここで LSL(スクリプト)の知識が必要になります。

このパラパラ漫画方式のスクリプトのポイントは「for 文を使わない」です。

for の代わりに llSetTimerEvent を使って繰り返しの処理を行うのが基本中の基本。なぜならば、for ループに入っちゃうと「制御ができない」からです。止めたいときに止められない、という感じですね。

瞬き部分などは具体的に以下のようなソースになります。

list blinkList0 = [6,5,4,3,4,4,3,4,5,6]; //瞬きのパターンその1
list blinkList1 = [6,5,4,3,3,3,3,4,5,6]; //瞬きのパターンその2
list eyeList = [];
float interval = 0.12;
integer cIndex = 0;
integer cFace = 1;
integer setEye;
list blink = [];
integer blinkStat = FALSE;
integer myLink = -4; //LINK_THIS
key owner;
integer myChan = 1212;
integer handle;
integer bFlg=FALSE;

blinking()
{
    //llWhisper(0,"bon "+(string)cIndex);
    if(cIndex<llGetListLength(blink))
    {
        integer nextFace = llList2Integer(blink,cIndex);
        if(cFace!=nextFace)
        {
            llSetLinkAlpha(myLink,1.0,nextFace);
            llSetLinkAlpha(myLink,0.0,cFace);
            cFace = nextFace;
        }
        cIndex++;
        llSetTimerEvent(interval);
    }else{
        cIndex=0;
        blinkStat=FALSE;
        llSetAlpha(1.0,setEye);
        if(cFace!=setEye)
        {
            llSetAlpha(0.0,cFace);
        }
        cFace=setEye;
        llSetTimerEvent(llFrand(5.0)+5.0);
    }
}

default
{
    attach(key id)
    {
        if(id!=NULL_KEY)
        {
            //llWhisper(0,(string)llGetLinkNumber());
            myLink = llGetLinkNumber();
            owner=id;
            handle = llListen(myChan,"","","");
            llListenControl(handle,TRUE);           
        }else{
            llListenControl(handle,FALSE);
        }
    }
    state_entry()
    {
        //llSay(0, "face "+(string)llGetNumberOfSides());
        eyeList=[];
        integer i=0;
        for(;i<llGetNumberOfSides();i++)
        {
            eyeList+=(string)i;
        }
        llSetLinkAlpha(myLink,0.0,0); //JITOME
        llSetLinkAlpha(myLink,0.0,1); //WINKU
        llSetLinkAlpha(myLink,0.0,2); //SMILE
        llSetLinkAlpha(myLink,0.0,3); //Close
        llSetLinkAlpha(myLink,0.0,4); //30
        llSetLinkAlpha(myLink,0.0,5); //60
        llSetLinkAlpha(myLink,1.0,6); //OPEN
        llSetLinkAlpha(myLink,0.0,7); //Hau
        blinkStat=TRUE;
        blink = blinkList0;
        setEye = 6;
        owner=llGetOwner();
        handle = llListen(myChan,"","","");
        llListenControl(handle,TRUE);           
        llSetTimerEvent(1.0);
    }
   
    timer()
    {
        llSetTimerEvent(0.0);
        if(blinkStat){ //TRUE
            blinking();
        }else{ //FALSE
            integer rand = ((integer)llFrand(11.0))%2;
            //llWhisper(0,(string)rand);
            if(rand){ //1 TRUE
                blink = blinkList0;
            }else{ //0 FALSE
                blink = blinkList1;
            }
            blinkStat=TRUE;
            llSetTimerEvent(0.5);
        }
    }
   
    listen(integer chan,string name,key id,string msg)
    {
        //llOwnerSay(msg);
        list cmdList = llParseString2List(msg,["|"],[""]);
        string idx = llList2String(cmdList,0);
        string cmd = llList2String(cmdList,1);
        string opt = llList2String(cmdList,2);
        if(idx==(string)owner){
        if(llToUpper(cmd)=="FACE")
        {
            //llSetTimerEvent(0.0);
            if(llToUpper(opt)=="LIST"){
                llOwnerSay(llDumpList2String(eyeList,","));
                llOwnerSay("Current face:"+(string)setEye);
            }else if(llToUpper(opt)=="ON"){
                llSetTimerEvent(0.5);
            }else if(llToUpper(opt)=="OFF"){
                llSetTimerEvent(0.0); //いみない
            }else if(llToUpper(opt)=="HIDE"){
                llSetTimerEvent(0.1);
                if(bFlg==TRUE){
                    llOwnerSay("Blinking ON");
                    bFlg=FALSE;
                }
            }else if(opt!=""){
                if(bFlg==FALSE){
                    llSetTimerEvent(0.0);
                    llOwnerSay("Blinking OFF");
                    bFlg=TRUE;
                }
                integer nextFace = (integer)opt;
                llSetAlpha(1.0,nextFace);
                if(nextFace!=cFace)
                {
                    llSetAlpha(0.0,cFace);
                }
                cFace = setEye=nextFace;
            }           
        }
        }
    }
}

このくらいのスクリプトで瞬きの実装ができます。
材質=面の番号はオブジェクトをアップしてみないとわかりませんので、0~7の面がどれに相当するかをチェックして、瞬きに必要なメッシュの面番号を「瞬きパターン」として登録しています。

以上、「瞬きを実装せよ」でしたw

2014年3月11日火曜日

Avastar を使ってみる(5)

前回ご紹介したビデオ(Avastar Weighting Tools) の続きは Avastar: –7- Unwrap & Texture になります。なお、以下での要約は前回に引き続きある程度 Blender の操作を知っていることを前提としています。

このビデオは Avastar というよりは Blender の標準機能による Unwrap & Texture 編集解説なんですが、1:35~ からの BGM が、、、、(笑 どういうことなんでしょう?www

で、正直後半の方はとてもめんどくさいです。ただ、標準機能でこのドレスに貼り付けたテクスチャの「つなぎ」の部分をシームレスに調整する方法と Generated と UV の考え方は参考になると思います。ざっくりと説明すると以下です。

0:45~ で Avastar Armature を Shortcut M で別レイヤーに移動してます。Alt+H で非表示のオブジェクトを表示して同様に別レイヤーに移動しています。細かい作業をするにはこのレイヤー管理は非常に有効ですよね。

ちなみにビデオ内の 3Dビューポート ウィンドウ 左下には操作したキーやボタンが表示されているので、英語聞き取れない人でもそこから想像してみてくださいね。Screencast Keys というアドオンで標準でついているものです。

scrncast

1:15~ ではマテリアル エディターを使ってドレスの色を変えてます。正確にはドレスに割り当てた材質の Diffuse の色と Specular の色なんですが、その説明になると光源がーとか、反射がーとかになるで、色を変えたい場合は Diffuse をいぢり、反射やテカリを変えたい場合は Specular をいぢる、と覚えておきます。気になる人は Diffuse/Specular/Ambient とか拡散色/反射色/環境色 とかで gg ってください。

2:23~ から UVマップとはなにか、を解説しています。UV マップって展開図みたいなものです。展開図の上に白い服地をおいてその上から塗り塗りした、その白い布が「テクスチャ」になるんですよね。なので UV マップを着ることはできず、テクスチャを新たに用意しなければなりません。

3:14~ では単純に、何もしないでメッシュから UV マップを作った例。(普通これは使いません)ここは、UV マップのウィンドウと 3Dビューポートが連動してますよ、というのがポイントですね。

4:30~ で、背中側にシーム(キレ目)を入れて UV マップを作る方法です。

5:50~ で上で使ったシームを解除して、左右にシームをいれて Unwrap し直します。これで、前と後ろの2枚の UV マップを作っています。扱いやすい展開図を作った、という感じですね。

7:00~ では Solid モードで簡単にテクスチャを貼り付ける方法を紹介しています。でも、Solid モードだけじゃなくて Texture モードでもみたい、だから、テクスチャ プロパティでテクスチャを追加しています。

8:50~ で、問題としているのは、サンプルとして使った Magic テクスチャ(というテクスチャのタイプ)が GLSL レンダリングのテクスチャモードで表示されない、、、というものです。通常 テクスチャプロパティの Type で選ぶのは [Image or Movie] ですが、これ以降は Magic テクスチャを GLSL のテクスチャモードで表示するためにいろいろなことをやります。。。。ので、割愛w 参考にはなるのは 10:25 以降の張り合わせです。

Magic テクスチャとかなんとか
http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Render/Cycles/Nodes/Textures

10:25~ 簡単にいうとテクスチャ自体は繰り返し模様でつながるので Mapping の Coordinate を UV から Generated に変えて bake しなおす、という作業です。当たりまえですが、元のテクスチャが両端でつながっていないとだめです。

と、、、まさにすべて Blender の標準機能でしたが、UV Map に関しては以下のビデオもいくつかのインスピレーションを与えてくれます。

UV マップ上の頂点は、Mesh の Edit モード同様に移動できます。テクスチャとなる画像に合わせて UV マップの頂点を移動させる、、、、という荒業(?)ですねw

かがみんがなんかこのブログを紹介しちゃったものだからがんばって(5)を作りましたよ。(笑

次の Gaia さんのビデオは Rigging a Horse になります。Avastar の Armature はセカンドライフの人型標準ボーンですが、たとえば馬のようなアバターをつくりたい、私の場合は MMD のモデル体型をそのまま維持したい(ひざ下が長くシェイプスライダーでは調整不可能なバランスとか)といった場合は Armature を修正する必要があります。その方法になります。

正直、ビデオ長いです(><

お楽しみに~♪ 少しでも参考になれば幸いです。

2014年3月7日金曜日

Avastar を使ってみる(4)

前回は Blender のウェイトツールの説明がほとんどの Gaia さんのビデオでしたが、今回は Avastar のウェイト ツールについての解説ビデオになります。前回同様細かい手順までは書き起こしていません。そのため、Blender の操作を知っていないとちょっと厳しいと思いますが、ビデオを見ながら見よう見まねしてみてもそこそこ動くと思います。それでも Blender の基本操作(オブジェクト選択の仕方とか)は別途調べて事前に勉強しないときびしいでしょう。

Avastar のウェイトツール

ブーツのメッシュを使って Avastar のウェイトツールの解説です。

Preparations (準備)

一番最初(0:36~ )に、もしミラー モディファイアを使っているようなら適用しなさい、としています。モディファイアが有効な状態ではうまくいかないためのようです。

それから(1:24~) Pose モードで Avatar のシェイプ(足首)を動かしてブーツ形状に Avastar アバターMesh を合わせています。

Parenting (ペアレンティング)

1:44 からメッシュのブーツと Avastar の Armature とのペアレンティングになりますが、実は、Avastar はリリースがあがると新機能追加、UI 変更も多くて、最新の Avastar 1.1 とビデオ内のものとでは若干パネルが違います。

たとえば、ビデオ内でツールシェルフ(左サイドバー)の [Custom Mesh] にある [Rigging] パネルは、1.1 では [Skinning] パネルという名前になり、その項目も図のようになっています。

Avastar11-Skining
([Weight] が [Empty] の場合。[Meshes] にすると表示項目が変わります。)

[Skinning] パネルには [Weight] 方法のドロップダウンリストと、選択された [Weight] 方法のオプションが下に表示されます。[Empty] を選ぶと  [Shape Sliders] と [Alter to Rest Pose]が表示され、[Meshes] を選ぶと [Clear weight]、[Selected verts]、[Interpolates]、[Shape Sliders]、[Alter to Rest Post] が表示されます。いずれの場合も最後には [Parent to Armature] ボタンがあります。

たぶん、、、ですが、この新しい Avastar の Skinning セクションでは今まで Avastar のペアレンティングではできなかったウェイト方法の選択が追加されたようです。いえ、おおげさなことじゃなくて、(Avastar Mesh からの) ウェイトをコピーする・しないの2択(チェックボックス)から、リストから選択する形式で Ctrl+P の Blender の標準ペアレンティング時のウェイト付けの選択オプションが Avastar の ウェイト付け方法として追加された、と考えて良さそうです。Ctrl+P の Armature Deform の With Empty Groups のオプションです。それにより Avastar のペアレンティングでは Meshes, Bones, Empty, Keep の4つのオプションがウェイト付けの方法として選択できるようになっています。

Blender標準parenting

ビデオで紹介している Avastar のアバター Mesh からウェイトをコピーするためには、[Weight] で [Meshes] を選択することになります。(たぶん)
ですので私は以下のオプションでビデオの流れにそって検証してみますね。

avastar001

ペアレンティングすると以下のようになります。ビデオと比較すると [Detach Armature](ビデオは [Detach from Armature(1)] などがあり、他は Fitted Mesh 関連であることがわかります。そんなものだと思ってビデオを進めていきますね。

avastar002

Weighting/Weight Painting/Rig Presets (ウェイト付け・修正・リグ プリセット

4:08~からは Mesh Weighting の修正(改善)の方法を紹介しています。上のペアレンティングの作業で自動的にセカンドライフ用の Vertex Group がブーツに追加されたよ、Vertex Group にウェイト情報が入っているよ、と言っています。

4:53~ からウェイトペインティングの作業の紹介です。
ここで前回紹介した「緑」のボーンだとウェイトマップが見えないね、と言う話です。緑はアニメーション Armature だから、、、というものでしたね。[Show Bones] セクションにウェイト用のプリセットがあるからそれを選んでね、という作業をしています。ここも若干パネルの情報が変わっています。1.1 だと以下になります。ビデオでは [Preset: Weight] を選択していますが、1.1 の場合は [Skin] ボタンになります。

avastar003

ちなみに、このビデオの中では詳しい説明を割愛していますが、ビデオ内で表示されている Armature Layer ボタンは、[Skin] の横の丸十マークで表示・非表示が可能です。

avastar004

6:55~ では [X-Ray] でボーンが透けて見えるようになる、ボーンの形状を変更できると言っています。ビデオのバージョンでは [Bone Settings] パネルでその操作をしていますが、1.1 では [Show Bones] パネルに統合されているので注意してください。

7:48~ では、ウェイトペインティングの調整が終わったら、かならずアニメーションプリセットに戻してください、と言っています。

8:55~ では両方のブーツのウェイトマップが違う、、、それは Avastar のせいじゃないよ、と言っています。とても不思議なんだけど、セカンドライフ アバターが最初から「違う」んだよ、と説明しています。

Mirror from opposite Bones ツール

そこでミラー機能で両方のウェイト付けを同じものにしてしまうやり方を紹介しています。
9:10~ からの Mirror Weight です。ここもパネル名称等々が 1.1 では以下のように変更されています。ビデオでは [Weight Copy tools] ですが、1.1 では [Weight Tools] になっています。

avastar005

9:50~ くらいでは、この [Mirror from opposite Bones] を使う場合はオブジェクトが X 軸で対称になっていないとだめだと、と言っています。ミラー モディファイアを使って X 軸で左右対称な Mesh を作ってね、とアドバイスしていますね。当たり前ですが、私も最初はなんとかうまくやってくれるかな、と期待したこともありました(><

Remove Weights ツール

10:25~ は [Remove Weights] ツールの説明です。Vertex Group を削除してウェイト付けを無くすることもできますが、このツールは Vertex Group を残したままウェイトのみを削除します。ビデオでは Shift+RMB(マウス右ボタン)でボーンを複数選択して [Remove Weights] を使ってウェイトを消しています。右側のオブジェクト プロパティの Vertex Group から mAnkleLeft などの Vertex Group が消えてないことに注目してください。

Copy from Rigged ツール

11:00~ では別のコピーツールである [Copy from Rigged] の説明です。
ペアレンティングするときにアバター メッシュからコピーをしましたが、それを再度やる、と考えていいと思います。すでにペアレンティング(Rigged されている)Avastar の Armature のメッシュからコピーしなおす、という感じです。そのため、ウェイトを持っている Avastar のメッシュは表示しないといけませんよ、と言っています。

Selected Active Bone ツールと Fitted Mesh オプション

13:20~ では [Selected Active Bone] ツールの説明です。これは Fitted Mesh が実装される前から行われていた Deformer 対応のメッシュを作るための Collision Bone とのウェイティング方法なんですが、Fitted Mesh だといらないんじゃないかな、、、と思って以前ご紹介した Fitted Mesh の対応をブーツ(片側のみ)で試してみました。すると SL ボーン(青のボーン)ではウェイト表示されず、Collision Bone(図ではひし形マーク) だけウェイトが表示されるという、このビデオの Selected Active Bone ツールを使ったものと同じ結果になりました。もちろん、Foot Size のシェイプスライダーでブーツのサイズが大きくなることも確認しました。
手順としては Fitted Mesh 対応の方がはるかに簡単ですし、Fitted Mesh は標準ビューワーで実装されたこともあるので、今後は Fitted Mesh 対応を使うことになるでしょうね。

avastar006

ということで、思いのほかビデオが長かったのと、Avastar 1.1 で結構変更されていたのと、Deformer と Fitted Mesh の違いみたいなものを紹介する長い投稿になってしまいました。。。

少しでもお役に立てば幸いです~

2014年3月6日木曜日

Avastar を使ってみる(3)

前回の「装着品を作る(Create an attachment)」では Mesh シリンダーからドレスを作っただけでウェイトコピーもしくは「リギング」の作業はしていませんでした。実は、前回のビデオを見ていると引き続いて「Rigging」のセクションに自動的に移ります。(Avastar:-5- Mesh Rigging)

リギングとは頂点・辺・面の集まりであるメッシュオブジェクトをボーン(Armature)に関連付けて、ボーンの動きに追随させるようにする作業を言います。特に重要な作業である「ウェイト付け」はスキニングと言われます。

Avastar のウェイトコピーを使う (Avastar: –5- Mesh Rigging)

シュリンクラップ モディファイアを使ってシリンダーをドレスの形状にしたところからの続きです。
1:20 くらいのところで、Blender 自体がボーンから頂点へのウェイト付けの機能を持っているけど、Avastar は別のオプションも持ってますよ、という説明になります。そのやり方をビデオで見せるよ、と言ってます。

2:40 くらいで Avastar は賢くてヘッドや手のウェイトをドレスにコピーすることはないよ、今回はスカートのウェイトをコピーすればいいから、その時はスカートを「表示」する必要がある、と言ってます。下半身は消す(非表示)必要がなくて、Avastar が判断するから大丈夫です。
ただ、ビデオでは必要なオブジェクトだけ表示して操作しています。

3:15 でツールシェルフの Rigging パネルの [with Weight Copy] のチェックをオンにして [Parent to Armature] ボタンを押しています。

これは Blender で言うところの Ctrl+P で Mesh と Armature をペアレンティングをして、かつ、スカートオブジェクトのウェイトをドレスにコピーしています。コピーは Transfer Weights 標準機能と同等ですね。
http://wiki.blender.org/index.php/Doc:2.6/Manual/Modeling/Meshes/Vertex_Groups/Weight_Paint_Tools

Avastar の特徴として Armature 選択されている場合の形状がオレンジ色のシェイプの各部分を囲む「輪」のような形になっています。これは既定の「Custom Shapes」の形状で、4:00 くらいから実演する Mesh のウェイトの状況を確認するためにボーンの各部位を選択しやすいようにカスタマイズされているからです。

avastar3-1

4:20~ くらいからアーマチャー モディファイアの説明をしています。ドレスのメッシュ オブジェクトは上の [Parent to Armature] ボタンで Avastar の Armature とペアレンティングされたのでアーマチャーモディファイアが適用されたことになります。なので、ドレスのメッシュ オブジェクトを選択してモディファイアを確認すると、アーマチャーモディファイアが1個あるわけです。

5:00 くらいで Vertex Group の説明をしています。さきの Parent to Armature によって、アーマチャーモディファイアが適用され、かつ、セカンドライフで使われる Vertex Group もドレスのメッシュに自動的に設定されています。ビデオでは Vertex Group についての深い理解の前にとりあえずちゃんと動くかチェックしましょう、と言ってます。

5:40 からポーズモードにしてボーンを動かしてドレスの変形具合をチェックしはじめます。

6:10 あたりから最初はあれれ?と思う部分ですが、ドレスをウェイトペイントモードにしてボーンの「輪」を選んでもウェイト情報が表示されません。Avastar は「アニメーションボーン(ポーズ用のボーン)」と「ウェイトボーン(最近の 1.1 では Skin という表記、またはセカンドライフボーンと言っています。)」が別々に存在しているからです。そのため、ツールシェルフのカスタムメッシュパネルで切り替えをする実演をしています。

なんかめんどくさいなー、と思うでしょうが、これは「カスタムボーンの作成(非人間型)」でとても大切になります。たぶん、今はあまり深く考えなくてもいいでしょう。メッシュのウェイト情報を見たい場合は「ウェイト(Skin)ボーン プリセットに切り替える」と考えればいいと思います。Blender を触っている人なら、青いウェイトボーンと Vertex Group は連動しているので、ウェイトボーンを選択する=Vertex Group を選択している、と考えればいいでしょう。ですので、緑のアニメーションボーンの状態でも明示的に Vertex Group を選択するとメッシュ上のウェイトペイント情報を見ることができます。 (これが 8:12 の状態。緑のボーンでもウェイトペインティング情報が表示されているのは Vertex Group (mHipRight) が選択されているからです)

ビデオの Rigging Part I はここで終わりです。

ウェイトの微調整をする (Avastar: –6- Mesh Weighting)

ビデオの Avastar: –6- Mesh Weighting では Blender のウェイトペインティング機能を使ってウェイトの調整をする方法を紹介しています。Avastar の機能というよりは Blender の機能の説明が大半です。ウェイトペインティングによる微調整は正直大変です。こればかりは Avastar があるから楽になる、みたいなことはありません。

ただこのビデオでは標準の Blender のウェイトペインティングのテクニックをわかりやすく教えてくれています。 3:05 ~ 3:55 は選択した部分だけをウェイトする方法、3:57 ~ 4:10 では手塗りしたウェイトを Shortcut “W” の [Automatic] をつかってウェイトをスムーズにする方法、さらに頂点のウェイトそのものを1つ1つ調整することによってさらに微調整する方法が 4:30~6:50 で説明されています。これはものすごくわかりやすい、強力なファインチューニング方法です。頂点の位置を動かすのではなくて、ウェイト付けを変えることで(変形後の)頂点が動いていることに注意してください。6:50~ からはウェイト付けの変更にプラスして、頂点を動かしてチューニングしています。

7:50~ ではウェイトの調整はドレス半分だったので、対称の位置にあるボーンウェイトをコピーしています。

Gaia さんもビデオの中で何度か練習が必要だけど、それを超えればうまくいくよ、といってます。

今日はここまで~。上のビデオでは Blender のウェイトペインティングのテクニックが主でしたが、私はこれで Blender の基本操作を覚えたような気がします。

次回をお楽しみに~♪ この投稿が何等かの参考になれば幸いです。

2014年3月4日火曜日

Avastar を使ってみる(2)

前回で「次回は購入とインストールをご紹介、、、」と言いましたが、その前にもう少しだけ Avastar で何ができるのかを Gaia さんの Web ページやビデオでご紹介しますね。

キャラクターを作る (Create a character)

http://blog.machinimatrix.org/avastar/reference/create-a-character/
上のリンクの Web ページにて説明していますが、Avastar を使ってキャラクターを作成することができる、、、って書いてます。ですが、、、紹介していることは Shape スライダーを使ってアバターを変更して、そのメッシュを Collada 出力してアップロードする、ということなので、これで「自由にキャラクター(アバター)が作れる」と思ってはいけません。セカンドライフでのアバターの容姿変更・シェイプスライダーでできることと同じ変更しかしていません。

ただし、Rigged Mesh と呼ばれる「リギング」された、初めての人型 Mesh を簡単に作る(セカンドライフにエクスポート/アップロードする)ことができます。Mesh だけ作成しても「お人形」でしかありません。その Mesh にセカンドライフのボーン(またはスケルトン、アーマチャー)情報を関連付ける(スキニング)必要があります。すでに Avastar が提供している人型 Mesh はスキニングされており、この作業がこのビデオの過程では必要ありません。(いいのか、悪いのかは別として)

このビデオではどちらかといえば独自のキャラクターを作る、というよりは、基本的な Avastar の作業の流れを紹介していると考えてたほうがいいでしょう。
服飾を作成する場合は、このセカンドライフのアバターをベースに作りますから、スタンダードサイズの数値を使ってベースモデルの体型を Blender 内で変える必要が出てきます。その意味で、Avastar が提供するデフォルトのアバターシェイプおよびスライダーを使った変更方法は有効だと思います。

装着品を作る(Create an attachment)

http://blog.machinimatrix.org/avastar/reference/create-an-attachment/
このあたりから Avastar の知識よりも Blender の使い方のほうが重要になってきます。Blender 操作方法にあまり詳しくないとなかなか理解できないと思いますが、Avastar で何ができるかを理解しやすいようにご紹介しますね。

上のリンクの Web ページではメッシュとボーンの関係を説明していますが、Avastar を使うことで何が便利かと言えば、すでにウェイト付けされた Mesh アバターからウェイト情報のコピーが可能、ということです。

通常、Blender でのリギング作業は、Armature(ボーン)を関連付けたときに自動でウェイト付けするか、関連付けてからウェイトペイントツールでウェイト情報を追加していきます。この作業は非常に時間がかかり、訓練が必要な作業になりますが、Avastar が提供しているセカンドライフ用のシェイプ(もしくはスカートオブジェクト)からウェイトのコピーすることで、この作業の短縮が可能です。ビデオでも紹介されていますが、実際はコピーしておしまい、ではなく、ウェイト塗りの微調整が必要になりますが、ゼロからやることを考えると効率的です。

以下のビデオでは Mesh シリンダーから「シンプルドレス」を例にして Avastar のウェイトコピーの方法を紹介しています。

ビデオではテクスチャを貼り付けたシェイプを使っていますが、テクスチャなしの灰色モデルを [Add] – [Avastar] で追加してもだいじょうぶです。

シリンダーの追加や編集などは Blender の操作そのものです。(実はこの Blender の操作を覚えるのがとても大変なんですよね)シュリンクラップ モディファイアでシリンダーを体に合わせる操作も Blender での機能・操作になります。その際、下半身の両足の隙間部分がうまくシュリンクされないため、Avastar のスカートメッシュを非表示のままターゲットに設定してます。(3:50くらい)

ドレスの横のラインを増やす Edge Loop なども Blender の編集機能ですが、その際にツールシェルフの Mesh Info でセカンドライフでの「コスト」が確認できる、と紹介しています。この Mesh Info は Avastar の機能になります。(4:50くらい)

7:09 あたりでは、シュリンクラップ モディファイアで大きさが決まっているスカートのオブジェクトを、ベースとなる Avastar のスカート オブジェクトの Shape スライダーを使って変形しています。このスライダーは Avastar の機能ですね。

ちょっとだけドレスを大きくするのはシュリンクラップ モディファイアのオフセット機能です。これは Blender のシュリンクラップ モディファイアの機能ですね。

不定期ですが、次回ももうちょっと Avastar の機能をすでに公開されている Video や Web ページから紹介できればと思っています。
ご参考になればうれしいかぎりです~

2014年3月3日月曜日

Avastar を使ってみる(1)

Blender でセカンドライフ向けの mesh を作り始めた(というか、触りだした、、、かも)ころから Avastar を使っていますが、意外に解説って(特に日本語は)ありませんよね。

英語できるなら、インワールドの Blender Avastar グループに入ると Avastar を作っている Gaia さんから直接コメントやアドバイスもらったり、community のほうでも積極的に Gaia さんが返信してくださってるので情報収集にはそれほど困らないかもしれません。

Blender Avastar Group
http://world.secondlife.com/group/969567fd-6f74-dd45-eafe-ac1fcecd3479?lang=en-US

Community Forum での Gaia さんの発言・アドバイス
http://community.secondlife.com/t5/user/viewprofilepage/user-id/92350

が、英語得意じゃないときついですよね。(でも、英語じゃないと情報とれないのでやるしかないのですが ><)

私がまだベータだったころの Avastar を購入したのが 2012年の9月。そろそろ1年半立ちますので、ちょっとご紹介しようかと思いたちました。ええ、唐突に(笑

Avastar ってなぁに?

Blender の Add-on で、セカンドライフ向けの mesh を作るための便利機能がいろいろと入っています。私も最初は「あ、これで簡単にフルメッシュアバター作れるの?」と思って買っちゃったクチです >< ええ、そんなことはありません。あくまで Add-on であり、作業を「補完」してくれるツールになります。

Avastar はいくつかの機能から構成されています。

セカンドライフの人間型メッシュオブジェクト
・ Mesh にはウェイトがついています
・ 体が各部分に分かれていて表示・非表示可能 
・ ShapeKey による Shape スライダーで体型の変更が Blender 内で可能

セカンドライフで使用されているボーン(骨格、Armature、スケルトン)
・ カスタムボーン、ウェイトボーン、アニメボーン、Collision Volume ボーンなど
・ 非人間型(4つ足動物)などを作るためのボーン変更/ジョイント位置変更可能
・ 実際のセカンドライフに近い形での間接可動範囲制限によるポーズ機能

お役立ちツール
・ Avastar のメッシュのウェイトを自分の作ったメッシュにコピーする機能
・ モーション リターゲティングで BVH ファイルをセカンドライフ用の BVH に変換する機能
・ 材質の数や、アップロード時のコスト(Download, Server)などの数値表示(Mesh Info)
・ 標準 Collada Exporter よりチェック厳しい Avastar Collada Exporter(よって、アップロード時のエラーが少ない)
・ オブジェクトとオブジェクトの境界線を消す Weld Edge Normals 機能
・ ZERO Weight やウェイトなし、4つ以上のウェイトなど問題がある頂点の検出

などなど、その後 Blender に標準で入ってくる機能などもあるのですが、どうやら Gaia さんは相当 Blender Community に近いらしく、「これあったらいいなぁ」の機能を Avastar で実装して、その後、Blender Community にフィードバックしているような動きに見えます。

英語になっちゃいますが、YouTube でチャンネルがあるので、それを見ているだけで「へぇ~」と勉強になります。

Gaia Clary チャンネル
http://www.youtube.com/user/gaiaclary?feature=watch

Web サイトは以下
http://blog.machinimatrix.org/ (最近かなりサイト変更されました)

ということで、Rigged Mesh/Fitted Mesh などを作るお役立ちツール、Add-on で、絶対なきゃいけないものではありませんが、あると便利、というツールです。いや、私はこれがないとムリです、、、というくらい依存してますが。
その一つが Weld Edge Normals オプションの Avastar Collada Exporter です。

フルメッシュアバターで「表情」を作りたかったんですが、顔を分解してそれぞれの「形状(表情)」を作り、それを1つのリンクオブジェクトにする(この方法しか思いつかなかった)のですが、分解した顔の「つなぎ目部分」の線を消したかったんです。いくら探してもできなさそう、、、というときに Weld Edge Normals が Avastar でサポート、さらに解説動画まで出て、以下のようなものを作ることができるようになりました。

さて、不定期になりそうですが、次回は Avastar の購入と Blender へのインストールあたりについてまとめてみようと思っています。

ご参考になれば幸いです。

Fitted Mesh と Blender

先月ですが、Fitted Mesh とよばれる技術が公式ビューワーでもようやくサポートされました。

Second life–Introducing Fitted Mesh (YouTube)

これまで Liquid Mesh とか Mesh Deformer と呼ばれるものが有志のみなさんにより作成されてきましたが、改めて Linden が公式ビューワーに採用したのが “Fitted Mesh” と呼ばれるもので、 Liquid Mesh / Mesh Deformer とは実装方法が若干違うようです。

Fitted Mesh って何?それおいしいの?

ものすごく簡単にいうとビューワーの Shape の調整で使っているシェイプスライダーで体型調整できる部分が増えた、ということで、これまで Mesh はシェイプスライダーに反映されない部分が多く、洋服などはスタンダード サイズに合わせて5サイズくらい用意されていましたが、Fitted Mesh になると(全てではありませんが)ある程度自分が調整した Shape に Mesh が反応してくれるようになります。

上のビデオではサイズのみならず、おっぱい揺れるよ!と紹介されています。
( ゚∀゚)o彡°おっぱい!おっぱい!

リンデンの Fitted Mesh の wiki ページ
http://wiki.secondlife.com/wiki/Mesh/Rigging_Fitted_Mesh

作るのは簡単?

Mesh による造形そのものの作業のハードルは高いですが、Mesh 経験者であれば Fitted Mesh サポートをしているアバタースケルトン(アバターの骨組み(アーマチャー/Armature)を利用することで Fitted Mesh に対応した Mesh を作ることができる、としています。

Mesh をこれから初めてやりたい、、、という方にとっては、Mesh および Mesh を扱うツール(Blender や Maya, 3ds Maxなど)を覚えなければならないので、決して初心者には簡単とはいえませんが、これまでよりもよりセカンドライフの機能を使った自由度の高いメッシュ(服や、アバターそのもの)を作成することが標準で可能になった、と言えるでしょうね。

ただ、Fitted Mesh を作るために配布されている「スケルトン」がまだ調整不足のようで、Avastar を作成されている Gaia さんがビデオレポートを公開しています。私は Avastar を使うので配布されているスケルトンを使っていませんが、配布スケルトンから作る場合はいくつかの注意事項があるようです。Gaia さんによれば、Blender の標準 Exporter にも問題があるので結局うまくいっていない、というものです。また、それは Blender の次のバージョン 2.70 以降で解決できるだろう、としています。2014/3 ではまだ 2.69 が正式リリースです。

Blender Download http://www.blender.org/download/  ここに 2.70 がくると正式リリースとなります。

公式 Fitted Mesh 用の Blend File の問題点(YouTube)

このビデオでは .Blend ファイルの修正方法を提示していますが、すでに修正された .Blender スケルトン ファイルが Gaia さんによって公開されダウンロード可能になっています。

Fitted mesh サバイバルキット
http://blog.machinimatrix.org/fitted_mesh_survival_kit/

ただし、2014/3/3 では Blender 2.70 (テストビルド)を使わなければいけません。
http://www.blender.org/press/blender-2-70-test-build/

Blender 2.69 というか正式ビルドで作るには? – Avastar 1.1 を使う

Blender のテストビルドを使わなくても Fitted Mesh をセカンドライフにアップロードすることができます。前述の Gaia さんが作成し販売している「Avastar」を使う方法です。

Avastar
http://blog.machinimatrix.org/avastar/

Avastar-1(YouTube)

Avastar はセカンドライフ用の Mesh を作成するための便利ツール集です。Blender の Add-on としてすでに長い歴史がありますが、Fitted Mesh のサポートはここ最近追加されました。

カスタムシェイプスライダー&Fitted Mesh 概要

Avastar は Mesh 造形およびセカンドライフへのインポートでさまざまなお役立ち機能を提供してくれます。Fitted Mesh サポートももちろんですが、私の場合は Weld Edge Normals サポートがあるため使い続けている、といってもいいでしょう。Maya なんかは標準であるようですが、Blender の場合は私の知る限りだと、この「分割したオブジェクトの間の線を消す」という機能は標準では見つけられていません(もしかしたらあるかもしれませんが、、、)

Avastar を使って Fitted Mesh をアップロードしてみた

上記の Avastar-12 ビデオの手順を参考に、以下の環境で作成中の Full Mesh Avatar を Fitted Mesh にしてアップした結果です。

Second Life Viewer: Second Life 3.7.1 (286557) Feb 11 2014 21:01:25 (Second Life Release)
Avastar: Avastar 1.1 (avastar-1-1-974_blender-2-65.zip)
Blender: 2.69


バストの Shape スライダーで大きさ変更 ( ゚∀゚)o彡°おっぱい!おっぱい!

ボディのメッシュは MakeHuman で作成したものです。上の場合はとくに Fitted Mesh のためにウェイトを塗り直すこともしませんでした。
Avastar 1.1 での Fitted Mesh 作業は非常にシンプルです。ビデオの手順は大まかに以下です。Fitted Mesh に関連するのはビデオの 5:30 以降です。

1) すでにウェイト付けされた Rigged Mesh を用意
2) Shape スライダーを「デフォルト」に戻す。Avastar オブジェクト プロパティの [Reset To Default Shape] を使う
3) インポートする Mesh を選択して、ツールシェルフの [Rigging] の [Siders] で [Detach] をしてスライダーのフルリセットをする
4) [Rigging] のプリセットにある [Fitted Mesh] ボタンを押す。するとスケルトン(Armature)が変更される (この時点で Fitted Mesh で有効になっている追加ボーン (Collision Volume Bone) に Mesh がウェイト付けされている)
5) 再度ツールシェルフの [Rigging] の Sliders: [Attach] を押し、スライダーを有効にする
6) Shapeスライダーが有効なことを確認する
7) Avastar Exporter でアップロードする

7:40秒くらいで Belly Size でうまく腹部が膨らまない例が出ていますが、全自動じゃなくて、こういう場合はメッシュのトポロジー(メッシュ形状)やウェイト付け含めて手作業が必要ですよ、といっています。

Blender 2.7 じゃないとだめ、とか、まだ始まったばかりの Fitted Mesh ですが、セカンドライフでの Mesh ワールドでさらに自由度が増しましたね。

ご参考になれば幸いです~。

2014年2月27日木曜日

Bitcoin とセカンドライフを比較してる人を信じてはいけない

などと言い切るのは本意ではないのですが、あまりにひどい ><

共通点は「仮想」という漢字2文字だけ。(もしくは Virtual の1英単語)ものすごく簡単にいうと Bitcoin は「地金」みたいなもの。または金の延べ棒?イメージ的には。
なので、本来通貨でもなんでもないわけ。とういうか、「通貨」だとどこの国も認めてない。金を買い取りますよー、と言っている「業者」が破たん(しそうな)会社が出ているだけで、金そのものの価値は「まだ」ある(かも)と思います。

一方 Secondlife (セカンドライフ)のリンデンドルはリンデンが作った「仮想世界」の中での「通貨」です。Bitcoin と比較しやすい理由は「リアルマネートレード」と言われた、仮想世界の通貨であるリンデンドルを現実の通貨と「交換」できることでしょう。

コンピュータとインターネットの世界で利用されているデジタルの「チケット」みたいなものを現実の貨幣と「トレードできる」という意味では、Bitcoin とリンデンドルは一緒ですが、そもそも「目的」と「使っている場所」が違うと思います。リンデンドルは「仮想世界」の中でさまざまな取引の「潤滑剤」として使われています。でも、話題にはなったけど、リンデンドルを実世界の「貨幣」に変えて実際に「手にしている」人はそれほど多くないんじゃないかと思います。手にしたリンデンドルを使ってレンタルサーバーの支払をリンデンドルでしたり、セカンドライフ内の他の商品やサービスを購入したり。

セカンドライフでの商売とリアルでの商売を比較すると、かけるコスト、アイディア、苦労、、、はほとんどかわらないと思います。普通の人はリアルで仕事、アルバイトしたほうがよっぽど効率いいです。

かたや BitCoin は同じデジタルチケットみたいなものでも、存在自体が「希少価値」という点で金(Gold)です。いや、金投資です。それもまだ法律的に投資者保護されているんだかいないんだか、というまだ不透明な投資なんだから勝っても負けても騙されても文句いえません。言えないはずです。で、言ってますけどw たまたま「金の延べ棒」でコーヒー飲めたり、そんな取扱い店が増えるか、増えないか、、、という状態です。

もう、セカンドライフを好きな人はひっそりと生きる(楽しむ)のでスルーしてください、って感じです。

2014年1月15日水曜日

2014年がはじまっていた・・・

あ、、、あけましておめでとうございます><
今年の A Happy New Year Pic はこちらでした。

今更かよ!ですが、振り返りますと、2012年は MMD/PMD いぢりに没頭し、2013年は PMD/PMX の Rigged Mesh にのめり込みました。実のところ 2012年ころから Blender や Add-on の Avastar を触ってはいましたが、ボーン・骨入りではない、お人形くらいしか作れませんでした。

2013年の夏頃になってだんだん Rigging の作業工程や、それぞれの意味が理解できるようになってきて、Blender による Rigging 作業をひたすら繰り返す日々、、、

その合間をぬって MLDU 講座もやっていたり。

Rigging 作業自体の理解と、HUD/LSL による表情変化や、形状変化の試行錯誤でしたが、3体ほど Rigging して、それなりに動くようにすることができました。

SL ボーンを元の PMD/PMX の構造に変更して Rigging した第1号の Tda 式ミクちゃん。

MMD をやるきっかけを作ってくれた ままま式グミちゃん。

かわいいのに美人さんな mqdl さんによる IA ちゃん。

お人形しか作られないところから脱却できたのは、以下のテストでした。

Blender でいう Shape Key、MMD/PMX でいうモーフ(頂点モーフ)は SL ではまだユーザー カスタマイズ用として実装・公開されていません。これまでのアニメヘッドの表情付けは「テクスチャ アニメーション」機能を使ったものが大半でした。
テクスチャアニメを使わずに形状変化させる方法は一部スカルプでも使われていましたが、透明オブジェクトを重ねて LSL で表示切替させます。上のお面は以下のようなバーツから構成されていて、アルファの値を順々に変えて「動き」を実現しています。

試行錯誤はさらに続きましたが、最終的には ダンス HUD の MLDU からのチャットコマンド送信(通常は SNUPOZ フォーメーションなどとの連携で使いますが)で、ダンスと表情や手の形状をシンクロさせることができるようになりました。

このように SL の Mesh サポート、Blender の利用はあらたな可能性を見せてくれるんだな~と実感した 2013年でした。あと、Blender で SL 用に Rigging するのであれば Avastar はいろいろなところで使えるで、私は必須になってしまっています。

なお、上記で利用させていただいた PMD/PMX モデルは以下の条件が共通です。

  • ユーザーによる改造 OK
  • 非商用での再利用 OK
  • オリジナルの版権元が2次創作を一定の条件下で許諾(ピアプロライセンス等)

モデル製作者様によっては「改造NG」というものも少なくありません。非商用であっても 2次、3次創作や再配布を遠慮してほしい、というお願いがあるものもあります。このあたりのお約束に十分に留意し、モデル製作者様へのリスペクトを忘れずに利用させていただきました。

なお、Google Plus のほうでは Blender のお役立ち情報・リンクや、Rigging の作業状況をあげたりしていますので、ご興味のある方は Google Plus で私の書き込みをご参照くださいませ。

今年ももっと楽しく勉強します~