Формат файла .VTX? - PullRequest
       20

Формат файла .VTX?

0 голосов
/ 04 декабря 2009

Я недавно окунулся в DirectX и немного поэкспериментировал с Anim8or и обнаружил несколько типов файлов, в которые можно экспортировать модели, основанные на тексте. Я особенно взял к файлам VTX. Я научился разбирать некоторые основы, но, очевидно, мне не хватает нескольких вещей.

Он начинается с .Faceset с немедленно (в той же строке), за которым следует число ячеек в файле.

Для каждой сетки есть одна секция .Vertex и одна секция .Index в этом порядке, и первая пара секций .Vertex / .Index является первой сеткой, вторая группа - второй сеткой и т. Д. как и следовало ожидать.

В разделе .Vertex файла имеется 8 чисел в строке и неопределенное количество строк (если только вы не хотите доверять комментариям, которые Anim8or поместил непосредственно перед разделом, но это, похоже, не является частью спецификации файла, просто Anim8 или добрый). Первые 3 числа соответствуют координатам X, Y и Z для конкретной точки, которая позже будет использоваться в качестве вершины, остальные 5 я понятия не имею. В большинстве случаев последние 2 цифры равны 0, но я заметил, что это НЕ ВСЕГДА верно, просто обычно верно.

Далее идет соответствующий раздел .Index. В этом разделе 4 номера. Первые 3 являются ссылочными номерами к ранее указанным вершинам, а 3 точки обозначают треугольник в модели. 0 означает первую упомянутую вершину, 1 означает следующую и т. Д., Как массив с нулями. Кажется, что четвертое число всегда равно -1, я не могу понять, какое это имеет значение, и я не могу обещать, что это ВСЕГДА -1. Если вы не можете сказать, я не слишком уверен в этом типе файла.

В файле есть и другая информация, которую я сейчас предпочитаю игнорировать, потому что я новичок и не хочу слишком усложнять вещи. Например, после каждого .Index раздела:

.Brdf
// Ambient color
0.431 0.431 0.431
// Diffuse color
0.431 0.431 0.431
// Specular color and exponent
1 1 1 2
// Kspecular = 0.5
// end of .Brdf

Мне кажется, что речь идет о только что описанной поверхности сетки. Но он не нужен для размещения мешей, поэтому я перешел мимо него.

Переходя к реальной проблеме ... Я могу загрузить файл VTX, когда в файле VTX есть только одна сетка (то есть .FaceSet равно 1). Я могу почти успешно загрузить файл VTX с несколькими сетками, каждая сетка успешно структурирована, но неправильно размещена по отношению к другим сеткам. Я загрузил модель AT-AT из ветки Anim8or на форуме, и она состоит из 344 мешей, когда я загружаю файл, используя только те характеристики, которые я упомянул до сих пор, похоже, что AT-AT взорван, как будто это была схема того, как это сделать (при загрузке в Anim8or все части находятся рядом и напоминают полностью собранный AT-AT). Все части ориентированы правильно и имеют одинаковое направление вверх, но между деталями достаточно места.

Кто-нибудь знает, как правильно читать файл VTX? Или знаете сайт, который объяснит, что означают эти цифры?

Edit:

Расширение файла .VTX используется для множества разных вещей и имеет много разных структур в зависимости от предполагаемого использования. Valve, Visio, Anim8or и некоторые другие используют VTX, меня интересует только файл VTX, который экспортирует Anim8or, и используемая им структура.

Ответы [ 2 ]

1 голос
/ 29 декабря 2009

Я сам работал над программой 3D-моделирования и хотел, чтобы в простом формате можно было вводить объекты в редактор, чтобы можно было тестировать скорость моих процедур рисования с большими наборами вершин и граней. Я искал легкий, где я мог быстро найти модели и нашел формат .vtx. Я погуглил это и нашел твой вопрос. Когда я не смог найти формат в интернете, я поиграл и сравнил экспорт .OBJ с экспортом .vtx. (Может быть, он был создан только для Anim8or?) Вот что я нашел:

1) Да, вершины имеют восемь чисел в каждой строке. Первые три, как вы уже догадались, это координаты x, y и z. Следующие три являются нормалями вершин, nx, ny и nz. Вы можете заметить, что каждая вершина появляется несколько раз с разными нормалями для каждой грани, которая ее содержит. Последние два числа являются текстурными координатами.

2) Что касается лиц, я пришел к тем же выводам, что и вы. Первые три числа являются индексами в списке вершин выше. Последнее число кажется всегда -1. Я собираюсь предположить, что это как-то связано с лицом лица. (например, лицом внутрь или наружу.) Поскольку большинство моделей создаются с гранями, обращенными должным образом, очевидно, что для всех них это будет одинаковое число.

3) Еще одно примечание: сравнивая .obj с .vtx, я заметил, что положение вершин изменилось. Это также верно при сравнении с файлом .an8. Это не должно быть «ОГРОМНОЙ» проблемой, если они все смещены на одну и ту же величину в каждой вершине и в каждом файле. По крайней мере, тогда это может быть компенсировано.

Рассматривали ли вы использовать формат файла .obj? Он основан на тексте и не очень сложен для анализа или понимания. В Интернете довольно много информации об этом.

Я хочу добавить, что после нескольких часов проверки экспорт vtx в Anim8or, похоже, не работает. У меня возникла та же проблема, что и у вас, из-за того, что фигуры были расположены неправильно. Я предполагаю, что anim8or экспортирует эти объекты, используя локальные координаты для каждого меша, без учета примененных преобразований. Я также отмечаю, что он не будет импортировать файл vtx ...

1 голос
/ 04 декабря 2009

Если судить по поиску, кажется, вы на неправильном конце конвейера. Насколько я понимаю: файл VTX представляет собой собственный формат файла Valve , который является результатом набора шагов.

Окончательный вывод Studiomdl для каждого Модель Half-Life представляет собой группу файлов в папка gamedirectory / models готова для использования игровым движком:

  • .MDL файл, который определяет структуру модель вместе с анимацией, ограничительная коробка, хит-бокс, материал, сетка и LOD информация,
  • .VVD файл, который хранит независимые от позиции плоские данные для веса костей, нормалей, вершины, касательные и текстура координаты, используемые MDL, в настоящее время
  • три отдельных типа файла VTX:

    • .sw.vtx (Программное обеспечение),
    • .dx80.vtx (DirectX 8,0) и
    • .dx90.vtx (DirectX 9.0), в котором хранится материал, оптимизированный для аппаратного обеспечения, Скиннинг и треугольная полоса / веер информация для каждого LOD каждой сетки в леях
  • часто файл .PHY содержащий жесткий или сочлененный (ragdoll) модель столкновения и иногда
  • .ANI-файл для дела: что-то делать с анимацией модели

клапан

Теперь в Valve Source SDK могут быть некоторые утилиты для чтения VTX (похоже, в любом случае они могут их создавать). Некоторые люди , возможно, создали сторонние инструменты или имеют код для их чтения, но, вероятно, не будут работать со всеми файлами, потому что это сторонний формат. Я также нашел этот пост , который может помочь, если вы не видели его раньше.

...