About
ホーム < ゲームつくろー! < DirectX技術編 その60 変換行列A×BとB×Aの違いを知ろう 3Dのゲームを作る上で変換行列は欠かせません。ローカルにあるモデルを世界に置くにはワールド変換行列が必要です。ところで、そのワールド変換行列を作る過程で「行列の掛け算」が出現します。例えば回転行列Rと位置行列Tから「30度回転させて座標(10,20,30)にモデルを置くワールド変換行列」なるものを作るわけです。 では、「世界に置いた位置からさらにモデルの向いている方向に40だけ移動させるワールド変換行列」とか「親モデルから相対的に30度親の空間のZ軸で回転させる」などゲーム制作上必要となる複雑なワールド変換行列を作るにはどう考えてどう行列を掛け算をしていけば良いのでしょうか。この行列感覚はとてつもなく重要です。 本章では色々な事例を検証しながら「変換行列を掛ける」という事をどう捉えるべき
高校で微分を勉強したものの、「なんだかわからないけどただ計算方法だけ覚えた」という困ったレベルに留まっている人は(残念ながら)多いようです。 まずは「微分って何なのか」を図形で理解して欲しいと思います。そこで動く図形で、微分の雰囲気を知って欲しいと思います。 そのための教材の一つとして、授業などで使うべく作成しました。 その1から順に読んで、動かしていってください。 このプログラムを動かすのに必要なファイル全ては、LHAで圧縮したファイルにまとめてあります。 androidの方は、このapkファイルをダウンロードしてくれてもいいです。 プログラムについて御質問、御要望、バグ報告などございましたら、前野[いろもの物理学者]昌弘へメールくださるか、または、twitterにてirobutsuまでメンションしてください。
asちょっと息切れしてきたのでサンプルプログラムでごまかし。黒い点をドラッグすると、制御点を移動できます。赤いボタンの上にマウスを置くと、1つ目の2次ベジエ曲線を描きます。緑のボタンの上にマウスを置くと、2つ目の2次ベジエ曲線を描きます。青いボタンの上にマウスを置くと、1つ目と2つ目のベジエ曲線の間を描きます。これが3次ベジエ曲線だよ。3次ベジエ曲線といえども、2次ベジエ曲線を2つ書いてその間をとるだけです。簡単ですね!目次ベジエ曲線の仕組み (1) - 昔話ベジエ曲線の仕組み (2) - 2次ベジエ曲線を詳しくベジエ曲線の仕組み (3) - 3次ベジエ曲線ベジエ曲線の仕組み (4) - ActionScript 3.0 でベジエ曲線を描くソースコードソースコードは以下に(270行)。ちょっと凝ったことをすると、ソースコードが長くなるなぁ。 package { import flash.
幾何学的性質 PostScriptフォントや、PostsScript形式のOpenTypeフォントで採用されている曲線です。 フランスの自動車メーカーの技術者であるBezier氏が考案したしました。 1つのベジェ曲線は、4つの制御点で構成され、両端の制御点は端点(アンカーポイント)、間の2点は方向点と呼ばれます。 2つ以上のベジェ曲線がつながる場合は、手前のベジェ曲線の端点が、次のベジェ曲線の端点となります。 今、4点P1、P2、P3、P4が与えられ、P1、P4を端点、P2、P3を方向点とします。 P1とP2、P2とP3、P3とP4を直線で結びます。 それぞれの直線を2分割し、分割点を直線で結びます。 この分割を繰り返し、分割数を多くすれば、分割点はベジェ曲線となります。 数学的表現 数式でベジェ曲線を表現すると、 のようになります。 tは0から1までの値をとります。t=0の時、x=x1、
ホーム < ゲームつくろー! < DirectX技術編 < クォータニオンを学んでみよう! その10 クォータニオンを学んでみよう! ① What is Quaternion ? クォータニオン(Quaternion)とは日本語で「4元数」と訳します(アルク:http://www.alc.co.jp/)。数字が4つ集まったもので、言ってみれば4次元ベクトルです。3次元ベクトルであれば縦横高さで何となく想像ができますが、4次元となるともうドラえもんしかわかりません(笑)。この原稿を書いている私も、実は何のことやらさっぱり。そこで、私と同じような境遇にいる皆さんにも理解できるように、このクォータニオンを1から学んでみようと思います。 クォータニオンについてマイクロソフトのHPに一通りの説明がありました(http://www.microsoft.com/japan/msdn/academic/A
解説 ここからが3Dの本番となります。 今回は3Dの中で一番基本であり、数ええられないくらいの 3D 初心者を消してきた「座標変換」について説明します。 今までの中で間違いなく強敵で、数学もどんどん出てきます。 それでも 3D ゲームを作るに当たってこの行列変換は必ず必要になってきます。 気合を入れましょう。 ↑ 座標変換って何? そもそも座標変換とは何なのでしょうか? 座標については知ってますよね。 変換といえば、文字を変えていくあの変換ですよね。 座標変換とは文字通り「座標を変えていきます。」 3Dの座標変換は数式で演算することもできますが、通常は行列を用いて変換していきます。 さて、ここでプリミティブのことを思い出してください。 ポリゴンを形成するプリミティブは全て頂点から形成されています。 ということは頂点を操作すれば図形が変わるということです。 そこで、この性質を用いてこの頂点に
■行列の積 ABの定義 [行ベクトルと列ベクトルの内積] ●行と列の掛け方 内積については,左からは行ベクトルを 右からは列ベクトルを掛けるものとします。 (左右を逆にしたものは定義されません。) ●要素数 行ベクトルの要素の個数(列数)と 列ベクトルの要素の個数(行数)が 等しいときに,行と列の内積が定義されます。
点(x, y)をX軸方向にTX、Y軸方向にTYだけ移動する行列は ただし、平行移動だけ行列の足し算になると、扱いにくい場合があるので 3×3行列を用いて以下のように表す場合もあります。 ■回転行列 ■拡大縮小行列 ■平行移動行列 とすることで、すべての座標変換を行列の積で扱うことができます。 参考まで... 個人的には回転行列を覚えるのは苦手で、SinとCosが逆になっり マイナスのつける位置を間違ったりしていたのですが、次のように 考えることで少しは覚えやすくなりました。 下図のように 点(1,0)をθ度回転すると(Cosθ、Sinθ) 点(0,1)をθ度回転すると(-Sinθ、Cosθ) に移動することはすぐにわかります。 このことを行列で表現すると 点(1,0)が(Cosθ、Sinθ)になることから 点(0,1)が(-Sinθ、Cosθ)になることから という事がわかります。 これを
メインページ > 使える数学 三次元座標の場合、まず座標軸の定義、回転方向の定義を明確に覚えます。 この座標は右手座標系と呼ばれます。 フレミングの法則のときのように右手で親指、人差し指、中指をそれぞれ 直交するようにします。 このとき親指から順に親指がX軸、人差し指がY軸、中指がZ軸の方向と なります。 回転方向は電流と磁界の向きと同じように電流が軸の向き、磁界が回転方向 に相当します。(右ねじの法則と同じです。)
ホーム<ゲームつくろー!<衝突判定編<内積と外積の使い方 基礎の基礎編 その1 内積と外積の使い方 この章では3Dゲームの特に衝突判定に無くてはならない「内積・外積」というベクトルの基本的な演算についてお話します。内積は高校で、外積はたぶん大学で習います。そのきちんとした意味を理解するのは大切ですが、ゲームで使う上では性質を体得する方が近道かと思います。そのためにはイメージが大切です。 この章ではゲームで使用するベクトルの内積や外積をイメージと一緒に見ていこうと思います。 ① 方向と大きさを表せる「ベクトル」 この記事をご覧になっている方の多くはきっと高校生以上だと思います(そうでない方は賞賛に値します!立派なプログラマーになれますよ(^-^))。高校の頃には必ず「ベクトル(vector)」を習います。ベクトルは「方向と大きさを表す方法」です。下の図をご覧下さい: 見た目平面ですが、ゲーム
解説 本来当たり判定は格闘ゲームとかにも応用できて共通で書こうとも思いました。 ですが、当たり判定といったらシューティングゲームというくらいに重要性が高いのでここで書きたいと思います. この当たり判定はシューティングゲームにおいて最重要とされる話題です。 今回説明する内容は毎週金曜日にある C3 ゼミで発表した内容です。 尚、今回説明する当たり判定は数学が結構出てきます。気を引き締めましょう。 ↑ 二点間距離を用いた方法 多分誰もが最初に考え付くのがこの方法ではないでしょうか? 二点間距離と円の半径を用いて当たり判定を実装します。 自分も最初この方法を使いました。 敵の弾の座標を(X1,Y1),弾の半径をR1、自機を(X0,Y0)、自機の半径をR0とします。 半径R1、R0の和が距離に等しいときにちょうど円同士が触れ合い、和が距離以下のときにHITするということです。 bool IsHit
■説明3 他のページに次の記述があります。 ある1次変換によって,点(1,0)が(a,c)に点(0,1)が点(b,d)に移されるとき, 1次変換の行列は, =(1,0),=(0,1)が =(cosθ,sinθ),=(-sinθ,cosθ) に移されるのだから,
1.内積が「3」って…どういう意味があるの? ベクトルを学習すると必ず「内積って何なんだ!?」という疑問に直面すると思います。 ベクトルの和,差と習ってきたから,次は掛け算や割り算でも習うのかな?と思ったら「ベクトルには掛け算はない!」と言われ,「変わりにこんなのがある!」ということで突然導入されるのが内積という概念です。 まずは復習ですが,2つのベクトルa→とb→の内積は, a→・b→=|a→| |b→|cosθ で定義されます。θは2つのベクトルの始点をそろえたときにできる「なす角」です。 例えば右の図のような場合,a→とb→の内積は 2×3×(1/2)=3ということになります。 しかしいったい,この「3」という数値は何を意味しているのでしょうか。 2.内積は「仕事」や「貢献度」を表す 内積は「b→が,a→の方向に,a→と共に行った仕事の量である」という説明ができます。 右のような例で
先日、ネットの掲示板で「小2の算数複雑すぎワロタ」といったスレッドがたち、一部で話題となっていた。 件の問題は、 「くふうしてけいさんしましょう」というもの。 たとえば、以下の「52-8」という問題、「くふうしてけいさん」すると……。 <12から8をひいて4→40と4で44> <52から2をひいて50→50から6をひいて44> これ、2年生でも暗算ですぐ計算できてしまうもので、大人ならなおさら瞬時に答えがわかるだけに、「なんでそんなめんどうくさいことを?」と思ってしまう。 ちょうど自分自身も、小2の娘とその友人にこの問題を聞かれたところだったので、ネット上の話題に敏感に反応してしまったのだが、実際、ネット上では「これをくふうというのか」「わかりにくすぎ」などの大人のコメントが多数見られた。 また、子どもたちの解き方を見ていると、普通に計算できるくせに、「くふうして」と言われると、ややこしく
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く