忍者ブログ
場所取り そのうち引っ越すかも http://maglog.jp/gltest/
[1] [2] [3]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


billiardss01.jpg billiardss02.jpg billiardss03.jpg

更新がご無沙汰になっているが、blog管理人がついに就職したのが原因だ。

社会人になると、時間や自由のように失うものもあるが、得るものもある。給料が出ると色々とツールを買うことができる。その一つが初任給で買ったデジカメだ。

買ったのはリコーのCX1というデジカメだが、こいつの機能に傾き補正というやつがあって、斜めから撮った平面を補正して垂直方向から見たかのように画像変換することができる。テクスチャ素材を
集めるにはうってつけだ。


それとは別に、ビリヤードの物理をやってみたくなったので作ってみた。素材は早速デジカメで撮ったものを使っている。

ビリヤードボールの形状は剛体シミュレーションには非常に適したものであるが、接触時の挙動はそれほど簡単ではない。ボール同士にも、ボールと台との間にも、クッションに対しても摩擦があり、単純な完全弾性衝突とはみなせない。そうでなければボールは全く回転しないのであるから、あたりまえといえばあたりまえだ。
実際のビリヤード台は湿度で挙動が変わったりもするという。現実味のある挙動をとらせるには、パラメータ調整に時間をかける必要があるだろう。

ビリヤード台のモデリングは意外と面倒なので、今は平面的になっている。

3枚目の画像は素材に使った簡易ビリヤード台の写真である。
 
PR

gltestss90.jpg gltestss91.jpg gltestss92.jpg

そろそろ基本機能も固まってきたので、ゲームとしての方向性を決めたいと思う。

地上の現象のシミュレーションは完成度を上げるのが難しいので、ひとまずジャンルを宇宙系リアルタイムストラテジーとする。

フル 3D 宇宙系 RTS といえばなんといっても Homeworld シリーズが元祖には違いないが、最近で言うと Sins of a Solar Empire というタイトルにシステムは近いものになると思う。

本ゲームがユニークであると思われる点は、スケールに関するリアリティになる。前に述べた2タイトルは宇宙を題材にしてはいるが、距離感よりもゲーム性に重きを置いていて、宇宙の広大さに関してリアリティを追究しているわけではない。これに対し、本作では天体運動の実時間シミュレーションを行いながらゲームする。モデルは現実の太陽系で、実際の天体の運動を参考にしている。

さまざまな天体を巡る軌道上で自軍のユニットを操作し、太陽系内をワープしながら資源を探し、敵を殲滅するといったゲームになる。

前にネットゲーム化計画に関して書いたが、いまのところネットゲーム化するには難しすぎる点が多いため、とりあえずシングルプレイヤーゲームとしてリリースしてから、ソースを C 言語から C++ に移行してネットワーク対戦に取り掛かるつもりだ。
 

gltestss88.jpg gltestss89.jpg

NLIPS(Non-Linear Inverse Perspective Scaling) とは、 Homeworld というゲームのシリーズで、カメラをズームアウトしたときに小さな宇宙船が見えなくなってしまうのを防ぐため、描画時の大きさを変えるというテクニックである。

モニタの解像度は高が1000ピクセル程度と知れているので、あまり小さなものは1ピクセルにも満たず、見つけることができなくなってしまうので、宇宙を舞台とするような広大なスケールダイナミックレンジを持つゲームでは必要になることが多いと思う。

近くに見えているときに拡大してしまっては、元から大きい船にしか見えなくなるため、カメラから遠ざかったときに効果を強くするような式が必要になる。 gltest では下のような式を使ってスケールを決定してみた。

  scale *= 1. + fov * g_nlips_factor * VECDIST(pos, view);


ここで、 fov は視野角(Field of View)のコサイン値であり、 g_nlips_factor は効果の強さを調整するコンソール変数、 VECDIST(pos, view) は視点と描画対称の位置の直線距離を計算する関数となっている。


 
人体モデルに銃火器を持たせる上で、リアル系FPSばりにリコイルを表現してみたくなった。

ランダムで照準をずらして、連射時に目標を狙いつづけるのが難しくなるようにしてみた。

話の上で、照準のずれ量 a (角度)とその変化速度 ω (角度/秒)を定義する。ピッチとヨーの2軸についてこの値が2次元平面を張ると考えることができる。

基本的には、射撃によって ω が瞬間的に変化するようにし、 a がゼロに近づいていくように制御すればよいのだが、ここで問題になるのは、 gltest のようにシミュレーションステップの時間幅が可変の場合、差分法による求解では、描画時のフレームレートによって挙動が異なってしまうことである。悪い場合には発振や発散にも至る。

そこで、一次のフィードバック系の解析解である指数関数を使って、フレームレートに関わらずリコイルの挙動が決まるようにした。

ソースや動画は「続きを読む」で。


 

infantry_weapons.jpg gltestss87.jpg gltestss85.jpg


前回に引き続き、今回もblog休止期間の開発状況についてである。

人体モデルの導入にはずいぶんと苦労した。統合されたモーションエディタとモデリングツールが手元になかったため、前の動画でVF-25のモーションを作るときに使った自作のモーションエディタを流用した。他にもテクスチャが貼れないとか、スキニングができてないとか、色々と問題があった。

とりあえず人の形に見えるようにはなったので、何種類か武器を持たせてみた。一人称視点で操作することもできる。

スクリーンショットでもわかるように、あからさまなローポリゴンモデルだが、多量に表示することになるので細部を作りこむ予定はない。

スキニングに関してはいまだにできていないのだが、この様子だと必要ないのかもしれない。
 


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
gltest
性別:
非公開
自己紹介:
バーコード
ブログ内検索
アクセス解析