はじめにこんにちは!3DCGの再勉強中のなたでです! 今まで、次の変換行列の違いをみてきました。 DirectXとOpenGLのビュートランスフォーム行列の違いDirectXとOpenGLの射影トランスフォーム行列の違い本日は変換の最後のビューポート行列の違いを調べてみましょう。ビューポート変換とは、正規化デバイス座標系から、スクリーン座標系への変換となります。前回の講義から、右手座標系・左手座標系という話はなくなっているので、ビューポート行列はDirectX と OpenGL とで同じだと思いますが、どうなんでしょう。 関連記事3DCGの座標系の紹介DirectXとOpenGLの回転行列、回転軸、回転方向DirectXとOpenGLのビューポート行列の定義DirectXのビューポートの設定D3DVIEWPORT9構造体でビューポートの定義をして、SetViewportで設定できるようです
Im struggling with the following problem. Im working with bone animation and I want (ie) the head of the player to follow an another object in space. My up axis is +Z my forward axis is +Y, and the magnitude of the quaternion is in W. I tried to use the mesa code for gluLookAt and use the 3x3 matrix to transform to a quaternion but it doesn't work as expected so I go in another direction... So far
Fast Image Filters with WebGL WebGLImageFilter is a small JavaScript library for applying a chain of filters to an image. But to quote myself from twitter: That awkward moment when you realize the lib you've been polishing for the past 6 hours already exists. With more features and a better API. ~ @phoboslab, Nov 3. So, yes, there's already a library called glfx.js which basically does the same th
Billboards are an important part of 3D graphics, especially for use as user interface elements. Unfortunately, detailed information on how to construct them is a little hard to find, so I have derived the billboard matrix from scratch. In case anyone else is looking for this information, the derivation is as follows: Let us assume a standard, row-major 4×4 transformation matrix, with the fields na
まず原理ですが,2次元のスクリーンを3次元の物体に投影するというものです。 上の図を見るとわかるように基本的に透視変換と同じ原理です。よって,ライトを視点とみなして透視変換行列を作成して,その行列を掛けてやればよいということになります。 ここで復習ですが…。 皆さんご存じの通り,普通画像は左上が原点となりますが,これをテクスチャ空間に持ってくると座標系が違うためのこのままテクスチャマッピングを行うと上下が反転してしまいます。このままだとおかしいのでテクスチャ座標のt成分(DirectXやXNA GSだとv成分)をマイナス1倍して座標を反転させて,向きを合わせる処理をどこかでやる必要があります。 これを踏まえた上で話に戻ります。 射影テクスチャリングで気をつけなければいけないことはテクスチャ座標を計算するところです。 ライトからみた射影空間とテクスチャ座標が若干異なる点です。具体的には射影空
解説 ここからが3Dの本番となります。 今回は3Dの中で一番基本であり、数ええられないくらいの 3D 初心者を消してきた「座標変換」について説明します。 今までの中で間違いなく強敵で、数学もどんどん出てきます。 それでも 3D ゲームを作るに当たってこの行列変換は必ず必要になってきます。 気合を入れましょう。 ↑ 座標変換って何? そもそも座標変換とは何なのでしょうか? 座標については知ってますよね。 変換といえば、文字を変えていくあの変換ですよね。 座標変換とは文字通り「座標を変えていきます。」 3Dの座標変換は数式で演算することもできますが、通常は行列を用いて変換していきます。 さて、ここでプリミティブのことを思い出してください。 ポリゴンを形成するプリミティブは全て頂点から形成されています。 ということは頂点を操作すれば図形が変わるということです。 そこで、この性質を用いてこの頂点に
元のオブジェクトが持つ頂点情報などは中心位置を(0, 0, 0)としたときの座標系であらわされます。これを「ローカル座標」と言います。 ここから始まり、すべてのオブジェクト(物体)はシーンという3D仮想空間内に配置されます。この「シーン」を表現する座標系を「ワールド座標」と言います。ローカル座標からワールド座標に移行する際に、オブジェクトの拡大縮小・回転・平行移動などが行われます。ワールド座標にはオブジェクトだけでなく、光源・視点も配置されます。 さらに、今度はこれを「視点(カメラ)位置から見たときの」座標に変換します。視点は情報として、「視点位置」と「視線方向」があります(その他、視野角度などの情報もありますが、これが使用されるのは「パースペクティブ変換」です)。これを元に変換すると、始点位置が(0, 0, 0)で視線方向がZ軸で奥に向かってZがプラスになる座標系に変換されます。これを「
最近、CSS3の2D Transformsを使ってみた。当初はWebKit専用(-webkit-付き)で書いてたんだが、JavaScriptから制御しようと思うとWebKitCSSMatrixがWebKitにしかないので、Firefoxなどの他のブラウザではJavaScriptが動かなくなる。CSS宣言なら単純に無視されるだけなので、これは好ましくない。調べてみると、Mozillaも2D Transformsを実装してるらしい。ならそれを使えばいいじゃん、となるのだが、コードで分岐するのは面倒だ。そこで、こんな感じのコードを書いた。 if (navigator.userAgent.indexOf("Gecko") != -1) { CSSStyleDeclaration.prototype.__defineGetter__("transform",function() { return t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く