Omich

Train-Fever Model Viewer

94 сообщения в этой теме

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

 

По поводу чёрных или пропавших полигонов, к сожалению, также не могу сказать ничего конкретного. Для начала, проверь модель на общие ошибки типа: нормалей не в ту сторону, нескольких не соединённых вершин или одинаковых рёбер в одной точке или одинаковых накладывающихся друг на друга полигонов, не плоских полигонов (их лучше руками разбить на треугольники по необходимым диагоналям) и т.д. Если используешь 3dsmax, ошибки могут помочь найти модификаторы STL Check и т.п.

 

Для создания анимации по ключевым кадрам вручную - подвижные части модели конвертируются в отдельные меши, анимации описываются в их блоке animations как-то так:

        opend1 = { -- Произвольный идентификатор
            type = "KEYFRAME", -- Может быть также KEYFRAME_MATRIX, если ключевые кадры задаются матрицами трансформации
            params = {
                origin = { 0, 0, 0, }, -- Возможно, смещение координат анимации относительно центра меша, но практически везде в стандартных конфигах нули
                keyframes = { -- Перечисление ключевых кадров
                    { time = 0, rot = { 0, 0, 0 }, transl = { 0, 0, 0 } }, -- Углы поворота вокруг осей и смещение по осям, относительные
                    ...
                }
            }
        },

А потом в файле .mdl анимации связываются с событиями в блоках events lod-ов:

close_all_doors = { -- Название события, при котором будет проиграна анимация
  [2] = { -- Номер меша в lod-е, считаются с единицы
    forward = true, -- Если false, проигрывает анимацию в обратную сторону
    name = "opend1", -- Идентификатор анимации из .msh
  },
  ...
},
...

Доподлинно известно о существование лишь трёх событий у подвижного состава:

  • close_all_doors
  • open_all_doors
  • drive

 

В принципе, я начинал реализовывать в TFMC поддержку импорта анимаций, но доделать руки пока не доходят.

1

Поделиться сообщением


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

@akaction, насколько я вижу, рвётся моделька на гофрах и прочих мелких частях. Их хорошо бы все поубивать, сделать отображение гофров только текстурами.

 

Касательно анимации дверей - вот тут посмотри тоже.

0

Поделиться сообщением


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

Кроме того, то что мелкие детали чернеют в игре, но не в TFMV - это может быть косяк расчёта касательных (tangents) используемой TFMC библиотекой импорта моделей (Open Asset Import Library, также известна как AssImp). Навёл меня на эту мысль тот факт, что TFMV информацию о касательных для отображения не учитывает и в нём проблемы нет, а игра их для расчёта освещения и отражений на модели юзает.

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

0

Поделиться сообщением


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

В общем, способов борьбы с выпадающими (отображаемыми чёрным цветов в игре) полигонами 3:

1) снять сглаживание с элемента (Убрать выделенную циферку в Smoothing Groups)

2)удалить проблемный элемент а соседние растянуть так, что бы они закрывали место удалённого элеметна

3) удалить проблемный полигон и создать новый. В зависимости от трудоёмкости либо удаляется и  пересоздаётся элемент целиком, либо удаляется проблемный полигон и вместо него создаётся такого же размера Plane и подгоняется под размеры удалённого полигона (т.е. как бы делается "заплатка").

 

Написал в том порядке, в котором следует пытаться решать проблему (т.е. если п.1 не помогает, то пробовать п.2, если и он не помогает, то п.3)

Перетекстурирование не спасает.

0

Поделиться сообщением


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

Нашёл ещё более быстрый и эффективный способ борьбы с выпадающими полигонами - работает в 80% случаев

1)выбрать объект (т.е. транспорное средство)

2)Выбрать модификатор "unwrap UVW"

3) в свитке "Parameters" модификатора нажать "Edit"

4) Перейти в созданном модификаторе "unwrap UVW" в каталог "Face" и затем на самой модели выбрать проблемные полигоны

5) В окне "Edit UVWs" в меню "Mapping" выбрать "Flatten mapping" (или, в зависимости от способа текстурирования другой пункт)

6) Заново определить положение выделенных на текстуре

0

Поделиться сообщением


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

По поводу анимации.

Походу когда вставляешь анимацию более 5 или 6 LODов  в .mdl файл игра виснет.

Я сначала создал что бы у вагона все 4*4 =16 дверей были независимы, но уже после трёх пар дверей игра стала зависать.

Для себя, я нашёл способ следующий - объединять меши соседних дверей, т.е. те двери, которые должны себя вести одинаково (полностью повторять движения друг друга) я их делаю как один меш. Для этого идеально подходят двери, которые находятся друг на против друга (с разных сторон вагона). Я создал два меша (правые и левые створки), внутри них прописал анимацию, и уже расставил их в .mdl файле в тех местах, где они должны стоять..

0

Поделиться сообщением


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

вот такая шляпа у меня вылетаетRIRtsEQyL50.jpg

0

Поделиться сообщением


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

Такая же точно беда.

0

Поделиться сообщением


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

В скором времени выкачу большой апдейт TFMC/TFMV, исправляющий многие известные косяки с рандомными крашами, с анимациями, с ориентацией модели и т.д.

 

Вообще, из последних ковыряний формата моделей игры известно, что mesh состоит из массивов атрибутов вершин, набора анимаций и набора submesh-ей. Каждый submesh содержит индексы атрибутов вершин и, по крайней мере, один материал. Таким образом mesh может состоять из нескольких логических под-объектов, способных иметь общие вершины и разные материалы.

 

Последняя версия TFMC поддерживала только один submesh в mesh-е, дробя элементы исходной модели на отдельные mesh-и, а TFMV мог отображать модели с несколькими submesh-ами коряво. В новой версии submesh-и будут поддерживаться в полной мере.

 

Также, кроме известных атрибутов вершин position, normal, uv0 и tangent существуют, по крайней мере, следующие:

  • jointWeights - Четырёхмерный вектор. Используется только у рагдолов людей. Судя по всему, как-то задаёт уровень воздействия костей на вершину;
  • offset - Трёхмерный вектор. Используется только у моделей билбордов (деревья и т.п.). Пока не разобрался, что оно вообще делает;
  • positionAmbient - Четырёхмерный вектор. Видел только у билбордов. Вероятно, влияет на цвет или освещение вершины;
  • positionIdx - Четырёхмерный вектор. Только у дальних LOD-ов билбордов. Есть предположение, что он задаёт индексы вершин из ближнего LOD-а. Если это работает и для "обычных" моделей, то, возможно, позволило бы очень сильно сэкономить на размере LOD-ов.

А название атрибута текстурных координат uv0 наводит на мысль, что модель может содержать несколько текстурных каналов - uv1, uv2 и т.д. Возможно, игра поддерживает (или такая поддержка была запланирована разработчиками) несколько материалов на одном submesh-е. С этим ещё предстоит поэкспериментировать.

 

Возможно, доделаю также поддержку чего-либо из этого, если разберусь до конца, как оно работает.

 

Если тут у кого-нибудь, помимо меня, есть опыт ковыряния игровых моделей Train Fever, любая помощь по разбору формата игровых моделей приветствуется.

2

Поделиться сообщением


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

Промежуточный апдейт.

  • поддерживаются submesh-ы;
  • конвертирует в обе стороны;
  • нормальная ориентация модели для большинства форматов (кто работал с ранними версиями, тот понял, о чём я :3);
  • билбоарды, рагдоллы и т.п. не поддерживаются;
  • поддержка анимаций сильно не доделана и отключена.

Использование:

TFMC -i <список входных файлов> [-o <выходной файл>]

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

TFMC -i D:\Users\Omich\Documents\TrainFever\VL11\vl11.3ds "D:\Users\Omich\Documents\TrainFever\VL11\vl11 details.3ds" -o D:\Users\Omich\Documents\TrainFever\VL11\vl11.msh

Если выходной файл не указан, экспортируется в одноимённый с первым входным файл с добавлением расширения .msh.

 

Допустимые входные типы файлов: .3ds, .ase, .blend, .dae, .fbx (не все версии), .lwo, .lws, .ms3d, .obj, .stl, .x и Train Fever .msh.

 

Допустимые выходные типы файлов: .dae, .obj, .stl, Train Fever .msh.

 

И конечно же, я толком не тестировал большую часть этого.

 

Скачать можно тут: https://yadi.sk/d/foVD65Srdk7dp

1

Поделиться сообщением


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

О, вот завтра потестирую. Анимаций жалко, правда, они бы очень пригодились. с:

0

Поделиться сообщением


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

И тут до меня доходит, что одно из не вполне обдуманных и не вполне протестированных изменений таки похерило ориентацию <:”3

Так что сразу быстрофикс https://yadi.sk/d/Q5C_Aljcdkkyd

0

Поделиться сообщением


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

Чот у меня как обычно #чтотонетак.

 

post-1-0-63302200-1420280186_thumb.jpg

 

В старой версии всё так:

 

post-1-0-20463100-1420280185_thumb.jpg

 

Пробовал писать полный путь и в кавычках - всё равно чот как-то не то.

0

Поделиться сообщением


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

Перед именем входного файла нужно добавить ключ -i.

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

1

Поделиться сообщением


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

О, заработало, спасибо. Теперь оно не добавляет имя меша в название файла, это хорошо :3

 

Кстати, а как пользоваться сабмешами? В чём соль?

0

Поделиться сообщением


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

Небольшое пожелание на счёт TFMV: хорошо бы он обрабатывал анимацию по всем проекциям и вообще как нужно :3 А то ширмовые двери - это пздц, приходится кучу раз перезапускать игру после правки координат.

0

Поделиться сообщением


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

@Alex, соль в том, что раньше оно для каждого меша модели генерировало отдельный msh файл (что зачастую не гуд), а теперь генерирует один файл, который может содержать несколько секций в subMeshes.

0

Поделиться сообщением


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

Если у кого выскакивает сообщение об отсутствующей msvcp110.dll ставьте Visual C++ Redistributable for Visual Studio 2012 Update 4 

0

Поделиться сообщением


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

Собрал в кучу и выложил большинство своих старых наработок под Train Fever (TFMC, TFMV и TFME, TFP, TFModConverter...) на GitHub под лицензией MIT.

https://github.com/NyanOmich/TrainFeverTools

Много в спешке набранного говнокода, недоделанных фич и не решённых багов. Но вдруг кому-то зачем-то пригодится. Так что, пусть будет.

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу