fObjMaterialD.pas 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. unit fObjMaterialD;
  2. interface
  3. uses
  4. Winapi.Windows,
  5. Winapi.Messages,
  6. System.SysUtils,
  7. System.Variants,
  8. System.Classes,
  9. Vcl.Graphics,
  10. Vcl.Controls,
  11. Vcl.Forms,
  12. Vcl.Dialogs,
  13. GLS.Scene,
  14. GLS.VectorFileObjects,
  15. GLS.Objects,
  16. GLS.Coordinates,
  17. GLS.SceneViewer,
  18. GLS.BaseClasses,
  19. GLS.Material,
  20. GLS.Cadencer,
  21. GLS.GeomObjects,
  22. Vcl.StdCtrls,
  23. Vcl.ExtCtrls,
  24. GLS.VectorTypes,
  25. GLS.SimpleNavigation,
  26. GLS.Utils,
  27. GLS.Mesh;
  28. type
  29. TFormMO = class(TForm)
  30. GLScene: TGLScene;
  31. GLSceneViewer: TGLSceneViewer;
  32. GLCamera: TGLCamera;
  33. GLLightSource1: TGLLightSource;
  34. dcDodecahedron: TGLDummyCube;
  35. GLCadencer: TGLCadencer;
  36. GLMatLibCube: TGLMaterialLibrary;
  37. PolyDod12: TGLPolygon;
  38. dcCube: TGLDummyCube;
  39. CubeMap: TGLCube;
  40. Hexahedron: TGLHexahedron;
  41. Panel1: TPanel;
  42. RadioGroupObjects: TRadioGroup;
  43. GLSimpleNavigation1: TGLSimpleNavigation;
  44. ffSphere: TGLFreeForm;
  45. dcPlaneCube: TGLDummyCube;
  46. PlaneFront: TGLPlane;
  47. PlaneBack: TGLPlane;
  48. PlaneBottom: TGLPlane;
  49. PlaneTop: TGLPlane;
  50. PlaneRight: TGLPlane;
  51. PlaneLeft: TGLPlane;
  52. GLMesh1: TGLMesh;
  53. chbRotate: TCheckBox;
  54. GLPoints1: TGLPoints;
  55. dcPolyHex: TGLDummyCube;
  56. PolyBottom: TGLPolygon;
  57. PolyLeft: TGLPolygon;
  58. PolyTop: TGLPolygon;
  59. PolyRight: TGLPolygon;
  60. PolyBack: TGLPolygon;
  61. PolyFront: TGLPolygon;
  62. DiskMap: TGLDisk;
  63. plBottom: TGLPlane;
  64. Dodecahedron: TGLDodecahedron;
  65. PolyDod1: TGLPolygon;
  66. PolyDod2: TGLPolygon;
  67. PolyDod3: TGLPolygon;
  68. PolyDod5: TGLPolygon;
  69. PolyDod6: TGLPolygon;
  70. PolyDod7: TGLPolygon;
  71. PolyDod8: TGLPolygon;
  72. PolyDod9: TGLPolygon;
  73. PolyDod10: TGLPolygon;
  74. PolyDod11: TGLPolygon;
  75. dcPolyDod: TGLDummyCube;
  76. PolyDod4: TGLPolygon;
  77. GLMatLibOctave: TGLMaterialLibrary;
  78. dcIcosahedron: TGLDummyCube;
  79. Icosahedron: TGLIcosahedron;
  80. dcDiskDod: TGLDummyCube;
  81. diskDo: TGLDisk;
  82. GLMatLibOctava: TGLMaterialLibrary;
  83. procedure FormCreate(Sender: TObject);
  84. procedure dcPlaneCubeProgress(Sender: TObject; const DeltaTime, NewTime: Double);
  85. procedure GLCadencerProgress(Sender: TObject; const DeltaTime, NewTime: Double);
  86. private
  87. public
  88. Path: TFileName;
  89. procedure PointsCube(Sender: TObject);
  90. end;
  91. var
  92. FormMO: TFormMO;
  93. implementation //------------------------------------------------------------
  94. {$R *.dfm}
  95. // Make PointsCube
  96. procedure TFormMO.PointsCube(Sender: TObject);
  97. var
  98. I: Integer;
  99. Color: TVector3f;
  100. NumPoints: Integer;
  101. X, Y, Z: Single;
  102. begin
  103. NumPoints := 1000;
  104. GLPoints1.Position.SetPoint(0.0, 0.0, -2);
  105. GLPoints1.Size := 5.0;
  106. GLPoints1.Style := psRound;
  107. for I := 0 to NumPoints - 1 do
  108. begin
  109. Color.X := Random();
  110. Color.Y := Random();
  111. Color.Z := Random();
  112. X := Random(10) - 5;
  113. Y := Random(10) - 5;
  114. Z := Random(10) - 5;
  115. GLPoints1.Positions.Add(X * 0.05, Y * 0.05, Z * 0.05);
  116. // Fill array of GLPoints
  117. GLPoints1.Colors.AddPoint(Color);
  118. end;
  119. // dcWorld.Remove(GLPoints1, False);
  120. // GLPoints1 := TGLPoints(dcWorld.AddNewChild(TGLPoints));
  121. end;
  122. procedure TFormMO.FormCreate(Sender: TObject);
  123. begin
  124. Path := GetCurrentAssetPath() + '\map';
  125. SetCurrentDir(Path);
  126. CubeMap.Material.Texture.Disabled := False;
  127. CubeMap.Material.Texture.Image.LoadFromFile('earth.jpg');
  128. // GLMaterialLibrary1.Materials[6].Material.Texture.Image.LoadFromFile('earth.jpg');
  129. // GLMaterialLibrary1.LibMaterialByName('txEarth').Material.Texture.Image.LoadFromFile('earth.jpg');
  130. PointsCube(Self);
  131. end;
  132. procedure TFormMO.GLCadencerProgress(Sender: TObject; const DeltaTime, NewTime: Double);
  133. begin
  134. GLSceneViewer.Invalidate;
  135. if chbRotate.Checked then
  136. begin
  137. case RadioGroupObjects.ItemIndex of
  138. 0: CubeMap.TurnAngle := -90 * NewTime;
  139. 1: Hexahedron.TurnAngle := -90 * NewTime;
  140. 2: dcPlaneCube.TurnAngle := -90 * NewTime;
  141. 3: GLPoints1.TurnAngle := -90 * NewTime;
  142. 4: dcPolyHex.TurnAngle := -90 * NewTime;
  143. 5: DiskMap.RollAngle := -90 * NewTime;
  144. 6: Dodecahedron.TurnAngle := -90 * NewTime;
  145. 7: Icosahedron.TurnAngle := -90 * NewTime;
  146. end;
  147. end;
  148. end;
  149. procedure TFormMO.dcPlaneCubeProgress(Sender: TObject; const DeltaTime, NewTime: Double);
  150. begin
  151. dcPlaneCube.MoveObjectAround(GLCamera.TargetObject, sin(NewTime) * DeltaTime * 10, DeltaTime * 20);
  152. end;
  153. end.