# クラス fk_Material

マテリアル(質感)を管理するクラス [詳細]

fk_Materialに対する継承グラフ
[凡例]
fk_Materialのコラボレーション図
[凡例]

すべてのメンバ一覧

## Public メソッド
| fk_Material ()
| コンストラクタ
| ~fk_Material ()
| デストラクタ
| fk_Material (const fk_Material &arg)
| コピーコンストラクタ
fk_Material & | operator= (const fk_Material &arg)
| 代入演算子
void | init (void)
| 初期化関数
設定用関数
void | setAlpha (float a)
| 透明度設定関数1
void | setAlpha (double a)
| 透明度設定関数2
void | setAmbient (fk_Color c)
| 環境反射係数設定関数1
void | setAmbient (float r, float g, float b)
| 環境反射係数設定関数2
void | setAmbient (double r, double g, double b)
| 環境反射係数設定関数3
void | setDiffuse (fk_Color c)
| 拡散反射係数設定関数1
void | setDiffuse (float r, float g, float b)
| 拡散反射係数設定関数2
void | setDiffuse (double r, double g, double b)
| 拡散反射係数設定関数3
void | setSpecular (fk_Color c)
| 鏡面反射設定関数1
void | setSpecular (float r, float g, float b)
| 鏡面反射係数設定関数2
void | setSpecular (double r, double g, double b)
| 鏡面反射係数設定関数3
void | setEmission (fk_Color c)
| 放射光係数設定関数1
void | setEmission (float r, float g, float b)
| 放射光係数設定関数2
void | setEmission (double r, double g, double b)
| 放射光係数設定関数3
void | setShininess (float s)
| 鏡面反射ハイライト設定関数1
void | setShininess (double s)
| 鏡面反射ハイライト設定関数2
void | setAmbDiff (fk_Color c)
| 環境反射・拡散反射同時設定関数1
void | setAmbDiff (float r, float g, float b)
| 環境反射・拡散反射同時設定関数2
void | setAmbDiff (double r, double g, double b)
| 環境反射・拡散反射同時設定関数3
## フレンド
int | operator== (fk_Material left, fk_Material right)
| 比較等号演算子
## 参照用関数
float | getAlpha (void)
| 透明度参照関数
fk_Color * | getAmbient (void)
| 環境反射係数参照関数
fk_Color * | getDiffuse (void)
| 拡散反射係数参照関数
fk_Color * | getSpecular (void)
| 鏡面反射係数参照関数
fk_Color * | getEmission (void)
| 放射光係数参照関数
float | getShininess (void)
| 鏡面反射ハイライト参照関数
static void | initDefault (void)
| デフォルトマテリアル初期化関数

## 説明

マテリアル(質感)を管理するクラス

このクラスは、マテリアル(質感)を管理、制御する機能を提供します。 FKにおけるマテリアルは、以下の要素によって成り立っています。

- 環境反射係数 (Ambient)
- 拡散反射係数 (Diffuse)
- 鏡面反射係数 (Specular)
- 放射光係数 (Emission)
- 鏡面反射ハイライト (Shininess)
- 透明度 (alpha)

これらのうち、前者4つは fk_Color による RGBA 色表現であり、 後者2つは float 型によるスカラー値となっています。 各要素についての詳細はユーザーズマニュアルやCGの解説文献を参照して下さい。

マテリアルには、最初から定義されているグローバル変数があります。 これらのリストはユーザーズマニュアルの付録Aに記されています。 利用するには、 initDefault() 関数を呼ぶ必要があります。

インスタンス生成時の初期状態は以下のような値となります。

- 環境反射係数: (0.3, 0.3, 0.3)
- 拡散反射係数: (0.0, 0.0, 0.0)
- 鏡面反射係数: (0.2, 0.2, 0.2)
- 放射光係数: (0.0, 0.0, 0.0)
- 鏡面反射ハイライト: 17.0
- 透明度: 1.0

なお、透過色を設定した場合でも、 シーンで透過処理設定を有効としなければ、透過処理が行われません。 詳細は fk_Scene::setBlendStatus() の説明を参照して下さい。

参照:
  fk_Color, fk_Palette, fk_Scene

## コンストラクタとデストラクタ

fk_Material::fk_Material | ( |  | ) |

コンストラクタ

fk_Material::~fk_Material | ( |  | ) | `[inline]`

デストラクタ

fk_Material::fk_Material | ( | const fk_Material & | arg | ) |

コピーコンストラクタ

## 関数

fk_Material& fk_Material::operator= | ( | const fk_Material & | arg | ) |

代入演算子

void fk_Material::init | ( | void |  | ) |

初期化関数

変数を初期状態に戻します。

void fk_Material::setAlpha | ( | float | a | ) |

透明度設定関数1

透明度を設定します。引数は float 型です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

覚え書き:
  透過色を設定した場合でも、 シーンで透過処理設定を有効としなければ、透過処理が行われません。 詳細は fk_Scene::setBlendStatus() の説明を参照して下さい。

引数:

  `[in]` | a | 透明度

参照:
  fk_Scene::setBlendStatus()

void fk_Material::setAlpha | ( | double | a | ) |

透明度設定関数2

透明度を設定します。引数は double 型です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

覚え書き:
  透過色を設定した場合でも、 シーンで透過処理設定を有効としなければ、透過処理が行われません。 詳細は fk_Scene::setBlendStatus() の説明を参照して下さい。

引数:

  `[in]` | a | 透明度

参照:
  fk_Scene::setBlendStatus()

void fk_Material::setAmbient | ( | fk_Color | c | ) |

環境反射係数設定関数1

環境反射係数を設定します。引数は fk_Color 型です。

引数:

  `[in]` | c | 色

void fk_Material::setAmbient | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

環境反射係数設定関数2

環境反射係数を設定します。 引数は R, G, B の各色要素を表す float 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setAmbient | ( | double | r,
|  | double | g,
|  | double | b |
| ) |  |  |

環境反射係数設定関数3

環境反射係数を設定します。 引数は R, G, B の各色要素を表す double 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setDiffuse | ( | fk_Color | c | ) |

拡散反射係数設定関数1

拡散反射係数を設定します。引数は fk_Color 型です。

引数:

  `[in]` | c | 色

void fk_Material::setDiffuse | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

拡散反射係数設定関数2

拡散反射係数を設定します。 引数は R, G, B の各色要素を表す float 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setDiffuse | ( | double | r,
|  | double | g,
|  | double | b |
| ) |  |  |

拡散反射係数設定関数3

拡散反射係数を設定します。 引数は R, G, B の各色要素を表す double 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setSpecular | ( | fk_Color | c | ) |

鏡面反射設定関数1

鏡面反射係数を設定します。引数は fk_Color 型です。

引数:

  `[in]` | c | 色

void fk_Material::setSpecular | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

鏡面反射係数設定関数2

鏡面反射係数を設定します。 引数は R, G, B の各色要素を表す float 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setSpecular | ( | double | r,
|  | double | g,
|  | double | b |
| ) |  |  |

鏡面反射係数設定関数3

鏡面反射係数を設定します。 引数は R, G, B の各色要素を表す double 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setEmission | ( | fk_Color | c | ) |

放射光係数設定関数1

放射光係数を設定します。引数は fk_Color 型です。

引数:

  `[in]` | c | 色

void fk_Material::setEmission | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

放射光係数設定関数2

放射光係数を設定します。 引数は R, G, B の各色要素を表す float 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setEmission | ( | double | r,
|  | double | g,
|  | double | b |
| ) |  |  |

放射光係数設定関数3

放射光係数を設定します。 引数は R, G, B の各色要素を表す double 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setShininess | ( | float | s | ) |

鏡面反射ハイライト設定関数1

鏡面反射ハイライトを設定します。引数は float 型です。

引数:

  `[in]` | s | 鏡面反射ハイライト

void fk_Material::setShininess | ( | double | s | ) |

鏡面反射ハイライト設定関数2

鏡面反射ハイライトを設定します。引数は double 型です。

引数:

  `[in]` | s | 鏡面反射ハイライト

void fk_Material::setAmbDiff | ( | fk_Color | c | ) |

環境反射・拡散反射同時設定関数1

環境反射係数と拡散反射係数を同一の値で設定します。引数は fk_Color 型です。

引数:

  `[in]` | c | 色

void fk_Material::setAmbDiff | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

環境反射・拡散反射同時設定関数2

環境反射係数と拡散反射係数を同一の値で設定します。 引数は R, G, B の各色要素を表す float 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

void fk_Material::setAmbDiff | ( | double | r,
|  | double | g,
|  | double | b |
| ) |  |  |

環境反射・拡散反射同時設定関数3

環境反射係数と拡散反射係数を同一の値で設定します。 引数は R, G, B の各色要素を表す double 型の数値です。 設定できる値は 0 から 1 までで、 範囲外の数値については上下限に丸められます。

引数:

  `[in]` | r | R要素値
  `[in]` | g | G要素値
  `[in]` | b | B要素値

float fk_Material::getAlpha | ( | void |  | ) |

透明度参照関数

戻り値:
  透明度

参照:
  setAlpha()

fk_Color* fk_Material::getAmbient | ( | void |  | ) |

環境反射係数参照関数

返り値の型はポインタであることに注意して下さい。 ここで得られるアドレスは参照元マテリアルの実体であり、 実体の値を修正すると元マテリアルの色要素を修正することになります。

戻り値:
  環境反射係数へのポインタ

参照:
  setAmbient(), setAmbDiff()

fk_Color* fk_Material::getDiffuse | ( | void |  | ) |

拡散反射係数参照関数

返り値の型はポインタであることに注意して下さい。 ここで得られるアドレスは参照元マテリアルの実体であり、 実体の値を修正すると元マテリアルの色要素を修正することになります。

戻り値:
  拡散反射係数へのポインタ

参照:
  setDiffuse(), setAmbDiff()

fk_Color* fk_Material::getSpecular | ( | void |  | ) |

鏡面反射係数参照関数

返り値の型はポインタであることに注意して下さい。 ここで得られるアドレスは参照元マテリアルの実体であり、 実体の値を修正すると元マテリアルの色要素を修正することになります。

戻り値:
  鏡面反射係数へのポインタ

参照:
  setSpecular()

fk_Color* fk_Material::getEmission | ( | void |  | ) |

放射光係数参照関数

返り値の型はポインタであることに注意して下さい。 ここで得られるアドレスは参照元マテリアルの実体であり、 実体の値を修正すると元マテリアルの色要素を修正することになります。

戻り値:
  放射光係数へのポインタ

参照:
  setEmission()

float fk_Material::getShininess | ( | void |  | ) |

鏡面反射ハイライト参照関数

戻り値:
  鏡面反射ハイライト

参照:
  setShininess()

static void fk_Material::initDefault | ( | void |  | ) | `[static]`

デフォルトマテリアル初期化関数

この関数を呼ぶと、 ユーザーズマニュアルに掲載しているマテリアル変数の値を、 マニュアルに記載してある値に初期化します。 この関数を呼んだ後、該当マテリアル変数を 別のマテリアル値に設定することが可能です。

この関数は static 宣言されているため、 クラスのインスタンスを生成しなくても呼ぶことができます。

## フレンドと関連する関数

int operator== | ( | fk_Material | left,
|  | fk_Material | right |
| ) |  |  | `[friend]`

比較等号演算子

この等号演算子では、各色要素の差が FK_COLOR_EPS(現バージョンでは 0.0001) 内の誤差内であれば 等しいと判断します。