AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [3D-FMX] ライト材質ソース 2014/04/10
 
前回は [Materials]内の「テクスチャ材質ソース」(TextureMaterialSource)について見てみました。今回は同じく[Materials]内の、その次の「ライト材質ソース」(LightMaterialSource)について見てみます。
 
[Materials]内
FMX
 
ヘルプより
TLightMaterial のソースを定義したものです。
 
TLightMaterialSource を使用すると、TLightMaterial を 3D オブジェクトにリンクできます。リンクは、3D オブジェクトの MaterialSource プロパティを使って行います。
 
色に関するプロパティ(Ambient、Emissive、Diffuse、Specular)は、デフォルトで、光源によってオブジェクトに追加される影と同様に設定されています。
 
マテリアルのテクスチャは、TBitmap として指定されます。テクスチャの指定には、TLightMaterialSource の Texture プロパティを設定します。
 

 
Ambient
マテリアル オブジェクトが、直接光でなく環境光のソースによって照らされた際に、反射するオブジェクトの色を示します。
 
Ambientを使用すると、TLightMaterialSource の現在の TLightMaterial の環境光色を設定および取得することができます。
 
Diffuse
マテリアルが純白光によって照らされた際の、オブジェクトの基本色を示します。
 
Diffuseを使用すると、TLightMaterialSource の現在の TLightMaterial の拡散光色を、設定および取得することができます。
 
Emissive
マテリアル オブジェクトが自照した際の、オブジェクトの色を示します。
 
Emissiveを使用すると,TLightMaterialSource の現在の TLightMaterial の放射色を設定および取得することができます。
 
Shininess
現在のマテリアルの光沢量を示します。
 
Shininess を使用すると、TLightMaterialSource の現在の TLightMaterial がどのくらい輝くかを設定できます。
 
Specular
輝くオブジェクトからの鏡面反射の光の色を示します。
 
Specular を使用すると、TLightMaterialSource の現在の TLightMaterial の鏡面反射の色を、設定および取得することができます。
 
マテリアルがどのくらい輝くかを設定するには、Shininess プロパティを使用します。
 
Texture
マテリアルのテクスチャを、TBitmap で示します。
Textureを使用すると、TLightMaterialSource の現在の TLightMaterial のビットマップ テクスチャを設定および取得することができます。
 
 
これまでに既に何度も利用していましたが、3Dオブジェクトにライトが反映する色やテクスチャ画像を付けるのに利用します。
 
3Dオブジェクトの例として、球を配置してみます。

何も指定しない場合、3Dオブジェクトの色は赤色になっています。
 
配置した球 Sphere1 の MaterialSourceプロパティを「LightMaterialSource1」に指定します。

 
これで 3Dオブジェクトと材質ソースをリンクしました。
この状態では、球は黒くなっています。暗い場所で何を見ても黒く見える事と同じです。

 
ライト(光源)Light を配置します。

 
球 Sphere1 の基本色は、Diffuse プロパティで指定した色になる、との事ですので、例として、Diffuse プロパティを青色にしてみます。

 
Specular プロパティは反射光の色との事なので、Specular プロパティを赤色にしてみます。

Specular プロパティを白色にしてみます。

 
Shininess プロパティは、光沢量との事です。少し数値を変えて状態を見てみます。
0
15
30
(初期値)
45
60
80
100
200
300
 
Ambient プロパティは、環境光との事。Ambient プロパティが Null 又は 黒色の場合は、下記のようになります。

Ambient プロパティをグレー色 Gray にしてみます。

白色 White にすると、何も見えなくなります。
赤色 Red にすると下図のようになります。

緑色 Green にすると下図のようになります。

色の合成をするかのような感じになりますね。
 
次に、Emissive プロパティを指定してみます。自照した際の色、との事なのでライト Light1 とは無関係に色の設定が出来る、という事でしょうか? 試しに、ライト Light1 を消して、Emissive プロパティを黄色 Yellow にしてみます。Ambient プロパティは黒色 Black にしておきます。

しかしこれだとライト材質ソースを利用する意味が全くありませんね。
ライト Light1 を配置します。

Emissive プロパティをグレー色 Gray にしてみます。

Emissive プロパティを赤色 Red にしてみます。

Emissive プロパティを緑色 Green にしてみます。

色的には、Emissive プロパティをNull/Black にして Ambient プロパティを指定する時と同様の変化をしているように見えますけれども。この状態で、Ambient プロパティを灰色 Gray にしてみます。

 
 
なお、ライト材質 LightMaterial のヘルプでは下記のように記載されています。
光源と相互作用する材質を表します。
 
光の影響を受ける材質の動作を設定するには、色に関する以下のプロパティを設定します。
・Ambient -- 表面が見えるように基調色を提供します。
・Emissive -- 表面自体が光を放つのか輝くのかを決定します。
・Diffuse -- 入射角も含め、光と直接相互作用します。
・Specular -- 入射光をいろいろな角度で散乱させるのではなく特定の角度で反射させることで、光沢のある表面をシミュレートします。Shininess を使用して、表面の光沢の度合いを設定できます。
 
TLightMaterial のテクスチャは Texture プロパティで指定します。
 
色に関するプロパティは、デフォルトで、光源によってオブジェクトに追加される影と同様に設定されています。光源がない場合には、色のプロパティのうち Emissive だけがオブジェクトに影響します。
 
この材質を 3D オブジェクトにリンクするには、TLightMaterialSource を使用します。
 
よく分かりませんが、思ったような色を出すには、それ相応に慣れる必要がありそうです。
 
 
次に、テクスチャ画像を試してみます。
Texture プロパティにテクスチャ画像を指定すると、リンクされた 3Dオブジェクトの表面がその画像で塗り潰されたような状態になります。試しに、Windows7標準添付の「アジサイ.jpg」を指定してみます。
Ambient、Emissive、Diffuse は Null、Specular は白色 White を指定します。

 
Ambient、Emissive のどちらかを黄色 Yellow にしてみます。

Ambient、Emissive を Nullに戻し、Diffuse を黄色 Yellow にしてみます。

前者は全体的に明るい黄色っぽくなった感じがしますが、後者のほうは、影の部分があまり明るい黄色になっていない感じがします。
 
まぁいずれにせよ、ライトの光の強さ等をどうやって指定するのか、いまひとつよく分からないのですが・・・。まぁ、3D-CGソフトでのレンダリング設定というほどの多機能性は無いとは思うのですが、取り敢えずは色々とやってみて慣れていくしかないのでしょうね。
 
 
これで、3D FireMonkey アプリケーションのコンポーネントの紹介は終了です。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/04/09
 2014/04/10
▼2014/04/20
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.