mikoto が何となく読めてきた

ここ最近、ずーっと mikoto のローダをちくちく作っていた。一区切りしたら公開しようと思っていたのだが、ハマってしまいこのザマである。
しかしながらなんとかバカみたいなバグを取ることができたので公開する。


on Windows Vista
windowsvista.png


on OpenBSD
openbsd.png


on OpenSolaris x86
opensolaris.png



原理(正しいとは限らない ;-) とか参考文献はソースに全部書いた。
ソース




読めることは読めるのだが、機能が全くと言っていいほど足りない。
フレームレートの処理は正しくないし複数のモーションは読めない。デフォームなんてしないし、アンカーの処理も甘い。
左右対称などの便利機能はもちろん対応していない。複雑な mikoto ファイルは恐らく読めずに死亡するはずである。
まさに「読めるだけ」なので注意してくだしあ。
でも移植性だけは何故かある。

Re:座椅子 (私信)

私のイメージは下図のような感じです。この格好のまま朝まで寝てたりしないものだろうかな、とw。
私も前は座椅子を使っていたんですが、姿勢がやたら悪くなって足と腰が痛くなってから机と椅子にしてます。
背もたれるところならどこでも寝てしまうのでやっぱり羨ましいです。


e01.png

オートシェイプを SDL で読み込む

http://d.hatena.ne.jp/n7shi/20090520/1242814442
こちらのコードを眺めていて気づいたんです。オブジェクトが MemoryStream だったら SDL で表示できるんじゃね?、と。


というわけでやってみました。やってみましたが上手くいきませんでした。


pp01_02.zip


pp01_02.png
Office のほうでコピーして、pp01 のほうで 左 Ctrl + V すると貼り付けられます。


上手くいっているように見えますが、参照元id:n7shi さんのほうの

        var ms = Clipboard.GetData("Office Drawing Shape Format") as MemoryStream;

これが何故か null になるというマジック。


なんとかならんのかとググった結果、以下のように PNG で取ってきたら取れたわけですがよく分からん。

        IDataObject data = Clipboard.GetDataObject();

        // クリップボードにあるデータがPNG形式か調べる
        if (data.GetDataPresent("PNG"))
        {
            // PNG形式でデータをMemoryStreamとして取得する
            MemoryStream ms = (MemoryStream)data.GetData("PNG");
            return ms;
        }

奥が深いぜクリップボード

C# で SDL + OpenGL するぞ

なんてことだ…。05/07 のエントリにいただいた id:n7shi さんのコメント通りにすれば 64bit Vista でも無問題じゃないですか…。
良いマシンを買ったんだからってことで今日一日かけて VMware を入れて Windows XP を入れて VC# 入れて開発環境を整えてしまいました。
まあそれはそれで全く無駄なわけじゃないんでいいんですが…。


ってことで C#SDL をやり始めました。


pp01_01.zip


pp01.png


カーソルキーで、透過処理に失敗した ゆっくりゆきぽ が動きます。Escape で終了。
64bit 用の DLL も入っているので、64bit Windows でも動きます。


コードを書いてみて分かりましたが、やっぱり C# は便利です。
64bit Vista で実行できる今となっては C# をメインで書かない理由が無くなりました。

今年こそは 3D モデルを動かすぞ

いつまでもドット絵じゃあ何も進歩しないので、そろそろ本格的に 3D モデルを動かしていきたいです。
というわけでとりあえず第一歩を踏み出しました。


po01_04.zip


実行すると、自作ローポリゆきぽが現れます。
po01_04.jpg
顔まわりで力尽きたので体とか悲惨なことになってます。
いきなり凄いモノは作れないので、モデルもプログラムと同じようにバージョンアップしていけばよいです。
初めての人物モデリングにしては出だし好調だと自画自賛しています。ちなみに真正面から見ちゃだめです。

  • 操作
    • カーソルキーで移動、c で視点変更です。
  • モデル
  • 言語
    • C++ です。SDL.NET で C# で作りたかったのですが、SDL.NET が 64bit Windows に対応していないので諦めました。
    • なんで 64bit Windows で動かしたいかというと、メインのマシンが これ だからです。
  • ソースが酷い
    • 最近、プログラムをきれいに書かなくてはならないと思うあまりに何も書けなくなり始めていたので、断ち切るために思うがままに書きました。これもいつまで経っても進歩しないような気がするけど、C#SDL できるようになったら考えます。
  • ゆきぽがアニメーションしない
    • これから動かします

FreeBSD 7.1-RELEASE on DELL Inspiron mini 9 その2

昨日の続きです。


家には Aspire one もあって、これも無線 LAN を Intel 3945ABG に換装しています。
こちらは普通に動いているので、もしかしたらひょっとするよなーと思って
昨日 FreeBSD をインストールした Inspiron mini 9 に取り付けてみたら、動きました。orz


設定はこちら http://gihyo.jp/admin/clip/01/fdt/200805/02 と同じです。


昨日動かないとか書いちゃってスミマセン。まともな 3945ABG は動きました。ごめんなさい。

FreeBSD 7.1-RELEASE on DELL Inspiron mini 9

DELL Inspiron mini 9 の Ubuntu 版を買いました。
プリインストールされた Ubuntu はある程度普通の Ubuntu だと思っていたのですが、
パッケージにほとんど互換性が無いそうで http://www19.atwiki.jp/mini9/pages/29.html
なんだか急に面倒になってしまいました。
そこで、なんとなく BSD が好きなので FreeBSD 7.1-RELEASE をインストールしました。
FreeBSD は 4.9-RELEASE に触って以来です。


インストール自体は特に問題ないです。4.9-RELEASE のときのままでした。良いか悪いかはおいておいて。
動かしてみた結果、気付いた範囲では無線 LAN 以外は問題なし。
無線 LAN は Broadcom の BCM94312MCG というチップみたいなのですが、これが動きません。
NDISwrapper でも動きませんでした。同梱の Ubuntu ではなんで動いているのだろう、というか
そう言えば Ubuntu で試したけど結局接続できなかったなあ。壊れてるのかな。


でまあ必殺技として Intel の 3945ABG に交換してみたところ、刺さる刺さる。
不定期に OS ごと固まって電源を切るしか出来なくなってしまいました。謎。
よく分からないので追っかけてません。
2009.01.13 追記。他のパソコンで動いていた 3945ABG を取り付けてみたら動きました。
最初に試したものが初期不良っぽいです…ごめんなさい。


というわけでさっさと諦めて、転がっていた USB の Wifi アダプタを動作確認しました。
その結果をちょろっとまとめました。BSD_USB_Wifi - m107 wiki - Seesaa Wiki(ウィキ)



# 七誌さんのエントリに返信しようとしてあらぬ方向へ来てしまったなあ
# でもまあ普通の Unix はいずれ必要だし!と自分を納得させる