Metasequoia .NET Plugin SDK 2013-03-02 / PmdImporterなどを改良

久しぶりのブログ更新です。

Metasequoia .NET Plugin SDKの更新版「XELF.Metasequoia.DotNetPluginSDK.2013-03-02.zip」を以下ページに公開しました。

こちらの更新も大変久しぶりです。
実質、Metasequoiaプラグインセットとなっていますが、特にPmdImporterの動作が半端な状態となっていたので、修正や強化を行いました。

更新内容

PmdImporter (Metasequoia/Keynote向けPMD形式インポータ)
  • 「ボーンの頂点座標」「ボーン階層」「浮動ボーン」の処理を修正しました。
  • ボーン名を材質名に反映するようにしました。
  • ボーンウェイトからKeynote 0.0.4.4方式のアンカーを簡易作成するようにしました。
    • ボーンウェイトからアンカーへの変換は原理的な困難がありますので、アンカーは手動で調整することが前提となります。
  • 材質の色の変換方法を変更しました。
CommandPluginSample (マウスカーソルが指す幾何情報を表示する)
  • オブジェクト名と材質名を表示するようにしました。
依存する「C ランタイムおよび標準 C++ ライブラリ」

動作確認環境

※内部に変更があるので、以前のバージョンとは共存できません。

QUMARIONが来ました

 予約していたQUMARION ( http://www.clip-studio.com/quma/ )が届きました。QUMARION本体と対応ソフトウェアに触れて、自前3Dモデル導入の下調べをしてみました。
対応ソフトウェアは http://www.clip-studio.com からQUMARIONアクセスコードを使って、ダウンロードします。

 QUMARION初回限定パッケージとして、専用スタンドとTab-Mate Controllerも付属していました。
専用スタンドは、姿勢の保持にかなり助かるように思います。

標準搭載モデルで試してみる

「CLIP STUDIO ACTION」

QUMARIONにこんなポーズを取らせると

なるほど、うまくいきますね

 このあと、いくつかのキーフレームでポーズを設定して、謎のモーションを作ってみました。画面上でキーフレームアニメーションを作る感覚と大きな違いはないようです。画面上のボーンやIKを直に操作することでもポーズを編集できるので、

  1. QUMARIONで直感的にポーズを作ってキーフレームに登録
    • 気になれば、画面の表示状態を見ながら、各関節や全体の傾きを調整して再登録する
  2. 再生状態を確認しつつ、画面上で各キーフレームを微調整して仕上げていく
    • QUMARIONで調整できない指の動き、全体の位置や回転なども画面上で調整する

といった作業方法になるように思えました。

CLIP STUDIO PAINT
ペイントツールの方でも、3DモデルとQUMARIONが利用できる

自前3Dモデルを使う方法の下調べ

 作成手順の詳細情報はまだ出ていないようですが、自前3Dモデルを使う方法を探ってみたところ、以下のような手順になるようです。
3Dモデルのボーン設定規則などは、詳細が下記のPDFに書かれています。

  1. 「3d_model_Guide_06.pdf」に沿った3Dモデルを作る
  2. 「CLIP STUDIO COORDINATE」でFBXかPMDをインポートする
  3. メインメニュー「ファイル」→「保存」で、CELSYS CHARACTER形式(.c2fr)で保存する

ひとまず、ボーンやパーツの調整は無視して、手順とインポートの結果を見てみることにしました。

  • できた.c2frファイルでモーションを作るなら、「CLIP STUDIO ACTION」から
    • メインメニュー「ファイル」→「モデルを追加」
標準搭載のモデルと比べると、スケールが違うようですね
  • できた.c2frファイルデータでイラストを作るなら、「CLIP STUDIO PAINT」から
    • メインメニュー「ファイル」→「新規」
    • ウィンドウにCELSYS CHARACTER形式(.c2fr)をドラッグ&ドロップ
3Dモデルに床ポリゴンがあるので横長レイヤーとして扱われました

書籍「Unityゲームプログラミング」

 この度XELFは、書籍「Unityゲームプログラミング」を執筆しました。

概要

 ゲームエンジン「Unity」の「使い方」「仕組み」「Unityスクリプトのプログラミング」を中心に解説します。Unityスクリプトについては、対応プログラミング言語C#」「JavaScript」「Boo」のうち、解説では「C#」を使います。なお、サンプルはUnity 3.5用となっています。
 本書説明にはWindows版Unityを使っていますが、Unityはマルチプラットフォームに対応しており、「Windows」「Mac」やスマートフォンiOS」「Android」などにビルドができます(ゲーム機のライセンシーであれば、家庭用ゲーム機も含む)。

書名 Unityゲームプログラミング
ISBN ISBN978-4-7775-1699-5
出版社 工学社
出版社の書籍紹介サイト(目次を確認できます) http://www.kohgakusha.co.jp/books/detail/978-4-7775-1699-5
サポート情報 / サンプル http://www.kohgakusha.co.jp/support/unity/index.html
発売予定 2012-07-19(若干ずれることがあります)

Kinect スター・ウォーズ

 Kinect専用ゲーム「Kinect スター・ウォーズ」を遊んでみました。

 メニュー画面では、C-3POR2-D2が登場し、聞き覚えのある吹替えで、「C-3POR2-D2へ話し掛け、R2-D2が電子音で応える」あの雰囲気が再現されています。プレイヤーがプレイゾーンへの出入りに対して反応があって、嬉しいところですね。もちろんオープニングでは、お馴染みのテーマ曲が流れます。

 「Kinect スター・ウォーズ」には、いろいろなゲームモードあります。

ジェダイ デスティニー

 ゲームモード「ジェダイ デスティニー」は、戦闘をしながらでストーリーが進んでいくキャンペーン・モードです。
 まず、戦闘方法を確認できるチュートリアルから始まります。その後、早々にヨーダにも会えますよ。ライトセーバーによる戦闘や、障害物をよけたり、登ったり下りたりするジャンプがあります。戦闘中、前に踏み込むと突進します。乗り物での移動する場面もあります。
 遊んでみて気づいた惜しい点は、カットシーンでキャラクターの動きがときどき安っぽく見えることでしょうか。

ライトセーバーによる戦闘

 ライトセーバー(Lightsaber)もまたスター・ウォーズらしさですね。戦闘は、ライトセーバーによる剣戟が中心です。ゲーム開始時に腕を挙げてゲームを開始しますが、このときに利き手を判断しています。どちらでもプレイ可能です。

 戦闘シーンは多対多であっても、キャラクター同士が自然と1対1のデュエルに近い形で対峙する立回りになるシステムになっています。
 これまで遊んだKinectゲームに比べて、プレイヤーの動きが細かくにゲームに反映される部分です。わりと忠実に腕の振りに連動するようになっています。

 ライトセーバーと逆の手はフォースを溜めて打つ遠距離攻撃がができます。「∞」の記号を描くように腕を回せば、飛んでくる弾を弾き返すことができます。いくつかの動作を組み合わせて繰り出すことで、有利に戦うことができるようです。

デュエル オブ フェイト

 「デュエル オブ フェイト」は、ライトセーバーによる剣戟のうち特にデュエルに特化したゲームモードです。攻守の交代があり、プレイヤーの思いのままのフリー・スタイルの戦闘ではないということも言っておかねばならないでしょう。

ランコア ランページ

 「ランコア ランページ」は、ランコア(Rancor)として、大暴れするゲームモードです。建物を破壊したり、人々を襲ったりと、通常とは立場を変えて遊べるストレス発散できそうなモードです。Gear of War 3のビーストモードを思い出しました。

ギャラクティック ダンス

 ゲームモード「ギャラクティック ダンス」は、Kinectで遊ぶダンスゲームそのものですね。手足の動きがキャラクターに合わせて踊れているかどうかで評価が決まります。手や足の評価が随時表示され、ムーブごとにうまくできたかどうかわかります。

ポッドレース

 ゲームモード「ポッドレース」は、まさに映画に出てきた「ポッドレース」を再現したレースゲームです。操作方法は、腕を伸ばし曲がる方に向けるというものです。レコードラインが表示されているので、カーブに合わせて腕の振るだけで基本的には遊べます。腕を突き出すと一定の条件で加速できるので、レースに勝つにはこれをうまく使うことが重要でしょう。

Kinectラッシュ: ディズニー/ピクサー アドベンチャー

 「Kinectラッシュ: ディズニー/ピクサー アドベンチャー」は、ディズニー/ピクサーのアニメーション映画5作品の世界で冒険ができるKinect専用ゲームです。
 Kinectアドベンチャーのシリーズと同じように、Kinectによる直感的な操作でステージを進むジャンルのゲームになっています。

 まず、アバターの作成があります。男女の各10種類から選ぶこともできますが、Kinectで服の色や髪、顔立ちなどを読み取って、そこから特徴を反映した自分のアバターを作成できるようになっています。

 アバターを決定して降り立つ場所は、広場「ピクサーパーク」です。ここでの操作方法は、「両腕を交互に振って移動」「首(身体)を左右に傾けて横に移動」「身体を左右に捻って旋回」「身を引くと一歩後退」などです。

 端的に言えば、広場から遊びたいエピソードが選択できます。エピソードの入り口まで移動して、開始を選択すると、子ども同士で会話を始めます。途中からオーバーラップするように、ディズニー/ピクサーのキャラクターの会話に変わって、そのままエピソードのプレイが始まります。映像的にとてもスムーズな場面転換なのですが、おそらくこの間に、エピソードの開始に必要なロードも行われているのでしょう。

 ゲームの内容は広場と同じような操作のほかに、「滑る」「飛ぶ」「ジャンプ」「物を投げる」「バランスをとる」など、場面によって変化します。腕の運動量が一番多い印象です。先に進むために少し考える部分もあります。プレイ中も、プレイの出来具合やヒントを話してくれますし、失敗しても直前からすぐに再開するので、特にクリアが難しいということはないでしょう。

 エピソードをクリアすると、コインとタイムからポイントが計算されます。その蓄積によって新しいエピソードがアンロックされます。

 アニメーション映画5作品は、具体的には、「カーズ」「トイ・ストーリー」「カールじいさんの空飛ぶ家」「Mr.インクレディブル」「レミーのおいしいレストラン」です。いずれもアニメーションの映像の雰囲気がよく再現されているようです。

Microsoft MVP 向け “ラッシュ: ディズニー/ピクサー アドベンチャー”レビュー キャンペーンに参加し、本ソフトのレビューを行っています

パワーアップ ヒーローズ

 「パワーアップ ヒーローズ」は、Xbox LIVEの自分アバターで戦うスーパーヒーローもののKinect専用対戦格闘ゲームです。
 戦闘スタイルは、適度に距離をとった状態が基本で、「タイミングを見ながら大技を決める」「接近したらコンボをする」というもので、ドラゴンボールの戦闘シーンがよく似ているように思います。

バトル開始前

 2着のスーツを選びます。各スーツには、「スピード」「パワー」「チェイン」の性能の違いと、1着につき3種類のスーパーアタックがあります。
 また、レベルアップで手に入るパワーアップの装備選択もできます。

バトル中のジェスチャー

  • パンチでショットを放ち、遠距離攻撃ができます。
  • キックで接近戦を仕掛けることができます。オフェンス側は最大6ヒットのコンボができ、ディフェンス側は画面に出たポーズをとっていくことで防ぐことができます。接近戦を仕掛けられたときに、近づかれる前にひざを上げることができれば、カウンター攻撃ができます。
  • 左手を上げて「チェンジスーツ」で、もう一方のスーツへ切り替えることができます。
  • 身体を左右のいずれかに傾けて、ドッジ(回避)ができます。
  • スーパーアタックは、それぞれ特徴的な技となっていて、動きに合うジェスチャーを使います。開始のジェスチャー、発動のジェスチャーというように分かれているので、操作感があり、バトルとしてもタイミングを計ることができるものになっています。

 スーパーアタックには、個々にクールダウンタイムがあります。乱発できるものではないので、うまく使っていく必要があります。

 Kinectジェスチャーを使ってプレイする点を除けば、スーパーアタックを阻止したりかわしたり、スーパーアタックを順につないでチェインできたりと、駆け引きのある対戦格闘になっています。ゲームモードには、オフラインの対CPU戦のキャンペーンと、Xbox LIVEのオンライン対戦があります。身体をよく動かすことになるので、運動になるKinectタイトルの1つですね。

Vidroシーンファイルを書き出してVidroで3D描画

 先日より、独自XModel形式から、Vidro用シーンファイルへの書き出しに着手しました。XModelからの3Dレンダラ用データの書き出しは機会を見てやってみたいと思っていました。

動機

  • 現在の資源を活用する条件下で、オフライン3Dレンダラを活用し、GIなどを駆使したリアルタイムでは容易ではない映像を作れる環境の模索
  • モデルの都合、透過つまり、テクスチャによるのパンチアウトが扱えるオフライン3Dレンダラや、想定通りの挙動を実現したフロントエンドが欲しい
  • スキニングの適用を容易にしたい

作成したツール「XModel2012」(仮)の概要

  • 使用フレームワーク: WPF + XNA Game Studio 4.0
  • 非リアルタイム3DレンダラとしてVidroの実行ファイルを呼び出します。
  • XNAはリアルタイム3D描画を担当(Vidro書き出しの視点でいえば、プレビュー3D画面)
  • 開発背景: 独自のXModel形式で3Dモデルを管理/描画しています。

ツールのスクリーンショット

  • 左側は、Vidro描画結果の出力画像を表示しています。
  • 右側は、XNAを使ったリアルタイム描画です。

ツールの内容

  • オフライン3DレンダラとしてVidroを使うことにした
    • Vidroは専用シーンファイル*.vdrで記述されたシーンを読み込むことができる。物体形状はいくつかの一般的な3D形式を用いる。
  • ボーンアニメーションによるスキニング結果をメッシュに適用するため、編集時モデル(XModelドキュメント)のスキニング済みクローンを作れる機能を追加した。
    • リアルタイム描画時は、ランタイムモデルでスキニングする。
  • 物体形状には、Vidroが対応するMetasequoia (*.mqo)形式を選択して、変形済み編集時モデルをMQO形式で書き出すようにした。
    • もともとMetasequoia + Keynoteでモデルを作業して、XModelにエクスポートしていること、MQOファイルの生成が易しいことから。
  • 材質は、mqoにも書き出すが、vdr側にも書き出し、vdr側を利用されるようにした。
  • vdr用にテクスチャ(RGBA)のアルファ値から、透明度画像、アルファ(不透明度)画像を書き出すようにした。
  • XModelの構成要素をいくつか追加した(XModel2012仕様)
  • vdrに「カメラ」「点光源」「環境光(空/地)→SkyLight用テクスチャ」を書き出すようにした。
  • ツールでXModelファイルをロード後、カメラ調整、ライト調整、ボーンアニメーション再生などの操作をできるようにした。
  • 「Render」: 現在状態をvdrシーンファイルに書き出し、Vidroをプロセスで起動して描画を非同期で待ち、結果の画像ファイルをツール内で確認できるようにした。
  • 「Render Range」: アニメーションの複数のフレームを連続で「Render」できるようにした。
  • いくつかのXModel周りの調整を進めた。

 まだまだ調整が必要ですが、限定的なツール環境下で「アニメーション適用済みのプリレンダリング3Dシーンの画像や動画の作成しやすい環境」に一歩前進と言えそうです。