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

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

OpenGL

MMD on Ruby更新

シェーダを中心に更新しました https://github.com/d-kami/MMD-on-Ruby

さて本気出さないと

シェーダはRubyのおかげで固まった感じだけど、まだAndroidだと描画部分まだ書いてなかった。早くやらんとな

シェーダの読み込み部分を作った

やっつけなんで例外処理が適当だけど。もう少し頑張ったらシェーダ読み込む。ShaderExceptionは自分で作った例外クラス。まだ使ってないので動くか不明 package net.d_kami.mmd.reader; import java.io.InputStream; import java.io.InputStreamReader; impo…

アンチエイリアス

コメントでアンチエイリアスの方法教えてもらったので早速、適用。上が従来の描画、下がアンチエイリアス込の描画

描画した3Dモデルが荒い...

なんかアンチエイリアスとかの設定がOpenGLにあるのか。それとも自分で何かするのか。シェーダでなんとかなったりしないのか?

久しぶりのMMD

MMD on Rubyちょっと弄っている。物理演算入れたいけど、私の実力とマシンパワー共に駄目そう。ruby-odeというものがあるが...

MMD on Rubyの動画アップロード

MMD on Rubyの動画アップロードしました!

MMD on Rubyのページ更新

IKのバグがあったのを修正したので、それにともなって紹介ページを更新した http://d-kami.net/mmd.html

mikutterのプラグインに移植できるか?

移植してどうするという気もするがやってみようか?

d-kami.net & MMD on Ruby更新

http://d-kami.net/ を更新しました。MMD on Rubyのモーションのバグが取れていると思います。膝が逆に向くと言うバグがありましたが、消えてるはずです...

やはり物理演算に...

この画像、よく見るまでもなく、足が衣装を貫通してる。他のところにも突っ込みどころがある。これを解決するには物理演算を使わないといけないような気がするが、すでに速度的に限界に来てるので、これ以上計算させるのはつらい気がする。Ruby以外でやるし…

とりあえず更新

github上のMMD on Rubyを更新しました。d-kami.netに上げたバージョンと同じで、MMDにデフォルトで入ってるモーションだったら多分動くと思われる物です。まぁ、github上に上がってるモーションが、正常に動くものだと思われます。動かないモーションの方が…

めちゃくちゃ遅かった

IKを入れた結果MMD on Rubyが更に重くなり、古いマシンではめちゃくちゃ遅くなった。なんてこった。Ivy BridgeのCore i5のマシンでもアニメーションでかなり時間を取られてるので(30FPSでてない)、快適に見るにはCore i7が必要か?

MMD on Ruby 未完成版公開

http://d-kami.net/にてMMD on Ruby未完成版を公開しました。頑張って完成させないと!

IKの実装が終わった

体調が悪い中、うまくいってない原因が閃いてしまったので、やらざるを得なくなった。IKに失敗してた理由はクォータニオンのかける順番が間違っていたことだった。まぁ、動いてくれて良かった。あとはシェーダの関係で一度消してしまった表情の変化を取り戻…

なんとか見れるスピードにはなったが

NArrayのおかげでだいぶ速くなり、家のマシンで秒間30フレームがいけるようになった。だが、まだIKを実装してないのでぎこちない動きになっている。IKだ!IK!

高速化に向けて...

コメントにてNArrayというものを教わった。Windowsマシンでさっそく gem install narrayするがDEVELOPMENT KITが無いと言われてしょぼんとしてたら救世主を発見し、Devkitのフォルダで ruby dk.rb init ruby dk.rb installをし再びgem installをしたら成功し…

NArrayを使い、高速化を果たしたが...

MMD on RubyにNArrayを導入したところ、かなりの高速化に成功した。2台のマシンで1フレームあたりの実行時間を計測したところ、片方は0.100〜0.110秒かかってたのが、0.030秒〜0.060秒まで高速化した。もう片方のマシンでは0.050〜0,060秒前後かかってたのが…

アニメーション補間完了!

ベジェ曲線によるアニメーション補完が完了した。試行錯誤により、ソースコードが汚くなったのであとで綺麗にしておかなくては。いろいろ失敗したおかげで、ありえない動きがあったり、もう違う生物になったりしたけど、なんとか補間は終了した。次はIKだ!…

配列へのアクセスが遅いのか

MMD on Rubyの1フレームあたりにかかる時間が結構ヤバい。それはアニメーションの計算方法がまずいのかと思ってたが、そこは全体の2、3割程度しか時間を使ってなかった。なんと原因は配列へのアクセスだった。37062個の要素を持つ配列2個と49416個の要素を持…

次はベジェ曲線か

次はアニメーション補間を行う。ベジェ曲線の出番がやってまいりました。きっと悲惨な絵を見ることになるのだろう。うまくいくことを祈る。というかまだやってないのか!って状態である。なかなか進まないんですよ、奥さん。

高速化!

ボーンアニメーションを微妙に高速化しておいた。とあるPCで1回あたり0.110秒かかってたのを0.08秒ぐらいまで高速化しておいた。0.03秒縮めた。これが活きるかどうかは,,,これから次第か!って、よく考えることもなく、これはまずいのではないか?MMDは30FPS…

カクカクだけど動くぞ?

ボーンアニメーションを実装した。だけど、まだ補間ができてないので、突然位置が変化する。処理落ちしてるわけではないが、動きがカクカクだ。そして、良く見たら、いろいろ位置がおかしいような。次は補間、それが終わったらIKか

ボーンアニメーションから

IKとかベジェとか言ってないでボーンアニメーションからやっていくしかないかな。ボーンアニメーションだけだったらそんなに難しくないはず...クォータニオンクラスも作ったし、やることはやってあると思う。とりあえず前へ進もう君のいない道の上へ

アニメーションに苦戦中

タイトルのとおり、アニメーションに苦戦中。IKとか補完がベジェ曲線とかクォータニオンとか、今まで勉強してこなかった分野の目白押し状態。泣きそう。とりあえずメタルなミクさんのスクリーンショットを置いておく

クォータニオンクラスを作ってみた

まだ途中だけどクォータニオンクラスを作ってみた。正しいかどうかは知らない。掛け算を間違えてました。 class Quaternion attr_reader :values #各要素のindex @@X = 0 @@Y = 1 @@Z = 2 @@W = 3 #クォータニオンの初期化を行う def initialize(x = 0, y = …

系が逆だった

MMDは左手系でOpenGLは右手系なので、Z軸の向きが逆だったため修正した。なんか向きが変だと思っていたが、このためだった。単純な原因だった

だいぶ変わった気がする

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

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

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

スフィアマップ実装

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