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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [3D-FMX] メッシュ(Mesh) 2014/03/21
 
前回は [3D Shapes]内の「立方体」(Cube)について見てみましたので今回は同じく[3D Shapes]内の「メッシュ」(Mesh)について見てみます。
 
[3D Shapes]内
FMX
 
ヘルプより
カスタマイズ可能な 3D 図形を表します。
 
TMesh クラスでは、設計時に IDE 内で[オブジェクト インスペクタ]を使って新しい 3D 図形を設計できるように、上位クラス TCustomMesh の一連のプロパティを公開しています。
 
Data プロパティを使用すると、点、各点の法線およびテクスチャ、生成される三角形の描画順序を指定できます。設計された図形は、MaterialSource プロパティで指定された材質で塗りつぶされます。材質が指定されていない場合、図形は赤色で塗りつぶされます。
 

 
Data
バインディングのために、子の 1 つに関連付けられているデータを示します。
 
 
というわけでメッシュ=三角面の集合体です。
Dataプロパティで三角面の定義を行います。
Data.Normals頂点座標の法線ベクトルの一覧
Data.Points頂点座標の一覧
Data.TriangleIndices三角面の構成一覧
Data.TexCoordinates頂点におけるテクスチャの座標の一覧
 
ヘルプでは、オブジェクトインスペクタを使って、と書かれてますが、イベントハンドラ内で プログラムコードで記述するほうが簡単で編集しやすいと思います。実行しないと確認出来ませんが、オブジェクトインスペクタで 入力した数値が意図せず消えてしまうより遥かに良いです。
 
TwoSide プロパティがデフォルトの False の場合、三角面が裏向きだと画面表示されませんので、True にしておいた方が分かりやすいかもしれません。
 
取り敢えず、Form1 表示時のイベント OnShowイベントハンドラにプログラムコードを入力します。メッシュ Mesh1 を配置します。

procedure TForm1.Form3DShow(Sender: TObject);
begin
 Mesh1.Data.Normals := '0 0 1 , 0 0 1 , 0 0 1';
 Mesh1.Data.Points := '5 5 0 , -5 5 0 , 0 -5 0';
 Mesh1.Data.TriangleIndices := '0 1 2';
end;
保存・コンパイル・実行を行うと、下図のようになります。

右下点(5,5,0)→左下点(-5,5,0)→上中点(0,-5,0) という右回り(時計回り)で三角面を1つ描かせています。つまり左手式(親指が表面方向)ですね。TriangleIndices は頂点番号 0番目→1番目→2番目で三角面を構成する、という意味です。
 
次に、テクスチャを割り当ててみます。
TextureMaterialSource を配置し、メッシュ Mesh1 の MaterialSource プロパティに TextureMaterialSource1 を指定します。

TextureMaterialSource1 で Windows7標準サンプルピクチャの「アジサイ.jpg」をテクスチャとして指定し、コードを下記のようにします。 
procedure TForm1.Form3DShow(Sender: TObject);
begin
 Mesh1.Data.Normals := '0 0 1 , 0 0 1 , 0 0 1';
 Mesh1.Data.Points := '5 5 0 , -5 5 0 , 0 -5 0';
 Mesh1.Data.TriangleIndices := '0 1 2';
 Mesh1.Data.TexCoordinates := '1 1 , 0 1 , 0.5 0';
end;
保存・コンパイル・実行を行うと、下図のようになります。

 
これら数値を指定していけば、指定した分の三角面が表示されますので、複雑な形状を作図出来る、かもしれません。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/03/20
 2014/03/21
▼2014/03/22
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.