Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

AO Model Parser


Гость Bercut

Рекомендуемые сообщения

Всем привет!

Пытался я связаться со SLA, да что-то не вышло ничего :( Так что буду всех остальных мучать.

Начну издалека.

Когда-то давным-давно, а точнее полтора года назад, я спрашивал про конвертер моделей вот в этой теме. Но тогда и SLA был занят просмотрщиком текстур, я почти ничего не знал о "взрослом программировании", а уж остальные как-то не особо дергались, вполне радуясь 3D Ripper DX. Последним приходилось пользоваться и мне до определенного момента. Этот момент крайне прост: 3DRipperDX не умеет нормально дергать анимированные модели. По крайней мере у меня они получались с очень большими искажениями. И вот сейчас, пошарив в инете, мне кое-что удалось узнать о том, как можно читать бинарные файлы. В частности крайне благодарен iOrange за его статью по вскрытию игровых ресурсов

Прежде чем расскажу, что мне, горе-программисту, удалось расковырять на текущий момент, хотелось бы спросить. В теме AO Texture Viewer в планах рассказано о каком-то сюрпризе. Это, случайно, не 3D Model Viewer? :)

Даже если и так, то и по фиг. Итак, что есть на текущий момент.

1) .bin - это zlib-архив. Нормальным программистам это очевидно, мне оказалось не очень :)

2) Структура файла (во многом могу ошибаться, но это работает):

а) Все вертексы идут построчно. Мне встретились три вида строк (разобрал 4 файла):

XZY+UV+4непонятныхбайта - в двух статичных объектах: развернутая книжка, хадаганская баллиста

XZY+UVW+8непонятныхбайт - в одном из анимированных объектов - крысе

XZY+UV+16непонятныхбайт - в модели хадаганки

Что такое "непонятныебайты", не знаю. Это не похоже на вещественное число, поэтому я не уверен, что это какие-то нормали или что-то подобное. Может быть освещение, может быть привязки к скину, может быть что угодно.

б) После размера буфера индексов идут, собственно, сами индексы.

Тут, казалось бы, все просто, бежим по массиву и собираем полигоны. При этом номер вертекса совпадает с номером текстурной координаты, поэтому там на каждый полигон одна запись на то, и на это. В какой-то момент индексы внутри массива начинаются сначала, но, как я понял, не всегда. Так, например, в книжке действительно индексы начинаются сначала. Оказалось, что здесь зашито два объекта: модель нормальная и модель в низком разрешении. В хадаганской баллисте на такой переход прога не наткнулась, поэтому можно предположить, что есть несколько объектов, составляющих одну группу. Тут не уверен и глубоко не проверял, но по UV-сетке видна адская мешанина, что подразумевает как минимум два варианта: либо здесь индексы вершин и текстурных координат не совпадают, либо здесь действительно несколько объектов, и на каждый объект своя текстура. В модели хадаганки я сам еще толком не проверил, но похоже, что в стандартной модели вшиты все варианты голов и причесок.

в) После индексов в статичных объектах идут какие-то отдельные байты неясного назначения, в анимированных, таких как крыса и хадаганка, начинается массив чего-то ядреного. Скорей всего это скелет и, возможно, привязка скина к скелету. Это я пока не смотрел.

г) Я не нашел информацию о текстурах, верней о ссылках на них.

На текущий момент моя "хренопупинка" может парсить некоторые из файлов (и порой даже не очень корректно) в OBJ-файл. Если делать дальше со скелетом и анимацией, то этот формат не подходит, и нужно будет использовать что-то другое, например FBX.

Любые помощь и совет приветствуются. Если, конечно, меня не опередили...

Модели (файлы заархивированы. внутри OBJ-файл):

Канийская книжонка. Как видно на этой картинке, здесь присутствуют несколько моделей.

book_full.jpg

Если ручками править OBJ, то можно выделить нормальную модель

book_normal.jpg

Похоже, что тут несколько уровней низкополигональных моделей, потому как вроде основные черты прослеживаются, но явно видна мешанина полигонов.

book_low.jpg

Крыса. Вроде даже неплохо получилась. Хотя в Blender'е почему-то появлялся лишний полигон, идущий от губы до задней левой пятки.

rat.jpg

Хадаганочка. Тут явно прослеживаются кучи разных моделей.

hadagan_female.jpg

Особенно это заметно на голове. Тут все прически...

hadagan_female_head.jpg

Ссылка на комментарий
Поделиться на другие сайты

Прошу прощения. Случайно отправил сообщение. Сейчас дополню ссылками на файлы и скринами

Updated: Поправил

Ссылка на комментарий
Поделиться на другие сайты

Ого! =) Мне только что линканули ссылку сюда. Когда релиз? :)

Нет, я так и не сделал Model Viever, а "сюрприз" не состоялся потому, что разработчики прикрыли одну лазейку. Сюрпризом должно было стать возрождение всех текстурных модов в русской версии АО, где они не работали аж с версии 1.0.07.

Ссылка на комментарий
Поделиться на другие сайты

Quote:
В модели хадаганки я сам еще толком не проверил, но похоже, что в стандартной модели вшиты все варианты голов и причесок.

вероятно, именно это было как раз видно на праздник мистиков, когда очки были в "строенном" варианте.
Ссылка на комментарий
Поделиться на другие сайты

Не знаю насчет релиза. Думаю, еще не скоро. Проблем и вопросов с парсером еще очень много, и у меня не слишком быстро движется процесс расшифровки.

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

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Хренопупинка рулит. Через месяца два-три *заговорчески хихикает* как раз очень хотелось бы видеть её готовую в деле.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

model appears good in 3ds max

mc7n2t.png

http://i54.tinypic.com/mc7n2t.png

3dripperdx does not reference to the mtl in the obj.

Ссылка на комментарий
Поделиться на другие сайты

I've been using this program to do full map or stitched captures.

An example is; 29gdfo6.jpg

or; 20r7a0k.png

Been using these in FullMap.

Ссылка на комментарий
Поделиться на другие сайты

Thank you for yours answers. I know about 3D Ripper DX and using it to make machinima style videos. I found several problems using this program: it can't catch skeletons and animations, it takes too much time in catching scenes, looking for useful models and its textures, and I had to clean models and bind skeleton to non-default posed model. On the second minute of

you can see some kind of "flying" astral demon. The demon has a few tentacles, which must be animated separately. Its not so difficult to animate one demon. But imagine that there are ten or twenty demons I need to animate. It will drive anyone crazy :) I understand that making maps with 3D Ripper DX is better and easier choice, but it does not work good enough for machinima.

The aim of my parser is getting models with their skeletons and animations for comfortable use in different services or videos, or something else.

And I have a question here. Could you give a link to western websites where I could find machinima style videos from Allods Online? :)

Ссылка на комментарий
Поделиться на другие сайты

  • 9 месяцев спустя...
  • 2 недели спустя...

Is anyone still looking into the model format itself, or did everyone go back to use 3dRipperDX and stuff to get things into your-favorite-modeler?

The biggest issue I'm currently facing is separating the different models in there. I'm doing a decent job on estimating points to split, but this only works for the large models (such as the book and its lower detail representation); not for the distinct parts of one model (such as the different hairstyles of a character).

The game must have a way of doing this, a way I've yet to find. All the models seem to have a block 00 (vertex data), 01 (face indices) and 02 (unknown as of yet) - and I believe this block 02 could contain that information. The other blocks (03 upwards) only appear in certain types of models and have a different structure, so it must be either in 02 or somehow encoded in the vertex/face list (the unknown byte/s after each vertex come to mind).

Bercut: How did you get to XZY, instead of XYZ? I frequently get flipped normals and stuff if I do that, along with the models lying down instead of standing up. Using XYZ fixes this, altho the 3dsmax importer has options for both Flip Normals and Flip YZ.

And have you found out anything about those "непонятныхбайт" after the vertices? They're not strictly limited to the 3 you list, and seem to be derived from the amount of vertices (altho this sounds a bit strange and error-prone). I've found good matches by simply assuming 9 floats per vertex when the amount of vertices read is divisible by 9; 8 floats if its divisible by 8 etc. (with the /8 case being the only one with UVW values, while the others only use UV coordinates).

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Hi, BhaaL! Sorry for keeping a long silence. I just had to finish my new machinima-style video :)

About XZY normal I can't tell you much. I've seen that trouble. I believe that its a problem of importing OBJ-format into Maya or 3DS Max. But I'm not sure. To solve this in my case I just turned on both-side faces and unlinked transparency in materials with DDS textures. Somewhere it works with transparency.

About "unknownbytes" I can't tell you much as well. I didn't understand what it is. There are few different types of objects. I've found four types. My code looks like this (sorry, comments are not right XD ):

Code:
//X+Z+Y+U+V+unknown = 4+4+4+4+4+4 = 24

if (lenVertex % 24 == 0)

{

 strType = "static";

}

//X+Z+Y+U+V+W+unknown+unknown+unknown = 4+4+4+4+4+4+4+4+4 = 28

if (lenVertex % 28 == 0)

{

 strType = "pirate_barkas";

}

//32

if (lenVertex % 32 == 0)

{

 strType = "creature";

}

//X+Z+Y+U+V+unknown+unknown+unknown+unknown = 36

if (lenVertex % 36 == 0)

{

 strType = "character";

}

I'm not sure about W-coordinate, but my prog doesn't fail in some types of objects on converting that value to float, but I can't say the same about those "unknown" bytes. They are not always float or always are not float :)

About splitting models. I don't know the truth. But for my parser I'm using an algorithm which tries to find falling values of indexes from maximum to 1,2,3. That doesn't work in all cases. And the second algorithm I took as prototype from Blender scripts which allows merging different models with vertexes and edges with same coordinates. I believe that there is a third way. It's a huuuuuge file pack.bin where you can find links to textures, files with descriptions, etc. But no one didn't parse it yet :)

Ссылка на комментарий
Поделиться на другие сайты

Aww, too bad...for now, I'm just doing the same:

- See if the amount of vertices is divisble by 9, 8, 7 or 6 to determine the amount of unknowns and whether its UV or UVW coordinates (for the %8 part)

- Try to split when the face index drops to index 1 again

Apart from the fact that 00/01/02 blocks are present in all models and 03 upwards only in few of them (altho pretty much type specific, such as ship models or character models), I didn't find out much more than whats already in this thread :(

I was also poking around SLAs Texture Viewer to see how textures are encoded, in order to create something like a model viewer; but the code is far too messy right now and pretty much stuck as bin2obj converter...might put that up on github or somewhere if I get around to clean it up a bit.

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...

Up necro topic.

Доброго времени суток всем.

Ни у кого не появилось каких-либо идей с вытаскиванием анимации или хотя бы костей из ресурсов? http://www.machinimadev.com/products/ - тут ребятки научились открывать несколько файлов геометрии из текущего клиента, но, похоже, на это всё.

Ссылка на комментарий
Поделиться на другие сайты

Не реклама, а овер9кая попытка скоммунздить часть ресурсов из аллодов с целью создания фанатской игрушки по ним.

Оффтоп: так же если вдруг найдётся добрая душа, которая воссоздаст скелет по анимации(сами виды анимации все есть, но именно нормальное видео из просмотрщика моделей, не из игры), похожий на тот, что у какой-нибудь модели в ао, то буду очень-преочень благодарен. Ибо если будет хотя бы одна модель со скелетом, то можно будет уже вставить анимацию в быдлодемку и ею заинтересовать игроков.

UPD: посмотрел машиниму, на которую ссылку давал - у них что-то сырое, они лишь несколько моделей научились просматривать + только модели даже без текстур. По крайней мере для клиента последней версии, хз для какой версии программа написана.

Изменено пользователем Nuada
Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования