[3D Shapes]

Icon コントロール ユニットスコープ DocWiki
(ja)
DocWiki
(en)
TCone FMX.Objects3D[DocWiki][DocWiki]
TCube FMX.Objects3D[DocWiki][DocWiki]
TCylinder FMX.Objects3D[DocWiki][DocWiki]
TDisk FMX.Objects3D[DocWiki][DocWiki]
TEllipse3D FMX.Objects3D[DocWiki][DocWiki]
TGrid3D FMX.Objects3D[DocWiki][DocWiki]
TMesh FMX.Objects3D[DocWiki][DocWiki]
TModel3D FMX.Objects3D[DocWiki][DocWiki]
TPath3D FMX.Objects3D[DocWiki][DocWiki]
TPlane FMX.Objects3D[DocWiki][DocWiki]
TRectangle3D FMX.Objects3D[DocWiki][DocWiki]
TRoundCube FMX.Objects3D[DocWiki][DocWiki]
TSelectionPoint3D (XE2 のみ)FMX.Objects3D[DocWiki][DocWiki]
TSphere FMX.Objects3D[DocWiki][DocWiki]
TStrokeCube FMX.Objects3D[DocWiki][DocWiki]
TText3D FMX.Objects3D[DocWiki][DocWiki]

TMaterial について (XE2)

TMaterial の各メンバーについての詳細です。

Materials について (XE3 以降)

XE3 では XE2 の TMaterial に相当するものを [Materials] にある "マテリアルコントロール" で指定します。

3D Shapes の MaterialSource プロパティにマテリアルコントロールを設定します。XE2 の TMaterial に最も近いのは TLightMaterialSource です。

See Also:

投影について

3D オブジェクトの投影については、"画面投影 (DocWiki)" を読んでも、どういう事か解りづらいと思いますので画像で説明します。

このページで投影を説明している時点で、既にお判り頂けているとは思いますが、"投影に関連するのは 3D オブジェクト" であり、カメラではありません。TCamera にも Projection プロパティはありますが、そちらは基本的に操作する必要はありません (あまり意味のないプロパティです)。

3D オブジェクトの Projection プロパティはデフォルトで pjCamera になっています。TSphere を 2 つ用意し、右側の TSphere の Projection プロパティを pjScreen にしてみました。何が違うのかは拡大 / 縮小してみれば判ります。

  

左側の Projection プロパティが pjCamera な TSphere は、フォーム (ビュー) のサイズを変更しても相対位置は変わらず、相対サイズも変わりません (拡大 / 縮小時の縦横比が変わらないのならば)。逆に、Projection プロパティに pjScreen を指定した右側の TSphere は、フォーム (ビュー) のサイズを変更しても絶対位置のままであり、絶対サイズのままです。

絶対位置/絶対サイズはカメラの視点を変更しても変わることはありません。例えば、FPS ゲームのターゲットスコープを 3D オブジェクトで作ったり、ストックしている所持アイテムを表示したりするのに使えるという事です。

See Also:


TCone

基本的 (プリミティブ) な形状の 3D オブジェクトです。円錐です。SubDivisionsAxes プロパティを変更すると五角錐や六角錐も作れます。初期値は 12 なので、正確には十二角錐という事になります。

See Also:


TCube

基本的 (プリミティブ) な形状の 3D オブジェクトです。立方体です (直方体にもできますが)。テクスチャはすべての面に貼られます。

See Also:


TCylinder

基本的 (プリミティブ) な形状の 3D オブジェクトです。円柱です。SubDivisionsAxes プロパティを変更すると五角柱や六角柱も作れます。初期値は 12 なので、正確には十二角柱という事になります。

See Also:


TDisk

基本的 (プリミティブ) な形状の 3D オブジェクトです。円盤です。SubDivisionsAxes プロパティを変更すると正五角形や正六角形も作れます。初期値は 16 なので、正確には正十六角形という事になります。

See Also:


TEllipse3D

基本的 (プリミティブ) な形状の 3D オブジェクトです。円を押し出した形状 (円柱) の 3D オブジェクトです。

前面 / 背面 / 側面 は、Sides プロパティで個別に表示 / 非表示を切り替える事ができます。

See Also:


TGrid3D

グリッドを表す 3D オブジェクトです。位置関係を示すスケールとして使います。グリッドの色は LineColor で指定します。マス目の大きさは Frequency で指定します。Marks で指定したサイズの倍数の時にグリッドの線が細線になります。

See Also:


TMesh

メッシュオブジェクトです。

See Also:


TModel3D

3D モデリングツールで作られた複雑な形状の 3D モデルデータを読み込める 3D オブジェクトです。TMeshCollection に読み込める形式は、

の 3 種類です。

LoadFromFile() でモデルデータを読み込む場合には、モデル形式に応じて以下を uses する必要があります。

XE8 以降では WrapMode プロパティが追加され、コントロールの境界ボックスと 3D モデルの関係を設定できるようになっています。デフォルトは Fit ですが、XE7 以前の動作は Original 相当なので注意が必要です。

See Also:


TPath3D

パスオブジェクトです。パスで描かれた図形を押し出した形状の 3D オブジェクトを作り出す事ができます。テクスチャは

前面 / 背面 / 側面 は、Sides プロパティで個別に表示 / 非表示を切り替える事ができます。

例えば、Path.Data プロパティに、

M 5,20 L 35,20 L 10,40 L 20,10 L 30,40 Z

このようなデータを設定すると、星型を押し出したような 3D オブジェクトが表示されます。

データ中の M は "Move - 絶対位置 (X,Y)"、L は "Line - 絶対位置 (X,Y)"、Z で "パスを閉じる" コマンドです。コマンドの詳細は "パス マークアップ構文 (MSDN)" を参照して下さい。

...とはいえ、複雑なパスを手で記述するのはとても面倒です。GUI でパスデータを作成する方法もあります。

  1. InkScape でパスデータを作り、SVG (プレーン) 形式で保存する。
  2. SVG をテキストエディタで開き、パスデータ部分をコピーする。
  3. RAD Studio のパスデザイナにパスデータを貼り付ける。

See Also:


TPlane

基本的 (プリミティブ) な形状の 3D オブジェクトです。板です。テクスチャを貼って背景等に使う事ができます。

テクスチャを貼った TPlane と、画像を指定した TImage3D はよく似ていますが、TPlane はライティングの影響を受けます。

See Also:


TRectangle3D

基本的 (プリミティブ) な形状の 3D オブジェクトです。長方形を押し出した形状 (四角柱) の 3D オブジェクトです。テクスチャは

前面 / 背面 / 側面 は、Sides プロパティで個別に表示 / 非表示を切り替える事ができます。

また、XRadius / YRadius プロパティを設定すると角を丸くする事ができます (シャフト形状なので ZRadius プロパティはありません)。Radius と半径を同じにすると TEllipse3D のような円柱になります。

See Also:


TRoundCube

基本的 (プリミティブ) な形状の 3D オブジェクトです。角が丸い立方体です。テクスチャは前面と背面をメインに貼られます。

See Also:


TSelectionPoint3D (XE2 のみ)

選択用のオブジェクトです。移動や回転の処理は自前で行わなくてはなりません。

See Also:


TSphere

基本的 (プリミティブ) な形状の 3D オブジェクトです。球体です。テクスチャは球面に貼られます (縦横比 1:2 のテクスチャ画像が使えます)。

See Also:


TStrokeCube

ワイヤーフレームの立方体です。

See Also:


TText3D

文字列を押し出した形状の 3D オブジェクトです。Text プロパティに文字列を指定します。テクスチャは

前面 / 背面 / 側面 は、Sides プロパティで個別に表示 / 非表示を切り替える事ができます。

立体的な文字が必要ないのであれば、TTextLayer3D を使う事も出来ます。

See Also:


 BACK