2P側A-Sで…?

2015年8月3日現在、更新停止中です。

Bullet物理エンジンのインストール方法〜

この記事は、無料で商用利用もOKでオープンソースな物理エンジンBullet Physicsインストール手順と、インストール後にBulletを使うためのVisual C++プロジェクトの設定手順を記したものです。
(ちなみにBulletは「バレット」ではなく「ブレット」と発音するそうです。)

この記事のやり方でなくとも、bullet-2.78.zipを展開してすぐに見つかる「msvc\2008\BULLET_PHYSICS.sln」をそのままビルドすればいいみたい? ですが、この記事では公式WikiCreating a project from scratchに近いやり方で書いています。
公式Wikiの情報が少し古い?? みたいなので、自分がやった手順を記しています。
2011年4月18日追記:
この記事の方法で正しいのか不安になってきました。この記事を鵜呑みにしないでください!!
解説記事を書いておきながら、ごめんなさい...。


間違えているところがあったら、コメント欄で教えて頂けるととてもありがたいです。

画像内の解説文字には、日向梓さんのあずきフォントを使わせて頂きました。
普段テキストエディタを使うときも、あずきフォントまたはうずらフォントを使わせて頂くことが多いです。
やわらかい文字のおかげで和みます。すごくいいです。
(プログラムを書くときは、カンマとドット、コロンとセミコロンがちょっと判別しづらいので、別のフォント(メイリオなど)を使わせて頂くことが多いです。)



さてさて、Bullet導入の解説は以下ですっ。

続きを読む

演算子の表示色を変えるだけでものすごい見やすさに!

自分はプログラムを書くとき、Visual Studio 系(Visual C++, Visual C#)の Express Edition(無料!ありがたい!)を使わせてもらってます。

しばらく、ほぼ初期設定のままで使ってました。(2年半くらい...)
行番号の表示(ツール>オプション>テキスト エディター>C/C++>全般)は行うように変更していたので「ほぼ」です。)

前々から「カッコとかドットとかカンマを色分けできたら、コードが見やすそうなんだけどなあ...」とか考えてて、ツール>オプション>環境>フォントおよび色 でそれっぽい設定ができないか探してみたこともありました。

monotone
↑ほぼ初期設定


そのときは設定項目を見つけられなかったんですが、3週間前...ふと上記と同じ設定ダイアログ(ツール>オプション>環境>フォントおよび色)を眺めてたら...あるじゃないすか!! 「表示項目(D):」「演算子」!!
(過去に見つけられなかったのは、「強調表示したい文字列」みたいな項目はないか? と探していたためだと思います...。)


演算子赤色+太字表示
背景が真っ白だと味気ないのでうっすら緑に設定
・ついでにフォントメイリオに変更
・ついでにフォントサイズサイズアップ
したら、コードがものすごく読みやすくなりました!!
自分の書いたコードはもちろん、人の書いたコードの読みやすさが桁違いなのがすごくありがたいです。コードの流れをとても追いやすくなります

colored
↑変更後!!


フォントのメイリオMS ゴシックに比べてやわらかい線なため、コードを書いてるとき気が滅入りにくくてよいです。
(メイリオは Vista から入ってるフォントですが、XP でも後から入れられるぽいです。)
フォントが違うだけでその文章やコードから受ける印象がずいぶん変わるので、お気に入りのフォントを探して導入するのも良さそうです。コードを書く楽しさが違います!


色変更できることに気づくのが遅すぎだろ自分! という記事でした!

RenderMonkey でアセンブリシェーダを書く方法!

今回の記事は、RenderMonkey(陰影処理プログラムの実験をするとき、とてもありがたいソフト)で『HLSL じゃなくてアセンブラ(アセンブリシェーダ)で書きたいんだけど、どうすれば?』というときの手順です!
手順は「既存の頂点シェーダとピクセルシェーダ削除してから追加しなおす」...というだけ! なんですが、自分は気づくまでに時間かかりました...。
(この手順、マニュアルに書いてあるんでしょうか...?)

01asmshader_delete
01.既存のシェーダを削除して、

02asmshader_add
02.DirectX ASM を追加すれば、

03asmshader_end
03.そうそう、これこれ!!




今回の記事はこれでおしまいです。ゆるく...短く...。

ファイル入出力実験〜

ゲームにはセーブとロードが必須...
それを実現させるために必須の「ファイルの入出力処理」は入門書で少し触っただけで、ほとんど分かってないんだった...(C言語)

ということで慣れよう! と思ってファイルオープン、テキストモード実験、バイナリモード実験、ファイルクローズ...と一通り実験してみました。
(fopen(), fscanf(), fprintf(), fread(), fwrite()、fclose() を使うだけ!)

単純な構造体を作って、テキストモードでは「1行に1変数」をテキストとして人間が読める形式で記録して、読むときは用意しといた構造体に読み込んでプリント。
バイナリモードでは「変数ごとの改行なし」でひたすら連続して記録して、読むときはやはり用意しといた構造体に読み込んでプリント。
(「プリント」は、「確認のために printf() で表示してる」という意味です。)

...ってやるだけなので本当にただの実験です。
バイナリモードで記録されたファイルをメモ帳などで開くとchar型以外のデータはだいたい謎の文字になるため、「これだよ、これ!」って嬉しくなります(?)



今回使用したファイル入出力関数たちはC標準ライブラリの関数なので、Windows に特化させる場合なんかは windows.h をインクルードして、Win32APICreateFile() あたりを使う必要があるようです。ファイルの属性(読み取り専用とか)を指定したい場合など。
特に特化させなくてよい場合は、標準ライブラリの関数を使うで十分のはずです。



ファイル入出力ができるといろいろできそうな感じで、よいですね! もっと早くから慣れておけばよかった!



セーブ・ロードのやり方ですごく参考になった本!
・『APIで学ぶWindowsプログラミング(安室浩和さん)』
(の、シリアライズ・デシリアライズという考え方を解説するところ。他の部分もすごく分かりやすくてとてもよい本です。)
(このリンクはアフィリエイトではないので安心して踏んでくださいね!)




毎回、記事と記事のあいだに日が開いちゃいます...次回はもっと早く! ってしたいですが、また開いちゃうかも。
記事を書くのにすごく時間がかかるのがきついのです...もっとゆるい気持ちで書けばよいのかな〜...?

3ヶ月ぶり更新です

3ヶ月ぶりの記事です〜...。更新ないのに覗いてくださってる方すみません、ありがとうございますっ。
もう少し、更新なしが続きそうです。


pixiv の方には久しぶりに、12日からちょいちょい UP しております。(非全年齢ばっかですが!!)

線画の仕上げに線の強弱をつけると、よい感じになりやすいような気がします...。
ただし、線に強弱をつけても線そのものを綺麗に感じるだけ...という気がするので、もともとの線を引く位置がまずいと駄目ぽい、かも。
他にも、線の位置はよくても、線の強弱を付ける位置がまずいから駄目、とかもありそう。

でも、線の位置はまずいぽいのに、線に強弱をつけるだけで「まずい」から反転して「よい」になることもあるので謎です。
ある程度かんがえても分からない謎は、ひとまず謎のまま保留です...。
(この記事で言う「」とは、「何かの輪郭線=何かと何かの境界線となる線」の意味で使っています。)



ハエトリさん(=ハエトリグモ)がたまに出てきて、遊んでもらってます...かわいくてたまらんです...!!
今回の記事は以上です!

DirectX プログラミングで知ってるといいかもしれない? こと13個。

DirectX を用いてプログラミングするとき、知っておくとスムーズに進める気がすることをメモ的に書いておきます。
まじめに書くと記事の作成に1時間も2時間もかかって自分ががっかりするので、10分でぱぱっと...(結局1時間30分以上かかりました)。

以下、間違いを書くつもりは無いですが、ぜったい鵜呑みにしないでください!


1.D3DX という言葉は「Direct3D Extension」の略称。Extension(=拡張)は「エクステンション」と読めますが、エクスをアルファベットのエックスに置き換えたようです。

2.メッシュとは「複数のポリゴン(=面)で作られた形状」の別名のようです。2ポリゴンでもメッシュと呼べるのか分かりませんが、1000ポリゴンの3Dモデルともなれば「辺(=エッジ)が網目(=メッシュ)のように見える」ということからメッシュと呼ぶのかもしれません。 複雑な形状のモデル=メッシュと呼んでいいはずです。

3.D3DXVECTOR3ベクトル型。実体は FLOAT(実体は float) が3つの構造体。D3DXVECTOR2 や D3DXVECTOR4 も存在し、それぞれ「FLOATが2つ、FLOATが4つ」というもの。

4.D3DXMATRIXA16行列(マトリクス)型として使う構造体。実体は FLOAT が16個。 「D3DXMATRIX」は「Direct3D Extension Matrix」の略で、「A16」は「Alignment 16」の略と思われます。Alignment は日本語にすると「調整」という意味です(なにを「調整」するのかは不明)。「16」は「4x4行列だから、4x4=16」という理由で付いていると思われます。 行列型としては、D3DXMATRIX もよく使われます。D3DMATRIX(非Extension)も存在しますが、よく分かりません。

5.ワールド行列とは、「平行移動行列、回転行列、拡大縮小行列」の3つの行列を合成した行列に対する名称。

6.DirectX という名前はなんというか総合的な名前で、実際に使うときは「Direct3D」とか「DirectInput」、「DirectSound」などをそれぞれ名指しで使います。(分かりづらい説明です。無視したほうがいいかもです。) Direct2D とか DirectWrite なんていう新しいセットも出てきたみたいです。


以下じぶんは特に分かっていない事柄なので、本当に鵜呑みにしないでください!

7.ジ オメトリとは「頂点、ポリゴン(=面)、メッシュ(=複雑な形状のモデル)のどれを指すこともできる言葉」のようです。頂点、ポリゴン、メッシュという言葉はそれぞれ狭い範囲の意味を持ちますが、ジオメトリという言葉は頂点、ポリゴン、メッシュのどれに対しても使える広い範囲の意味を持つ言葉らしいです。 辺(=エッジ)にも「ジオメトリ」という言葉を使っていいのか分かりません。多分使っていいのではないかと思います。(根拠はありません。)

8.シェーダとは「陰影に関する処理」の名称で、DirectX7 までは Direct3D の固定機能のシェーダ(=陰影に関する処理)を使うことしかできませんでした。 固定機能シェーダは、「ライトを使いましょう」「ライトの色は RGB で 0, 0, 255 にします」、「透明処理を有効にしましょう」「透明処理に使う情報は...」みたいに「機能が用意されていて、それらの機能に命令を出す」という感覚が強いです。 固定機能シェーダは DirectX8, 9 でも使用できます。

9.DirectX8 からはプログラマブルシェーダが使えます。プログラマブルシェーダとは、「シェーダ(陰影に関する処理)を自分で自由にプログラムすること」また「自由にプログラムしたシェーダ」の名称 です。 DirectX8 以降では頂点(バーテックス)シェーダとピクセルシェーダを書くことができ、10 以降ではさらに「ジオメトリシェーダ」を書くことができます。 それぞれの意味はよく分かりません(ごめんなさい...)。

10.DirectX 10 以降、固定機能シェーダは完全に廃止されました。10 以降の Direct3D を用いてアプリケーションを作る場合はプログラマブルシェーダを書く必要があります。

11.ちまたで見かける「シェーダを書く」という言葉は、「プログラマブルシェーダを書く」という言葉を略して「シェーダを書く」と言っていることが多い気がします。

12.プログラマブルシェーダは「エフェクトファイル」を書き、エフェクトファイルをアプリケーション側でロードして使用します。エフェクトファイルをアプリケーションに埋め込むことができるかどうかは失念しました。

13.エフェクトファイルの拡張子は、HLSL(High Level Shader Language)というシェーディング言語で書かれたエフェクトファイルの場合は .fx。 シェーディング言語として他にも Cg 言語(C for Graphic Language)という言語があったり、その場合はエフェクトファイルの拡張子が .cg だったりするようです。 シェーディング言語を使わない場合の .vsh.psh というエフェクトファイルも存在します。(それぞれ、Vertex Shader, Pixel Shader の略。)


10分でぱぱっと書くつもりが、結局1時間30分以上かかったのでした〜...。
でもずっと急いだせいか、がっかり感はあまりないのがありがたいです。

UV座標のこと?

DirectX(の、Direct3D)で、適当なモデル(Metasequoia で作った .x 形式のファイル)を描画したり...四角ポリゴン(三角ポリゴン2枚)にテクスチャ(模様となる画像)を貼って、テクスチャのUV座標だけを変えることでスクロールしているように見せかけたり...。


以下、正確ではないかもしれないのでぜったい鵜呑みにしないでください! その上、ただのメモという感じになってしまってすごく読みづらいです...。

UV座標とは3Dモデルの各頂点に持たせられる情報の1つで、「この頂点には、テクスチャのこの位置を対応させる」という指定です。(...ですよね...?)

なので、「UV座標」という情報を持っているのはテクスチャではなく3Dモデルの各頂点ということになります。
ですから「テクスチャのUV座標を変える」と言うよりも「頂点の持つUV座標を変える」と言った方が正しいのかも。
「UV座標」というと「テクスチャが持っている情報」だと感じてました。

...でも、テクスチャ自身も「左上がUV座標 ゼロ、右上がU座標 1、左下はV座標 1 である」...とか言えるかもしれないので、テクスチャ自身も「UV座標」という情報を持っていることになる...? でも、「テクスチャ側のUV座標?」は弄ることができないし...?  ...でもでも病...。


「UV座標」の「UV」は何の略か? についてですが、何の略でもなく、「アルファベット順で並んでいる U, V を使うことにした」というだけのことみたいです。
「アルファベットの中でも、なぜ U, V なのか?」については、「U, V, W, X, Y, Z」のうち「X, Y, Z」は3次元の座標を表すのに使われているし、「W」は同時座標系がなんたらという時に使われている(私はまだよく分からない)ので、残った「U, V」にしよう! ということ...なんだと予想します。

「U, V の手前の S, T その他では駄目なのか?」ということについては分かりません...。「S, T」が他で使われているかどうかにかかわらず、「まあ U, V でいいだろう!」という、理由の無い理由なのかもしれません...。

紫外線(Ultra Violet)とは全く関係なかったみたいです。



UV座標のことを書くだけでずいぶん時間が掛かってしまいました...もっと素早く簡潔に書けるようになりたい...。

まだまだ、バンプマップとか HDR(High Dynamic Range)合成とかグレアとか衝突判定とか、覚えたいこと大量です...。
アクセスカウンター



今までの日記
自己紹介
名前:ディメトロ
誕生日:1990.01.01
性別:男
住んでいる所:神奈川県

姉妹blog(絵・R-18)




Twitter
QRコード
QRコード
最新のコメント
  • ライブドアブログ