2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
全31件 (31件中 1-31件目)
1
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.9 Large Model Renderingメインメモリに入りきらないようなモデルのレンダリングについて。複数の入れ子になったデータ構造を使い、四分木のようなデータに格納しビューに入ろうとしている瞬間にディスクからページインすることで対処するようです。詳しくはここに挙げられている関連資料を参照するしかないようです。
2007年05月31日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.8.3 Time-Critical LOD Rendering一定のフレームレートを保つことをハードリアルタイムとか時間厳守(time-critical)と呼ぶそうです。シーンに見える全てのオブジェクトの詳細レベルの選択を一定のフレームレートに収めるためにヒューリスティックなアルゴリズムが紹介されています。どのオブジェクトが見えるかを基に見えるオブジェクトの LOD を決めるという意味で、シーン内で予測的(predictive)といえます。このようなアルゴリズムは前のフレームでレンダリングした時間を基に選択を行う応答的(reactive)アルゴリズムと対照になっています。
2007年05月30日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.8.2 LOD Selectionヒステリシス使う LOD を決める測定基準がある値 ri の近辺でフレームごとに変化すると余計なポッピングが気になることがあるので、 ri 近辺に多少のヒステリシスを導入することで解決します。上の段のLODの範囲は上昇するときしか使わないようにすると良いようです。その他範囲ベースおよび投影面積ベースのLOD選択が一般にはよく使われるのですが、それ以外にも以下のような選択肢が考えられます。・オブジェクトの重要性を考慮する・観測者が注目している焦点を考慮する・大域的に高い商才レベルの数を制限する・可視性、色、テクスチャなど知覚的な基準を考慮する。
2007年05月29日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.8.2 LOD Selection異なる詳細レベルのどれをレンダリングするかの選択はLOD選択の仕事です。遮蔽カリングのアルゴリズムにも使えます。一般には現在の視点とオブジェクトの位置で利得関数と呼ばれる測定基準を評価し適切なLODを選択します。ここでは r とします。Range-Basedもっとも簡単な方法でユーザーが定義した範囲でLODのモデルを切り替える方法です。Projected Area-BasedLOD選択によく使われる手法として境界ボリュームの投影面積を使う方法があります。ここではスクリーン空間被覆率(screen space coverage)と呼ばれる、領域のピクセル数の見積もり方法が示されています。球の投影面積の見積もりはビュー方向に沿った視点からの距離とともに減少し視点からの距離が2倍になれば投影サイズは半分になります。立方体の投影面積を求めるためにボックスに関するカメラの視点を分類し投影立方体の輪郭にどの投影頂点が含まれるかをテーブル参照し求め面積を計算します。立体角を利用する手法もあるようです。
2007年05月28日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/Alpha LODsポッピングを完全に避ける単純な手法はアルファLODと呼ばれる手法で、これは複数のインスタンスを使わず、距離に応じてオブジェクトの一部をアルファで消す方法です。完全に見えなくなった場合はレンダリングパイプラインに送ること自体をやめることもできます。CLODs and Geomorph LODs単一モデルから複数のLODモデルを作成するのにメッシュ単純化処理が使えます。エッジの折り畳み(collapse)手法はLOD間の遷移を可能にする特性があります。エッジを折りたたむことでポリゴンは2つ減ります。1つの頂点が別の頂点に結合します。その一連のエッジ折り畳みを保管しておくことでこの家庭を元に戻すこともできます。エッジ折り畳みの逆を頂点分割(vertex split)と呼びます。距離に応じてなど連続的に詳細レベルを変える手法を連続詳細レベル(Continuous Level of Detail:CLOD)テクニックと呼びます。頂点分割で1つの頂点は2つになります。これは複雑なモデルのすべての頂点がより単純なバージョンのどこかの頂点からくることを意味します。ジオモーフLOD(geomorph LOD)は頂点間の連結性は保持したまま単純化によって作成した不連続なモデルのセットです。複雑なモデルから単純なモデルに切り替えるときに複雑なモデルの頂点を元の位置と単純バージョンの位置との間で補完します。
2007年05月27日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.8.1 LOD Switchingレベルの違うLODに切り替えるときに突然モデルを置き換えるとポッピング(popping)と呼ばれる現象がおきます。Discrete Geometry LODsもっとも単純な種類のLODアルゴリズムでは含まれるプリミティブの数が異なる同じオブジェクトのモデルを用意する方法です。現在のグラフィックスハードウェアに適していますがポッピングがもっとも悪くなります。Blend LODsLOD1とLOD2がありこれを切り替える必要があるとします。LOD1が現在レンダリング中のLODとするとLOD1を不透明でまずフレームバッファに描画しLOD2をアルファでその上に重ねてクロスフェードするように描画します。利点としてはあらゆるハードウェアで動作し実装も楽なことです。片方は完全に不透明で描画することでアルファブレンドに伴う問題も回避しています。遷移時間を短めに保つことで効果的に働きます。
2007年05月26日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.8 Level of Detail詳細レベル(Level of Detail:LOD)の基本的な考え方はレンダリング画像への寄与が恣意債ほどより単純なモデルを使うことです。球や Bezier 曲面や再分割サーフェイスのようにジオメトリ記述の一部として詳細レベルを持つオブジェクトもあります。一般にLODアルゴリズムは・生成(generation)・選択(selection)・切り替え(switching)の3つの主要部分で構成されます。生成(generation)は詳細度の異なるモデルを生成し、選択(selection)はスクリーン上の予測面積のような基準からある詳細レベルのモデルを選択することです。切り替え(switching)はある詳細レベルから別の詳細レベルに変更することです。
2007年05月25日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.7 Ray Space Occlusion CullingBitner によりレイ空間遮蔽カリングと呼ばれる手法が提案されています。これは視点セルの保守的PVSを解析的に計算する2.5次元レイ空間遮蔽アルゴリズムです。遮蔽ポリゴンをレイ空間での2次元ポリゴンに対応させ可視性情報を計算します。
2007年05月24日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.6 The HOM algorithm階層的遮蔽マップ(Hierarchical Occulusion Map:HOM)アルゴリズムは階層的画像空間カリングを可能にする別の手段です。グラフィックスハードウェアを利用するので動的なシーンを扱うことができます。Zhang の博士論文で詳細に説明されています。遮蔽されているかどうかは、・Z方向への1次元の深度テスト(depth test)・xy平面内の重なり(overlap test)テストの2つの部分に分かれます。重なりテストでは、遮蔽体を黒い背景に白色でカラーバッファにレンダリングします。ここでは多数の小さな遮蔽体を1つの大きな遮蔽体に結合することができます。このレンダリング画像を遮蔽マップ(occlusion map)と呼び、この画像の2x2ピクセルブロックを平均して荒い画像を作り出します。できあがったグレースケール値をピクセルの不透明性(opacity)と呼びます。可視性カリングの際に閾値をグレーの値で比較すると重なりテストを早く終了させることができます。Z方向の深度テストでは選択した遮蔽体の背後にあるかどうかを判断できないといけません。Zhangの提案する深度見積もりバッファ(depth estimation buffer)という手法があり、これはピクセルサイズより大きな多数の矩形領域にスクリーンを分割するソフトウェアZバッファとして実装されています。この2つのテストを行うことで効果的な遮蔽テストができるというわけです。
2007年05月23日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804◆Lambert モデルLambert モデルは先の式の最初の2項I(λ) = Ka(λ)Ia(λ) + Kd(λ)Σ(N・Li)Ii(λ)を扱っていて Lambert の余弦則として知られています。光の強度はI = KdΣ(N・Li)Iiで近似します。この式は光線の強さ Ii が面と光源の距離 ri に無関係な平行光源な場合を想定しています。点光源の場合はI = KdΣ(N・Li)Ii / ri^(2)とでもするとよいかと思います。また点光源が空間に対して一様に作用しないようなモデル(配光特性のある光源)の場合は角度をパラメーターとして渡すとよいでしょう。また線光源、面光源などもありますが、その場合はラジオシティ法などのアルゴリズムを使った方がよいかもしれません。
2007年05月22日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804◆レイトレーシングのシェーディングレイトレーシングで使われる方程式はこのような形I(λ) = Ka(λ)Ia(λ) + Kd(λ)Σ(N・Li)Ii(λ) + Ks(λ)[ Ir(λ) + Σfr(V,Li,N,ζ)Ii(λ) ] + Kt(λ)[ It(λ) + Σft(V,Li,N,ζ)Ii(λ) ]I(λ):光の強度Ka:周囲光係数Kd:拡散光係数Ks:反射光係数Kt:透過光係数Ia(λ):周囲光強度Id(λ):拡散光強度Is(λ):透過光強度N:面の法線Li:光線ベクトルV:視線ベクトルζ:面の材質fr(V,Li,N,ζ):鏡面反射関数ft(V,Li,N,ζ):鏡面透過関数λ:光の周波数そして細かい説明はこの後
2007年05月21日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804第4章 シェーディング照明モデル◆Kajiya の頭は宇宙人物体の色を決めるには kajiya のレンダリング方程式(rendering equation)によって求めることができます。Iout(φout) = E(φout) + ∫ρ(φout,φin)Iin(φin)cos(θ)dωIout:表面からの放射強度Iin:環境から表面に達する強度E:表面の発光強度φout:出力方向φin:入力方向θ:φinと表面の法線がなす角度dω:立体角ρ:表面の反射 / 透過率ただしもっと簡単な近似式に書き直すことができます。
2007年05月20日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804逆マッピング◆三角平面三角形の内部は頂点の間で補完された値を使用。◆球緯度・経度を u, v に対応させて使用。ただし極近辺は極端に圧縮される。あらかじめ極近辺のデーターはぼかしておくのがよいかも。
2007年05月19日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-91178043章 マッピング◆属性マッピングテクスチャの色の代わりにインデックスを入れておきそのインデックスの先に実際の色データーや輝度計算係数を入れておきます。◆その他のマッピング屈折マッピングデプスマッピングエリアシングエリアシングはスクリーン上の1画素がマッピング平面上で複数の場所を占める場合に発生します。ミップマッピングなどのようにあらかじめ平均されたデーターを用意しておくのがよいです。
2007年05月18日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-91178043章 マッピングマッピングとはある座標系から別の座標系への変換を行うこと。テクスチャ座標 ( u, v ) で定義されているテクスチャパターンを物体の表面 ( p, q ) に変換し、テクスチャを物体平面に張り付けてやることに相当します。マッピングの種類◆テクスチャマッピング色データーを貼り付けるマッピング。◆バンプマッピング形状の表面に法線ベクトルを貼り付けるマッピング。◆環境マッピング物体の表面にヒットしたレイを中心に仮想的な球(立方体)を考え反射方向のテクスチャを参照します。
2007年05月17日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804メタボール◆メタの交差判定メタボールの名前はメタモルフォーゼ(変形)という言葉が起源。Blobs とか濃度球などとも呼ばれる。餅のようなぬめっとした表現が可能です。メタボールは等ポテンシャル曲面の集合になります。メタボールとレイとの交差は前節で扱った通りで求まりますが等ポテンシャル曲面とレイとの交差判定は簡単に求まりません。しょうがないので視点ベクトル上の分布関数を二次関数で近似します。◆考えないメタメタボールでロダンの考える人の表現は難しい。二次曲面◆二次曲面の交差判定二次曲面とレイの交差は、レイの式を二次曲線の式に代入して連立させることで求めることができます。◆二次曲面の顔閉曲面になっているのは楕円だけで他の曲面は何処かでクリッピングしてやる必要があります。◆もっと速く・二次曲面の形状に応じた最適化・1次レイをスクリーン座標の関数として最適化その他の交差判定他にもトーラス、超2次曲面、双3次パッチなどあるがすべて三角平面のみで表現できる。
2007年05月16日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804球の交差判定レイのベクトルをこのように定義しR0 = ( x0 y0 z0 )Rd = ( xd yd zd )R(t) = R0 + tRd (t>0)球をこのように定義しますSc = ( xc yc zc ) (Sc:球の中心)Ss = ( xs ys zx ) (Ss:球の表面の座標)|Ss - Sc| = Sr (Sr:球の半径)そして球の中心から視点までのベクトルをL = Sc - R0とします。判定としてはまず R0 が球の内側かどうかを判定し内側なら交差とします。そうでなければ L と Rd の内積を考え、これが負の場合はレイの後ろなので交差しません。レイの前で球の外側の場合はtd^2 = Sr^2 - |L|^2 + (L・Rd)^2を計算しこの td が正の場合はレイと球が交差することになります。視点と交点の距離は球の外側:t = L・Rd - td球の内側:t = L・Rd + tdとなります。
2007年05月15日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804直方体の交差判定ここで扱う直方体は、各面の法線が x, y, z 軸の方向に一致する直方体で、回転やせん断による座標変換を一切受けないことが補償された直方体です。平面とレイの交差と似たような方法で計算できますし slab を用いる方法と似たようなものです。直方体は x, y, z の最大・最小で定義します。Bmin = { xmin ymin zmin }Bmax = { xmax ymax zmax }またレイのベクトルをこのように定義します。R0 = ( x0 y0 z0 )Rd = ( xd yd zd )R(t) = R0 + tRd (t>0)軸に平行な場合は軸の最小値と最大値の間に R0 が入っていれば交差。たとえば xd = 0 の場合は x0 > xmin, x0 < xmax で交差になります。そうでない場合は軸の最大・最小面との距離を求めてそれが範囲内にあるかどうかを判定すればよいわけです。
2007年05月14日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804三角平面の交差判定三角平面とは3頂点を持つ多角形で 3x3 行列 Pmn によって定義されています。 | ax0 ax1 ax2 |Pmn = | ay0 ay1 ay2 | | az0 az1 az2 |行列の各要素は x, y, z の座標値になります。レイの原点を R0 として三角平面を底とするような三角錐を考えると視線ベクトル Rd は Pmn の線形結合になります。Rd = PmnA (A^t = a0 a1 a2)さらに視線ベクトル Rd が交点を持つためには A はすべて正で 0 より大きくないといけません。したがってA = Pmn^(-1)Rdとなります。視点からの距離は t = 1 / ( a0 + a1 + a2 ) となります。そして平面とレイとの交点が判ればその後に三角形の中かどうかを調べることができます。包含テストとして三角形以外にも利用できる方法は交点を適当な平面(たとえば xy 平面なら z を取り除く)に投影してその交点 R1' を原点として x 軸や y 軸に平行な正の方向に線分を伸ばし三角形の交点がいくつとれるか調べる方法です。交点が奇数の場合は内側にあり偶数あるいは0の場合は外側にあると仮定します。
2007年05月13日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804第2章 交差判定レイを尽くす交差判定を行うために、まずレイの定義を行います。視線ベクトルR = R0 + tRd (0<t,R0:レイ視点,Rd:レイの方向ベクトル)で表せます。t はスカラー値で Rd が正規化されている場合は R0 からの距離になります。平面との交差判定レイと平面の交差判定は交差判定計算の中では最も簡単で最も重要です。平面はプリミティブとして扱われると同時に交差判定の高速化手法にも利用されるからです。平面の方程式をPn・X + d = 0 (Pn:平面の単位法線ベクトル、X:平面上のある点、d:はレイの原点から平面までの距離)として、先のレイを代入し t について解けばt = - ( d + Pn・R0 ) / (Pn・Rd)となります。分母の内積が 0 になるのは平面とレイが平行になっているときです。また t < 0 のときは平面はレイの後ろ側にあります。この手法を応用した高速化手法もあります。物体を覆うような平面(slab)を定義しその平面と各レイに対して交差判定を行うようにすればよいわけです。
2007年05月12日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804レイの色レイにはRGBそれぞれ8ビットの色があります。レイの香りレイには香りがあり・照明(Illimination)レイ・影(Shadow)レイ・反射(Reflection)レイ・透過(Transparency)レイ・間接(Indirect)レイ徳川家康のあくび我慢強いとされる武将-徳川家康でさえレイトレーシング計算が修了するのを待っていたらあくびを出すことでしょう。したがってレイトレーシングの高速化にはさまざまなアルゴリズムが考えられてきました。・交差判定処理の高速化・交差判定回数の減少・レイの本数の減少・ビーム(beam)トレーシング・鉛筆(pencil)トレーシングなどがあります。交差判定を高速化する手法として境界立体(bounding volume)を用いた方法があり、単純な形状で多い、先にこちらで交差判定を行うようにする手法があります。交差判定の回数を減らす方法として空間分割手法があります。
2007年05月11日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-9117804カメラマンの叫びレイトレーシングは理想的なピンホールカメラとして説明されますが・理想的すぎてぶれが出ない・コントラストが無くぼやけるところもくっきり冷たい印象になるといった違いがあります。これらは分配(distributed)レイトレーシングやラジオシティ(radiosity)といった手法で解決」されていきます。レイ一族の陰謀普通のレイトレーシングはポイントサンプリングと呼ばれる手法を使っていてこれはレイを多きさが無いものと考えています。長所としてはアルゴリズムが単純になるところがあげられ、短所としては aliasing の問題が発生しやすいというところです。円錐トレーシングとよばれる手法も提案されていてこれはレイの代わりに円錐を用いることで aliasing の問題を回避します。ただし交差の検出のアルゴリズムは複雑になってしまいます。また分配レイトレーシングと呼ばれる手法も提案されていてこれはレイを複数出してその重みつき平均を使う方法です。計算時間はかかりますが単純な実装で複雑な処理ができます。
2007年05月10日
コメント(0)
「CGレイトレ物語」という本を読んでいます。ttp://www.amazon.co.jp/exec/obidos/ASIN/4756100392/qid%3D1025763534/250-0687437-91178040章 本書にも目的はある?レイトレーシングはすでに枯れた技術。ラジオシティ法など新しい手法もある。アルゴリズムとしては扱うモデル次第ではシンプルとは呼べなくなってきている。1章 レイトレーシングあれこれ私レイトレーシングと申します。Ray Tracing は光線追跡法と訳されることが多いが逆方向レイトレーシングと呼ばれる手法もあります。これはちょうど理科の教科書の電流の向きと電気の向きのようなものです。那須余一の腕が釣るレイトレーシングは決まった位置に構えている射手が手当たり次第に矢を射る行為に似ています。これはレイキャスティング法と呼ばれる手法になります。命中した矢は的の性質によりそこにとどまったり、跳ね返されたり、すり抜けたり、向きを変えたりします。これがレイトレーシングがスキャンラインなどの手法より優れているところです。
2007年05月09日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.5 Hierarchical Z-Buffering階層的Zバッファ処理(Horizontal Z-buffering:HZB)は、現在ではハードウェア実装されていません。アルゴリズムとしてはシーンモデルを八分木に保存し、フレームのZバッファを画像四角錐(Z四角錐と呼ばれます)として保持します。この八分木によってシーンの遮られた領域の階層的カリングが可能になり、Z四角錐によって個々のプリミティブと境界ボリュームの階層的Zバッファ処理が可能になります。Z四角錐の最も細かい(最高解像度)レベルは標準のZバッファです。その他の全てのレベルでは1つ1つのZ値が隣の(より細かい)レベルの対応する2x2ウインドウ内で最も遠いz値です。従って、各z値はシーンの正方形領域における最も遠いZを表します。Z四角錐を維持するため、Zバッファ内にz値を上書きするたびにZ四角錐の上位レベル(荒い)にそれを伝播させます。1つのZしか残っていない画像四角錐の一番上に届くまで再帰的にこれを行います。八分木ノードを階層的にカリングする方法としては、まず大まかに前から後ろの順に八分木ノードをトラバースします。拡張遮蔽クエリーを使って八分木の境界ボックスをZ四角錐に対してテストします。次にセル内の最も近い Znear とZ四角錐の値とを比較し Znear の方が遠ければ、その面が遮られていることが分かります。そのボックスが遮蔽されていると分かるか、Z四角錐の一番下のレベルに達するまで、下に向かってこのテストを再帰的に続けます。
2007年05月08日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.4 Hardware Occulusion QueriesHewlett-Packed は遮蔽クエリー(occlusion query)と呼ばれる機能をハードウェアに実装しました。これは Z バッファの内容からあるポリゴンのセットが見えるかどうかを調べるような機能です。新しいハードウェア(fx5,fx10)では複数クエリーを並列に実行することができます。ハードウェアの実装としては問い合わせたポリゴンをスキャンコンバートして深度を Z バッファと比較してすべての深度が隠れているかどうかを調べるような作りになっています。従って画像空間で機能します。NVIDIA はNVクエリーと呼ばれる別の遮蔽クエリー用拡張をサポートしています。これは深度テストに合格したピクセル数 n を返すような機能になっています。n の大きさによってレンダリングをスキップしたり LOD を切り替えたり、デプスピーリングに使用することができます。Meibner は改装を設定して遮蔽クエリーを使っています。Klosowski と Sliva は優先度レイヤ投影(Prioritized-layered projection)アルゴリズムを開発しました。
2007年05月07日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.3 Shaft Occlusion Cullingシャフト遮蔽カリングは Schaufer らによる、遮蔽カリングにシャフトを使うアルゴリズムです。遮蔽体縮小と同様にセルベースになり、遮蔽体の融合に興味深いテクニックを使い、オブジェクト空間で利用します。ウォークスルー用の視界の事前処理と、面光源によるレイトレーシングの高速化に使われます。アルゴリズムをまず2次元で考えます。視点セルをAABBで作り、四分木を使って、そのシーンの遮蔽力を記述します。四分木内のリーフノードは・不透明(opaque)・境界(boundary)・空(empty)に分類されます。これはリーフノードが他のオブジェクトの内部にあるかどうかを述べる手段がなければならないことを意味します。 Schaufler らはリーフノードの分類にシードフィルアルゴリズムを使っていますが、どんな手法でも問題ありません。視点セルから見えるジオメトリを求めるには不透明リーフノードが見つかるまで、四分木を再帰的にトラバースします。遮蔽を最大にするため視点セルから外に向かってこのトラバースを行います。その際に視点セルの中心から遮蔽体への角度が最大となる座標軸に沿ってこの遮蔽体を拡大します。3次元の場合は、遮蔽体の拡大を行わなければならない次元が1つ増えます。4分木は8分木になります。
2007年05月06日
コメント(0)
RealtimeRendering という本を読んでいます。http://www.realtimerendering.com/9.7.2 Occluder Shrinking and Frustum Growing遮蔽水平線アルゴリズムは、点ベースでしたがセルベースの視界の法が好ましい場合もあります。遮蔽体縮小(occlusion shrinking)は、 Wonka らが開発した、点ベース遮蔽アルゴリズムを使ってセルベースの視界を生成できるテクニックです。遮蔽体縮小はある距離 d でシーン内の全遮蔽体を縮小(shrinking)し、点ベースの視界の有効性を拡げます。また視錐台拡大(frustum growing)も提案されており、それはしばしば遮蔽体縮小と一緒に使われます。視点がある速度で動き、向きを変える可能性がある時に、視点の位置と向きの可能なすべての変化を含む視錐台拡大を作成します。遮蔽体縮小は半径 d の球で遮蔽体を「浸食」することに相当し、規則的な立体データ構造(八分木、格子)を使って遮蔽体を格納する方が単純な縮小操作を手に入れられます。即時性可視性(instant visibility)と呼ばれるアルゴリズムは、遮蔽体縮小と視錐台拡大を使ってその場で可視性を計算し、同時に別のマシン上でレンダリングを行います。可視性計算とレンダリングとを分離することでオンライン可視性処理とセルベースの視界の利点を組み合わせています。
2007年05月05日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/5.5 逆反復法逆反復法は、他のアルゴリズムで求めた固有値や固有ベクトルの精度を改善するために用いられる方法です。逆反復法は、対称行列にも非対称行列にも使うことができます。行列 A について、ある固有値 λk の少し精度の悪い近似値 λk' が得られているという状況についてA - λk'Iという行列を考えるとこの行列は λk - λk' という非常に 0 に近い固有値を持ちます。べき乗法の「絶対値最小の固有値を求める場合」の方法を適用することで A の λk に対応する固有ベクトルを求め、これをもとに、λk' より精度の高い λk の値を求めることができます。これを逆反復法といいます。
2007年05月04日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/5.4.6 対称行列の場合対称行列の固有値を QR 法で計算する手順を考えます。対称行列を直行行列で相似変換すると対称行列になります。 Householder 法も QR 法の反復も直行行列による相似変換なので、これらを対称行列に対して行っても対称行列のままです。まず、一般の対称行列に対して Householder 法を適用すると、対称な Hessenberg 行列になり、これは3重対角行列になります。3重対角行列とは、対角成分とその上下の位置にしか 0 でない成分がない行列のことです。この3重対角行列に対して QR 法の反復を行うと、対称な右上三角行列、つまり対角行列に近づきます。この対角成分が固有値になるというわけです。まとめると非対称行列 → Householder 変換 → Hessenberg 行列 → QR法 → 右上三角行列対称行列 → Householder 変換 → 3重対角行列 → QR法 → 対角行列ということになります。
2007年05月03日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/5.4.5 原点移動・減次実際に QR 法の反復を行うときには固有値の推定値 λ' を1つ用意し、A そのものではなく A - λ'I に対して QR 法の反復を行います。これを原点移動といいます。推定値 λ' が A の実際の固有値のいずれかをよく近似している場合 A - λ'I は非常に 0 に近い固有値を持ちます。QR 法の反復は実質的にべき乗法の「すべての固有値を求める場合」の反復と同じで、A に非常に 0 に近い固有値がある場合 (n-1) 次元部分空間が x1, x2, ..., xn-1 の張る部分空間に近づく速さが増すのに対応して、行列のほうでは、第 n 行の非対角成分が 0 へ近づく速さが増します。特に Hessenberg 行列の場合は、(n, n -1)成分が 0 へ近づく速さが増します。近づいた先の (n,n) 成分は推定していた固有値で、残る3つの固有値は最後の行と列を除いた 3 x 3 行列の固有値です。そこで最後の行と最後の列をのぞいた 3 x 3 行列に対して計算を続行します。これを減次といいます。こうすることで計算量を減らすことができます。減次をしたらまた、残った 3 x 3 行列の固有値の推定値 λ' を適当な方法で作り、同じ手順を繰り返していきます。
2007年05月02日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/5.4.4 Hessenberg 行列の QR 反復4 x 4 行列の Hessenberg 行列の QR 法の反復の計算を考えます。ここでは実固有値しかない場合を想定しています。まず左から平面回転行列の転置を掛けて(2,1)成分を 0 にします。Ak → Q(1,2,θ1)^(T)Akこれを具体的に計算し -xsinθ1 + ycosθ1 という式が得られたらその値を 0 にするような回転角 θ1 を選べば(2,1)成分を 0 にできます。続けて (2,3) 平面回転行列を掛けて (3,2) 成分を 0 にし、 (3,4) 平面回転行列を掛けて (4,3) 成分を 0 にし、できあがった右上三角行列を R とおきます。Q(3,4,θ3)^(T)Q(2,3,θ2)^(T)Q(1,2,θ1)^(T)Ak = Rここで両辺に左から Q(3,4,θ3)、Q(2,3,θ2)、Q(1,2,θ1) を順に掛けQ = Q(1,2,θ1)Q(2,3,θ2)Q(3,4,θ3)とおくとこれも直交行列なのでこれが Ak の QR 分解であることがわかります。Ak = Q(1,2,θ1)Q(2,3,θ2)Q(3,4,θ3)R = QRしたがって Ak+1 はこの Q と R を逆順に掛けたものでAk+1 = Q(3,4,θ3)^(T)Q(2,3,θ2)^(T)Q(1,2,θ1)^(T)AkQ(1,2,θ1)Q(2,3,θ2)Q(3,4,θ3)となります。
2007年05月01日
コメント(0)
全31件 (31件中 1-31件目)
1