
-------- Start logging at 10/04/18 21:48:42
21:48 *AC2 Join (~m_ksdcom@61.245.62.140.er.eaccess.ne.jp)
21:50 *MineAP Join (~mineap@softbank126081106032.bbtec.net)
21:54 *Seacolor Join (~seacolor@d85.FtokyoFL87.vectant.ne.jp)
21:55 *b2ox Join (~b2ox@g191.124-45-209.ppp.wakwak.ne.jp)
21:58 *Moloheiya Join (~molo@y091100.dynamic.ppp.asahi-net.or.jp)
21:58 Moloheiya > もう少々お待ち下さいー
22:02 *rankingloid Join (~rankinglo@EM114-48-175-249.pool.e-mobile.ne.jp)
22:03 Moloheiya > こんばんはー
22:03 Seacolor > こんばんは
22:03 rankingloid > こんばんはー
22:03 b2ox > こんばんは
22:03 rankingloid > e-mobileなのでたぶんよく切れます
22:04 Moloheiya > わざわざありがとうございます、了解しました
22:05 Moloheiya > さて、それでは今日もよろしくお願いします。
22:06 rankingloid > よろしくお願いします
22:06 MineAP > おねがいします。
22:06 Moloheiya > 今日は開発チームが揃っていますので、開発の話をメインに進めていきます。
22:07 b2ox > 前回のログが頭の部分しか上がってないです。
22:07 Moloheiya > まず昨日ですが、Seacolorさんと2人でお話をしてきまして、ミーティングを行いました。
22:08 Moloheiya > うｗ 今上げます・・・ すみません
22:08 Moloheiya > 上げましたー
22:09 Moloheiya > そこで現状の確認と、これからの動きについて直接相談しましたので、まずその点から。
22:11 Moloheiya > 最初に、ボカロプラスのプログラムについて確認を行っていこうと思います。これは、まだモジュールの部分やシステムの作り方で、個人間で相違点があるからで、確認した部分は後に文章にまとめて閲覧できるようにします。
22:11 Moloheiya > 分からない部分があれば、会話が流れる前にすぐに発言して頂ければと思います。
22:13 Moloheiya > ボカロプラスの製作チームは、開発班とコンテンツ作成班に分かれています。この二つは完全に分離していて、コンテンツ作成班は開発のことを知らなくても大丈夫なように分担しています。
22:13 Moloheiya > 今日お集まりのメンバーは、開発班ですね
22:14 Moloheiya > まずボカロプラスは、システムとモジュールに分けられます。
22:14 Moloheiya > システムはプログラム本体、3Dを表示したり、シナリオデータを解読したり、実行部分ですね。
22:15 Moloheiya > そしてモジュールは、シナリオデータやモーションデータなど、コンテンツ作成班が製作したデータです。
22:15 *MineAP Quit (EOF From client)
22:15 *MineAP Join (~mineap@softbank126081106032.bbtec.net)
22:16 b2ox > この場合、モジュールはデータコンテナって理解でOK?
22:16 Seacolor > Yes.
22:17 b2ox > モジュールで新機能追加ってことはしない？
22:17 Moloheiya > モジュールはあくまでデータコンテナで、新機能は本体のアップデートで対応する形になりますね
22:17 Moloheiya > ただシナリオの追加等は、モジュールを追加するという考え方です
22:18 b2ox > シナリオはデータなのでデータコンテナであるモジュールで配布するってことですね
22:18 Moloheiya > ですです
22:19 Seacolor > モジュールはあらゆるデータのコンテナとなる事が可能ですが、
22:20 Seacolor > 基本的に、読み込み->破棄を繰り返す動的なデータのみ、モジュールで扱う想定です
22:20 Moloheiya > 3Dモデルなど、破棄しないデータはモジュールとしない、ということですね
22:22 b2ox > 3Dモデルもモジュールにしたほうが良いんじゃないかと思ってるんですけど
22:22 Moloheiya > そこも後ほど話そうと思っていた部分なんですが、モデルの一部分、例えば髪型を変えるなどのときに
22:23 Moloheiya > 同じモデルでオブジェクトの表示を切り替えることが出来るか出来ないかで、また変わってくると思ったので
22:24 Moloheiya > b2oxさんとご相談したかったところです。
22:25 b2ox > 髪型変更とかした物は別モデルということにしたほうがシステム的には簡単だと思います
22:26 Moloheiya > アクセサリーとかはどうでしょう？
22:27 b2ox > アクセサリーはモデルとは別オブジェクトとしてモデルの一部に連動して動くって感じかな
22:28 Moloheiya > なるほど・・・ それって実装は可能そうですか？
22:29 b2ox > 例えば帽子は頭のボーンに対してappendChildすればOK
22:29 *rankingloid Quit (Ping timeout)
22:30 Moloheiya > おお、それならアクセサリーもシナリオデータで制御出来るようにしましょう
22:31 b2ox > 利用しやすい形にはまだなってないけど、 http://twitpic.com/zoobs の青とか緑の箱はそんな感じの置き方してます。
22:32 AC2 > こんばんわ。仮眠してましたorz
22:32 Moloheiya > 了解ですー ではアクセサリーを付けるということも頭に入れておいて頂ければ。
22:32 Moloheiya > こんばんはｗ
22:33 *yaki_aki Join (~yaki_aki@ntsmne016031.smne.nt.ftth.ppp.infoweb.ne.jp)
22:33 yaki_aki > ばわー
22:33 Moloheiya > こばわー
22:33 b2ox > こんばんは
22:34 Moloheiya > 髪型変更で別モデルなら、3Dモデルもモジュールにしておいた方がいいのかな
22:34 Moloheiya > 指示があるまで破棄しないという形にしておけば。
22:35 b2ox > pmdの読み込みがやっぱ時間掛かるので一旦中間形式にしたものをモジュールに登録したほうが良いんじゃないかと思ってます
22:35 Moloheiya > バイトコードみたいなものですかね
22:36 b2ox > んで、すでにpmdをActionScriptとして書き出す物はコミットしてたりします
22:36 Moloheiya > 最高に仕事が早いですね
22:37 Moloheiya > ではpmdをASにしたものをモジュールとして、3Dモデルもモジュールで読み込む。という形でよろしいでしょうか？
22:37 *ejiwarp Join (-ejiwarp@123-204-43-10.static.seed.net.tw)
22:37 b2ox > ただ、その先の中間形式→PMDViewerのオブジェクトにする部分はまだ作ってなかったり(^^;
22:37 yaki_aki > ちなみに髪型のモーフィングとか無理ですよね？
22:38 ejiwarp > こんばんは
22:38 Moloheiya > こんばんはー
22:38 yaki_aki > ばわー
22:38 AC2 > こんばんわー
22:39 b2ox > 髪型モーフィング専用モデルを作ればできないこともないです
22:39 yaki_aki > それは夢が広がリング！！
22:40 yaki_aki > 胸に一家言ある人も安心ですねｗ
22:40 Moloheiya > スライダーですｋ
22:40 b2ox > というかpmdの表情データを顔だけじゃなくて髪まで含めれば何とかならんこともないって感じです
22:41 Moloheiya > IRCは発言が消せないのが痛いですね！
22:41 MineAP > ｲﾀｸﾅｲﾖー
22:42 Moloheiya > MMDは髪型モーフィング出来るんでしたっけ
22:42 Moloheiya > モデルによるのかな
22:42 yaki_aki > 割と暇になってきたのでちょっとMMDを触ってみようかなあ
22:42 Moloheiya > ボーンが大変だとはよく聞きますｗ ＞MMD
22:42 b2ox > 髪も顔の一部ですって扱いで作れば弄れるはずですよ。
22:43 b2ox > 原理的には
22:43 Moloheiya > りょうかいですー
22:44 b2ox > Lat式ミクのヘッドホンとかメガネとかは表情の1つですし
22:44 Moloheiya > そのモデルの方なんですが、現在Latさんに交渉を持ちかけています。
22:44 b2ox > ほう！
22:44 Moloheiya > フレームレート的に大丈夫なのかという話もあったんですが
22:45 yaki_aki > すばらしい！
22:45 Moloheiya > ボカロプラスは、ずっとダンスをするソフトではなく"しぐさ"さえ動けば大丈夫で
22:45 Moloheiya > 動かないところはループを止めれば、低スペックでもそこまで遅くはならないだろうということで
22:46 Moloheiya > 人気も高いLat式さんを使わせて頂きたく、お話中です・・・
22:46 Moloheiya > 返事が返ってき次第、お伝えします。
22:46 MineAP > すごいことになってきた
22:46 Seacolor > パフォーマンスチューニングについては、私が何とかします
22:47 Moloheiya > あとボカロプラスの解像度は、最初は640x480を考えていたんですが、800x600でもなんとかいけるかという話で
22:47 Moloheiya > 800x600メインで考えています。
22:49 ejiwarp > Flashで3Dを800x600で走るなんで凄い話だな
22:49 Moloheiya > 最近は解像度高くて640x480だと少し小さいんですよね・・・
22:50 b2ox > PMDViewer自体最初から800x600で作ってますw
22:50 Seacolor > そうだったのかー！
22:50 Seacolor > 最悪、パフォーマンスについてはAlchemyという手がありますので……
22:50 Moloheiya > 匠や
22:51 ejiwarp > Alchemyか....
22:51 *rankingloid Join (~rankinglo@EM111-188-140-183.pool.e-mobile.ne.jp)
22:51 ejiwarp > こんばんは
22:51 Moloheiya > おかえりですｗ
22:51 rankingloid > こんばんは^^
22:51 b2ox > 実際Alchemyって本当に速いんですか？使ったことないんでよくわからないんですけど。
22:52 ejiwarp > 一口VMなんで不安もあるけどｗ
22:52 Moloheiya > 確かC++を走らせるんでしたっけ
22:52 Seacolor > 私も使ったことはありませんが、spark project勉強会における発表によれば相当速いようです
22:52 Seacolor > Cで書かれたプログラムを、abcに変換するものですね
22:53 Moloheiya > なるほどー
22:54 Moloheiya > とりあえず3Dはこういう形で。そしてVMDViewerをボカロプラスのシステムに組み込みます
22:54 b2ox > AS3をAlchemy並に速いabcにコンパイルするものがあれば良いのに
22:54 Moloheiya > ｗｗ
22:54 ejiwarp > JITコンパイルかｗ
22:55 AC2 > どう見てもJITです本当に(略 
22:56 Moloheiya > あと、もう一つ聞いておきたいことがありまして
22:56 Moloheiya > Papervision3Dは、音声も扱うことが出来るって本当ですか？
22:57 b2ox > PV3Dは音声は扱わないと思いますけど
22:58 Moloheiya > わかりましたー
22:58 Moloheiya > SoundTransformなど使って、MineAPさんにお願いします。
22:59 b2ox > 音声を扱うクラスはPV3Dには存在しません
22:59 MineAP > 勉強します。
23:00 Moloheiya > PlayVoice( src, vol ); とか PlayBGM( src, loop, vol ); とかあると便利そうです
23:01 MineAP > srcはモジュールの名前かなにか？
23:01 Seacolor > 今ログを確認してきたのですが、BetweenAS3には音声を扱うAPIがある？
23:01 Moloheiya > ですです。サウンドデータ(モジュール)ですね
23:02 MineAP > あるような気が > BetweenAS3
23:02 Moloheiya > http://blog.yaimo.net/2009/09/06/921/ こういうのとかかな
23:02 b2ox > ちなみにさっき言っていたpmd→as変換のコードはここに置いてます(vmd→asも) http://sourceforge.jp/projects/vocaloplus/svn/view/garbage/b2ox/converter/?root=vocaloplus
23:03 Moloheiya > まぁライブラリは多いに活用して頂ければｗ
23:04 MineAP > インターフェースを決める機会をいただきたいです
23:04 MineAP > インターフェースと言うか外部仕様か
23:04 b2ox > BetweenAS3そのものには音声操作はないけど、音声の時間制御にBetweenAS3を使う物はある。
23:04 Seacolor > PMDViwerには音声を再生する機能はありますか？
23:05 b2ox > 付けてません
23:05 Seacolor > 了解です。　では、音声再生機能はアプリケーションのシステムの方に組み込む方向で
23:06 Moloheiya > とりあえずボイス・SE・BGMは分けて音量調節出来るようにしたいので
23:06 Moloheiya > そこは分けて貰って、あとマスターボリュームなんかで制御出来ると良いと思います。
23:07 Moloheiya > あんまり細かいのは用意出来ないですが、概要と関数・引数を書いた簡単な仕様書は作りましょう
23:07 b2ox > BetweenAS3をモーションの時間制御に利用してるので先程の音声ライブラリと組み合わせた音声付きのモーション再生は出来るとおもいます
23:07 Moloheiya > まぁ3種類の再生と停止・音量制御くらいかな
23:07 MineAP > ふむふむ
23:08 Seacolor > PMDViewerの方に組み込んだ方が映像との同期がしやすいかもしれませんね
23:08 Moloheiya > ひらがなデータがあれば、口パクも出来るかな・・・ そこは労力次第か
23:08 MineAP > 同期はそうかも知れませんねぇ・・・
23:08 Seacolor > どうします？　やっぱりPMDViewerの方に組み込む方針にしますか？
23:09 b2ox > PMDViewerに組み込むというよりも音声付きモーション再生を担当するクラスを作るほうが良いと思います
23:10 Moloheiya > 音声と同期する必要があるとしたら、映像よりテキスト表示の方じゃないかと思うんですよね。でも、テキストとの同期は要らない気がして。
23:11 Moloheiya > 実際ボイスに合わせてテキストを表示すると、すごく遅く感じるから、コンフィグ画面で表示スピードを調節出来れば十分かなと。
23:11 Moloheiya > あとシナリオデータに、モーション再生と音声再生を同じ部分に書けば
23:12 Moloheiya > とりあえずは大丈夫かと思っていたんですが、どうでしょう。そこまできっちり同期する必要はないと思うんですが。
23:12 MineAP > いいような気がします
23:14 b2ox > 例えばですが、new ActionPlayer(model, motion, voice)みたいな感じでモーションと音声を同期再生するオブジェクトを作っちゃうとか
23:16 Moloheiya > それを作っても、BGM・SEを再生するときは結局音声制御の関数が要るので、それなら分けておいてもいいかなーと
23:18 b2ox > まぁ、スクリプト側でマクロを定義する感じでも良いのかも
23:19 Moloheiya > あと、プログラムの動きについてです。
23:20 Moloheiya > ボカロプラスが起動すると、Now loadingか何かテンションの上がるスプラッシュスクリーンorムービーが流れるのは置いておいて
23:20 MineAP > そこは決まりか・・・
23:21 Moloheiya > モジュールコントローラーが起動して、モジュールデータベースからモジュールを読み込みます。
23:21 Moloheiya > このとき、いわゆるセーブデータもロードして、保存された変数等もロードします。
23:22 Moloheiya > ローカルストレージですね
23:22 AC2 > おお、ローカルストレージ
23:22 Moloheiya > その次に、指定されたシナリオモジュールを取りに行きます。
23:23 Moloheiya > そのシナリオモジュールの先頭には、@importかuseかまだ決まってませんが、そのシナリオデータで使うモジュールが指示されていますので、これをボカロプラスは初期ローディングします
23:24 Moloheiya > このとき、使用する変数なども指定しておいてロードします。これでプレイ中の動作速度を落とさないようにしています。
23:24 Moloheiya > あとは、シナリオ通りに読み進めていき、BGMを再生したりモーションを動かしたりします。
23:24 Moloheiya > 終端まで来たら、次のシナリオモジュールを読み込みに行くわけですが、このときロードしたモジュールはアンロードされます。
23:25 Moloheiya > 画面表示的には暗転、シーンの切り替えという感じです。内部的にはメモリが解放されてるわけですね
23:26 Moloheiya > あとはくりかえしで、シナリオモジュールで変数なども定義出来ますのでそのデータを利用してイベントを起こしたりも出来るという感じです。
23:26 Moloheiya > 何かご質問等ありますでしょうｊか？
23:27 MineAP > モジュール間でデータの受け渡しとか出来るようにするんですか
23:28 b2ox > 変数はグローバル変数とシナリオローカル変数があるのかな？
23:29 MineAP > モジュールが情報を覚えておかなくても、シナリオが覚えておけばいいのか
23:29 Moloheiya > モジュール間でのデータ受け渡しは、グローバル変数での受け渡しになります
23:29 Moloheiya > シナリオローカル変数も実装する予定です
23:29 MineAP > （あれ、シナリオはモジュールだった。混乱している。）
23:30 MineAP > グローバル変数を使う。了解です。
23:30 Moloheiya > モジュール＝ファイルという感じで。
23:30 Moloheiya > グローバル変数がセーブデータになる形ですね
23:30 Moloheiya > シナリオローカル変数はシナリオが終了したら破棄されます
23:30 b2ox > 1シーン=1モジュール=1ファイルなのかな
23:31 Moloheiya > シナリオモジュールはそうですね
23:32 Moloheiya > あと何か質問等ありますでしょうか？
23:33 b2ox > シナリオモジュールが破棄されるときはローカル変数、シナリオデータが破棄される。モーションとか音声は？
23:34 Moloheiya > モーションや音声自体には変数とかはなく、ただシナリオモジュールから呼び出されるデータという形ですので
23:34 Moloheiya > モーション・音声が破棄されます
23:35 Moloheiya > ボカロプラスのメモリからアンロードされる感じで。
23:36 b2ox > いまのところモーションを破棄する動作は実装してないです
23:38 Moloheiya > ずっと起動してると重くなってくるので、そこも頭に入れておいて下さいー
23:38 b2ox > 了解。
23:38 Seacolor > より正確にいいますと、シーンが終了した時点でメモリから削除されるわけではなく
23:39 Seacolor > シナリオを再生するシステムからの参照が切られます
23:39 b2ox > あとはGCにおまかせ？
23:39 Seacolor > です
23:40 MineAP > シナリオ消すときに明示的にアンロード要求が飛ぶのかと思ってましたが
23:40 Seacolor > 一応、モジュールに対してはアンロードするつもりですが
23:41 Seacolor > モジュールが管理していた音声やモーション自体は、参照が存在する限りは生き残る筈です
23:41 MineAP > ほうほう
23:42 MineAP > ちゃんとGCされるように、参照はキレイに切らないとダメだと
23:42 Seacolor > シーンが終了した時点で音声やモーションに対してアンロード要求を送るかどうかは私だけで決めるわけにはいかなかったので
23:42 Seacolor > そのあたりは、ご意見をいただければと思います
23:43 Moloheiya > 確かにBGMをシーン終わったからってアンロードされると、色々不都合ありますしね
23:43 Moloheiya > あくまで表面上は画面切り替えとしなくてはならないわけですし。
23:44 MineAP > 考えてみると画面切替だけして音楽は流しっぱなしにしたい気もしてきました
23:44 b2ox > モデルモジュール(中間形式) からデータ取得、MikuMikuDanceオブジェクト新規作成。モーションモジュール(中間形式)からデータ取得、MikuMikuDanceオブジェクトにモーションオブジェクトを新規作成＆登録ということを考えてるんですけど
23:46 b2ox > モジュール破棄の時はモジュールのデータだけでなくて派生して作ったオブジェクトも消す仕組みが必要ですね。
23:46 Seacolor > モジュール破棄の時に消してしまったも大丈夫なものなのですか？
23:47 Seacolor > しまったも -> しまっても
23:49 b2ox > 中間形式のデータそのものはすぐ捨ててもかまわなくて、システムで実際に使うデータはそのコピーみたいな感じですね
23:50 Seacolor > 実際に使うデータを破棄するタイミングは、システムとPMDViewerの連携如何があると思うので
23:51 Seacolor > 相談したいところです
23:51 b2ox > 具体例でいうと中間形式データは{vertex: [{x: 1, y:2, z:3}, ..], }みたいになっててそれをvertex = [new Vertex(1,2,3), ..]みたいに変換して取り込む感じです
23:54 Seacolor > 破棄のタイミングは、他のモデルやモーションを新しくロードした時？
23:58 b2ox > モデルやモーションのロードはそれなりにコストがあるのであんまり頻繁にはやりたくないですね
23:58 Seacolor > まあ、破棄のタイミングについては後日話しあいましょう
23:59 Moloheiya > ではそろそろ12時も近づいて来ましたし、今日はここまでにしましょうか。
23:59 b2ox > 破棄の方法自体はデータへの参照を切ってGCにまかせればよいのかな？
23:59 Seacolor > 理論上はその筈です
