Luxophia

Форк
0
/
LUX.Brep.Face.TriFlip.D3.FMX.pas 
136 строк · 4.5 Кб
1
unit LUX.Brep.Face.TriFlip.D3.FMX;
2

3
interface //#################################################################### ■
4

5
uses System.Types, System.Classes, System.Math.Vectors,
6
     FMX.Types3D, FMX.Controls3D, FMX.MaterialSources,
7
     LUX, LUX.D3, LUX.Brep.Face.TriFlip.D3;
8

9
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
10

11
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
12

13
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
14

15
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TTriFaceShape3D
16

17
     TTriFaceShape3D = class( TControl3D )
18
     private
19
       ///// メソッド
20
       procedure MakeGeometry;
21
     protected
22
       _Geometry :TMeshData;
23
       _Material :TMaterialSource;
24
       _Model    :TTriFaceModel3D;
25
       ///// アクセス
26
       procedure SetModel( const Model_:TTriFaceModel3D );
27
       ///// メソッド
28
       procedure Render; override;
29
     public
30
       constructor Create( Owner_:TComponent ); override;
31
       destructor Destroy; override;
32
       ///// プロパティ
33
       property Material :TMaterialSource read _Material write   _Material;
34
       property Model    :TTriFaceModel3D read _Model    write SetModel   ;
35
     end;
36

37
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
38

39
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
40

41
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
42

43
implementation //############################################################### ■
44

45
uses System.SysUtils, System.RTLConsts;
46

47
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
48

49
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
50

51
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TTriFaceShape3D
52

53
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
54

55
procedure TTriFaceShape3D.MakeGeometry;
56
var
57
   I, N :Integer;
58
begin
59
     with _Geometry do
60
     begin
61
          with VertexBuffer do
62
          begin
63
               Length := _Model.PoinModel.ChildsN;
64

65
               for I := 0 to _Model.PoinModel.ChildsN-1 do
66
               begin
67
                    with TTriPoin3D( _Model.PoinModel.Childs[ I ] ) do
68
                    begin
69
                         Vertices [ I ] := Pos;
70
                         Normals  [ I ] := Nor;
71
                         TexCoord0[ I ] := TPointF.Create( Tex.X, Tex.Y );
72
                    end;
73
               end;
74
          end;
75

76
          with IndexBuffer do
77
          begin
78
               Length := 3{Poin} * _Model.ChildsN;
79

80
               I := 0;
81
               for N := 0 to _Model.ChildsN-1 do
82
               begin
83
                    with _Model.Childs[ N ] do
84
                    begin
85
                         Indices[ I ] := Poin[ 3 ].Order;  Inc( I );
86
                         Indices[ I ] := Poin[ 2 ].Order;  Inc( I );
87
                         Indices[ I ] := Poin[ 1 ].Order;  Inc( I );
88
                    end;
89
               end;
90
          end;
91
     end;
92
end;
93

94
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
95

96
/////////////////////////////////////////////////////////////////////// アクセス
97

98
procedure TTriFaceShape3D.SetModel( const Model_:TTriFaceModel3D );
99
begin
100
     _Model := Model_;  MakeGeometry;
101
end;
102

103
/////////////////////////////////////////////////////////////////////// メソッド
104

105
procedure TTriFaceShape3D.Render;
106
begin
107
     Context.SetMatrix( AbsoluteMatrix );
108

109
     _Geometry.Render( Context, TMaterialSource.ValidMaterial(_Material), AbsoluteOpacity );
110
end;
111

112
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
113

114
constructor TTriFaceShape3D.Create( Owner_:TComponent );
115
begin
116
     inherited;
117

118
     _Geometry := TMeshData.Create;
119
end;
120

121
destructor TTriFaceShape3D.Destroy;
122
begin
123
     _Geometry.Free;
124

125
     inherited;
126
end;
127

128
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
129

130
//############################################################################## □
131

132
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
133

134
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
135

136
end. //######################################################################### ■
137

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.