هل هناك طريقة لاستيراد نموذج ثلاثي الأبعاد إلى Android؟

StackOverflow https://stackoverflow.com/questions/204363

  •  03-07-2019
  •  | 
  •  

سؤال

هل من الممكن إنشاء نموذج ثلاثي الأبعاد بسيط (على سبيل المثال في 3DS MAX) ثم استيراده إلى Android؟

هل كانت مفيدة؟

المحلول

هذا هو المكان الذي وصلت إليه:

  • لقد استخدمت APIDemos من Google كنقطة بداية - هناك مكعبات دوارة، يتم تحديد كل منها بواسطة صفيفين:القمم والمؤشرات.
  • لقد قمت بإنشاء نموذجي باستخدام Blender وقمت بتصديره كملف OFF - وهو ملف نصي يسرد جميع القمم ثم يواجه فيما يتعلق بهذه القمم (الهندسة المفهرسة)
  • ثم قمت بإنشاء تطبيق C++ بسيط يقوم بإيقاف تشغيله ويكتبه على هيئة ملفي XML يحتويان على مصفوفات (واحدة للرؤوس وواحدة للمؤشرات)
  • يتم بعد ذلك نسخ ملفات XML هذه إلى قيم/قيم وبهذه الطريقة يمكنني تعيين البيانات التي تحتوي عليها لمصفوفات مثل هذا:
    int vertices[] = context.getResources().getIntArray(R.array.vertices);
  • أحتاج أيضًا إلى تغيير عدد الوجوه المراد رسمها هنا يدويًا: gl.glDrawElements(GL10.GL_TRIANGLES, 212*6, GL10.GL_UNSIGNED_SHORT, mIndexBuffer); - يمكنك العثور على هذا الرقم (212 في هذه الحالة) أعلى ملف OFF

هنا يمكنك العثور على صفحة المشروع الخاصة بي، والتي تستخدم هذا الحل: مشروع جيثب> vsiogap3d

نصائح أخرى

وقد تصديره إلى تنسيق ASE. من ASE، يمكنك تحويله إلى رمز يدويا أو برمجيا. وسوف تحتاج لقمة القمم مجموعة ويواجه لمؤشرات في الروبوت. لا ننسى لديك لتعيين

gl.glFrontFace(GL10.GL_CCW);

ولأن 3ds ماكس الافتراضي هو عكس اتجاه عقارب الساعة.

وينبغي أن يكون ممكنا. هل يمكن أن يكون الملف كملف البيانات مع البرنامج (وعلى هذا النحو سيتم دفعها على المحاكي وتعبئتها للتثبيت على جهاز الفعلي). ثم يمكنك كتابة محمل نموذج والمشاهد في جافا باستخدام مكتبات الروبوت وGLES لعرض النموذج.

ربما

وموارد محددة بشأن هذه تقتصر على الرغم من. 3DS هو تنسيق proprietry رافعات 3rd الطرف حتى الآن في العرض شورتيش ومعظمها عكس هندستها. أشكال أخرى (مثل خلاط أو milkshape) هي أكثر انفتاحا، ويجب أن تكون قادرة على العثور على تفاصيل حول الكتابة محمل لهم في جافا بسهولة إلى حد ما.

هل حاولت min3d لالروبوت؟ وهو يدعم 3ds ماكس، ونماذج الكائنات وMD2.

وغير متأكدة من الروبوت على وجه التحديد، ولكن بصفة عامة تحتاج برنامج نصي في 3DS ماكس يكتب يدويا من التنسيق تحتاجها من نموذج.

وحول ما إذا كان أحد موجود لالروبوت أو لا، أنا لا أعرف.

يمكنك القيام بذلك أيضًا مع محول كائن ثلاثي الأبعاد

http://web.t-online.hu/karpo/

يمكن لهذه الأداة تحويل كائن ثلاثي الأبعاد إلى تنسيق نص\xml أو رمز c.

مثال على إخراج gl 'c' المفتوح:

glDisable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);

GLfloat Material_1[] = { 0.498039f, 0.498039f, 0.498039f, 1.000000f };

glBegin(GL_TRIANGLES);

  glMaterialfv(GL_FRONT,GL_DIFFUSE,Material_1
  glNormal3d(0.452267,0.000000,0.891883);
  glVertex3d(5.108326,1.737655,2.650969);
  glVertex3d(9.124107,-0.002484,0.614596);
  glVertex3d(9.124107,4.039649,0.614596);

glEnd();

أو الإخراج "ج".

Point3 Object1_vertex[] = {
       {5.108326,1.737655,2.650969},
       {9.124107,-0.002484,0.614596},
       {9.124107,4.039649,0.614596}};
long Object1_face[] = {
       3,0,1,2,
       3,3,4,5
       3,6,3,5};

ثم يمكنك فقط استبدال أجزاء من هذا الكود برمز جافا.

ملاحظة.هذه الأداة ليست مجانية ويمكنك استخدامها فقط لفترة تجريبية مدتها 30 يومًا.لكن محولات الكود "c" ومحولات XML متاحة لهذه الفترة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top