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

مبتدئ  maya مشاركة 1

السلام عليكم
لدي


struct Face



{



    vector polygon;

    vector text;

    vector norm;

    vector norm_face;



}F;
و عرفت vector اثنان


vector Graph;
vector Graph_visibl;
اردت عمل كوبي من الفيكتور Graph الى فكتور فارغ منذ البداية Graph_visibel
من المفروض هكذا


for (int j=0;j<graph.size();j++)>

                { 







           if (result_s>0)



           {





               Graph_visibl[k]=Graph[j];



 k=k+1;

           }

    }

    }

في البداية لا ياتيني خطا لكن عند التنفيذ لا يقوم بالتنفيذ انما ياتيني خطا
ملف الكود موجود في المرفقات
عند تنفيذ المشروع الموجود فيالرابط سيقوم بالرسم

http://up4.m5zn.com/download-2010-1-16-08-799zyrxbr.rar
لكن في main ستجد الكود الخاص بالكوبي بالاخضر
و الذي هو


/*if(gom.size()==1)

{
	for (int j=0;j<graph.size();j++)>
	{
	Graph_visibl[k]=Graph[j];
	k++;
	}
}*/

انزع منه /* و عند التنفيذ سترى المشكلة

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

هذه الطريقة في النسخ ليست صحيحة، فأنتي تفترضين أن الفيكتور الهدف يحتوي على عدد من العناصر قد يساوي ذلك الذي في الفيكتور الأصلي، وهذا غير صحيح، فلا توجد أية تعليمة في الكود لديك تقوم بإخبار الفيكتور الهدف بذلك. إذن، الحل قد يكون هو وضع السطر التالي قبل حلقة النسخ:


Graph_visibl.resize(Graph.size());
 
هكذا نخبر Graph_visibl بأن يتسع لعدد من العناصر يساوي عدد العناصر في Graph. هذه طريقة. الطريقة الأخرى التي يمكننا استخدامها أيضاً هي إضافة العناصر دون إخبار Graph_visibl عن الحجم بشكل مسبق، ولفعل ذلك نستخدم الإجراء push_back والذي يقوم بإضافة عنصر جديد في نهاية المصفوفة. فتصبح الحلقة كالآتي:


for (int j=0;j<graph.size();j++)>
{
  if (result_s>0)
  {
    Graph_visibl.push_back(Graph[j]);
  }
}

ولا داعي لمتابعة عدد العناصر الجديد في المتغير k، حيث أن الفيكتور Graph_visibl قادر على متابعة هذه القيمة داخلياً. وإذا أردنا الحصول عليها في أي لحظة، فستكون تساوي ()Graph_visibl.size . 
 
بالنظر إلى ما تحاولين فعله، يبدو لي أن الحل الثاني هو الأنسب.

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

مبتدئ  maya مشاركة 3

السلام عليكم
لقد اضفت طريقتك الثانية و هي تعمل جيدا
لكنني اكتشفت ان ذلك الملف الذي يقرا منه المشروع ليرسم خاطىء لانه ينقص في عدد الاوجه
لكن عندما عوضته بالملف الصحيح اصبح الكوبي لا يعمل
الملف في المرفقات cube.obj  عوضه فقط في الملف الذي بعثته لك في الاول
و سترى ان الكود يصبح لا يعمل

مبتدئ  maya مشاركة 4

لقد وجدت انني ان المخطئة فان الملف الثاني الذي جربت به خاطىء فقط

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

😄

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