MMDSpriter の サンプルを用意してみた

http://d.hatena.ne.jp/alpha_neet/20120313/1331624282 の続きです。



前回のだと今いち分かりづらかったので歩くだけのサンプルを用意してみました。


http://www4.atpages.jp/alphaneet/mmd-spriter/ から実際に動かせます。

操作方法
左に移動
右に移動
Enter 背景画像の切り替え


なんか結構いい感じじゃないでしょうか?ちょっとヌルっとしすぎててドット絵っぽくはないですが^q^


というかスーファミドンキーコングっぽくないですか?って知り合いに言うと「つまりスーファミレベルということだな」と言われました^ω^;;ハハッワロス。おっしゃるとおりですね(ニコッ


あと、全部画像データもってるのでわりと容量食うんですが、DVD二枚とかでエロゲーが売られてるご時世なんで多少のドカ食いはキニシナーイということで(`・ω・´)


web 提供とかだと回線使うので最適化考えないとだめですが、同人ならまぁ今のままでいいかなーという感じです。


あとは、エフェクトを簡単に作る方法と、二頭身ぐらいの(ネンドロイドっぽい感じの)ローポリをメタセコイアで作るスキルと、MMDの使い方をマスターしたら、同人ゲーレベルのグラフィックは大丈夫そうですね!!(先長すぎワロタ)


誰かグラフィッカーのお友達募集です!!一緒にゲームつくりましょう!!(切実)
twitter, skype ID ともに alphaneet です!ぜひご一報を!(くわっ

素材使わせて頂きました。

http://www6.atwiki.jp/vpvpwiki/pages/236.htmlhttp://bowlroll.net/up/dl829
モーションデータはここからお借りしました。ありがとうございますorz


http://www.sozairoom.com/FS_S1033.html
背景画像はここからお借りしました。ありがとうございますorz

MMD をゲームの素材として使えるか試してみた

環境

OS Windows7 SP1 64bit
AviUtl 0.99k2
MMD 7.39
ImageMagick 6.7.5

デモ


知り合いから


「○と×とかの図形だけだとでユーザーはやってくれませよ」


「いや、俺はこの状況を打破するジツがあるから問題にい」


「んじゃ、それやってくださいよ」


「まだそのときではない。ゲームが完成してからだ」


「でも試してみないと上手くいくのか分かりませんよね」


「はい、そのとおりです」


というわけで試してみた。


イデア自体は単純で MikuMikuDance の動画をそのままゲームの素材として使えばいいんじゃない?という感じです。


3Dリアルレンダリングは重そうだし、やりかたよく分からないので一度レンダリングした動画を吐き出してそれをペラペラアニメーションさせるという感じ。


2Dゲームならこの方法でも問題ないかなーとか思ったり。もっといい方法があれば教えてください( ;´。 `;)


以下にやりかたの簡単な説明をのせておきます。

MikuMikuDance

http://www.nicovideo.jp/watch/sm12995526 を参考に MikuMikuDance で適当にモーションを付けます。


GIMPでもペイントでもなんでもいいので適当な抜き色を決めて(本体で使ってない色。緑か青が普通だと思います)バケツツールで背景画像を作って MMD にドラッグ&ドロップ


エクスポート時に メニュー>表示から
アンチエイリアス、座標軸表示、地面影表示を OFF にします。


メニュー>ファイル>AVIに出力から無圧縮で出力します

AviUtl

http://spring-fragrance.mints.ne.jp/aviutl/
ここから「連番BMP出力 plugin」をダウンロードして、aviutlと同じフォルダに置きます。


aviutl を起動して、先ほどの avi ファイルをドラッグ&ドロップ


メニュー>ファイル>プラグイン出力>BMP連番出力


ここまでで、動画の連番のBMPがどこかのフォルダに吐き出されていたら成功

ImageMagick

http://www.imagemagick.org/script/index.php


から最新版の Windows の 64bit 版の dll.exe を落とす。


http://www.imagemagick.org/download/binaries/ImageMagick-6.7.5-10-Q16-windows-x64-dll.exe


今回はこれにしますた。インストール画面は全部 yes を押せばおk。
ただ、インストールしたパスはメモっといてください。

MMDSpriter

http://www4.atpages.jp/alphaneet/mmd-spriter/windows.zip


を落として、中の config.xml を開きます。


ここの部分のパスが、ImageMagick のインストールパスと違う場合は、TeraPad とかで自分のインストールパスに編集してください。


ほかの config.xml の説明は後述します。


先ほど吐き出した。連番 bmp を import フォルダの中にいれてください。


mmd-spriter.jar をダブルクリックで起動して、適当にドラッグで範囲選択をして、Enter を押すと変換されたものが export フォルダに出力されます。

config.xml の内容
imageMagickPath imageMagick がインストールされてるパス
importPath 読み込む画像フォルダのパス
exportPath 出力する画像フォルダのパス
importExt 読み込む画像タイプの拡張子(bmp, png, jpg, gif など)
exportExt 出力する画像タイプの拡張子
exportSize 出力する画像サイズ
操作方法
マウスドラッグ 選択範囲の決定、選択範囲内なら移動
Enter 変換開始
前の画像
次の画像
x 入力と出力のビューワー切り替え
w 選択範囲を上に移動
s 選択範囲を下に移動
a 選択範囲を左に移動
d 選択範囲を右に移動
i 選択範囲を縦に縮小
k 選択範囲を縦に拡大
j 選択範囲を横に縮小
l 選択範囲を横に拡大
MMDSpriter ソースコード

https://github.com/alphaneet/mmd-spriter


scala と processing で書きました。

ほどほどの画質でさくっと youtube にうpる方法(もっといい方法募集)

スクリーンショットの延長線上ぐらいのお手軽さで動画をうpしたいなーと思い色々試してみました。

環境

OS Windows7 SP1 64bit
アマレココ 3.10b
Windows Media Video(WMV) 9.x

インストール

アマレココのインストールは http://d.hatena.ne.jp/alpha_neet/20111002/1317568313 らへんを参考にしてください(ほどんど書いてませんが)


H.264エンコーダーの単体がどこにあるか分からなかったですorz
WMV9 も評価高いらしいのでそっちにしました。
むしろエンコーダーとコーデックの違いがいまいち分からないぐらい動画スキルでやばいです( ;´。 `;)


http://sourceforge.jp/projects/sfnet_senriska/downloads/Complete/Codec%20Package/wmv9VCMsetup.exe/


もし↑が消えてたら「WMV9 コーデック」とかでぐぐると出ます(ハズ)


http://i-comp.biz/wordpress/275 を参考にコーデックの部分を「Windows Media Video 9」にすればおk。
あとは動画ファイルを youtube にドラッグ&ドロップすれば完了。


では youtube にあげるまでの動画をテストペタペタ。
まぁまぁお手軽っす。これからはスクリーンショット貼るノリでどんどん動画上げていきたいっすっす!!


package object の定義は外部からでも(implicit も含めて)使えるらしい

環境

scala 2.9.1

ものすごい勢いで REPL を立ちあげた

http://d.hatena.ne.jp/hideshi_o/20111207/1323275884
ここを見てびっくりギョウテンして慌てて確かめてみたんですが、、、

scala> import scala.sys.process._

scala> "ls" run

アイエエエ!ナンデ!?run ナンデ!?


この謎に満ちた現象を解決すべき物凄い勢いで調べてみると


https://github.com/scala/scala/blob/master/src/library/scala/sys/process/Process.scala#L230
ここで implicit def を定義した trait を用意して

https://github.com/scala/scala/blob/master/src/library/scala/sys/process/package.scala#L205
package object の形にしてるっぽい。


な、なるほど、追ってみれば普通に分かりますが、package object の定義を import で取れるというのを知らなかったのでびっくりしました。


「package object だって object だよね。」と言われればまぁおっしゃるとおりなんですが、なんかその発想はなかったわ。。。という感ですた( ;´。 `;)


つまり、↑は

scala> import scala.sys.process.stringToProcess

scala> "ls" run

って感じっぽいですね。


これ今まで知らなくてすごい損してました。もちろん implicit def を定義しまくると(しかも package object !!)物凄く可読性下がるとは思うので最低限にしたいですが、いざという時は使いたいなーという気持ちが抑えれないデス!! import hoge._ には魔法が込められている!

適当に試したサンプルコードをペタペタ

class の引数をずらずらーと書きたくないでござる!

そもそもこういう事で悩むのすら間違ってる感はありますが、とりあえず困ってることをまとめる意味も込めてブログに書いてみる。


ちなみに僕の設計力はやう゛ぁいんで!!なんでこういう作りなの?っていうマサカリどんどん投げてくれると助かりマンモス!!

簡単な例

チワワは犬で、犬は動物みたいなクラス設計です。んで遺伝子を引数として渡す的なノリで。


これ僕がオブジェクト指向始めてからずっと悩みの種なんですが、根底クラスに引数がある場合、
今回は一つですけど、これが大量にある場合。継承する度に引数書くのだけでも一苦労みたいな感じでいつもぐぬぬしてました。

trait or abstract class にして最後に定義する。

trait にすると、継承の時に地獄のようなパラメーター渡しをしなくてよくてマンモスウレピー!


大事なことなので二回いいますが、今回は簡単な例なので引数は少ないですが、これがどんどん増えていくと地獄になるんです!


ここでまず疑問なんですが、これってお作法的にいいんですかね?

cloneable にする

いきなりなんで脈絡もなく cloneable の話になるの?と思われるでしょうが、僕が困ってることなので仕方ないのです!というわけで cloneable にしてみます。(強引)


こんな感じになりました。ここまでで疑問が二つほどありました。

  • そもそも scala でこういう形が必要になる時点でどこか間違っているのだろうか?
  • この性能を満たすもっとエレガントな方法はないんだろうか?

case class でなんややろうとしたんですが難しかったです!!
そもそもこういう継承しまくる時でも case class を使ってもいいのだろうか?(なんか色々やってるとたまに Warning が出る;ω;)


ちなみにブログの方はサンプルですが実際のコードで困ってるのはここらへんです。
https://github.com/alphaneet/suparobo-engine/commit/57531d8390b0068dff880c36763ebfe04f8b0a39#L1R63

mac で高画質 ustream 配信するメモ

http://d.hatena.ne.jp/alpha_neet/20120109/1326057718 の続きです。

参考URL

http://video-seisaku.jp/column/USTREAM_1.html
http://d.hatena.ne.jp/snakefinger/20100418/p1

基本的にはここ読めば分かるんですが、英語だったり前バージョンだったりで詰まったので軽くメモ残して置きまっ!

環境

CamTwist 2.4
Flash Media Live Encode 3.2

Ustream から "Flash Media Live Encode XML ファイル" をダウンロード

Share photos on twitter with Twitpic


Ustream のページから右上の「自分のユーザー名」 > ダッシュボード をクリック
マイページっぽいところの左のメニューから 番組設定 > リモート をクリック
「この番組のFlash Media Encoder XMLファイルをダウンロード」をクリック

Flash Media Live Encode の設定

CamTwist を起動して適当にググって setting する。
↑のメニューの Tools > Previw で配信したい動画が流れていればイケル。


Flash Media Live Encode を起動して、File > Open Profile でさっきダウンロードした XML を指定。
Device の項目を CamTwist にして Start を押す。


Share photos on twitter with Twitpic


Ustream のページに戻り、通常の配信ページに行く。
ローカルモニターのラジオボタンと、ビデオソース・オーディオソースの選択が出来なくなってたら成功。
「配信の開始」で配信出来たら成功。


画質の設定とかは詳しいこと分かんないで参考URLを見てください。

  • (あまり動きがない動画は)フレームレートを低くする
  • 配信してる画面サイズに合わせる
  • エンコーダーH.264 にする

とりあえず、こんな感じで設定しとけば大体高画質になってるハズです。

sbt の prompt に表示される文字を変更する方法

とりあえずこうなる(結果)

まあ、なんということでしょう!あっという間にsbtのコンソールにブランチ名が!... on Twitpic
sbt のコンソールに現在の git のブランチ名が表示されている状態です。
やり方に興味ある人は続きをどぞー


ちなみほとんど @xuwei_k 先生に twitter で教えてもらったというあるさまです・ω・
あるがとうございました!


講義(公開処刑(ん?))の内容はとっげっておいたので、sbt の内部について詳しく知りたい人は目を通しておくととても勉強になるますよー
http://togetter.com/li/240617

環境

scala 2.9.1.final
sbt 0.11

まずはおっぱいにしてみる(意味不明)

cd work(どこでもい(ry
mkdir project
vim project/oppai.scala

sbt
oppai>

こんな感じになったら成功。

git のブランチ名にしてみる

git init
git add project/oppai.scala
git commit -m 'add oppai'
git branch peropero
git checkout peropero
vim project/oppai.scala

git はとりあえずなんでもいいんで一度はコミットしとかないとブランチ切れないっぽいす。

  • project/oppai.scala の diff
 object MyBuild extends Build {
-  val prompt = "oppai> "
+  val prompt = "git branch".lines_!.find{_.head == '*'}.map{_.drop(2)}.getOrElse("") + "> "
   lazy val root = Project(

sbt
peropero>

こんな感じになったら成功。


なんでブランチ名が表示できるか軽く補足を書こうと思ったんですが、めんどくさいので気になる人は「scala lines_!」でぐぐってください><
違ってたら恥ずかしいんで断言しませんがシェルを呼んでその文字列を見てるだけっぽいっす。