|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.ObjectkGLModel.KGLShadowMapping
public class KGLShadowMapping
影生成クラス
使用方法
・初期化
init()
設定するshadowMapのサイズで影の精度がきまる。
ただし、大きすぎるとメモリ確保に失敗するのでホドホドに
(FBOがサポートされていない場合はviewport依存になります)
・描画時の手順
1)beforeMakeShadowMap()
2)影付け対象を描画
3)afterMakeShadowMap()
これでクラス内部にshadowMapが作成される
4)beforeDrowSiene() 描画対象の描画+影の描画 を行う為の準備
5)影付け対象を描画 これは2)と同じ処理
6)afterDrowSiene()
☆shadow map作成時(上記1),2))画面をクリアするのでバックグランドの描画等は
shadow Map作成以降(上記3)と4)の間)に行う必要がある。
制限事項
描画領域のGL_MODELVIEW_MATRIXが拡大/縮小を含んでいるとうまくいかないと思う。。。
フィールドの概要 | |
---|---|
protected KGLfbo |
fbo
フレームバッファオブジェクト |
KGLLight |
light
光源クラス |
(package private) int[] |
tex_shadowmap
フレームバッファオブジェクトがサポートされていない場合に使用するテクスチャ |
コンストラクタの概要 | |
---|---|
KGLShadowMapping(javax.media.opengl.GL in_gl,
javax.media.opengl.glu.GLU in_glu)
コンストラクタ 拡張機能の有無のチェック等をしている |
メソッドの概要 | |
---|---|
void |
afterDrowSiene()
影付きモデル描画の後処理 シェーダプログラムの使用停止とテクスチャモデルの初期化 |
void |
afterMakeShadowMap()
shadow map作成後処理 描画情報を元にもどす。 |
void |
beforeDrowSiene()
影付きモデル描画の前処理 このメソッドでシェーダプログラムの使用を開始。 |
void |
beforeMakeShadowMap(double lookX,
double lookY,
double lookZ,
double fovy,
double near,
double upX,
double upY,
double upZ)
shadow map作成準備 このメソッドを呼んだ後に影を付けたいモデルを描画することでshadow mapを作成する。 |
void |
clear()
使用していたOpenGLオブジェクトを削除する |
int |
getShadowMapImage(boolean isRGBA)
内部で保持しているshadow map画像番号とりだし |
void |
init_tex_shadowmap()
フレームバッファオブジェクトがサポートされていない場合に使用する シャドウマップ用テクスチャの設定をする。 |
void |
init(KGLLight in_light,
int[] in_textureUnit,
int in_textureUnitForShadowMap,
int shadowMapWidth,
int shadowMapHeight,
float minimam_shadow)
使用準備 shadow mapのサイズで影の精度がきまる フレームバッファオブジェクトがサポートされていない場合はviewport依存になるので、 shadowMapWidth、shadowMapHeightは使用されない |
void |
init(KGLLight in_light,
int[] in_textureUnit,
int in_textureUnitForShadowMap,
int shadowMapWidth,
int shadowMapHeight,
float minimam_shadow,
boolean isDrowColorMap)
使用準備 shadow mapのサイズで影の精度がきまる フレームバッファオブジェクトがサポートされていない場合はviewport依存になるので、 shadowMapWidth、shadowMapHeightは使用されない カラーバッファに情報を書き出す設定もできる。 |
void |
init(KGLLight in_light,
int in_textureUnit,
int in_textureUnitForShadowMap,
int shadowMapWidth,
int shadowMapHeight,
float minimam_shadow)
使用準備 shadow mapのサイズで影の精度がきまる フレームバッファオブジェクトがサポートされていない場合はviewport依存になるので、 shadowMapWidth、shadowMapHeightは使用されない |
void |
init(KGLLight in_light,
int in_textureUnit,
int in_textureUnitForShadowMap,
int shadowMapWidth,
int shadowMapHeight,
float minimam_shadow,
boolean isDrowColorMap)
使用準備 shadow mapのサイズで影の精度がきまる フレームバッファオブジェクトがサポートされていない場合はviewport依存になるので、 shadowMapWidth、shadowMapHeightは使用されない カラーバッファに情報を書き出す設定もできる。 |
(package private) void |
setShaderInfoLog(KGLException gle,
int shader)
シェーダからの情報を例外情報に書き込む |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
protected KGLfbo fbo
int[] tex_shadowmap
public KGLLight light
コンストラクタの詳細 |
---|
public KGLShadowMapping(javax.media.opengl.GL in_gl, javax.media.opengl.glu.GLU in_glu) throws KGLException
in_gl
- OpenGLコマンド群をカプセル化したクラスin_glu
- OpenGLコマンド群をカプセル化したクラス
KGLException
- 使用する拡張機能がドライバでサポートされていないメソッドの詳細 |
---|
public int getShadowMapImage(boolean isRGBA)
isRGBA
- true:カラー画像 false:深度画像
public void clear()
public void init(KGLLight in_light, int[] in_textureUnit, int in_textureUnitForShadowMap, int shadowMapWidth, int shadowMapHeight, float minimam_shadow) throws KGLException
in_light
- 光源オブジェクトin_textureUnit
- 描画で使用するテクスチャユニット番号(0〜31)in_textureUnitForShadowMap
- shadow mapとして使用するテクスチャユニット番号(0〜31)shadowMapWidth
- shadow mapのサイズ(幅)shadowMapHeight
- shadow mapのサイズ(高さ)minimam_shadow
- 影の最低透明度
KGLException
- シェーダプログラムのコンパイル/リンク失敗public void init(KGLLight in_light, int in_textureUnit, int in_textureUnitForShadowMap, int shadowMapWidth, int shadowMapHeight, float minimam_shadow) throws KGLException
in_light
- 光源オブジェクトin_textureUnit
- 描画で使用するテクスチャユニット番号(0〜31)in_textureUnitForShadowMap
- shadow mapとして使用するテクスチャユニット番号(0〜31)shadowMapWidth
- shadow mapのサイズ(幅)shadowMapHeight
- shadow mapのサイズ(高さ)minimam_shadow
- 影の最低透明度
KGLException
- シェーダプログラムのコンパイル/リンク失敗public void init(KGLLight in_light, int in_textureUnit, int in_textureUnitForShadowMap, int shadowMapWidth, int shadowMapHeight, float minimam_shadow, boolean isDrowColorMap) throws KGLException
in_light
- 光源オブジェクトin_textureUnit
- 描画で使用するテクスチャユニット番号(0〜31)in_textureUnitForShadowMap
- shadow mapとして使用するテクスチャユニット番号(0〜31)shadowMapWidth
- shadow mapのサイズ(幅)shadowMapHeight
- shadow mapのサイズ(高さ)minimam_shadow
- 影の最低透明度isDrowColorMap
- カラーバッファにも書き出すかどうかのフラグKGLException
- シェーダプログラムのコンパイル/リンク失敗public void init(KGLLight in_light, int[] in_textureUnit, int in_textureUnitForShadowMap, int shadowMapWidth, int shadowMapHeight, float minimam_shadow, boolean isDrowColorMap) throws KGLException
in_light
- 光源オブジェクトin_textureUnit
- 描画で使用するテクスチャユニット番号(0〜31)in_textureUnitForShadowMap
- shadow mapとして使用するテクスチャユニット番号(0〜31)shadowMapWidth
- shadow mapのサイズ(幅)shadowMapHeight
- shadow mapのサイズ(高さ)minimam_shadow
- 影の最低透明度isDrowColorMap
- カラーバッファにも書き出すかどうかのフラグKGLException
- シェーダプログラムのコンパイル/リンク失敗public void init_tex_shadowmap()
public void beforeMakeShadowMap(double lookX, double lookY, double lookZ, double fovy, double near, double upX, double upY, double upZ)
lookX
- 光源から見る先(X座標)lookY
- 光源から見る先(Y座標)lookZ
- 光源から見る先(Z座標)fovy
- 光源から見る時の視体積の画角near
- 光源から見る時の視体積の手前の位置upX
- 光源から見る時の上方向のベクトル(X)upY
- 光源から見る時の上方向のベクトル(Y)upZ
- 光源から見る時の上方向のベクトル(Z)public void afterMakeShadowMap()
public void beforeDrowSiene()
public void afterDrowSiene()
void setShaderInfoLog(KGLException gle, int shader)
gle
- 書き込み先例外情報shader
- 対象シェーダ番号
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |