الشبكة العربية لمطوري الألعاب

موهوب  16mofed84 مشاركة 1

احتاج الى بعض المساعده منكم الله يخليكم
1 : كيف يمكن عمل Render  لنفس المجسمات ولكن من كمرتين ؟ بدون render - clear - render حتى ولو استخدمنا multi Render Target
2 : كيف يمكن رسم (Decals)  او  (طبع) على الارض مثل الشقوق بأعداد كبيره ؟
و شكرا جميعا

موهوب  16mofed84 مشاركة 2

اسبوع ولا رد ؟!

محترف  انس مشاركة 3

السلام عليكم.

ليس بامكاني المساعدة، لمحدودية معلوماتي، لكنني اظن انه من المستحسن ان تقدم معلومات اكثر كالمحرك  أو المكتبة المستعملة...

مبتدئ  Islam Merabtene مشاركة 4

أنت لا تمنحنا تفاصيل كافية لمشكلتك, هل تستعمل XNA ؟

بشكل عام :
1- تقسيم الشاشة إلى مساحتين فيكون لدينا إثنان من (Viewport), نستعمل كامرا لكل (Viewport)
2- يكفي تثبيت صورة على المجسم (Texture) في المكان المحدد, يمكنك إعادة تثبيت الصورة عدة مرات

موهوب  16mofed84 مشاركة 5

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




اليمين العادي(رندرين واحد للظل و الاخر لكل شيء)  الشمال الذي افكر فيه(رندر واحد نأخذ منه صوره للشاشه و صوره الظل ل next frame 

فما رأيكم بهذه الفكره و هل هي ممكنه

الموضوع الاخر الي هو الطبع

كيف يمكن رسم عدد كبير من الطبع (decals)  ؟؟
الموضوع كله موضوع shader HLSL   ..

خبير مدير وسام البهنسي مشاركة 6

السلام عليكم،
 
فهمت الهدف الذي تقصده، لكن باختصار وباستعمل XNA، تحقيقه غير ممكن. باستخدام D3D10 فما فوق، تستطيع استخدام مظلل المجسمات (Geometry Shader) لمضاعفة عدد المثلثات وتحويل كل منها باستخدام المصفوفة الخاصة (مثلاً، المثلث الأصلي يتم تحويله بمصفوفة العرض، والنسخة منه يتم تحويلها بمصفوفة الظل). ثم بعد ذلك، تستخدم هدفي رسم وتجبر مظلل البكسلات على إظهار البكسلات المناسبة من أحد النسختين فقط.
 
كما تلاحظ، المحصلة النهائية تحوي الكثير من الهدر في المعالجة. فمن أجل تفادي إعادة رسم المجسم عدة مرات، اضطررت لإبطاء كامل المعالجة. لذلك  أعتقد أنه في الوقت الحالي لا يفضل استخدام هذا الأسلوب لتسريع الأداء. ربما تختلف المقاييس في المستقبل، لكن ليس الآن حتماً...
 


وفي 23/رجب/1432 03:28 ص، أعرب 16mofed84 عن رأيه بالموقف كالآتي:

كيف يمكن رسم عدد كبير من الطبع (decals)  ؟؟

إحدى أبرز المشاكل التي تعاني منها المحركات عند رسم الطبعات هي البطء في توليد أوامر الرسم. محرك أنريل مثلاً يقوم بإصدار أمر رسم لكل طبعة، وهذا بطييييييء. المفروض أن تقوم بتجميع كافة الطبعات التي تريد رسمها في مخزن واحد (مخزن رؤوس ومخزن فهارس) ثم ترسل أمر رسم واحد لرسم كافة هذه الطبعات بضربة واحدة. 
بهذه الطريقة تستطيع رسم الآلاف من الطبعات دون أية مشاكل في الأداء.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

موهوب  16mofed84 مشاركة 7

شكرا جدا على ردك
بنسبه لظل انتهى الامر ..

و لكن الغريب في الامر unreal  ان    ..محركات القديمه مثل (Tactical Ops->directX 8.1,Counter Strike) تدعم الطبع بعدد كبير و هي من اقدم الالعاب (~1999)!!!

ولكني لم افهم الطريقه الطبع ...

indexbuffer و vertexbuffer
الصراحه  انا لا اريد ان اغلبك و لكن ان كان هناك مثال او اي موقع (حتى لو بالانغليزي) سأكون شاكر جدا





وشكرا

مبتدئ  Islam Merabtene مشاركة 8

VertexBuffer : يحتوي إحدثيات الرؤوس في المعلم (x, y, z), أعداد حقيقية يمكن أن تكون موجبة أو سالبة
IndexBuffer : يحتوي أعداد طبيعية موجبة محصورة بين 0 و عدد الرؤوس, كل 3 من هذه الأعداد تمثل مثلث في المعلم
مثلا, إذا كان ال Index Buffer يحتوي على : [3, 2, 5, 1, 4, 6]  فإن الرأس 3 و 2 و 5 يشكلون مثلث و الرؤوس 1 و 4 و 6 تشكل مثلث آخر
عدد المثلثات هو : IndexBuffer / 3

موهوب  16mofed84 مشاركة 9

شكرا لك
هل ارسم بعدها الطبع بـProjectedTextureCoordinate ؟
ولكنه يأخذ الكثير من سرعه FPS

مبتدئ  Islam Merabtene مشاركة 10

إذا كان ذلك لرسم الثقوب على الجدران، فيمكنك حساب إحداثيا نقطة التصادم ثم إستعمال هذه المعلومات للطبع في المكان المناسب
إذا كنت تستعمل XNA فأنا أنصحك بإستعمال محرك رسوم قوي، أقترح لك AXIOM الذي هو عبارة عن ترجمة لكود المحرك OGRE من ال C++ إلى C#

http://axiom3d.net/wiki/index.php/Main_Page
http://axiom3d.net/wiki/index.php/Basic_Tutorial_0_%28Setting_up_your_application,_Windows%29