2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
全31件 (31件中 1-31件目)
1
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.4 Aliasing and Antialiasingエイリアシングとアンチエイリアシングの話。ここは少し難しいですね。これも絵を見てもらうのが一番なのですが影のエッジなんかはがたがたしていてジャギーと呼ばれるエイリアスが発生することになります。そのエイリアシングを減らすあれこれの手法をアンチエイリアシングと呼んでいるわけです。サンプリングとフィルタリングは凄く奥が深い分野なのでエイリアシングアーティファクトを避けるために現在リアルタイムで実現可能なことにフォーカスすることにします。
2006年01月31日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.3.4 Light Equationということで今までのまとめとしてライティングの計算式を紐解いていきます。まあ前章のディフューズ、スペキュラー、アンビエントの各項を合計したものがすなわちシェーディング(=陰影)ということになるだけです。今までで説明していなかった事としてはエミシッブ項があります。これはサーフェィスが光を発光しているととらえるところでライト効果なしで固定の色を付け加える感じになります。計算式自体は本文にあるとおりで複数の光源がある場合はそれらを全て足し合わせて最終的な色を計算することになります。
2006年01月30日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.3.3 Ambient Componentアンビエントは光の当たらないところの色です。普通は直接光があたらなくても壁とかで反射して裏側なんかも光るのが正しい理解(レイトレーシングとかはこんな感じ)なのですがそこまで扱うのはリアルタイムでは大変なので擬似的に光のあたらない部分をアンビエントカラーで適当に指定して適当にごまかすわけです。なのでアンビエントという光なんか無い!という理解が正しいのですがまあ適当に調整がしやすい方法なのでよく使われています。アンビエントは下手すると3次元の感覚を狂わせかねないので少なくともカメラから見た方向だけでも明るくするようにカメラ向きの光源を置いて照らしたりレフ板みたいな感じで工夫して明るくなるようにしますね。この辺まったくやんないと向きによっては逆光の際の人間のモデルの顔が真っ黒で微妙な感じになるからです。実際にも映画や写真撮影の際なんかはカメラ方向から反射板を持った人がたくさんいて無理やり照らしていたりしますのでそれと同じようなことをCGでもやるわけです。
2006年01月29日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.3.2 Speculer Componentスペキュラー項です。これはハイライトを作ることで輝きを持った感じを出すことができます。ディフューズとは異なりこちらは視点に依存します。反射ベクトルと視線ベクトルで決まりますので反射ベクトルが視線に近いほうがたくさん反射するということになります。フォンのライティング方程式(フォンシェーディングとは異なります)と呼ばれる式になります。これに Blinn はマイクロファセットを加えていて浅い角度から見られる場合サーフェイス自身の凹凸で遮蔽されるのを扱ったものです。またフレネル反射と呼ばれるものもありこれも広い意味で言えばスペキュラーの一部になるでしょうか。
2006年01月28日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.3.1 Diffuse Componentディフューズ項です。これはメインの色というか普通にライトの当たったところの色になります。いわゆるランバート則と呼ばれる光源ベクトルと法線の向きで決まる色のことです。ライトと法線の向きで決まるのでどこから見ようと同じ色になります。青い光源と赤いマテリアルを掛け合わせる場合は掛け合わせたディフューズの色は黒くなります。これはすなわち赤いサーフェイスは青い光を反射しないということになります。
2006年01月27日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.3 Lighting and Shadingライティングとシェーディングの話。ちょっと話長めで奥が深いところ。シェーディングとはライティング計算を行うプロセスで最終的な陰影はここで決まります。伝統的な3タイプはフラットシェーディング、グーローシェーディング、フォンシェーディングです。これらはライティングの計算単位をポリゴンでおこなうか頂点でおこなうかピクセルで行うかに対応しています。この辺も絵で理解したほうが直感的でしょうか。フォンシェーディングはちょっと用途が狭いかな。大抵はテクスチャやらなんやらでピクセルごとの陰影処理はもうちょっとコントロールしやすい方法がありますのでそっちを使うことが多いように思います。グーローシェーディングは思いっきり再分割することでフォンシェーディングに近い効果が得られます。この辺は Pixar の RenderMan の基本的な考え方になっています。
2006年01月26日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.2 Materialマテリアルの話。アンビエント、ディフューズ、スペキュラー、シャイネス等のパラメーターで構成されます。これらのマテリアルのパラメーターとライティングの値を掛け合わせることで最終的なサーフェイスの色が確定します。詳しくは後の章で。ぶっちゃけ図を見たほうが直感的かも。
2006年01月25日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/4.1 Light Sources光源についての話。平行光源、点光源、スポットライトなどがあります。平行光源は無限遠方にある光と考えることができます。例としては太陽。点光源とスポットライトは位置光源と呼ばれます。これは向きだけでなく光源の位置も正しく扱うからです。点光源は一点から光りますが現実の光源は(太陽とか蛍光灯とか)面なり球なりのボリュームを持っていてそれゆえやわらかいエッジを持つことに注意が必要です。スポットライトは少しだけ多くのパラメータを持っており方向ベクトルとスポットライトのかさの大きさを指定できたり減衰具合を指定できたりします。実社会では光の強さは距離の2乗にひれいするのですがリアルタイムグラフィックスでは平行光源などのように減衰しないものをよく使います。これは計算負荷が少ないだけではなく調整もしやすいからです。
2006年01月24日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Visual Appearanceということで今日から第4章。外観にかかわるあれこれです。ジオメトリ的に正しいだけではなくマテリアルやライティングテクスチャ、フォグ、透明度、アンチエイリアシング、合成など雑多な内容をここで扱います。とここまではこの章の前ふりですね。
2006年01月23日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Further Reading and Resources更に勉強したい方に向けてのリンク集。しかしこの本本当にリファレンスが充実していますので全部追っていたら一生かかりそうです。この辺全部読めば研究者になれそうです。SIGGRAPH の OpenGL Advanced Techniques のコースノートがあげられていますね。これは私もよく読んで勉強しました。この本は実装周りに関してほとんど扱わないのでこの OpenGL のサンプルなんかを実際に動かして確認しながら学ぶのが良いかもしれないですね。テクスチャに関しては RenderMan Companion(これは日本語訳もあります)やTexturing and Modeling: A Procedural Approach などがあげられています。この辺も暇があれば読んでみたいところ。ということで無事に5章も終わり。ということで飛ばしていた4章に戻って読み進めることにします。
2006年01月22日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Other Texturing Techniqueテクスチャを利用したさらなるテクスチャテクニック。・ディテールテクスチャテクスチャがカメラに近づいたときにぼろが出ますので詳細を描いたテクスチャを用意していて距離に応じてそいつをうまくブレンドしてごまかす。・フォトリアリスティックレンダリング。テクスチャはピクセルごとのシェーディングに使われることが多くややこしいマテリアルの反射特性なんかをテクスチャに入れておいてテーブル参照することでいい感じのシェーディングを行ったりしますと。・ノンフォトリアリスティックレンダリングこちらはトゥーンレンダリングとかそういった表現。・ボリュームレンダリングテクスチャを束状に用意しておいて半透明で重ねがきしてボリューム的な表現を行う手法。まあこんなのもありますよと。後の章でこれらを詳細に扱います。
2006年01月21日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Other Techniquesその他のテクスチャ技法。まあテクスチャ技法なんかそれこそ無限にありますが。法線マップに関するさらなる情報のリファレンスとディスプレースメントマップの紹介が軽くまとめられています。ディスプレースメントマップはバンプマップ全般と異なりジオメトリを変異させる手法です。Matrox が DirectX9 でハードウェア実装しております。ただこれもちょっと使い道が狭いし微妙なのかも。私的にはそれほど有効活用できる状況が思いつかないなぁ。水とかそういうものには便利なのかな。これはパッチ曲面とかでもよさそうな気がしますけど。その辺の狭い用途では非常に強力に使えるかも。こういった手法は主にカメラが近づいたときだけ水のメッシュの分割数を変えたりできるのが便利なのです。確かMGS2の水なんかは曲面で一部描画していてカメラが近づくにつれ分割数を変えたりしていたはずです。
2006年01月20日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Environment Map Bump Mapping環境マップバンプマップです。これは環境マップとバンプマップを併用するだけですね。2段階にテクスチャを使うという意味では歴史的に最初のものらしいです。へぇ。まあそんなものかも。ただ基本的には環境マップのテクスチャルックアップする座標をバンプマップでオフセットを加える感じに揺らすだけですね。オフセットマップと環境マップを併用する場合も考え方としては似ていますかね。見た目はそれなりに派手になりますので素人受けはよさそう。この辺は頂点単位の処理に比べてピクセル単位で綺麗に効果が出ますので画面の密度が上がって見えるのでしょうね。まあ見方によっては画面の密度を一定にしないと違和感が出やすいともいえるかもしれないです。デモではなく市販する商品としては画面の密度なんかも考慮する必要があるでしょう。法線マップなんかも部分的に使うとシーン全体の絵の密度のバランスが崩れてなんか変な感じになりがちなので気を使う必要があります。
2006年01月19日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Dot Product Bump Mapping内積バンプマッピングです。まあバンプマップといったらこちらをさすことが多いのかな。サーフェイスの法線をテクスチャに無理やり書き出して保持しておきます。光源とあわせて計算するので光源の位置を頂点ごとのタンジェントスペースで保持しておきます。法線を格納したテクスチャとライトベクトルと結合して計算されます。この結合関数で dot3 を用いますので内積バンプマップと呼ばれるわけです。これで自然に凹凸の表現ができますね。ただ、基本的にライトのテクスチャは静的なのでライト動くと計算しなおす必要があるしモーション等でモデルの形状が動く場合はどうしようもないです。モーションというよりモーフイング的な動きなら法線マップの補完なんかでなんとかなるかもねぇといったところすか。ぶっちゃけバンプ系全般は使いにくいのですよ。そもそもメッシュの分割数に比べてやたらと細かいしわや岩肌のような凹凸を付与するので「不気味の谷」に落ちやすい気がするのですよ。MGS4なんかそのせいでスネークさん爺さんになっちゃいましたし。注意点としては法線マップは基本的にフィルタリングしないというところでしょうか。階段状の法線マップを補完したりすると階段の水平面が斜め45度になっちゃったりしますからね。
2006年01月18日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/ Emboss Bump Mappingエンボスバンプマッピングです。ハイトフィールドのイメージを利用して彫刻のようにエンボス効果を出します。ぶっちゃけずらして重ね書きするだけの方法です。3次元で行う場合は頂点ベクトルのタンジェントスペースでライト方向を計算してそこからずらす方向を計算し後は減算で前パスの結果から引いてあげれば終わりです。こいつも問題ありまくりですが明日に続きます。
2006年01月17日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Bump Mappingバンプマッピングです。いろいろ制約が多くて微妙なんですよね。基本的には法線を揺らして擬似的に凹凸の表現をするものです。擬似的なのでシルエットを良く見ると平坦なままです。なのでそういうところが気にならない状況で使わないと不自然なことこの上ないです。また基本的に凹凸は自分自身に影を落としません。基本的にディフューズのみでスペキュラーが無いものにしか使えません。もうこの辺で制約多すぎて使い物にならないのですがこれを発展させてなんとかしようというのがここからの話。
2006年01月16日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/EXAMPLE: Diffuse, Gloss And Reflection Mappingここではテクスチャ環境を使った効果を扱っています。今だと全部シェーダーでやってしまうのでしょうがまあこのくらいならシェーダーない頃のハードでも問題ないですね。そもそもマテリアル系のシェーダーはプログラマブルでないハードでもほとんど同じことが可能なものが多いのかもしれないですが。TEV1:(ディフューズライトxテクスチャ)→RGB, グロスマップ→αTEV2:リフレクションマップxグロス+ディフューズ→RGBといった2段構成。
2006年01月15日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Lighting Using Engvironment Mapping応用として環境マップの技法を用いたライティングの例があげられています。頂点ごとの演算でライティングを行うとスペキュラーハイライトが正確に入りません。あるいは複数のライトの演算とかもう少しややこしいことになるならもうテクスチャに直接値を書き込んでサーフェィスの色と掛け合わせて陰影を行ったほうが早いです。またシーンの中に再帰的なうつり込みをやったりするのにも環境マップのリアルタイム生成を交互にやることによってある程度実現できます。この場合はコストを考えて1フレームには1オブジェクト分の環境のレンダリングしか行わず前フレームの結果を使ってごまかすと良いです。車ゲームだと動的環境マップは珍しくないのですがその他のジャンルではまだまだですのでこの辺がんばってやってみるのも面白いのではないかと思います。環境マップの注意点としては平らな板のようなところではうまく働きません。この場合は法線を適当に揺らすのがよいのかな。一回仕事でそんな変なことやったことがあるのです。影みたいなぺらぺらなものにそれらしい環境マップ効果を入れるために完全に上向きの法線を適当に揺らす感じにしました。
2006年01月14日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Parabolid Mapping環境マップの手法として最後にパラボロイドマッピングが取り上げられています。Heidrick と Seidel によって取り上げられたパラボロイド環境マップはスフィアマップと似ているのですが2つのパラボロイドを使ったテクスチャを利用して環境マップを行います。ぱっと見た目はスフィアマップと近いテクスチャ前後2枚を使ってより正確な環境マップを行います。計算はちょっとややこしいのですが最終的にテクスチャマトリックスに一発掛け算するだけで計算できますのでテクスチャマトリックス演算ができる環境ならどこでも使えるでしょう。難点としてはパラボロイドのテクスチャを作るのが厄介なことですかね。キューブマップはここが楽なのでリアルタイムに環境マップのテクスチャを作ってきちんと周辺の移りこませることができるのですがそういうのには向かないのかもしれないですね。まあ移りこむオブジェクトを制限したりあれこれすればできるのかなぁ。私はレースゲームとか作ったこと無いので真面目に環境マップやったこと無いのですよね。
2006年01月13日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Sphere Mappingスフィアマップです。OpenGL だとこいつとキューブマップがAPIレベルでサポートされていますのでこの辺が一番メジャーなのかな。パチンコ玉のような良くうつりこみそうな球(ハンズで売っているらしい)を使ってスフィアマップのテクスチャを作りそいつを反射ベクトルを使い生成したテクスチャマトリックスで参照することによりいい感じの環境マップを行うことができます。スフィアマップの場合は端が歪みます。そもそも単一視点から見ない限り正確ではありません。まあ状況にもよるけどそんなに気にならない場合も多いのかね。そこまで正確な環境マップが必要なケースって少ないかなぁ。環境マップのうつりこみをみつつ逃げたりとかそういうゲーム性が必要ならよりましな方法を考える必要があるでしょう。明日はそんな話を書く予定。
2006年01月12日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Cubic Environment Mapping環境マップの別手法としてここではキューブマップが取り上げられています。キューブマップを行うにはまずサイコロ上の立方体を展開したような6面に周囲の環境を6回レンダリングして環境マップのイメージを作ります。その後反射ベクトルの一番多きいい値の方向を6つのうちどの面を使うかを決めるのに使用してさらに残りの2つのベクトルをそのベクトルの大きさで割りテクスチャの u,v を適当に求めるという流れになります。これは比較的あらゆるハードウェアで実装できますね。 Blinn と Newell の方法に比べるとスピードと柔軟性の観点で優れています。ただこの手法もサイコロ面の端近辺が面倒になります。なかなか難しいですね。明日はさらに他の手法を扱います。
2006年01月11日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Environment Mapping環境マッピングです。周りの環境をレンダリングするかあらかじめ用意した2次元のテクスチャイメージを反射ベクトルなんかを参考に参照して貼る事により周りの環境のうつりこみを表現する手法です。Blinn and Newell's Method1976年の最も古い手法。反射ベクトルを作り球状に緯度経度を求めて2次元のイメージをうまく参照します。端は歪みますがそんなこと気にしない。ぶっちゃけあまり使われません。次に述べる手法のほうが主流かな。この辺は歴史の勉強なのでまあそんな手法もありましたと。
2006年01月10日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Gloss Mappingグロスマップです。これはサーフェィスのスペキュラー成分をテクスチャとして貼りますよという手法です。それ以上書くこと無いなぁ。しいて言うならあれだ。この辺の値はテクスチャで持ったほうがスペキュラーっぷりをテクスチャの微調整で細かく調整できて便利ですよと。この辺の微調整でがんばって理屈を超越した絵にしていくわけです。単なる光のシュミレーションだけでは割り切れないものなのですよと。
2006年01月09日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Light Mappingライトマッピングです。たいていのハードではグーローシェーディングしか使えませんのでフォンシェーディングもどきの綺麗なライティングを行いたいときなんかはライティングの絵を描いたテクスチャを貼ったほうが話が早いです。とりわけディフューズ成分はライトが動かない場合は変わりませんので先に計算済みのものを貼ったほうが早いです。ライトが動いたり減衰する場合もテクスチャのアニメーションでごまかせます。スポットライトのようなものもこれで表現できますね。ライティング同様に影なんかも同様にこんな感じの手法が多いですね。メモリ的にはあんまり効率的ではないのですが3次元テクスチャでボリュームのあるライトマップなんかも面白いかもしれません。
2006年01月08日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/テクスチャにイメージを貼る以外の手法に関してこれから述べていきます。まずはαマッピングから。5.7.1 Alpha Mapping木とか複雑なシルエットを持っているものに関しては板状のジオメトリにしておいてテクスチャで木の絵を描くだけのことがよくありここでα部分を透過させる必要があります。パイプライン的にはZテストして書き換える前にαのテストも行う必要があります。このあたりをきちんと行わないとZの値が問題出てきますので要注意です。エフェクトなんかだとこのあたりは使いまくりですね。基本です。
2006年01月07日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Texture Animationテクスチャのアニメーションです。ゲームだと非常によく使われます。ライブラリ側でサポートしてビューワーでも対応しておけばデザイナ側だけで試行錯誤できますので超便利。滝が流れるのはテクスチャのUVスクロールですしテクスチャ2枚でクロスフェードしたり顔のテクスチャ複数枚用意しておいてアニメーションしたりですかね。技術的に難しいことはありません。
2006年01月06日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Multitexturing今時のハードウェアでは複数のテクスチャを貼ることができてなおかつそのテクスチャをどのようにブレンドするかなどを設定することができます。(というかさらにプログラマブルになっているのがもう一般的ですかね。まあその辺は後ほど。)[頂点|フラグメント]プログラムを使わなくてもテクスチャ環境だけで大体のことはできますね。ややこしいシェーディングモデルもできるのですが最近はシェーダーの本ばかりなのでこの辺資料が無くてやりにくいのかもね。
2006年01月05日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Multipass Texture Renderingマルチパスレンダリングです。シーンを何度もレンダリングしてややこしいことをやります。今時のゲームでは必須ですねぇ。マルチパスの用途としてはまずハードウェアが1枚しかテクスチャが貼れない場合なんかだと複数回描画してマルチテクスチャもどきをする必要があります。テクスチャが複数貼れるハードでもリアルタイムに生成したテクスチャを貼る場合なんかはやはりマルチパスでやりますかね。ハードウェアのパフォーマンスに応じてアプリケーション側でパス数を変更すればスケーラブルな記述ができて便利です。
2006年01月04日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/引き続きテクスチャキャッシュの話。フライトシュミレーターのように広いシーンを描く場合 Tanner さんによると clipmap なる手法を使うようです。いまいち良くわからんがテクスチャのLODのようなものですかね。まあ見た目とデーター転送量の両方で効果がありそうですね。テクスチャキャッシュをシーンに合わせて効果的な手法にした後はテクスチャの圧縮です。JPEG や PNG もありますがあれをリアルタイムに使うわけにはいきません。(まあハードウェアで高速に実装できるなら話は別ですが。)リアルタイムレンダリング用には高速に展開できるS3TCなどがよさそうです。シンプルなんですが画質はナニかもしれませんが。この辺デザイナーには不評なんですよね。ゲーム業界だと未だに16色とかで色数より解像度重視のほうが良いのかねぇ。ピクセルに対してテクスチャ解像度が合わないとやばめな絵になっちゃいますのでねぇ難しいところです。
2006年01月03日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Texture Caching and Compressionテクスチャキャッシュと圧縮の話。この辺も厄介ですね。まずはテクスチャの枚数を減らす努力。テクスチャ張替えのコストがでかいのでこれを避けましょう。そしてLeast Recently Used(LRU)法なんかでキャッシングです。俺面倒なのでこの辺やったこと無いなぁ。シーン丸ごと読んでその後シーン終わりでまとめて開放とかそんなせのばっか。ゲームだと断片化避けるためにこのパターン多いですけど。Carmack さんによるとしょっちゅうテクスチャ切り替わる場合はMost Recent Used(MRU)法に切り替えるそうな。なるほど。
2006年01月02日
コメント(0)
今日も Real Time Rendering を読みます。http://www.realtimerendering.com/Unconstrained Anisotropic Filtering現在のハードウェアでテクスチャフィルタリングを改善するためには今あるミップマップのハードウェアを再利用するしかありません。そこで出てくるのがアニソトロピックフィルタです。基本的な考え方としてはピクセルをテクセルに逆投影変換してこのテクスチャ上の四辺形からサンプリングすることになります。ハードウェアによっては複数の点をここでサンプリングすることもできます。
2006年01月01日
コメント(0)
全31件 (31件中 1-31件目)
1
![]()

