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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 3Dビューポート(Viewport3D)2013/12/16
 
前回は [Effects]内の「めくり推移効果」(SwipeTransitionEffect)について見てみました。これで[Effects]内については終了となります。今回は [Viewports]内について見ていきます。[Viewports]内には、ただ1つ、「3Dビューポート」(Viewport3D)だけがありますのでそれについて見てみます。
 
 
[Viewports]内
FMX
 
ヘルプより。
TViewport3D は 3D オブジェクトを見るためのクラスです。
 
TViewport3D では、IViewport3D メソッドを実装して、3D オブジェクトをどう見せるかを記述します。
 

 
Camera
TViewport3D とその子を実行時にどのように見るのかを記述する、TCamera オブジェクトを表します。
 
Camera は、Paint によって内部的に使用されます。
 
UsingDesignCamera が True の場合、シーンは設計時のカメラを使用して見、それ以外はシーンを Camera を使用して見ます。
UsingDesignCamera
この TViewport3D の Context プロパティが、設計時のカメラを現在のカメラに使用するかどうかを示します。
 
UsingDesignCamera が True の場合、この TViewport3D の Context プロパティは、設計時のカメラを現在のカメラに使用します。
UsingDesignCamera を Falseに設定すると、実行時のその際使用されているカメラを変更することができます。
Context
この TViewport3D の TContext3D を表します。
 
Context は、低レベルの 3D グラフィックを描画するのに使用されます。
Multisample
Context プロパティの FMultisample フィールドへのアクセスを提供します。
 
Multisample は、Context のサンプル数を設定します。Multisample の値が高い場合、より高品質なレンダリングが指示されますが、代わりにパフォーマンスが劣化します。
【TMultisample】
アンチエイリアス(マルチサンプリング)モードの列挙型です。
 
TMultisample の各要素の意味を以下の表に示します。
 
msNone:
 アンチエイリアス処理を行いません。その結果、描画速度は向上しますが、グラフィックの品質は低下します。
 
ms2Samples:
 2倍のアンチエイリアス処理を行います。その結果、グラフィックの品質が向上します。
 
ms4Samples:
 4倍のアンチエイリアス処理を行います。その結果、グラフィックの品質が最も高くなります。(デフォルト)
 
というわけで、3Dビューポート(Viewport3D)は、配置したその内部に、3Dシーンを描画します。プロジェクトの新規作成時に「3D FireMonkey アプリケーション」を選択すると、フォーム全体が3Dシーンを描画するようになりますが、このコンポーネントは、2Dアプリケーション(HD FireMonkey アプリケーション)でのフォーム内の一部分に3Dシーンを描画したい、というような時に利用できそうです。
 
ビューポートというのは、2次元のものなら、NEC PC-9801標準搭載のN88-BASIC(86)の時代からありますね。ビュー関数はウインドウ関数とペアで利用され、広大なマップ上の一部分をウインドウ関数で示し、その内容を、ビュー関数で示した画面上の一部分に見せる、というようなものです。
CADでは、例えば MicroCADAM のような古いシステムから既にありますね。AutoCADのペーパー空間(レイアウト)&ビューポート&モデル空間、というシステムは今でもよく利用されています。
 
3Dシーンには、幾つかの重要な要素があります。
XYZ座標系(原点・座標軸)、光源、カメラ、3Dオブジェクト、等があり、それらを把握した上で各種設定をしないと中々思ったような絵にはならない事が多々あります。例えば、色(材質;マテリアル)を指定したのに、そのように表示されない、という場合、光源の位置・角度が悪くて、光が当たっておらず暗くなっている等。
 
ここで3Dについての全てをいきなり記述するのは無理(※私自身もまだ「3D FireMonkey アプリケーション」について全く勉強していません)ですので、後回しにします。ここでは、ざっと、どんな感じなのかを見ておくだけにしておきます。
 
 
取り敢えず、3Dビューポート内に [3D Shapes]内の円柱(シリンダー)を配置してみます。

 
配置した円柱をクリックすると、3つの直方体と1つの立方体が線でつながって表示されます。
 
直方体は、円柱の描画角度を変更する際に用います。
 
立方体は、円柱の大きさを変更する際に用います。
 
円柱そのものをドラッグすると、円柱の位置を変更する事が出来ます。
 
直方体の長い方向が、角度変更(回転)出来る方向(角度)を示しています。
 
直方体にマウスを合わせると赤く変色します。この状態でマウスドラッグすると、その直方体の方向へ、円柱の描画角度を変更する事が出来ます。
 
 
 
 
 
円柱のすぐ近くにある立方体の各面にマウスを近づけると赤く変色します。
 
その赤く変色した面の側の大きさをこれから大きくします、という事を示しています。
 


立方体の面を赤く変色した状態のままマウスドラッグすると、その面の側の大きさが変化します。
 

マウスボタンを離すと大きさが確定されます。
 
オブジェクトインスペクタで、位置(Position)・角度(RotationAngle)・各部の大きさ(Width,Height,Depth)を数値指定する事で変更する事も可能です。
 
円柱の色はデフォルトで赤色になっていますが、[Materials]内のコンポーネントを利用することで、色指定、テクスチャ指定、マテリアル指定、を行う事が出来ます。
 
キリがありませんので、ここではこの程度でとどめておきます。
 
 
このあとの [3D Scene]、[3D Shapes]、[3D Layers]、[Materials]、については、後述する「3D FireMonkey アプリケーション」にて記述する予定とします。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/12/15
 2013/12/16
▼2013/12/17
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.