fdHeightmap.pas 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. unit fdHeightmap;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Types,
  6. System.UITypes,
  7. System.Classes,
  8. System.Variants,
  9. System.Math.Vectors,
  10. FMX.Types,
  11. FMX.Controls,
  12. FMX.Forms,
  13. FMX.Graphics,
  14. FMX.Dialogs,
  15. FMX.MaterialSources,
  16. FMX.Controls3D,
  17. FMX.Objects3D,
  18. FMX.Viewport3D,
  19. FMX.Ani, FMX.Types3D,
  20. FMX.Controls.Presentation,
  21. FMX.StdCtrls,
  22. FMX.Layouts, FMX.Objects,
  23. FMX.Edit,
  24. FMX.EditBox,
  25. FMX.SpinBox,
  26. GBE.Heightmap;
  27. type
  28. TFormHeightmap = class(TForm)
  29. Viewport3D1: TViewport3D;
  30. GBEHeightmap1: TGBEHeightmap;
  31. ColorMaterialSource1: TColorMaterialSource;
  32. Light1: TLight;
  33. LightMaterialSource1: TLightMaterialSource;
  34. SwitchToLines: TSwitch;
  35. Switch2Ramp: TSwitch;
  36. LightMaterialSource3: TLightMaterialSource;
  37. Layout1: TLayout;
  38. LabelGrid: TLabel;
  39. Label2: TLabel;
  40. Rectangle1: TRectangle;
  41. Image1: TImage;
  42. Label3: TLabel;
  43. SpinBoxBlur: TSpinBox;
  44. Cylinder1: TCylinder;
  45. FloatAnimation1: TFloatAnimation;
  46. FloatAnimation2: TFloatAnimation;
  47. Cylinder2: TCylinder;
  48. FloatAnimation3: TFloatAnimation;
  49. procedure FormCreate(Sender: TObject);
  50. procedure SwitchToGrid(Sender: TObject);
  51. procedure SwitchToRamp(Sender: TObject);
  52. procedure SpinBoxBlurChange(Sender: TObject);
  53. procedure FloatAnimation1Process(Sender: TObject);
  54. private
  55. public
  56. end;
  57. var
  58. FormHeightmap: TFormHeightmap;
  59. implementation
  60. {$R *.fmx}
  61. procedure TFormHeightmap.FormCreate(Sender: TObject);
  62. var
  63. Stream: TMemoryStream;
  64. begin
  65. Stream := TMemoryStream.Create;
  66. Image1.Bitmap.SaveToStream(Stream);
  67. GBEHeightmap1.loadHeightmapFromStream(Stream);
  68. Stream.Free;
  69. end;
  70. procedure TFormHeightmap.FloatAnimation1Process(Sender: TObject);
  71. begin
  72. Cylinder1.Position.Y := GBEHeightmap1.GetHeight(Cylinder1.Position.Point);
  73. end;
  74. procedure TFormHeightmap.SpinBoxBlurChange(Sender: TObject);
  75. begin
  76. GBEHeightmap1.Flou := trunc(SpinBoxBlur.Value);
  77. end;
  78. procedure TFormHeightmap.SwitchToGrid(Sender: TObject);
  79. begin
  80. GBEHeightmap1.ShowLines := SwitchToLines.IsChecked;
  81. end;
  82. procedure TFormHeightmap.SwitchToRamp(Sender: TObject);
  83. begin
  84. if Switch2Ramp.IsChecked then
  85. GBEHeightmap1.MaterialSource := LightMaterialSource3
  86. else
  87. GBEHeightmap1.MaterialSource := LightMaterialSource1;
  88. GBEHeightmap1.UseRamp := Switch2Ramp.IsChecked;
  89. end;
  90. end.