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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
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
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.