マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

MMD

だいぶ変わった気がする

以前表示したときとだいぶ変わった気がする巡音ルカ。同じモデルなんだけど、シェーディングの差で別人のようだ

VMD読み込んで表情だけアニメーションしてみた

体を動かすのは大変そうなので、まずは顔だけアニメーション。時間と共に変化します。https://github.com/d-kami/MMD-on-Ruby

スフィアマップ実装

ちょっと見た目が変わったかな?わからん...無駄にcommitしまくり https://github.com/d-kami/MMD-on-Ruby

Lat式ミク対応版(?)をgithubへ

https://github.com/d-kami/MMD-on-RubyにLat式ミク対応版(?)をあげておきました。Lat式ミクはhttp://bowlroll.net/up/dl3934からダウンロードして、toonで始まる画像をMMD-on-Rubyのtoonフォルダへ、他のファイルはmodelフォルダに入れます。pmdファイルは…

RubyでもLat式ミクさん

まだ手抜きではあるが、RubyでもLat式ミクさん表示できた。ただし、github上のプログラムだと無理だけどね!頑張ってそのうち対応する予定

更新!

今までシェーダでLambertを混ぜていたが、それをやめた。そして新たにtoonという画像を使うことに。前に比べて平面的になった気がするが、こっちの方が正しいのだろう。多分 https://github.com/d-kami/MMD-on-Ruby

久々のgithub

MMD on Rubyをgithubで公開しました。久しぶりにgithubを使ったので、なんか緊張してました。なにか忘れてそう https://github.com/d-kami/MMD-on-Ruby

テクスチャ画像の読み込み

BMPファイルを読み込めば、MMDのデフォルトのモデルは表示できるので、Google先生に聞いたらRubyでBMPファイルをあつかうを発見した。さっそくダウンロードして、readを使い画像を読み込みこんだ。あとはpgetを使いOpenGLで扱える形式に変更すればOK。OpenGL…

変更

以前mmd.rbで、 @io.read(2 * count).unpack('S' + count.to_s) としていたところを @io.read(2 * count).unpack("S#{count}") に変更した。あと文字列を読み込む部分を @io.read(count).unpack('Z*')[0].toutf8() に変更した。A*でやってたけど、null文字が…

モデル描画

前回のエントリのmmd.rbと今回のmain.rbとシェーダを合わせれば一応MMDのモデルは描画できる。ただし、テクスチャを貼ってないので目が表示されない。怖い。なので正面から見ないようにしましょう。MMDデフォルトのモデルの初音ミク.pmdをmiku.pmdに名前を変…

材質まで読み込み

MMDの材質まで読み込んだ。とりあえず、ここらへんでOpenGLを使って、モデルの描画をやってみたい。以下ソースコードmmd.rb require 'kconv' class MMDModel attr_reader :header attr_reader :vertices attr_reader :face attr_reader :materials def load(…

RubyでPMDのヘッダ読み込み

なんとなくRubyでMMDを読み込んでみることにした。まずはPMDのヘッダのみ。MMDはこちら require 'kconv' class MMDHeader attr_reader :magic attr_reader :version attr_reader :name attr_reader :comment def load(io) @magic = io.read(3) @version = io…

TwitterにもFacebookにも貼ったので

ここにも貼っておこう。左下のコンボボックスで表情を選んでいる。早くアニメーションを実装なければ!

モーション読み込み

MMD

MMDのモーションデータ(VMD)形式 めもを参考にして、VMDを読み込んでいるところ。とりあえず動かしたい

表情切り替え

表情を変えるだけなら前回やっていたが、それは描画前に1度しか切り替えなれないものだった。今回は描画後でも何度でも切り替えられるように修正した。さぁ、次はアニメーションか!?

表情変化!

MMDのモデルから表情リストを読み取り、表情を変化させることに成功した。あとはアニメーションかな。IKが大変そうだ

今度こそエッジを

前回はエッジがあるかどうかが際どく、エッジの無い画像と比べてもよくわからなかったが、今回はちゃんとエッジが見える。やったね!

Chromeでバグった?

MMDで描画したモデルをfirefoxで表示すると、普通に描画されるが、Chromeで見るとちらつきが発生。何故かと思ったら、描画用のループ(というかタイマで定期的に実行だが)でvertexAttribPointerを毎回呼び出していることが問題だったようだ。1回呼び出したら…

そういえばリンク忘れてました(汗

MMD

Lat式ミクを利用させてもらってるのにリンクをしていなかった。なのでリンク貼ります。Lat様のページです http://innoce.nobody.jp/

法線使うと死ぬ

シェーダで正規化した法線と正規化したライトの向きの内積を使うと何故か描画がおかしくなる。他のモデルではうまくいくのに...法線がなんか特殊なのか?モデルに用意されてる法線使わなければ描画できるので、法線抜きで

ちょっとだけエッジをだしてみた

上の画像がちょっとだけエッジをだしてみたところ。下の画像は以前のやつにちょっと近づけたやつ。服の内側が消えてしまってるのは気にしない。他はよく見ると違うような同じのような

LAT式

このエントリのグロ注意状態になっている。みんなが通る道らしい? http://d.hatena.ne.jp/edvakf/20111002/1317578036

巡音ルカを探して

MMDに巡音ルカが含まれてなかったので、探してみたところ、結構見つかった。そこで直感で選んだルカをWebGLで表示してみた。ライトとかシェーダの関係で残念な感じになってしまってるけど許してー。頑張ればもっと可愛くなると思います!配布元はこちら

今夜はここまで!

LAT式はうまくいかなかったけど、MMD付属の初音ミクはなんとなくうまく表示されている?気がする。今夜はもう満足だ

Ambientを入れた

Ambient入れたら色が明るくなった

色が...?

diffuseカラーの適用とテクスチャマッピングを終わらせた。あとAmbientとかSpecularの適用か。それが終わったらシェーダで頑張る

drawElementsで失敗

drawElementsの第四引数は単純にindexを渡せば良いと思っていた。しかし、それではうまくいかなかった。そこでGoogle先生に聞いてみたところ、WebGL の drawElements の第四引数は「バイト数」というエントリに到達。なるほど、バイト数指定か...と思いなが…

描画方法を変える必要がある

現在、とりあえず1回のdrawElementsで全ての頂点を表示している。テクスチャを考えなければそれで良かったが、部位ごとに違うテクスチャを貼りつけたり、一部だけテクスチャを貼りつける場合、問題になりそうなので、描画方法を考える。とは、言ってもMMDの…

とりあえずdiffuseだけでも

MikuMikuDanceのモデルをWebGLで表示。ただし、色はdiffuseだけな!正面向かせるとテクスチャ貼ってないから目がギャー

MMDの頂点と面の情報だけ取得してみた

MMDのモデルデータ(PMD)形式 めも (まとめ)を見ながらJavaでパースして、JavaScriptに変換し、WebGLで表示した。影がアレなのは気にしない!