DelphiXE3 [3D-FMX] 3Dモデル(Model3D) 2014/04/01 |
前回は [3D Shapes]内の「3D楕円」(Ellipse3D)について見てみましたので今回は同じく[3D Shapes]内の「3Dモデル」(Model3D)について見てみます。
[3D Shapes]内
FMX | |
ヘルプより
メッシュの集まりで構成される汎用の 3D モデルを表します。
TModel3D を使用すると、定義された 3D モデルを 3D ビューポート内にインポートできます。3D モデルを読み込むには、MeshCollection プロパティを使用します。
TModel3D には、読み込まれたモデルの幾何学的操作を可能にするプロパティやメソッドがカプセル化されています。
サポートされている 3D 形式は、.dae、.obj、.ase です。 |
|
MeshCollection
このモデルを構成するオブジェクトのコレクションを示します。 |
|
.dae形式、.obj形式、.ase形式を読み込んで表示出来るコンポーネントです。
.dae形式は、COLLADA 形式ファイルです。3Dソフトの「スケッチアップ」や3D-CGソフトの「Blender」等で使えますね。
.obj形式は、Wave Front 形式ファイルです。一般的な3D-CGソフトでは使える場合が多いですね。
.ase形式は、ヘルプでは「Adobe Swatch Exchange(.ase)モデル」と書かれていますが、残念ながら私には分かりません。
MeshCollection プロパティ欄の右端の[…]をクリックして、3Dファイルを指定して、それを開く事が出来ます。
↓
当方ソフトでは、「Script!3D」と「AFWord2」で .dae(COLLADA)ファイル・及び・.objファイルを出力することが出来るようになっていますので、これを利用する事が出来ます。なお、小さいモデルを読み込もうとすると、Scaleプロパティが 0 値になってしまう事があるようなので注意します。
例えば、Script!3D で下記のようなスクリプトを実行したとします(これは以前ブログで書いたモデルの1つです)。
#VAR
sp = 10 ;*曲線分割数
sp2 = 5 ;*膨らみ面分割数
sp3 = 8 ;*分割数
r = 1.1 ;*膨らみ倍率
x1 = 50 ;*x1
y1 = 0 ;*y1
x2 = 200 ;*x2
y2 = 150 ;*y2
x3 = 200 ;*x3
y3 = 240 ;*y3
x4 = 100 ;*x4
y4 = 300 ;*y4
x5 = 60 ;*x5
y5 = 320 ;*y5
x6 = 0 ;*x6
y6 = 330 ;*y6
i
j
w1
w2
w3
#DRAW
CAL w1 = 0.5*PI
ROXMATR w1
BEZIR2D i,sp,x1,y1,x2,y2,x3,y3,x4,y4
BEZIR2D i,sp,x4,y4,x5,y5,x5,y5,x6,y6
GETFIGN j,i
ALLSEL i, 1,1,999,999
CAL w1 = PI / sp3
S_ROT2 0,-1,1,sp2, 0,0,0, 0,0,0, 0,0,100, r,r,1,0,w1,0
ALLSEL i, 1,6,999,999
S_REVS
CLRSEL
ADDSEL i, 1,j,1,1,999,999
CAL w1 = - w1
S_ROT2 0,-1,2,sp2, 0,0,0, 0,0,0, 0,0,100, r,r,1,0,w1,0
ALLSEL i, 1,1,999,999
S_DELE
ALLSEL i, 1,999,999,999
CAL w1 = 2.0*PI
S_COPRS 0,-1,-1,sp3, 0,0,0,0,0,0,0,0,100,1,1,1,0,w1,0 |
これを実行すると
という画面が表示されますので、これを、.dae(COLLADA)ファイルとして保存し、MeshCollection プロパティでこのファイルを指定します。
↓
Scaleプロパティを各 30 にします。
RotationAngle.X プロパティを 90 にします。
ライト Light1 を配置し、位置を調整します。
次に、.obj ファイルを開いてみます。
↓
Scaleプロパティを各 0.03 にします。
RotationAngle.X プロパティを 90 にします。
ライト Light1 を配置し、位置を調整します。
基本的に、.obj ファイルは単色表示です。
が、色を表現出来るマテリアルファイルの拡張仕様もあります。このコンポーネントがその拡張仕様に対応しているかどうかについては未確認です。
.ase ファイルについては全く分かりませんので動作確認出来ませんから、未確認です。利用出来る方は実際に利用してみて下さい。有効活用出来るようでしたら、利用されると良いのではないかと思われます。
|