2010-01-01から1年間の記事一覧

その6(ご質問スレッド)

ご質問をいただいたのでそのお返事をヽ(・ω・)ノ > 1.audio_io.cpp内でwfx.nSamplesPerSecの値を44.1[kHz]もしくは22.1[kHz]としていますが、 > なぜ44.1[kHz]ではないのでしょうか? skypeやラジオ、電話では確か11,025[Hz]が使われています。CD音質は44,100…

数学をとらなかった人の為の3D数学 その6:衝突判定

衝突判定とは 当たり判定とも(光線や線分なら交差判定とも)呼ばれる。・複雑な形状と近似 ・2D限定ならば特化した判定 (編集中) 2D衝突判定 矩形、円、テーブル (編集中) 球と球 基本的には円と(編集中) AABBとAABB AABBとは Axis-Aligned Bounding …

ツイート

現在GDKライブラリを使って3DSTG(正確には違うけれど)を書いてます。 最初に作ったルービックキューブとかのソースコードも一緒にここで公開する予定ですo(`д´*)oイラナイ? - 濃ゆい話は続き記法にしましたヽ(`ω´*)ノ - OBB同士の衝突判定を作っています。 完…

数学をとらなかった人の為の3D数学 その5:N次元空間

4次元空間をレンダリングする

3D関係

先日、3DRPGプログラミングとかスクリプトエンジン プログラミングを執筆されている 坂本千尋 氏とお会いする機会がありました。 3Dレンダリング技術の将来など聞かせていただいたのですが、寡黙で、そして温和な方という印象でした。 当初はご本人だと気付…

c_dfDIKeyboard c_dfDIMouse の中身を調べる話

久しぶりの普通の更新ですヽ(・ω・*)ノ この話のきっかけは、GDKライブラリをVC++2008用にインポートした時でした。 DirectX9SDKに dinput.lib が存在せず、ビルドができなかったのです。 DirectXはCOMで実装されているので、本来はlibファイルをリンクする必…

数学をとらなかった人の為の3D数学 その4:概要2

行列(Matrix) 前回、行列とはベクトルを座標変換するものであると書いたが、具体的にどうか。 ある数nと分数1/mを考える。 分数1/mは、そのまま1/mという数を表現するものであるが、nを1/mする数でもある。 ここで、ある数nを1Dベクトルとして見れば、分数…

数学をとらなかった人の為の3D数学 その3:番外編(N次元空間)

4次元ベクトルx,y,z,wのw要素、4x4行列の44要素

数学をとらなかった人の為の3D数学 その2:ベクトル1

三角関数(sin、cos) (編集中) 射影変換 ベクトルとは ベクトルの内積 三角関数と内積

3Dプログラミングあるある話

描画順で悩んだら ZバッファやZソートの前にまずカリングをONにして法線の向きの確認を。 その三角形は思った通りに展開されていないかもしれません。 オブジェクトが真っ黒 ディスプレイモード変更時にオブジェクトが真っ黒になってしまった時は、レンダリ…

数学をとらなかった人の為の3D数学 その1:概要

ベクトル(Vector) ベクトルとは、向きと長さを持った数である。それは2Dであっても3Dであっても変わらない。 ベクトル同士や複数のベクトルは加減算でき、下の図のようになる。 面白いことに、始点が同じベクトルを加算した結果は、2Dでは四角形、3Dでは立…

拡張エディットコントロールに

最近いろいろあるんですが、 ・行番号描画 ・UTF-16で処理(今時S-JISはゴミって言われましたpq そうですよねー) ・メモリ管理を真面目に くらい実装しとこうかしら(゚Д゚ あと、twitterはじめました(・ω・。)> 影響されすぎ? https://twitter.com/nepo_n

数学をとらなかった人の為の3D数学

内容は2D-4Dベクトルと3x3-4x4行列、四元数(クォータニオン)です。 高校前半までの数学で理解できる、図を主に用いたテキストを作ります。 講義の練習用なので、遅筆加筆多数になりそうですが。

C/C++プログラマー向けメモ帳

久々にバージョンアップしました。変更点は、 編集中かどうかの判定をちゃんとするよう変更(タイトルバーに*を表示) ビルド、実行、実行中断 を追加(要VC++) ダウンロード http://d.hatena.ne.jp/nepo_n/edit.zip コンソールアプリケーション、Win32アプ…

ウィンドウメッセージその2

前回のコード部分になります。 ついでに現在使っている「プロシージャ内でのCtrl,Shift押しの検出」を追加してみました。 // フックプロシージャ LRESULT HookProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { // このウィンドウに関連あるウィン…

ウィンドウメッセージその1

今回は検索(ウィンドウメッセージとかのワード)で来た方への記事になります。 Windowsプログラミングにおいて必須なのがウィンドウメッセージの処理です。 エディットコントロールにしても、ツリービュー、リストビュー等コモンコントロール等にしても、ウ…

することメモ

STGエンジンの作成 AI.txt→敵、弾の動作パターン、弾生成パターンの定義 Object.txt→敵、弾の定義(AI.txtで定義したパターンの組み合わせ) Scenario.txt→背景設定、進行管理(Object.txtで定義したオブジェクトの配置) PHP5開発環境の作成 プロジェクト管…

HDD飛びました\(^o^)/

サブHDDから時計みたいにカチッ…カチッ…と音が\(^o^)/ヤバイ ↓ やっぱり読み込めない\(^o^)/ クラッシュ初経験(享年7年)です。大したデータ無くて良かった。 というか120GB分何があったのか細かい部分を思い出せず。知らぬが仏\(^o^)/ メインHDDも5、6…

次は何を作ろう(´ω`)

その3

一通りパターンを書き終わったので、動作テストしてみました。 http://d.hatena.ne.jp/nepo_n/bullethell.zip # 現在、カスペルスキーがトロイの木馬と誤認識する模様。 ↓パラメータはこんな感じ。 int i;// 待機 task.push_back(Create(BL_WAIT,180,540,1,5…

その2

システム基盤が出来上がった所で、まず自機の設定を作ってみます。 サイズ → 絵が32*64で、当たり判定はその半分くらい(後で調整) 攻撃手段 → 威力△連射◎な通常弾と、威力◎連射×+移動速度半分になるレーザー弾 生命管理 → 1Hit-Deathのライフ制 アイテム …

その1

ゲーマーの心を刺激するシューティングゲーム。 グラディウス、パロディウス等や、2000年頃から出現した弾幕シューティングなど、様々なスタイルが存在します。 今日からは弾幕シューティング(以下STG)を作っていこうと思います。 そもそも弾幕STGとは何ぞ…

ぷるぷるシミュレーターver2

http://d.hatena.ne.jp/nepo_n/20100116久しぶりにバージョンアップしました。 ver2ではグループごと(今は赤緑青3つ)に揺れをXMLで制御できるようになりました。 また、グループには頂点を指定でき、頂点を中心に動かせるようにしました。 (頂点を設定し…

整理できた分を公開してみます。 長ーいので回線細い方は注意してくださいヽ(・ω・)ノ どちらも完成まで10日かかってます。 ・音声チャット http://d.hatena.ne.jp/nepo_n/20100225 app.h type.h connect.h file_io.h audio_io.h app.cpp connect.cpp file_io.c…

CompileのDevil Force 3 (Win95)を動作させる

使用してるAPIによって昔のプログラムが動かなかったりします。 DF3の場合はマウスクリックを認識しませんでした(´ω`) 最初に考えるのはAPIフックです。 一部だけ書き換えて後は丸投げするDLLを作って、それを代わりに認識させれば良い訳です。 でも今回はも…

その5(番外編)

音声チャットに特化した圧縮アルゴリズム まず音声は波形です。 同じデータが連続することはほとんどなく、上下に運動しています。 常に中心を通ることから、中心付近の値が頻出します。 以上のことから符号化で可逆圧縮したいと思います。 よくでるデータに…

その4(最終回)

圧縮+暗号化+無音検知を全部含めて自分のライブラリの圧縮クラスを使用しました。 そして圧縮効率から音質を決定しました。 8bit+22,100/44,200Hzを選択できます。 ダウンロード ・ファイル転送機能付きボイスチャット http://d.hatena.ne.jp/nepo_n/voic…

その3

1h→UDPインターフェースの実装 1h→UDP+waveIn/Out+Chatアプリ(既存)の組み合わせ 1h→通信テスト/デバッグ こんな感じで実装を進め、一応は形になりました。 が、ここで問題点や改善点が出てきました。 通信帯域の使用量 基本的に音声は相互通信なので、上り…

その2

waveIn/Out系関数の中で使うものは、 waveInOpen waveInPrepareHeader waveInAddBuffer waveInStart waveInUnprepareHeader waveInClose ・waveInOpen関数 デバイスをオープンしてそのハンドルを取得します。 コールバックを指定でき、そこでOPEN、DATAFULL…

その1

VoIP技術が確立されたのはもう10年も前の話で、現在は音声チャット、動画チャットが当たり前の時代になっています。(自分は使ってないのですが^^;) そんな当たり前のソフトウェアなのにまだ作った事がない! という訳で今日から音声チャットを作成して…