إضاءة الأجسام الثلاثية الأبعاد

في الموضوع التالي نبين كيفية إضاءة الأجسام الثلاثية الأبعاد، تغيير لون الإشعاعات الضوئية، وكذلك التحكم في الطريقة التي تنتشر بها الإشعاعات الضوئية، وأخيرا تحديد نمط توزيع الضوء.

 البرنامج التالي يبين لنا كيفية استعمال الإضاءة وبعض خصائص وطرق التحكم فيها:

1.نبدأ تطبيق دلفي - متعدد الأجهزة جديد فارغ.
2.نضيف إلى الإطار العنصر TToolBar لوضع أزرار التحكم.
3.نضع أيضا على إطار عنصر TViewPort3D وتعديل بعض خصائصه على مفتش الكائنات، كما يلي:
    Align = Client
    Color = claTeal
    Name =Viewport3D1
4.نضيف كائن TLight إلى العنصر ViewPort3D1 ونعدل بعض خصائصه كما يلي :
    Color = claWhite
    LightType = Directional
5.نضيف كائن TLightMaterialSource ونعدل بعض خصائصه كما يلي :
    Diffuse = claWhite
    Ambient = claOrangered
    Emissive = claNull
6.نضيف إلى العنصر Viewport3D1 الكائن الثلاثي الأبعاد : TroundCube ونعدل خصائصه على مفتش الكائنات كما يلي :
      Width = 4
      Height = 3
      Depth = 6
      MaterialSource = LightMaterialSource1
6.نضع على TToolBar عنصر TButton ونعدل بعض خصائصه كما يلي :
     Align = Left
     Text = 'ON'
7- ننقر نقرا مزدوجا على الزر Button1 ونكتب الكود التالي :
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Text = 'ON' then
  begin
    Light1.Enabled := False;
    Button1.Text := 'OFF'
  end
  else
  begin
    Light1.Enabled := True;
    Button1.Text := 'ON'
  end;

end;
والشكل التالي يبين مظهر تصميم البرنامج
عند تنفيذ هذا البرنامج بالضغط على المفتاح F9 نحصل الشكل التالي :
لمعرفة تأثير الخاصية TLightType و الخصية Color نقوم بإضافة عنصرين على الشريط TToolBar وهما العنصر: TComboBox والعنصر TColorComboBox ، حيث نستعمل الأول للتحكم في نوع الإضاءة والثاني للتحكم في لون الإضاءة كما في الشكل:
ثم نكتب الكود التالي :

procedure TForm1.ColorComboBox1Change(Sender: TObject);
begin
  Light1.Color := ColorComboBox1.Color;
  Viewport3D1.Repaint;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Light1.LightType := TLightType(ComboBox1.ItemIndex);
  Viewport3D1.Repaint;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Add('Directional');
  ComboBox1.Items.Add('Point');
  ComboBox1.Items.Add('Spot');
  ComboBox1.ItemIndex := 0;
  ColorComboBox1.Color := Light1.Color;
end;
بعد تنفيذ البرنامج نحصل على الشكل التالي :
يمكن التحكم في زواية دوران العنصر TLightوذلك بتغيير زاية الدوران حول المحاور الثلاثة. وللقيام بذلك نضيف على الشريط TToolBar ثلاثة عناصر TArcDial ونكتب الكود التالي في الحدث OnChange للعنصر ToolBar1
procedure TForm1.ArcDial1Change(Sender: TObject);

begin
  Light1.RotationAngle.Point := Point3D(ArcDial1.Value, ArcDial2.Value,
    ArcDial3.Value);
end;
ثم نعمم هذا الكود على باقي العناصر TArcDial المتبقية، فنحصل بعد تنفيذ البرنامج على الشكل التالي :

ليست هناك تعليقات:

إرسال تعليق

المشاركات الشائعة