يمكنك قراءة README باللغة الإنجليزية من خلال النقر هنا
Minirt هو مشروع يعرضك على عالم Raytracing الرائع. مع هذا المشروع ، سوف تتعلم تقديم الصور التي تم إنشاؤها بواسطة الكمبيوتر باستخدام تقنيات Raytracing الأساسية. اكتشف كيف يتم إنشاء صور واقعية من الصفر!
فيما يلي بعض الصور عرضًا مع Minirt :
![]() | ![]() |
|---|---|
![]() | ![]() |
توضح هذه الصور ما يمكنك تحقيقه مع المشروع وتمنحك فكرة عن كيفية ظهور النتائج النهائية!
Minirt هو مشروع Raytracing يتيح لك:
استمر في القراءة للحصول على مزيد من التفاصيل حول كيفية تكوين واستخدام Minirt ، بما في ذلك كيفية تحديد الخريطة ، وصيغ التقاطع ، وكيفية التحكم في الكاميرا ولوحة المفاتيح.
تحدد الخريطة العناصر التي ستظهر في صورتك. هنا نوضح لك كيفية تكوين كل نوع من العناصر:
فيما يلي مثال على كيفية تعريف العناصر على الخريطة:
A 0.3 255,255,255 (Luz de ambiente: intensidad, color)
C 0,1,-10 0,0,1 70 (Cámara: posición, vector de dirección, FOV)
L 0,10,-10 0.7 255,255,255 (Luz: posición, intensidad, color)
pl 0,0,0 0,1,0 100,100,100 (Plano: posición, vector normal, color)
sp 0,0,0 5 255,0,10 (Esfera: posición, radio, color)
cy 4,0,0 1,1,0 4 6 10,0,255 (Cilindro: posición, radio, altura, color)
الكاميرا (ج)
ضوء البيئة (أ)
الضوء (ل)
الخطة (PL)
الكرة (SP)
اسطوانة (CY)
صيغة المجال ثلاثي الأبعاد هي:
[(x - h)^2 + (y - k)^2 + (z - l)^2 = r^2]
أين:
تصف هذه الصيغة جميع النقاط ((x ، y ، z)) التي هي على مسافة (ص) من المركز ((h ، k ، l)).
صورة الكرة:
يتم تمثيل المستوى ثلاثي الأبعاد على النحو التالي: [AX + by + CZ + D = 0] حيث ((A ، B ، C)) هو المتجه الطبيعي للطائرة و (D) هو المسافة من الأصل.
صورة خطة: 
للحصول على أسطوانة:
صورة أسطوانة: اسطوانة
لتقديم صورة ، نرسم شعاعًا من الكاميرا عبر كل بكسل . ثم نتحقق مما إذا كان هذا التقاطع البرق مع كائن في المشهد. هنا نوضح كيف يتم حسابه:
من أجل كرة:

لطائرة ثلاثية الأبعاد:

للحصول على أسطوانة:

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

في المشروع ، نستخدم العديد من هياكل البيانات للتعامل مع معلومات المشهد وتكوين الكاميرا. هنا نوضح كيف ينظمون:
t_info و t_data ) t_info : يحتفظ هذا الهيكل بمعلومات حول مقدار كل نوع من العناصر في المشهد:
ambient_light : مقدار الأضواء البيئية.camera : عدد الكاميرات.lights : كمية الأضواء.planes : مقدار الخطط.spheres : عدد المجالات.cylinders : عدد الأسطوانات. t_data : يحتوي هذا الهيكل على جميع المعلومات حول الصورة المراد تقديمها:
width height : أبعاد الصورة (واسعة وطويلة).info : بنية t_info تفاصيل مقدار كل نوع من أنواع الكائنات في المشهد.line : عد الخطوط المصنعة.lights planes spheres cylinders : القوائم التي تحتوي على الكائنات في المشهد. تخزن هذه القوائم معلومات الأضواء والخطط والكرات والأسطوانات ، على التوالي.camera : معلومات حول الكاميرا.ambient_light : معلومات حول الضوء البيئي.t_camera )الكاميرا مسؤولة عن تحديد المنظور الذي يتم من خلاله تقديم الصورة. تشمل هيكله:
fov : مجال الرؤية (FOV) للكاميرا ، والذي يحدد المبلغ الذي يمكن رؤيته من الكاميرا. قيمة أكبر تعني مجال الرؤية الأوسع.center : متجه يمثل موضع مركز الكاميرا في الفضاء.euler : متجه يحتوي على زوايا Euler ، يستخدم لتوجيه الكاميرا في الفضاء ثلاثي الأبعاد.q : رباعي يستخدم لتمثيل دوران الكاميرا ثلاثية الأبعاد. الرباعي مفيد لتجنب مشاكل الاستيفاء والدوران ثلاثي الأبعاد. في المشروع ، تتيح مفاتيح لوحة المفاتيح التحكم في الكاميرا وضبط عرض المشهد. فيما يلي شرح مفصل لكيفية عمل كل مفتاح ولماذا نستخدم تقنيات معينة لإدارة الكاميرا.
W Keys ، A ، S ، D: يتم استخدامها لنقل الكاميرا في اتجاهات مختلفة:
تعدل هذه المفاتيح مركز الكاميرا ، وهي النقطة التي تشاهد منها الكاميرا المشهد. يغير نقل مركز الكاميرا موضع الكاميرا في الفضاء دون تدويرها.
مفتاح الفضاء: رفع الكاميرا لأعلى.
مفتاح Shift: خفض الكاميرا لأسفل.
مفاتيح السهم أعلاه (UP_K) وأسفل (Down_K): يقومون بضبط الميل العمودي للكاميرا:
مفاتيح السهم الأيسر (Left_K) واليمين (يمين): يضبطون الدوران الأفقي للكاميرا:
تعدل هذه المفاتيح زوايا الكاميرا من الكاميرا ، وهي الزوايا التي تحدد كيفية توجيه الكاميرا في الفضاء. تُستخدم زوايا Euler لضبط ميل وتناوب الكاميرا بطريقة بسيطة.
زوايا أولر
تم تصميم هذا المشروع ليكون متوافقًا مع كل من Linux و MacOS ، وتم تنفيذ تكوينات محددة لضمان عمله دون مشاكل في كل من أنظمة التشغيل.
في المشاريع التي تتعامل مع الرسومات وإدخالات المستخدم ، مثل المفاتيح ، من الشائع للرموز المرتبطة بكل مفتاح تختلف وفقًا لنظام التشغيل. للتعامل مع هذه الاختلافات:
على سبيل المثال:
يستخدم المشروع Minilibx (MLX) ، وهي مكتبة الضوء لبرمجة الرسومات ثنائية الأبعاد ، مصممة خصيصًا لبيئات UNIX مثل Linux و MacOS. ومع ذلك ، نظرًا للاختلافات بين أنظمة التشغيل ، من الضروري تكوين المكتبات وطرق هذه بشكل صحيح بحيث يتم تجميع المشروع بشكل صحيح في كلا النظامين.
اكتشاف نظام التشغيل :
تكوين المكتبة :
التجميع التكيفي :
يضمن هذا النهج أن المشروع ليس محمولًا فقط بين أنظمة التشغيل المختلفة ، ولكن أيضًا لا يزال محسّنًا وتوافقًا مع خصائص كل بيئة.
لتوضيح كيفية عمل المشروع في الممارسة العملية ، قمنا بإعداد سلسلة من مقاطع الفيديو التي تظهر جوانب ووظائف مختلفة للبرنامج في العمل. غطاء مقاطع الفيديو هذه:
مقاطع الفيديو هي x4 بدقة 800 × 400
ستوفر لك هذه المقاطع رؤية واضحة لكيفية استخدام البرنامج وما يمكنك توقعه من حيث الأداء والتصور.
إذا كنت تريد المساهمة في المشروع:
هنا
هنا
◦ البريد الإلكتروني ffornes-: ffornes-student.42barcelona.com
◦ البريد الإلكتروني gmacias-: gmacias-student.42barcelona.com