Windowsキーの復活

英語キーボードでもWinキー使いたい!

家でも会社でも、英語キーボードの101配列なのですが、
Vistaとか使い始めると、フリップ3Dとか目玉機能があるのに使えないという状況に。

そして、噂で聞いていたWindowsキーを別のキーに代替させるという方法をとってみることにしました。

参照先 :http://journal.mycom.co.jp/column/winxp/181/index.html

手順は以下の通り

  1. regeditを起動
  2. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layout を開く
  3. この場所に新規のキーを追加して、キーの代替を設定します。
  4. キー名は”Scancode Map”, キータイプは”バイナリ値”.

うちでは、以下のようにキーの中身を設定しました。

代表的なスキャンコードを以下に記述しておきます。

キー名
Alt(右) 0xE038
Alt(左) 0x38
Caps Lock 0x3A
Ctrl(右) 0xE01D
Ctrl(左) 0x1D
Esc 0x01
F11〜F12 0x57〜0x58
F1〜F10 0x3B〜0x44
Num Lock 0x45
Scroll Lock 0x46
Windows(右) 0xE05C
Windows(左) 0xE05B
ひらがな 0x70
スペース 0x39
半角/全角 0x29
変換 0x79
無変換 0x7B

設定時のポイントは、レジストリに設定するときに2バイトのコードは逆転して記述すること。

(0xE038 → 38 E0 と設定)


ライブラリ進捗

ようやくモデル出ました

ようやく独自モデルファイルを読み込んで、表示することが出来ました。

現在では単なるポリゴンメッシュのみで、スキニング適用したものや親子構造を持っているモノについては正常に表示されません。

次のステップとしては親子構造、そしてスキニングメッシュを表示ですかね。

さらにその後、テクスチャを貼るところまでやらないとモデル読み込み完成とは言えないですね。

さらにこのモデルライブラリで試験的に表示できるクラス含めていますが、

表示オブジェクト事にバッファ作っちゃうので、使用には耐えません。
実際に使うときには一つのバッファを共用するようにしなくては。

もっともそれはさらに上位ライブラリがやるべきことなんですがね。


今更ながら

WAクリアした

この間借りたホワイトアルバムをようやく全部クリアした。
浮気ゲーとして名高いアレです。結構辛いとか聞いていたのでワクワクしながら、脇役から片付けていきました。
そして先ほど、全キャラ完了。

もうちょっと辛いかと思っていましたが、イマイチ。ぬるい…。
理奈&由綺のビンタシーンは有名ですが、その部分ももうちょっと濃いとオレ好み。


全文検索

日記の検索がしたくて…。

以前の日記を検索したいことがあって、tDiaryでどうやればいいのか調べてみた。

  1. squeezeプラグインを利用して、動的に作られるページをhtml化しcacheを作成する
  2. その作られたhtmlに対してnamazuを使って検索

という手順になる模様。
とりあえずFC5で動かしているためyumでnamazuとインストールした。

しかし namazu.cgiが見つからない。
どうしてなのか探してみたところ、yum install namazu-cgiでcgiはインストール別だった模様。

設定メモ

インデックス作成時に、サフィックスhtml付けるようにして出力した日記データを対象としたら、検索結果でその日の日記リンクへ飛ばなかった。

理由は、?date=日付.htmlとなっているためで、ここが日付Onlyでないとダメな模様。
よって、squeezeでデータを吐き出すときに.htmlなど付加しない状態にし、インデックスを作成した結果、とりあえずジャンプまで正常動作を確認。

検索結果ページが文字化けする状態が続いていたため、namazurcを書き換えて文字コード設定したところうまく動作するようになった。

Langa ja_JP.SJIS
を記述しました。


Xファイル解析

前回の反省点

前回のフォント問題は解決できたので、今回はDirectXのモデルファイルについて色々と。

ちなみにフォントの問題で一番引っかかったのが、
SHIFTJIS文字列→UNICODE変換時で変換できなかった文字について、
UNICODEでの”・”に変換されたため、除去に失敗してた…。

モデルフォーマット

今作っているライブラリ専用モデルファイルを作成しようと色々考え中。

DirectXのXファイルを読み込んで、自分の形式にするコンバータ作らないとなぁと思って、まずはそれを準備してみようと思って作業中。よってスキニングの仕組みを改めて調査&勉強してみたり。

スキニングモデルと単なるポリゴンメッシュのモデル、そしてアニメーション付き、
これらをちゃんと読み込んで変換するのはちょっと苦労しそうだ…。

アニメのことを考えると D3DXLoadMeshFromXは使えない。
D3DXLoadSkinMeshFromXofを使用するのか?と思いきや、LPDIRECTXFILEDATAは廃止に向かってるようだし、関数名変わってるし。

素直にアニメーションスキニングメッシュ読み込むサンプルをそのまま実装して、必要なデータだけ抽出するようにするか…。


インスタンシング

今日もインスタンシング

昨日に引き続き、今日はShaderInstancingをトライしていた。しかしHWインスタンシングに比べて動作は理解しやすい。単に形状データを繰り返し、頂点バッファを満たしておけばいい。あとはそれに対する変形パラメータを外部から叩き込めば終わり。必要回数、必要ポリゴン数になるまでdrawPrimitiveを繰り返す。

そんなわけで、さっくり実装できた。

HLSL

今は起動時で読み込んでコンパイルさせているけど、デフォルトのシェーダーくらいはlibに組み込んでしまいたいと思って色々調べてみた。どうやらバイナリのリソースとしてリソーススクリプトで記述すれば良さそうです。

GUIの操作としては、リソースのウィンドウで追加→ファイルから〜
その時の.rcの中身にはこんな風にして追記されることになります。

(グループ名を入れたかったのでそこだけは手作業)

<名前> <グループ名> DISCARDABLE “ファイル名.fx”

ここまでやって気付いたのだが、そのままバイナリファイルに組み込まれるみたい…。

さらに調べてみると .fxから .fxoを作ってしまうという方法もあるようだ。コンパイル済みシェーダーといったところか。

こちらを組み込みにすれば、先ほどよりはマシだろう。読まれたくないならば、
fxoをさらに暗号化してリソースにインポートすればいい話だし。

これには、プロジェクトに追加されている.fxファイルにコンパイルの記述を追加する。

こんな感じでコマンドライン行に追加。最初のはバージョンを決めるためのものだろう。
さらに、出力ファイルの箇所で “bin/$(InputName).fxo” と記述するのも忘れずに。

デバッグ版とリリース版で同じでも問題ないと思うけど、オプションを変更することも可能です。


あけましておめでとうございます。

あけおめ

新年あけましておめでとうございます。

今年は初日から日記記述です。がんばります。

foltia

アニメ専用録画システムのfoltiaをインストール&設定していました。

通常設定だとPSP/iPod用のトランスコンバートの処理が録画後に走るのですが、
オレはCMなどをカットして保存するクチなので、ちょこっとスクリプトに手を入れて環境を作っていました。

アニメはfoltia、TVドラマはmythtvと分けて使っていく方針です。

なお、この正月期間中にどうでもいいアニメの予約を入れてみて、実験予定


大晦日

今年も最後まで

今年終わる最後の今日、今もプログラミングしてます。
以前やっていたフレームレートの制御用クラスの続きです。

やねうらおさんのHPを参考に組ませていただきました。フレームスキップまできちんと実装されていてスバラシイです。

とりあえずこれである程度のスペックを持つPCならば秒間のFPSを固定することが出来ます。グラフィックスがちょっと低スペックでもなんとかがんばれるようになります。


プログラム的話題

UNICODE使用時におけるプリプロセッサについて

__FILE___や__DATE__などのプリプロセッサは ANSI文字として置き換わるので、そのままだとUNICODE文字配列には入ってくれません。

サフィックスLを付けるとUNICODE文字定数としてコンパイルされるので、

として、CONVERT2WIDE( __TIME__ ) とか。頭の中では L”12:00:00″ とか置き換わる算段です。

実際にはこれだけではダメで、

としなきゃダメみたいです。理由はよく分かりませんが、昔からの流れ?みたいです。


MySQLネタ

今日もmySQLと戦ってました

データ注入でうまくいかなくて結局1日消費。

昨日MSのSQLServer2000から取り出してきたデータを、
SQL文の形にしてインポートさせようとしたらShiftJISの問題で、
エスケープシーケンス埋め込んで対処。

また、ツールにはSQLyogのフリー版を使用。

文字コード

しかし問題が。ShiftJISとの問題でこれからも付き合っていくのか、と思うと大変に思ったので
全てのデータをUTF8に移行することに決定。

しかしながらこれまた大変な作業が待ってました。
ツール類はUTF8全滅で、表示できたのはMySQL Query Browserのみ。
SQLyogは使いやすかったので、UTF対応も是非行ってもらいたいです。

※最もツールが悪いのかデータがまずいのかで、数時間使っちゃってます

あと、PHPからのアクセス問題も発生したので検索して色々と。
データを取得する前に、以下のようにしておけば文字コード変換が働かなくなり、DBに格納してある生の文字コードで取得できるみたい。

リストアとか

結局データはリストアのデータと同じ形式に吐き出すように、プログラムを変更してデータ生成
その後リストアの処理するコマンドを一つずつ手打ちしてデータを注入しました。

UTF8にしたかった理由

思い出してみるとADO.NETでアクセスしてデータを表示させたかったから、でした。
データセットに取得してDataGridに表示させようとすると、どうしてもUTF8にってことで。