ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2008年11月27日

twiClient(仮) 0.10 - twitterクライアント

9月頃からぼちぼちやっていたんですが、ようやくカタチになってきたので公開します。

スクリーンショットはこんな感じ。
image

Willcom 03を契約してからずいぶんMZ3を使っていたのですが、身体的問題があり困っていました。
自分は、03を親指で操作していたのですが、その親指が太いです。
それに対してMZ3の投稿/更新ボタンは小さく、すぐ下にあるメニューバーのSIPボタンを押してしまうことがよくありました。
「これは自分の指にあったクライアントが欲しいなー」と思ったのと、「Web APIってどんなもの?」と思ったことが開発するにあたっての動機です。

ボタンを大きめに確保して、メニューバーと干渉しにくいようにしました。
つぶやきと言い返す(リプライ)は別のウィンドウを設け、それらの操作でも余裕を持てることを意識しました。
# iPhone/iPod touchのアプリからのインスパイアだったりするんですけど

とりあえず、機能が揃ってリリースするかというときになってエラーの通知やステータス表示が無いことに気づいて最低限のフォローはしたのですが、まだまだだなと思います。
これは今後の課題にします。

2008年9月7日

3Dデモ「_boot」

いろいろインスパイアされまして、デモをこさえてみました。
そもそもの触発元は、とある初音ミク楽曲でした。

















[初音ミク(Has-Tune) / "_boot"(Re:A & Re:nG)]
ニコニコ動画界隈の初音ミク楽曲には「ミクトランス」というジャンルがあります。
テクノやトランスの曲にボーカルやコーラスとしてミクを使うものです。
テクノやトランスに電子的な歌声。これほどデモに馴染む楽曲は早々無いのではないか? と思いました。
けれど、動画サービスから生まれたであったり、ツールが発達している昨今にごりごりコード起こしてデモを作る人はいないようです。
実際、「PVを作ってみた」系動画や「VJミキサーに使ってみた」的動画はありました。クオリティも高く見ていてツラい動画でしたw
それでも、ミクトランスはデモに使えると思うのです。
正直、効率の悪さや、シーンデザインの稚拙さが目立つと思います。
だけど一度は試してみたいと思っている人は少なくないはず、と思います。

2008年8月2日

PixelCrew日記 - Perlin Noiseを写経する、の巻き

perlinnoise

最近、ここ以外が忙しかったりネタが無かったので書けませんでした。
が、やっとこ書けそうなネタが出てきたので。

雲模様のテクスチャが作りたくて、アルゴリズムを探していました。
とはいってもテクスチャが欲しかっただけなので、ツールで作るなりWebで探すなりしてもよかったのです。
ですが、ゆくゆくPixelCrewに載せるんだろうし、と言うことでコードで生成することにしました。

画像処理のアルゴリズムは、WindowsCE(GameAPI)でニアレストネイバーやバイリニアによる拡大/縮小を書いたことがあります。
そのときは、ピクセル間の距離や三角関数がどういう計算をしているか把握できなくてとにかく週末徹夜進行だったなと覚えています。
今回はその甲斐あってアルゴリズムの解説もすんなり理解できました。たぶん。

ただ、Frequency(周波数)と言う単語を見て、画像の端々を正規化(0.0と1.0に丸める)して扱うのかと勘違いしていくら演算結果を重ねていってもサンプルみたいにならなくて悩みました。
別に周期に収めることは無くて、どこまでもノイズを作っていけばいいんですね。

あと、このアルゴリズム解説を読んでいて驚いたのが、ピクセル単位で重ねこみをしていること。
解説文では、「これらの画を重ねると、次のようなパターンになる」とあるので、回数が増えればバッファもたくさん要ると思っていたのですが、そんなことはありませんでした。

まだまだ覚えることがあるのだなと思いました。

2008年7月14日

XNAで拡張現実

ARToolkitの手入れを誰かしていないかを探していたら、こんなものが見つかりました。

XNAでARと言うことらしいんだけど、複数のマーカ同士で認識を補完するというテクニックがあるらしく、マーカをいっぱい並べてる画がインパクトあります。

ARToolkit再燃

一年前にチラッと触って以来、OpenGLを触っていました。
別の場所で3Dリバーシを作って公開できるようになり、帰ってきました。

ARToolkitからOpenGLに傾倒していたのには、3D-APIがよくわからなかったと言う理由が強かったのですが、libARがWindows向けにやさしくない状態だったためです。
当時はVisualStudio2005でいじっていて、現在の開発環境はVisualStudio2008。
まぁとにかく、libAR*.libはリンクの通りが悪いライブラリであるなと。そりゃあARToolkit plusもできますわい。
特に、VRMLと連携した処理が同梱されていて、VRML側をリビルドしないといけないと言う事実になかなか気づけず大変です。
Buiding the simpleVRML doesnt work(details inside) - HIT Lab NZ Forum

他にも、各種ファイル(マーカやカメラのパラメータ)を操作する処理があり、scanfを久々に見たり、mallocがこけるとexitするコードがあったり・・・。
情報を求めてこんなスレッドを見つけたりしてmallocをHeapAllocに置き換えたのにorz

個人的には、libARはもっと機能ごとに細分化していいと思います。
先にあげたファイル処理も構造体だけ挙げておいて「この形でくれ。そこまでの実装は任せる」と突き放してしまっても困らないですし。
# むしろその方が移植性がよいかもしれません。Homebrew界隈ではw

再燃という割に文句ばかりのエントリですが、モノになるか飽きるか・・・。書かなくなったら飽きてます、きっと。

2008年3月21日

iPAQ 212キタ

日本HP、4型VGA液晶のWindows Mobile搭載PDA「iPAQ 212」
スマートフォンじゃないWM6端末でVGA液晶の物は無いか、と思っていたんですがとうとう来ました。
やったー、WM6でVGA。
LandScape(縦横切り替え)もきっとあるだろうからいろいろ遊べる気がする。
というか、iPotch(iPod touchの略)をすごい勢いで買おうとしていたのに「まてッ!!」と引きとめられた気がするw
WMプログラミング本とあわせて買いたいな。

2008年2月6日

2008年1月30日

PixelCrew日記 - レイヤのためにその2。作りこむうちに他の機能に目移りするでござる

なんとか、1枚のレイヤと背景をブレンドする様になった。
いろいろいじり倒してるうちに対応漏れがあったミスなども直しながら、次のステップに移ろうかと考えた。
次のステップ・・・2枚以上のレイヤを重ねる。
初期段階から、画像はキャンバスという親クラスが各レイヤをリストで管理する設計にしてるんで楽勝だ。と思っていたら。

レイヤを管理するダイアログが無い。

さっくり作り、コンテキストメニューを実装。泥臭いことが手早く出来ることに軽く嫌悪するw
で、重ねると表示が真っ黒。
画像は黒で、アルファ値が1.0。追加したレイヤが手前なので奥が見えないorz
で、これは直すとして、確認をする環境が無いことに気づいた。
前後のレイヤにフリーハンドで線を描こうかと思っていたんだけど、黒しか出ない。
パレットのバンクはあるけど色が作れない。
ずいぶん前に「まだ先だからとりあえず256色画像のパレットが見れればいい」とか「減色処理の生成パレットが見れればいい」とか言って先送りにしたところだ。
他にもレイヤ単位で位置を動かせる用意があるんだけど、これもやんなきゃいけない。
むかしざっくり考えた案だと、選んでるレイヤとそれを挟んでるレイヤの3枚(奥、カレント、手前)を更にブレンドする。だったような。
更に思い出すと、フォント描画はプライベートフォントをサポートしたいと考えていた気がする。
フォント描画のためのUIは今から作るなー。
どれからやろうかとりあえず悩む状況になってしまったorz

2008年1月25日

見つけた小ネタ

猫でもわかるプログラミング Windows SDK編 第208章 タブコントロールにエディットコントロールをつける
WM_GETMINMAXINFOが返す値を自分で決めることでサイズ制限があっさり出来るなんて・・・今まで自前でやってた。
悪魔のプログラミングテクニック-SDK編 「Virtual List View (仮想リストビューコントロール)」
仮想リストビューってのも知らなかった。

PixelCrew日記 - レイヤのためにその1。フルカラーアルファブレンド

フォント描画も必要だけど、レイヤも欲しいよね。
フォントは書き込んだ後に動かすよね?
ということで、レイヤを先にはじめることに。
昔、8ビットカラー(256色)をBitBltのラスタオペレーションで透過したな。あれをマスキングじゃなくて、アルファブレンドに使えんかと寝ぼけた事を考えて、やるだけやってみたらやっぱりダメだった。
RGBの値をマスクすることはブレンドすることは違うよね、青が赤にもなるorz
ということで、GetDIBitsしてごりごりブレンドするコードを書く。
DirectDraw時代からこの構成やってるな。今の時代にこんな泥臭いことやってる人はいないだろう。
・・・GBA/NDS HomeBrew向けBMPコンバータとかでやったな。意外にいるかも。
閑話休題。
とりあえず、複数枚のレイヤを重ねるのはまだ先なんだけど、画像表示のロジックを次のように変更。
StretchBltなどAPIを駆使して比較的楽に表示
↓
アルファ値のビットマップを作り、それと合成したものを表示
で、変更したら早速表示が重くなる。
InvalidateRect/ValidateRectをがんばって使ってみたところが原因だった。
がんばったコードをほとんど消してInvalidateRect→UpdateWindowで一発更新する形にして更に高速化。
体感的に余裕のある速度になりました。むしろ早くなったorz
それにしても、技術的なことはいっさい書いてないなー。

2008年1月24日

PixelCrew日記 - ポップアップコンテナを実装してみる、の巻き

先日、ピックアップした項目を実装し始める。
とりあえず、ポップアップウィンドウに各種ツールダイアログをしまいこむコンテナ的ダイアログを作る。
現時点でも十分邪魔なツールダイアログが多いので。コード上で位置あわせを毎回書くのにうんざりしてきたし。
といっても、プレーンなダイアログを作ってそいつをオーナウィンドウにしただけ。
Enter/ESCで閉じるし(再表示不可)、そのダイアログ内で移動できる(触れない場所まで移動すると助けられない)。
とりあえず仕舞い込めたのでよし。
なんか部屋の掃除とよく似たアバウトさを感じる・・・。気のせいだけど。

2008年1月22日

PixelCrew日記 - 次にいるのは何だろう、の巻き

大味ながら実装した領域選択とトリミングで便利度が上がったPixelCrew。
便利度が上がったハズなんだけど、いまいち自分が乗り換え切れていない。
なんでかと考えたんだけど、まだまだ機能不足な気がする。
では、どんな機能を作れば乗り換えるようになるのか、軽く思いついたものを挙げてみた。
- レイヤ対応
- フォント描画
- アンドゥ/リドゥ
- ポップアップウィンドウを格納するコンテナポップアップ
- コンテナポップアップのドッキング
本当は全部上げようかと思ったんだけど、半ベソになりそうなのでこれぐらいにしておいたんですが、それでも辛そう。
レイヤってどうやるの? と、とぼけつつも重ね合わせの方法を暇なときに考えたりしてます。
アンドゥ/リドゥも双方向リストで実現できないかなとうっすら思っていたり。
んでもって、実装のボリュームを考えるとそれだけで疲れてしまう。
歳なのか一時的なものなのか・・・。

2008年1月15日

ドキュメント書きを楽に出来ないかと思う愚痴

ドキュメント書いてます。
WindowsアプリのGUI部分。
呼び方は方々でまちまちですが、コントロールのレイアウト書いたり、それとクラスを結びつけるコードレベルの話を書くやつ。詳細設計書?
コントロールのレイアウトを書いて、関連付ける変数を決めるのにClassWizard(もしくはそれ相当)を使っているので、個人フェーズがプロトタイピング的な進め方になります。
そうすると仕事の流れは次のようになります。
ソース試作→ドキュメント作成→(紆余曲折)→改修→ドキュメント改修(ここがウザい)→(続く)
ドキュメントは、高い確率でWordを使います。
Wordは、手練(てだれ)が使えばそりゃあもう素敵なビジネス文書が出来るんでしょう。
書き直しがめっちゃ面倒だけど。
自分もそれなりにWordで揉まれてきた方ですが、Wordのファイルを書き直すのはとにかく大変。
エディタでテキストを直すのだって大変なのに図表まで直す必要があるときはいつ眠くなってもおかしくない。
Wordは、普段キーボードでタイピングしているところに、メニューを開いて操作しないといけない仕事が割り込みます。
呼び出すべき項目やキーボードショートカットを覚えていれば、マウスに持ち替える手数が減ると思うのですが、その域に達するのは大変です。
方々でみかける発言で、同意できる意見に「ソースが仕様書である。ここにはウソは無いし真実である」というものがあります。
この発言を盾に「ドキュメントなんてみんな書けないもの」と開き直っている人もたまにいますが、それではいけないという意見にもうなづけます。
とはいえ、書かなくていいなら書きたくないのがドキュメント。
ソースコードを放り込んだら各種コメントを抽出して引数と返り値を読み取ってくれるツールって無いですか?
変更がかかったときは、そいつに放り込んで常に最新のドキュメントの雛形ができるの。
みんなきっと思っているはずだ!!
んでもって、ツールはあるんだけどとても手が出ないような値段だったりするんだ。
検索して大概見つかるのはDoxygenとSandCastleだけという現実を否定したいんです。熱くなってしまいましたごめんなさいorz
とはいえ、無いなら作ろうと思った人だってきっといるはず。自分も妄想ぐらいした。
ソースのパースがどのぐらい面倒かを考えるあたりで断念してしまうんだけど。
ソースがパース出来たとして、それをWordのVBAにでも渡せばそこから雛形は作れると思う。
パースを外部で行ってXMLか何かに保存。
で、C#と.NET FrameworkあたりでXMLを読み込んでファイル出力できませんか?
つかSandCastleがサポートから外すほどなんですか。C/C++というのは!?
と、鼻息がまた荒くなったところでyaccを見つけましたorz
これ使えば出来るんじゃあ・・・と妄言を吐くだけにしておきます。誰か作ってください。
# 最悪の締めですよ? 当然覚悟しております

2008年1月7日

PixelCrew日記 - 案の定仕事に使えるレベルじゃないよ、の巻き

最低限の実装で大喜びしていたのもつかの間、まだまだ使い難い領域選択とトリミング。
選択領域の手打ち調整ダイアログを実装途中で持ってきたのが悪かった。
選んだ領域の値まで出る。スピンボタンも回せる。変更は領域に反映されないorz
領域選択がキマればトリミングは便利なので、がんばって使うけど。
ここから始まる、ここから始まる・・・と心の中で泣いてたけど。
これではダメだね。

さらにこんなものを目にしてしまうともうだめだorz
2Dスプライトアニメーションデータ作成ツール SpriteStudio
impressにもリリースのお知らせが載るツール、OPTPiX iMageStudio。
別に対抗意識とか不要なんだけど。

2008年1月6日

PixelCrew日記 - トリミング機能実装、の巻き

NDS開発の難所だったところが解決したので、何か作ろうかと思ったんですがツール整備をさっぱりしてませんでしたorz
このツール、実は仕事場でも使っていてトリミングが欲しいなと思っていました。
が、実装方法を考える気力を欠いていてようやく実装を始めました。
トリミングを実装するためには領域選択を実装しなければいけません。
領域選択は、始点と終点を取得するところまで作ってありました。ここからを考えていませんでした。
領域の管理と作成にはリージョンを使うことにしました。
短形はCreateRectRgnでいいのですが、円弧はパスAPIを使う予定でいます(まだ実装してない)。
とりあえず短形選択だけの領域選択が準備できました。
このリージョンのサイズはGetRgnBoxを使って取得します。
このサイズにトリミングするようにします。
ツールが少し便利になりました。
カーソルキーで選択領域を移動できるようにしたり、領域を手打ちで指定できるようにしたいという、当初から思っていた昨日を作るためのスタートラインにようやくやってきました。

2008年1月5日

Red Vinesってお菓子

Red Vines- THE premium quality licorice - Home
マイクロソフトの技術者がこれを食べながらWindowsとかを作っていたらしいお菓子。
アメリカの珍菓子「REDVINES」ってナニ? | エキサイトニュース
紹介記事はこれぐらいなんだけどマイクロソフトとのつながりを書いているところが皆無。
本当にそうなのか? そして日本でこれは買えるのか?
4ポンドは要らんけどwww

2007年12月17日

アーカイブにするとき消していいファイル

あるとき(もしかしたら今日かも!!)、過去のソースをくれと言ったら中間ファイルやら出力ファイルやらごっちゃになったアーカイブがメッセンジャー経由で飛んできました。
ギガクラスの容量のほとんどが不要ファイルなので、検索で篩い(ふるい)にかけて削除しました。
今後も忘れないようにメモっときます。
ほとんど不要。
*.vcproj.*.user *.pch *.sbr *.obj *.scc *.ncb *.suo *.res *.exp *.pdb *.ilk *.idb *.asp *.opt
純粋なソースのみのリリースならこれも。
*.exe *.dll *.lib
VisualStudioが作るファイルとコンパイラが吐き出すファイルがごっちゃですが。
VisualStudioの作るファイルは説明とか無いのかな。

2007年12月14日

XNA2.0正式版リリース

Xbox.comの公式発表
あーもうノート新調してぇ!! コタツで開発してぇwww

マウスレイ

方法: ユーザーのクリック 3D オブジェクトかどうか検出
なんと、マウスレイについての解説。
・・・解説はありがたいけれど、座標変換がAPI一発で処理されててそれを展開しないとOpenGLでは使えない。
XNAだったら全力で参考にしますが:D

2007年12月13日

VS2005SP1が必要

VS2005で、エラーコード0xc0150002のマニフェスト絡みのエラーが出たら、SP1へのアップグレードでなおる話。 - かせいさんとこ
まったく同じ件。
某コンポーネントを使ってるプロジェクトをビルドしたら意味のわからんエラーが出て起動しない。
同じようなエラーが別件でも起きてました。
そのときは、実行ファイルをVSSに置いていたので、VSSに置くとダメ、みたいな結論を出してしまったのですが、間違ってた模様。
毎度ながら、VS2005SP1のインストールは440MBもあるので地獄だぜorz
SP適用済みXPみたいなCD作れませんかね。