السلام عليكم
لدي ملف من نوع خاص و اريد قراءته
الملف مبدئيا هكذا
v 0.0 0.0 0.0
v 0.0 0.0 1.0
v 0.0 1.0 0.0
v 0.0 1.0 1.0
v 1.0 0.0 0.0
v 1.0 0.0 1.0
v 1.0 1.0 0.0
v 1.0 1.0 1.0
vn 0.0 0.0 1.0
vn 0.0 0.0 -1.0
vn 0.0 1.0 0.0
vn 0.0 -1.0 0.0
vn 1.0 0.0 0.0
vn -1.0 0.0 0.0
f 1//2 7//2 5//2
f 1//2 3//2 7//2
f 1//6 4//6 3//6
f 1//6 2//6 4//6
f 3//3 8//3 7//3
f 3//3 4//3 8//3
f 5//5 7//5 8//5
f 5//5 8//5 6//5
f 1//4 5//4 6//4
f 1//4 6//4 2//4
f 2//1 6//1 8//1
f 2//1 8//1 4//1
بحيث
v وهى vertexs للمجسم
vn وهى normal vertexs
البيانات التى تبدأ بحرف f هى سطوح المجسم والتى تكون على هيئة مثلثات فى الغالب
طيب والعلامه // تشير الى ان ما على يسارها vertex وما على يمينها normal vertex
مهمة normal
يعتبر المتجه العمودى هو الاساس لتحديد الظاهر و الخفى. كذلك للقيام بالاسقاط الهندسى بشكل مناسب و اخيراً التعامل مع الأضاءة.
انا اريد ان اقراه لانني اريد ان استعمله فيما بعد لرسم المجسم
هاهو الكود
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
struct Triangle {
int v1;
int v2;
int v3;
};
struct Vertex {
float x;
float y;
float z;
};
using namespace std;
static void display(void)
{
// move the view a lil down so we could get the tree.obj in the centre of screen
glTranslatef(0.0, -0.50, 0.0);
// clear all pixels
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
Vertex v[50000];
Triangle t[50000];
int vertexCount = 0;
int triangleCount = 0;
char line[100];
FILE *fp = fopen("cube.obj","r");
if (fp != NULL)
{
while (fgets(line, 99, fp))
{
if (line[0] == 'v')
{
sscanf(line, "%*c %f %f %f", &v[vertexCount].x, &v[vertexCount].y, &v[vertexCount].z);
vertexCount++;
}
else if (line[0] == 'f')
{
sscanf(line, "%*c %d %d %d", &t[triangleCount].v1, &t[triangleCount].v2, &t[triangleCount].v3);
triangleCount++;
}
}
}
fclose(fp); traingle اضفتها لانني ان اردت ان ارسم مجسم اقسمه على شكل مثلثات
لكن العمل بالجداول غير منطقي لان الملف لا نعرف كم فيه من vertex لذا قررت التبديل و العمل ب vector
اي
vector<Vertex> v;
vector<Triangle> t;لكنني لم اعرف كيف ابدل
v[vertexCount].xاي كيف اضيف في الجدول الديناميكي
ارجو ان تكونوا قد فهمتم طريقتي و فهمتم ماذا يوجد في الملف و التعقيد الذي فيه لانني لا اعرف كم v توجد