Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Моделирование > формат файла .X при экспорте


Автор: aalleexxaa 21.2.2011, 00:28
Здравствуйте!
Мне для диплома (сфера - машиностроение) нужно написать программку. Частью этой программки является вывод некой детали с ее рельефной поверхность. Так вот для вывода нашел в инете небольшой примерчик, который работает с файлами формата *.x. Т.е. мне сейчас, на данном этапе, нужно сгенерировать файл формата *.x своими силами без участия программ-экспортеров или самого 3Ds Max.
Для пробы нарисовал в максе кубик, экспортироал его и получил вот такой файл:

Код

xof 0302txt 0032
Header {
 1;
 0;
 1;
}
Frame Box01 {
   FrameTransformMatrix {
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
0.000000,0.000000,0.000000,1.000000;;
 }
Mesh Box011 {
 24;
-16.000000;0.000000;-16.000000;,
-16.000000;0.000000;15.999999;,
15.999999;0.000000;15.999999;,
15.999999;0.000000;-16.000000;,
-16.000000;10.000000;-16.000000;,
15.999999;10.000000;-16.000000;,
15.999999;10.000000;15.999999;,
-16.000000;10.000000;15.999999;,
-16.000000;0.000000;-16.000000;,
15.999999;0.000000;-16.000000;,
15.999999;10.000000;-16.000000;,
-16.000000;10.000000;-16.000000;,
15.999999;0.000000;-16.000000;,
15.999999;0.000000;15.999999;,
15.999999;10.000000;15.999999;,
15.999999;10.000000;-16.000000;,
15.999999;0.000000;15.999999;,
-16.000000;0.000000;15.999999;,
-16.000000;10.000000;15.999999;,
15.999999;10.000000;15.999999;,
-16.000000;0.000000;15.999999;,
-16.000000;0.000000;-16.000000;,
-16.000000;10.000000;-16.000000;,
-16.000000;10.000000;15.999999;;

 12;
3;2,1,0;,
3;0,3,2;,
3;6,5,4;,
3;4,7,6;,
3;10,9,8;,
3;8,11,10;,
3;14,13,12;,
3;12,15,14;,
3;18,17,16;,
3;16,19,18;,
3;22,21,20;,
3;20,23,22;;
MeshMaterialList {
 1;
 12;
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0;;
Material {
 0.752941;0.752941;0.752941;1.000000;;
8.000000;
 0.752941;0.752941;0.752941;;
 0.000000;0.000000;0.000000;;
 }
}


MeshTextureCoords {
 24;
0.500000;0.500000;,
0.500000;0.880952;,
0.880952;0.880952;,
0.880952;0.500000;,
0.380952;0.500000;,
0.000000;0.500000;,
0.000000;0.880952;,
0.380952;0.880952;,
0.500000;0.500000;,
0.880952;0.500000;,
0.880952;0.380952;,
0.500000;0.380952;,
0.880952;0.500000;,
0.880952;0.880952;,
1.000000;0.880952;,
1.000000;0.500000;,
0.880952;0.880952;,
0.500000;0.880952;,
0.500000;1.000000;,
0.880952;1.000000;,
0.500000;0.880952;,
0.500000;0.500000;,
0.380952;0.500000;,
0.380952;0.880952;;
}
}
 }

читая и разбирая этот файл, так и не понял, почему одна и та же точка записана 3 раза (т.е. кубик в максе состоит из 8 Vertex, а в файле записано 24? попытался так сказать упростить файл и попробовать на осное написать свой, соблюдая инструкции (т.е. количество вершин, их координаты, точки описывающие треугольники). 
Код

xof 0302txt 0032
Header {
 1;
 0;
 1;
}


Frame x3ds_SeaFloor
{
 FrameTransformMatrix
 {
   1.000000,  0.000000, 0.000000, 0.000000,
   0.000000,  1.000000, 0.000000, 0.000000,
   0.000000,  0.000000, 1.000000, 0.000000,
   0.000000, 0.000000, 0.000000, 1.000000;;
 }
 Mesh SeaFloor
 {
   8;
 16.0;0.0;16.0;,
 16.0;0.0;-16.0;,
 -16.0;0.0;-16.0;,
 -16.0;0.0;16.0;,
 16.0;10.0;16.0;,
 16.0;10.0;-16.0;,
 -16.0;10.0;-16.0;,
 -16.0;10.0;16.0;;
 

    12;
3;0,1,2;,
3;2,3,0;,
3;4,5,6;,
3;6,7,4;,
3;0,1,5;,
3;5,0,4;,
3;1,2,6;,
3;6,1,5;,
3;2,3,7;,
3;7,2,6;,
3;3,0,4;,
3;4,3,7;;


MeshMaterialList {
 1;
 12;
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0;;
Material {
 0.752941;0.752941;0.752941;1.000000;;
8.000000;
 0.752941;0.752941;0.752941;;
 0.000000;0.000000;0.000000;;
 }
}
 
    MeshTextureCoords {
 24;
0.500000;0.500000;,
0.500000;0.880952;,
0.880952;0.880952;,
0.880952;0.500000;,
0.380952;0.500000;,
0.000000;0.500000;,
0.000000;0.880952;,
0.380952;0.880952;,
0.500000;0.500000;,
0.880952;0.500000;,
0.880952;0.380952;,
0.500000;0.380952;,
0.880952;0.500000;,
0.880952;0.880952;,
1.000000;0.880952;,
1.000000;0.500000;,
0.880952;0.880952;,
0.500000;0.880952;,
0.500000;1.000000;,
0.880952;1.000000;,
0.500000;0.880952;,
0.500000;0.500000;,
0.380952;0.500000;,
0.380952;0.880952;;
 
  }
 }
}



конечно же ничего не полуилось, приложение выдает ошибку типа "an undetermined error occerred". Почему? по какому закону описываются точки и треугольники?

Автор: bems 21.3.2011, 06:43
Числа не читал
Цитата(aalleexxaa @  21.2.2011,  00:28 Найти цитируемый пост)
 так и не понял, почему одна и та же точка записана 3 раза
например в файле могут описываться грани. Каждая вершина куба принадлежит трем граням, поэтому упоминается трижды.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)