|
DelphiXE3 [3D-FMX] 3Dレイヤ(Layer3D) 2014/04/06 |
前回は [3D Layers]内の「3D画像レイヤ」(Image3D)について見てみました。次は同じく[3D Layers]内の「3Dレイヤ」(Layer3D)について見てみます。
[3D Layers]内
FMX | |
ヘルプより
任意の 2D オブジェクトを保持できる 3D レイヤを表します。
TLayer3D クラスでは、一連の追加のプロパティを[オブジェクト インスペクタ]で公開しています。複数の 2D グラフィック コントロールを 3D 空間内の独自の描画面に配置する必要がある場合には必ず、FireMonkey 3D フォーム内で 3D レイヤを使用してください。TLayer3D はバッファリングされます。 |
|
Align
この 3D レイヤの整列オプション(上、左、クライアント、など)を示します。 |
AnimatedCaret
テキスト編集ボックス内のキャレットがアニメーションされるかどうかを示します。 |
Fill
この 3D レイヤの背景を塗りつぶすための、色およびパターンを指定します。
Fill プロパティを設定すると、この 3D レイヤの背景を描画する際に使用する、色やパターンを指定することができます。 Fill の値は、TBrush オブジェクトです。 |
Resolution
この3Dレイヤの解像度(品質)を示します。
Resolutionは、カメラ プロジェクション モードでのみ効果があります。Resolutionは、ピクセル数を 1 つのユニット内で示します。たとえば、レイヤがサイズで 4x5 だった場合、Resolution を 50 に設定すると、200x250 ピクセルのレイヤを取得することができます。 |
Transparency
この 3D レイヤは透明かどうかを示します。
Transparency プロパティの値を設定または取得して、この 3D レイヤを透明にレンダリングするかどうかを指定します。 |
|
というわけで、3Dレイヤです。
球、ライト、マテリアルを配置します。
3Dレイヤを貼り付けます。
3Dレイヤ上に ボタンとエディットを配置してみます。3Dレイヤを親とするようにします。
Y軸回転してみます。
配置したボタン Button1 のクリックイベントハンドラを下記のようにします。
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('テストです');
end; |
保存・コンパイル・実行をします。
配置したボタンをクリックする事は出来ますし、エディット Edit1 にも文字入力を行う事が出来ます。
Projectionプロパティを「pjScreen」にしてみます。
Resolutionプロパティ値は「50」ですので、3Dレイヤの大きさを「12×10」にしていますから、画面のピクセル値では、「600×500」となります。フォームの画面は「200×200」としていますから、3Dレイヤの画面は全て表示しきれず、配置したボタンやエディットは表示出来ていません。
Alignプロパティを「alClient」にすると、配置したボタンとエディットは見える状態になりますが、
Projectionプロパティを「pjCamera」に戻すと、3Dレイヤの大きさが「4×4」になってしまいました。フォームのサイズが「200×200」でResolutionプロパティ値が「50」ですから、逆算して「4×4」になった、ということですね。
どういうプログラムを作成するのか?にも依るのでしょうけれども、Projectionプロパティを切り替える事があるのなら、解像度とフォームのサイズをちゃんと意識して設定する必要がありそうですね。
3Dレイヤのサイズを「12×10」に戻し、Resolutionを「16」にしてみました。
ところで、Projectionプロパティを「pjScreen」にすると、球 Sphere1 が画面から見えなくなっています。仮に、3Dレイヤの子として、3Dコントロールを配置してみても、位置状態等が 思ってもみない状態になったりして、あまり、よろしくない結果になってしまう感じがします。
なので、プログラム動作中での Projectionプロパティの切り替えというのは、やらないようにするか、仮に、どうしてもやりたいのなら、配置している全てのコントロールの位置・角度情報の保持・再指定を切替の前後に行う必要がありそうです。
Transparencyプロパティを True にすると、透明になる、との事です。もう1つ 3Dレイヤを配置して、Position.Zを 2 にして、Fillプロパティで 色をつけてみました。
3Dレイヤ Layer3D1 の Transparencyプロパティを True にしてみます。
画面上では全然変化無し、ですが、保存・コンパイル・実行すると
となって、透明になっているのが分かります。
一旦、プロジェクトを閉じて、再度、プロジェクトを開くと、透明になっているのが分かります。が、画面デザイン時にすぐに反映されていればいいんですけれど。
3Dレイヤ上に、ビューポートを配置し、更にその中に 3Dコントロールを配置する、というような状態にすることも可能です。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/04/05
2014/04/06
▼2014/04/07
シェアウェア
Script!World
データベース
|