竹倉蔵本 - MMDAgent

開発者向け。調査・考察メモ。テーマは、「MMDAgent」です。
※※※無期休止中※※※

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

[紹介]MikuMikuDroid - Android版MMDデータ再生ツールの構築プロジェクト

2011-01-31 23:01:49 | MMDAgent関連プロジェクト
MikuMikuDroidとは、
"Android向けのpmd/vmdファイル再生ツール(編集ツール?)"を構築するプロジェクトです。
現在(2011/01/31)では、
モデルの表示・動作、および、BGM再生が可能になっているようです。


■公式ページ
MikuMikuDroid プロジェクト日本語トップページ - SourceForge.JP


※ソースが公開されています。(2011/01/31現在)
※MikuMikuDroidは、MMDAgentのフォークプロジェクトではありません。


--
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

[企画素案]MMDA-CASE = MMDAgent用モデリングツール + MMDAgent操作用ライブラリ

2011-01-29 12:58:47 | MMDAgent感想・レビュー
【記事の概要】
本記事では、現行のMMDAgentが抱えている課題、
そして、その課題を解決する手段として、MMDA-CASEを開発することの有効性を説きます。

MMDA-CASEとは、
MMDAgent用モデリングツール(MMDAgent-ModelingTool、MMDA-MT)と
MMDAgent操作用ライブラリ(MMDAgent-API、MMDA-API)のセット、
または、上記に、
先のライブラリを使用できるMMDAgentディストリビューション
(MMDAgent for Robot User Interface、MMDA-RUI)を加えたものです。


【MMDAgentの課題 = 操作方法・用途が限定されている】
MMDAgentは、音声認識・音声合成・CG作成等の既存オープンソースを組み合わせた製品です。
そのため、MMDAgentの最大の強みは、各オープンソースを連動させる手間を省くことができる点です。
しかし、MMDAgentを操作するために用意されているインターフェース、
シナリオスクリプト(FSTファイル)・音声調整プロパティ(OJTファイル)・初期設定パラメータ(MDFファイル)には、
下記の課題があります。
  01.入力が音声入力に限られている。(文字入力には対応しない。画面操作も、規定の処理以外には対応しない)
  02.出力が音声合成とCG作成に限られている。(文字出力には対応しない)
  03.入力データを再利用できない。(変数・データベースの概念がない)
  04.他アプリケーションの実行・停止ができない。(ユーザー・インターフェースの機能がない)
  05.状態遷移モデルの文法を採用している。(長編シナリオ向けではない)


【解決策1 = 外部仕様を拡張する】

MMDAgentの外部仕様拡張の図

上記の課題を解決する第一の手段は、
シナリオスクリプト(FSTファイル)、つまり、MMDAgentのマクロに、
新しいコマンド・文法の追加を行うことです。

しかし、この解決策では、下記のような課題が残ります。
 01.基本的な機能しか使えない。(文字列の抽出やSQLの発行等はできない)
 02.処理が重くなる。(ファイルの入出力には時間がかかる。変数やデータベースを用意すれば、更に時間がかかる)
 03.MMDAgent独自の仕様が増える。(操作方法の理解が難しくなる)


【解決策2 = 内部仕様を拡張する】

MMDAgentの内部仕様拡張の図

上記の課題を解決する第二の手段は、
ソースファイル、つまり、MMDAgent本体に、
拡張を行うことです。
(MMDAgentは、C/C++で実装されています)

しかし、この解決策では、下記のような課題が残ります。
 01.高度なプログラミング知識が必要になる。(シナリオライター・映像作家等が、簡単に使用できなくなる)
 02.MMDAgentのバージョンアップ対応が難しくなる。(MMDAgentが更新されるたびに、大量の修正が必要になる)
 03.特定のOSに依存する。(特定のシナリオを、他のOS用のMMDAgentで動作させることができない)


【新・解決策 = MMDAgent操作用ライブラリ+MMDAgent用モデリングツールを作成する】

MMDAgentのモデリングツール・ライブラリ使用の図

そのため、第三の選択肢が必要になります。
第三の選択肢は、内部仕様・外部仕様の両方を拡張することです。

内部仕様の拡張とは、
MMDAgent操作用ライブラリを、用意することです。
また、OSや他言語(Python等)間の互換性を確保するためのクッションとしての機能も、
先のライブラリに付随させます。
そして、必要がある場合は、
それを使用できるMMDAgentディストリビューションを、各OSごとに作成します。
(各OS用のMMDAgentに、ライブラリ対応用のインターフェースを追加する。
そして、MMDAgent更新時には、その部分のみを、更新後のMMDAgentに再構築する)

外部仕様の拡張とは、
シナリオスクリプト(C++,Python等)自動生成用モデリングツールを、構築することです。
シナリオをステートマシン図やアクティビティ図で記述することにより、
上記のライブラリを使用したシナリオスクリプトが、自動生成されるようにします。


【新・解決策の課題 = MMDAgent開発元およびフォークプロジェクト開発者との連携が必要になる】
上記の解決策を、プロジェクト化するためには、
MMDAgent開発元およびMMDAgentのクロスプラットフォーム化を目指す開発者の協力を得る必要があります。
そのためには、MMDAgent開発元自体が、上記プロジェクトを開始するのが、理想です。

以上です。
本記事をお読みいただき、ありがとうございました。


--


//修正履歴
2011/01/30
・GPL使用推奨→GPL/LGPL使用推奨→(文言削除)
 ※GPLライセンスは、他のオープンソース・ライセンスと組み合わせられないことが多いため。
・M2DA→MMDA
2011/02/08
・企画者が発起人になることが妥当である旨を削除
※現時点で、この企画のイメージに近いプロジェクトを始められている方がいらっしゃるため。

--
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

[紹介]PersonalForge - 個人向けOSS開発支援ツール

2011-01-27 00:16:40 | MMDAgent開発支援
PersonalForgeとは、
レポジトリの作成やファイルのアップロード、ブログとの連携等を、
無料・事前審査なしで行えるWEBサービスです。
個人がソースを公開するのには、適したサービスだと思われます。


提供元は、SourceForge.JPです。


詳細は、下記の記事をご覧ください。

■PersonalForgeについて - SourceForge.JP ヘルプ - SourceForge.JP


--
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

[紹介]Project-NAIP試用版 - MMDAgent式アプリケーション管理ツールのトライアル版

2011-01-26 00:19:59 | MMDAgent関連プロジェクト


Project-NAIPの試用版が、公開されました。


詳細は、CUBE370さんのブログを、ご参照ください。

■CUBE370 - MMDAgentのNAIP化計画  Project-NAIP 試用版の配布


余談ですが、
CUBE370さんは、MMDAgentのビルド方法(VisualStudio2008)を、別の記事で説明されています。
ソースのコンパイルでお困りの方は、ぜひご一読ください。

■CUBE370 - MMDAgentのNAIP化計画  【開発者向け】MMDAgentの開発環境について


--
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

[感想・レビュー]補足・MMDAgentでミクプラスを作るために必要な7の改善点

2011-01-25 07:35:46 | MMDAgent感想・レビュー


セーブ命令(※1)・ロード命令(※2)の使用イメージを作成してみました。
本イメージの詳細は、後日、説明させていただく予定です。

※1 セーブ命令とは、任意の状態を履歴に保存するためのFSTコマンドです。
※2 ロード命令とは、任意の履歴状態へ遷移するためのFSTコマンドです。


# ***浦島太郎シュミレーションゲーム***

0 a.H <eps> <eps>

# ---ストーリー画面---
COMP|a
  H 1 <eps> SYNTH_START|ミク|ミク(普)|亀が子供たちにいじめられています。助けますか?
  1 2 KEY|n SYNTH_START|ミク|ミク(普)|亀は死にました。
  1 3 KEY|y SYNTH_START|ミク|ミク(普)|亀が竜宮城に連れていってくれるそうです。連れていってもらいますか?
  3 4 KEY|n SYNTH_START|ミク|ミク(普)|村で質素に暮らしました。
  3 5 KEY|y SYNTH_START|ミク|ミク(普)|竜宮城で豪勢に暮らしました。
END_COMP

a b1 KEY|s <eps>
a b2 KEY|l <eps>

# ---セーブ画面---
COMP|b1
  0 1 <eps> SYNTH_START|ミク|ミク(普)|データ1にセーブする場合は1を、データ2にセーブする場合は2を押してください。
  1 2 KEY|1 SYNTH_START|ミク|ミク(普)|データ1にセーブしました。
  1 3 KEY|2 SYNTH_START|ミク|ミク(普)|データ2にセーブしました。
  ^1.*.2 4 <eps> <eps>
  ^2.*.3 4 <eps> <eps>
END_COMP

b1.4 a.H SYNTH_EVENT_STOP|ミク <eps>

# ---ロード画面---
COMP|b2
  0 1 <eps> SYNTH_START|ミク|ミク(普)|データ1をロードする場合は1を、データ2をロードする場合は2を押してください。
END_COMP

b2.1 ^1.H* KEY|1 SYNTH_START|ミク|ミク(普)|データ1をロードします。
b2.1 ^2.H* KEY|2 SYNTH_START|ミク|ミク(普)|データ2をロードします。


なお、本イメージでは、
セーブ命令・ロード命令を、現在のMMDAgentの仕様に追加するために、
コンポジット状態及び履歴状態指示子の考え方を導入しています。
また、セーブ命令に、複数の状態(重複可)を管理する機能を追加するために、
包括コンポジット状態(ユーザー定義要素全てを内部に持つコンポジット状態)、
包括コンポジット状態の多次元化、全次元共有履歴状態指示子という考え方を導入しています。
そして、セーブ命令発行時に、新規保存・上書き保存を選択できる機能を追加するために、
不特定次元の包括コンポジット状態への遷移という考え方を導入しています。


//コメント
我ながら、イミフw


--
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする