MMDモデルの仕様について参考になるサイトのリンク集

自分用メモ。今後追加していくかも。

 

とある工房

http://kkhk22.seesaa.net/

PMXエディタを公開しているサイト。

付属しているPMX 2.0/2.1 形式の仕様書は必見。

MMDのモデルデータ(PMD)形式 めも (まとめ)- 通りすがりの記憶

http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4

PMD形式の解析結果を掲載しているサイト。

MikuMikuSoft開発室

http://www18.ocn.ne.jp/~atrenas/index.html

上の解析結果を元にC++でPMD形式のMMDモデルの読み込み、表示プログラムを

ソース付きで公開しているサイト。

PICの罠

http://www2.ocn.ne.jp/~mhage/PIC_Trap/

MMDモデルの表示、動かし方(Bulletによる物理演算込み!)を

ニコニコで動画にしている方のサイト。

更にサイトにはソースコードもある。

量子猫のブログ: SharpDX

http://schroedinger.tea-nifty.com/blog/sharpdx/index.html

C# + SharpDXでPMDファイルの読み込みについて

ソースコード付きで解説している。

VPVP wiki – MikuMikuDance/PMXの概要

http://www6.atwiki.jp/vpvpwiki/pages/284.html

PMD形式とPMX2.0形式の違いについて語られている。

MMDFormats

https://github.com/oguna/MMDFormats

PMD、PMX2.0、VMDの読み書きが行えるC++製ライブラリ。

pymeshio

https://pythonhosted.org/pymeshio/

PMD、PMX2.0、VMD、MQOの読み書きなどの機能を持つPython製ライブラリ。

続きを読む

StepMania5で遊ぼう – フォルダクローズ

フォルダクローズってのはbeatmania IIDXにもあるあの機能のことです。

さーてプログラム組むぞー って調べたらもうあるじゃん!

——– 終 冬 ——-

 

——– 再 開 ——-(このネタも古いな…)

やり方

フォルダクローズの機能を使いたいテーマのmetrics.iniを開き、

[CodeDetector]の下に以下のように記述して下さい。

(Command)の部分はごdefaultテーマのmetrics.iniに書いてある

マニュアルを見ながらご自由に。

例えば有名なテーマのCyberiaStyle 8 Solidでは

“Up-Down”(上下同時押し)になってます。

他にもフォルダクローズに似たような機能で、

「今開いてるフォルダを閉じて、前/次のフォルダに移動する(PrevGroup/NextGroup)」なんてのも。

 

StepMania開発スタッフさん、曲をまとめているものの名称は

Folderなのか、Groupなのか、Section(ソースコード的にはこれが使われている?)なのか

はっきりして下さい…

続きを読む

Ubuntu14.04でwaifu2x-converterをコンパイルする

凄い人がwaifu2xを作り、それを見て凄い人達が集まり、界隈を急速に発展させていく。

一種の社会現象の始まりを見ている感じです。

Pythonで移植されたり

C++ + OpenCVで移植されたり

GUIでユーザビリティを向上させたり

と、目覚ましい勢いで進化し続けています。アツイですね。

今回は上に挙げた、waifu2xの一部機能をC++ + OpenCVで実装した

waifu2x-converterをUbuntuでコンパイルして動かしてみたいと思います。

 

事前準備

OpenCVのインストールまでの流れは以下を参考にさせていただきました。

Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS – Sebastian Montabone
http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/

まずは、既にインストールしているソフトを最新にしておきます。

次に、OpenCVに必要なソフトをインストールします。お、多い…

 

OpenCVのインストール

OpenCV公式(http://opencv.org/)からソースをダウンロードします。

GitHub(https://github.com/Itseez/opencv/)からでも可?

cd先、解凍先は各自の環境に合わせてお好みでどうぞ。

インストールの準備を粛々と進めます。

参考にしたサイトでは、cmakeの結果を確認する必要があるとのことですが、

とりあえず俺はあまり気にしなくても問題なかったです。waifu2x-converterのコンパイルに失敗した時は

ここを気にしたほうがいいかもしれません。

 

いよいよOpenCVのインストール。

makeが数時間というレベルで完了まで時間がかかるので気長に待ちましょう。

 

OpenCVインストール後の設定

を行います。

多分ファイルが存在せず新規ファイルになりますが気にせずに以下を追加して保存します。

opencv.confの設定を反映させるため?に以下を実行します。

更に以下のファイルを開き、ファイルの末尾にその下の2行を書いて保存します。

再起動します。

これでOpenCVを使う準備が完了しました。

 

waifu2x-converterのコンパイル

兎にも角にもコンパイルするにはソースコードがないと始まりません。

そしてコンパイルです。OpenCVの機能を使ったプログラムのコンパイル方法は

以下を参考にさせていただきました。

LinuxでOpenCVを入れて適当なコードをコンパイルするまで
http://www.yasutomo57jp.com/2010/09/01/linux%E3%81%A7opencv%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E9%81%A9%E5%BD%93%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7/

何もエラーが出なければコンパイル完了です!

 

waifu2x-converterを使う

動かすのに必要な基本的なパラメータは

です。(-oは無くてもいけるけど)

デフォルトの設定は本家サイトでいうノイズ除去弱、2倍に拡大です。

Windowsペイントで拡大したのと比較した画像を用意してみました。

画像拡大しないと分かりづらいです。

(左:ペイント 右:waifu2x-converter)

cutin_actor4_l_hikaku

(使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))

元々の画像のノイズが少ないので効果が少ないように思いますがそれでも一目瞭然です。

あのwaifu2xを移植したものですから当然ですね。

でも、さすがに本家waifu2xとは変換処理に若干違いがあるようです。

 

waifu2xとの違い

  1. 処理速度の違い

    waifu2x-converterはwaifu2xより変換処理が遅いようです。

    これは作者のアミーゴ(@WL_Amigo)さんの

    拙作のコンバータがメモリ喰らいなのです…

    という発言から、概ね事実だと思います。

    でかい画像を変換させるにはPCにかなりのメモリを搭載しないとダメみたいですね…

  2. 透過PNGの処理結果

    下の画像を見て下さい。

    actor4_w2x_hikaku

    (使用画像掲載元:「臼井の会」(http://usui.moo.jp/frame2.html))

    左がwaifu2x、右がwaifu2x-converterによる透過PNGを2倍に拡大した結果になります。

    透明度の情報が失われてるっぽいのはどっちも同じですが、

    明らかにwaifu2x-converterの方は結果が不自然です。

    これは今後のverUPに期待ですかね。

 

今回はUbuntuで動かしましたが、Windowsでも動くというのは

大きな進歩だと思います。マジ素晴らしいです。

作者のアミーゴさんに感謝をすると共に、

今後のwaifu2xの発展に大きく期待したいということを述べたところで、

この記事を締めたいと思います。

続きを読む

GitHubデビューしました。

https://github.com/rokudw/smcreader

超今更ですがようやく俺もGitHubにリポジトリを持つようになりました。

リポジトリに置いたSMCReaderというプログラムの内容ですが、

StepManiaの譜面ファイル(現在は.smと.sscに対応)の情報を

JSON形式で出力するだけの簡単なプログラムです。

既にありそうなプログラムですが、Haxeで書いているため、

他の様々な言語のプログラムに変換できるのが強みといえば強みです。

 

StepManiaの譜面ファイルをパースするプログラムは結構昔から作っていて、

はじめはExcel VBAで書いて、PHP、C#へと移植していきましたが、

移植していくうちにそれぞれのプログラムで細かい差異がでてきてしまい、

当然他の言語に反映するのは面倒だ、もう一本化したい、というのが

SMCReaderを作った理由です。

StepManiaとほぼ同じMITライセンスなので改変とかも自由です。

まだ出来たばかりなので機能がしょぼい、バグがたくさんあるなど

不便なところがあると思いますがこれから改善していきたいと思います。

皆様よければSMCReaderを使ってあげて下さい。

 

どうでもいい話ですがSMCReaderの「SMC」は「StepMania Chart」のことです。

続きを読む

StepMania5で遊ぼう – Edit機能にBPM倍増、半減コマンド追加

StepManiaで譜面を作る時、途中でBPMを倍にしたり半分にしたりするギミックを

入れたことのある人は多いんじゃないでしょうか?

やり方は普通、Edit画面でF7かF8を押してBPMを変更するのが普通だと思うんですが、

F7/F8だけでBPMを大幅に変更するのは正直面倒です。

BPMを変更したい箇所で1回だけBPM変更キーを押して

譜面ファイルをテキストエディタでBPMを書き換えるのもアリだと思いますが、

できればEdit画面上で一発でBPMを倍にしたり半分にしたりしたいものです。

そこで、「SHIFT+F7でBPM半減、SHIFT+F8でBPM倍増」をできるように

プログラムを改造してみたいと思います。実は結構簡単です。俺でもできるし。

 

ScreenEdit.hの編集

134行目あたり、列挙型変数EditButton内の

EDIT_BUTTON_BPM_DOWN,

の下に以下を追加

 

ScreenEdit.cppの編集

221行目あたり、

name_to_edit_button[“BPM_DOWN”]= EDIT_BUTTON_BPM_DOWN;

の下に以下を追加

 

361行目あたり、InitEditMappingsメソッド内の

m_EditMappingsDeviceInput.button[EDIT_BUTTON_BPM_DOWN][0] = DeviceInput(DEVICE_KEYBOARD, KEY_F7);

の下に以下を追加

m_EditMappingsDeviceInput.button[EDIT_BUTTON_BPM_UP][0] = DeviceInput(DEVICE_KEYBOARD, KEY_F8);

の下に以下を追加

 

2379行目あたり、
case EDIT_BUTTON_BPM_UP:
case EDIT_BUTTON_BPM_DOWN:
ブロックを変更

 

以上の修正を行ってビルドすれば完成です。

一応動作するのが確認できるように動画を作りました。

 

どうでしょう、思ったより簡単だったと思います。

というかなんでこの機能ないのか不思議に思えるくらい使える機能だと思うんですがね…

 

今回はプログラムのソースをいじって機能を追加しましたが、

もしかしてluaとか使ってこういう機能も追加できるんでしょうか?

StepMania5はluaで何でもできちゃうイメージがあるんですが…

続きを読む