プチメタ3.0

刺激を受けた物事に対する感想や考察、資産運用や英語学習、自己成長に関することなど。


衝突判定に必要な3Dモデルの大きさを自動計算する仕組み


ゲームというものは2Dであれ3Dであれ
「何かと何かが衝突する」という状況が多く発生するが、
その判定には当然ながらそれぞれの大きさの情報が必要になる。


2Dゲームの場合は画像の幅や高さを使えばいいが、
3Dゲームの場合はどのようにしているのか、
そのあたりの仕組みを解説してみる。

3Dモデルは頂点の集合体


立体的なキャラクターや背景モデルは
「ポリゴン」と呼ばれる三角形の板で構成されており、
そのポリゴンは3つの頂点が1セットになっている。


平面を使って立体物を表現する手法は
ペーパークラフトに非常によく似ている。




つまりこういった複雑なモデルであっても



結局は多数の頂点が集まっているのだ。


形が複雑になればなるほどポリゴンが増えるのだが、
それらを使って真面目に衝突判定をしていると
計算負荷が大きくなってゲーム中に処理できない。


そこでいかにシンプルに考えるかが重要になる。

モデルを球体に見立てる


たとえばモデルの中心から各頂点までの距離を求め、
その中で一番遠い値を半径とする球体をイメージする。




一番遠い場所にある頂点を基準にしているので
すべての頂点がこの球体の中に収まるはずだ。
つまりこれが3Dモデルのおおよその大きさを表す球となる。


衝突する物体同士を球に見立てれば
2Dゲームと同様に三平方の定理で高速に判定することができる。
これは各作品で非常によく使われている方法だ。


ただし、モデルの形が球状から大きくかけ離れていると
当たっていないのに衝突したと見なされる違和感が出る。




そういう場合は複数の球体を埋め込む形で
ある程度、モデル全体の形に近づけて判定する。
球の個数が多くなるとやや計算回数も増えるが、
それでも三平方の定理だけで処理できるメリットは大きい。

モデルを直方体に見立てる


もうひとつの方法として、
各頂点の中でもっとも大きなX座標の値を調べる。
つまり一番右にせり出している頂点のX座標だ。


同様に、全頂点から最大のY座標と最大のZ座標を探す。
これは一番高い位置の頂点、一番奥にある頂点となる。
それらの値を組み合わせると
もっとも右・上・奥の角を表す座標となる。


さらに全頂点からXYZ座標の最小値も調べて
もっとも左・下・手前の角の座標を割り出す。




その2つの座標が対角に位置する直方体をイメージすると
3Dモデルがぴったり収まるボックスができあがる。


球体として扱いにくいもの、たとえば戦車などは
こういった直方体として考える方がよかったりする。

まとめ

ゲーム機のスペックはどんどん進化するが
その恩恵の大半はグラフィック部分に回されるため、
内部的な処理はできる限りシンプルで高速にする必要がある。


見た目は豪華でも計算上は実は簡略化して判定していることは多く、
最新のゲーム作品であっても
さまざまな工夫と原始的な理屈がベースになっている。



mclover.hateblo.jp

コナンファンしか正解できない漢字クイズを作った



「名探偵コナン」のテレビアニメ放送開始から30年近く経ったが、
映画版の方は今の若者層に絶大な人気があると聞いて
1作目から順に少しずつ追いかけている。


その中で気づいたのが、タイトルの漢字の読み方が
毎回めちゃくちゃ難しいことだ。
中にはもともとの意味から大きく逸脱した当て字もあり、
もはやコナンを観ていなければまず読めない域に達している。


せっかくなので全27作品のタイトルに含まれる漢字の読みを
3択クイズとして作ってみた
(全部で100点満点にした方がわかりやすいため、
 古い作品は4点、新しい作品は3点としている)


匿名で挑戦できるので、ぜひ映画版コナンの
破天荒な当て字を垣間見て欲しい。
自分のレベルを世間と比較できるよう
得点分布グラフも掲載しておく(必要に応じて左右にスクロール)。




mclover.hateblo.jp

mclover.hateblo.jp

3Dモデルを作るときは無地の壁でもわざわざムラのあるテクスチャを貼る


3Dゲームを開発ときは、建物やステージといった
背景部分も立体モデルとして作っていく。
その際、同じ色の床や壁であっても
少し斑(むら)を用意するのがポイントだ。




たとえばコンクリートの床だからといって
こんな感じの無地のデザインにしてしまうと、



遠くの床も近くの床もまったく同じ見た目になるので
距離感がわからなくなるのだ。
凹凸のついた地面なら光が当たる向きで明暗がつくが、
平らな床面だとまったく区別がつかない。




そこで、たとえグレー一色の床であっても
汚れや傷みなどで濃淡に差をつけたテクスチャを貼る。




すると遠くに行くほど粗さが変わるので
近くなのか遠くなのかがわかりやすくなるのだ。


3Dゲーム作りに慣れていない学生だと
床一面を1色で塗ってしまったりするのだが、
このあたりの工夫も市販ゲームをよく観察して
気を配れるようになって欲しい。

アルバイト先に就職しようと考えたときに確認すべきこと


就職活動に消極的な学生が
「今のアルバイト先にそのまま就職します」と言ってくることがある。


苦労せず就職先が見つかることは楽なよう感じるが、
その判断が本当に妥当なのか、以下の点を確認して欲しい。
よくよく話を聞いてみると
ちっとも安心できる状況ではないことがある。

採用権のある人と交渉しているか

先輩アルバイトや若手社員から
「社員になったらいいのに」程度の誘いを受けて
すっかりその気になっている学生がいるが、
採用の決定権を持っていない人の誘いなど何の役にも立たない


社員の採用や登用にはある程度の基準や都合があり、
誰を雇うのかを決められる人から誘われない限り、
審査の手続きは何も始まっていない。

新たに求められる能力や成果を理解しているか

「アルバイトとして評価されているから
社員としてもがんばれるはず」と考える学生がいるが、
求められる能力や成果は当然変わってくるため、
アルバイト時代と同じ仕事内容で済むはずがない


企業側の立場で考えれば、やっている仕事が変わらないなら
アルバイトとして雇っておいた方がコストが安いわけで、
社員として高い給料や各種社会保険が必要になる以上、
それに見合う利益を上げることが求められる。


それまでやっていた作業のまま
社員扱いしてもらおうと考えるのは虫が良すぎるわけで、
責任の重い業務や転勤なども覚悟しておかないといけない。

同級生が就職する企業の待遇と比較したか

いろいろな企業に応募する就職活動と比べると
心理的な負担が軽くて楽に思えるかもしれないが、
同級生が就職するような企業と比べて
実は水準を下回る労働条件だったりすることがある。


就職活動した場合は複数の企業を比較できるので
相場と比べて良し悪しが判断しやすいが、
アルバイト先しか見たことがない場合、
条件の悪い職場なのに気づかなかったりするのだ。

勉強している専門知識を活かせなくていいのか

一般的なアルバイトでは特に専門性は求められないため、
在籍している学科の内容とは無関係なことがほとんどだろう。
そうなると入社後も学んできた内容が業務に活かせる可能性は低い


高校卒業時点の能力しか求められないなら
学費を払った数年分の価値は薄くなるため、
そこを納得できるかも振り返っておく必要がある。

正式な内定通知がもらえるのか

一般的な就職活動では採用通知が文書やメールで手に入るため、
卒業後の進路が確定された証拠が手元に残るが、
アルバイト先に就職する予定の場合に
単なる口約束のままだといつ覆されてもおかしくない


自分の貴重な将来やチャンスを預けるなら
就職先から正式な内定通知を受け取っておくべきだし、
それをしてくれないような職場なら入社すべきでない。
期待させるだけさせて都合よく扱われていないか注意が必要だ。

まとめ

アルバイトを選ぶときには
そこまで厳密な比較や下調べはしないだろう。
逆に言えば、卒業後の進路として見た場合に
そこが運よく良質な就職先である可能性は低い。


また、空いた時間に小遣い稼ぎができて
ある程度通いやすければ十分というアルバイトと、
日中の大部分の時間を充てて
生活を築くための収入を得る本業では
価値観や選ぶ基準が異なるはずなのだ。


「就職活動が億劫だから」というだけで
安易にアルバイト先への就職を考えるのはリスクが大きい。
新卒カードを捨ててまで選ぶ価値があるのかを
もう一度考えてから結論を出すようにして欲しい。



mclover.hateblo.jp

mclover.hateblo.jp

mclover.hateblo.jp

総アクセス数