الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن Lightmap

بدأه fouad2008 في 4 يوليو 2008 · 3 رد · 928 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هل من احد يعرف اسم برنامج يقوم ب lightmap الذي اريده هو انتاج اكساء نهائي يتضمن lightmap بالاضافة الى base texture الاثنين معا في اكساء واحد . لانني لا اريد ان اقوم ب multitexturing . مرة نزلت AwingSoft Light Map Maker لكن بدون جدوى .

و شكرا

#2

وعليكم السلام,

لماذا يا ترى تريد الإثنين في إكساء واحد؟ طريقة إستخدام Lightmaps تعتمد على multi-texturing, عندما تجعل الإثنين في إكساء واحد يجب أن يكون لديك إكساء كامل بدقة عالية لكل مضلع! (لأن كل مضلع سيمتلك إكساء مختلف حتى وإن كان الـ base texture هو نفسه) وذلك ليس جيداً من ناحية إستخدام الذاكرة.

إن لم يكن الجهاز التي تستهدفهه يدعم multi-texturing يمكنك بدل ذلك عمل نفس الشئ عن طريق multi-pass rendering.

أحد البرامج المشهورة لعمل الـ lightmaps هو Radiant وهو تابع للعبة Quake3 (رابط التحميل) ولكن هنالك برامج أخرى كثيرة, 3D Studio Max يستطيع عمل ذلك مثلاً, كذلك اداة محرر المشاهد irrEdit وهي جزء من محرك Irrlicht..

:)

#3

مشكور اخي على الرابط ... جاري التحميل

لكن لماذا لا يكون الاثنين في اكساء واحد !!!.. يعني كيف يمكنك ان تعرف قيم ال uv لكل vertexالخاصة ب lightmap مادام الملف يحتوي على قيم ثابتة لل uv الخاصة ب base texture .

#4

يمكن لكل vertex ان يوصف باكثر من مجموعة واحدة من إحداثيات uv, ذلك هو اساس الـ multi-texturing, حالياً يمكن ضمان إن الأجهزة الموجودة تدعم إمكانية ان يمتلك كل vertex اربع مجموعات من إحداثيات uv يمكن تعيين إكساء منفصل لكل منها, وذلك كافي بالتأكيد للـ lightmapping (لا تحتاج إلا إثنين في الحالات الإعتيادية).

اما عن الملف, فانا لا اعرف عن اي نوع ملف تتكلم, هل يمكنك التوضيح أكثر؟

جميع برامج الـ lightmapping تدعم خزن بيانات الـ mesh على الأقل بمجموعتين لأن ذلك شرط الـ lightmapping.

إن كان لديك أي إستفسار عملي عن كيفية تنفيذ هذا الكلام عن طريق الـ API فلا تتردد.

بالنسبة لإستفسارك عن لماذا لا يكون الإثنين إكساء واحد, السبب هو إن الذاكرة محدودة فمن الأفضل بل من المفترض أن تقوم بخزن خرائط الضوء بدقة منخفضة وذلك لأنها كثيرة جداً, لأن كل نقطة على كل مضلع تمتلك بيانات فريدة ولا يمكن إستخدام نفس خريطة الضوء على مضلعين, وفي نفس الوقت فإن الإكساءات الأساسية (base textures) يمكن تكرارها لعدد غير محدود من المضلعات, لذلك فيمكن جعلها ذات دقة عالية بحكم إن عددها سيكون قليل.

إن دمجت الإثنين فإنك ستخسر دقة الإكساءات الأساسية, لأن كل مضلع حينها سيمتلك إكساء فريد لوحده ولا يمكن تكراره وستخسر الكثير من الذاكرة.

تصور مثلاً جدار طوله 100 متر, وعليه إكساء أساسي واحد ذو دقة عالية يتكرر 100 مرة على طول الجدار, عندما تحاول إستخدام خرائط الضوء ودمجها مع الإكساء الأساسي في إكساء واحد, فيجب حينها عمل 100 إكساء لكل متر على طول الجدار! الطريقة الوحيدة لعمل ذلك بدون إستهلاك الذاكرة بأكملها هي جعل دقة كل تلك الإكساءات منخفضة جداً بالمقارنة مع الإكساء الأصلي.

كذلك هنالك نقطة مهمة نسيت ذكرها, برامج عمل الـ lightmapping تقوم تلقائياً بخزن خرائط الضوء كمجموعة في إكساء واحد كبير, بدل العشرات من الإكساءات الصغير, وذلك للتقليل من الحاجة لعمل texture switch اثناء الـ rendering

اتمنى إني استطعت المساعدة :)

تم تعديل هذه المشاركة بواسطة SandHawk في 5 يوليو 2008 في 13:06

مواضيع مشابهة