Witajcie!
Jestem w trakcie pisania aplikacji powiązaną mocno z OpenGL, ale na płaszczyźnie tych rozważań, nie ma (chyba) to aż takiego znaczenia.
Sprawa wygląda następująco. Korzystam z bibliotek/frameworków. (freeglut + OpenGL + tao.FreeGlut). [Nie wiem do końca po co o tym piszę, ale może są tam jakieś gotowe modele do importu a ja się pocę i męczę niepotrzebnie]
I jestem w momencie, kiedy chce importować plik .obj, a raczej jego zawartość. Wavefront .obj - Wiki
Mam napisany fragment kodu który na razie, jak widać, przyjmuje jego ścieżkę. Otwiera go i leci po każdej kolejnej linii. Najbardziej są mi potrzebne:
-v
-vt
-vn
Chyba f nie jest mi potrzebne, ale szczerze nie korzystałem z tego na razie i nie wiem nawet zbytnio jak działają "twarze"(?).
Ostatecznie, chce dostać. Kolekcje VBO z Vectorami3 no i VBO z Vectorami2. Rozmyślam jak, w najbardziej optymalny sposób, wpisać kolejne wartości do kolejnych Vector3, tak na prawdę potrzebuję tablicy kolejnych Vector3(x, y, z);[Już skupię się na tych Vector3]
Aktualnie, mam tablice string z kolejnymi liczbami. Np poniższy kod drukuje:
1.0 -1.0 -1.0
1.0 -1.0 1.0
itd (pominąłem zera na końcu)
I chce w jak najlepszy sposób i w jak najlepszym stylu "wrzucić" (patrząc na pierwszy podany tutaj wiersz) kolejne liczby do kolejnych wartości Vectora3, a więc Vector3(1.0, -1.0, -1.0) i to ma być pierwszy element tablicy Vectorów3, następny wiersz, następny element tablicy itd.
Pisząc to wpadłem chyba na jeden oczywisty pomysł, ale czekam na Państwa odpowiedzi, chętnie pouczę się i zobaczę może jakieś C# sztuczki czy tym podobne. Bardzo dziękuję z góry za pomoc a poniżej załączam kod.
private void ReadingObj(string objPath)
{
StreamReader streamReader = new StreamReader(objPath);
string data = streamReader.ReadLine();
while (data != null)
{
if (data.StartsWith("#"))
{
Console.WriteLine("Komenatrz: " + data);
}
else if (data.StartsWith("v "))
{
string[] parts = data.Split(' ');
float val;
int i = 0;
parts = parts.Skip(1).ToArray();
//Console.WriteLine("Vertex: " + data);
foreach (string part in parts)
{
Console.Write(" ");
Console.Write(part);
}
Console.WriteLine(" ");
Console.ReadKey();
}
//else if (data.StartsWith("vt"))
//{
// Console.WriteLine("Textures: " + data);
//}
//else if (data.StartsWith("vn"))
//{
// Console.WriteLine("Normals: " + data);
//}
//else if (data.StartsWith("f"))
//{
// Console.WriteLine("Face: " + data);
//}
//else
//{
// Console.WriteLine("Inne informacje: " + data);
//}
data = streamReader.ReadLine();
}
}