Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Импорт level, level.geom и level.geomx #226

Closed
IgeNiaI opened this issue Apr 9, 2019 · 21 comments
Closed

Импорт level, level.geom и level.geomx #226

IgeNiaI opened this issue Apr 9, 2019 · 21 comments

Comments

@IgeNiaI
Copy link

IgeNiaI commented Apr 9, 2019

Здравствуйте.
Меня интересует ситуация с импортом геометрии уровня.
Здесь #180 вы говорили, что написали тестовый импорт .geom, но, как я понял, в релиз он не попал.

Я переношу карту Затон в UE4, поэтому меня интересует только импорт и дальнейший экспорт в .fbx . Я импортировал карту через 3ds max и столкнулся с двумя проблемами.

Первая: часть Mesh отсутствует.
nocars
Это мост Преображенского и здесь должна быть разбитая военная колонна, но её нет и ящики просто висят в воздухе. Наверняка отсутствует что-то ещё, но я пока не находил. Я не знаю, эта проблема в плагине импорта или же колонны нет в файле level.geom. Если второе, то где она? Подозреваю, что в файле level или level.geomx. Может, вы знаете?

Вторая проблема:
looseparts
Я здесь выделил одну Mesh, но, как видите, она состоит из нескольких, находящихся в разных концах карты. Опять же, не знаю, проблема в плагине импорта, формате .fbx или же в самом сталкере оно так устроено.

Ну и мелкая проблема: все Mesh имеют фактический центр в координате 0-0-0, а не в центре своей геометрии. Это видно по стрелкам на втором скриншоте.

В любом случае, прошу реализовать импорт геометрии уровней в вашем плагине, очень уж плагин и Blender хороши.

@PavelBlend
Copy link
Owner

вы говорили, что написали тестовый импорт .geom, но, как я понял, в релиз он не попал.

да, я написал импорт, но в отдельном репозитории:
https://github.com/PavelBlend/blender_stalker_tools_addon

Я не знаю, эта проблема в плагине импорта или же колонны нет в файле level.geom.

колона скорее всего есть в level.geom, но не в виде статической геометрии, а в виде MultipleUsage. Проще говоря колона - это лод объект (как деревья).

она состоит из нескольких, находящихся в разных концах карты.

Это компилятор уровней xrLC так разбивает геометрию. И с этим ничего не поделаешь. Так устроено в сталкере.

все Mesh имеют фактический центр в координате 0-0-0

вся статическая геометрия имеет координаты 0, 0, 0. Только лоды имеют разные координаты.

Меня интересует ситуация с импортом геометрии уровня.

насчёт внедрения импорта level.geom я пока не уверен. Так как это может занять много времени и сил. Тот импорт, который я написал, является сырым и практически не тестировался. Просто мы сосредоточены на редактировании исходных файлов: object, skls.

@igelbox а ты относишься к внедрению плагина level.geom? Всё так же против?

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 10, 2019

колона скорее всего есть в level.geom, но не в виде статической геометрии, а в виде MultipleUsage. Проще говоря колона - это лод объект (как деревья).

То есть, остальная геометрия не имеет LOD вообще? Как же они тогда это оптимизировали в игре? Просто обрезают на расстоянии и прикрывают туманом, как я?
Если всё же возьмётесь за импорт level.geom, то прошу сперва реализовать импорт MultipleUsage и, если возможно, с сохранением их позиций на карте.

Это компилятор уровней xrLC так разбивает геометрию. И с этим ничего не поделаешь. Так устроено в сталкере.

А что если ковертировать из исходников? Хотя, там наверняка формат гораздо более сложный.

@igelbox
Copy link
Collaborator

igelbox commented Apr 15, 2019

Да, я всё так же (как и в #126) против добавления фич, если без этого можно обойтись.
Попробовал сейчас импортировать Затон, как: converter -level zaton -with_lods
В итоге получил жирный cuts.object файл (который еле-еле грузится в Blender) и с полсотни lodsXX.object файлов. Проблема в том, что все LOD-ы импортируются в центр карты.
@PavelBlend а что если вместо полноценного импорта geom файлов, мы будем импортировать только положения LOD-ов и расставлять эти LOD-ы, которые мы заранее импортировали из сконвертированного уровня? Думаю, такая задача гораздо легче и быстрее решится, чем полноценный импорт.

@PavelBlend
Copy link
Owner

@igelbox у меня пока нет идей, как это можно реализовать. Как определить, что привязано к определённой позиции? По имени и номеру object файла?

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 28, 2019

@igelbox @PavelBlend а как вы изучаете исходники? Может, смогу помочь.

@PavelBlend
Copy link
Owner

а как вы изучаете исходники?

исходники движка xray? Для этого нужно знать язык си++. Но я сам его не знаю. Чаще всего пользуюсь поиском по файлам в notepad++, чтобы найти интересующую вещь (например, ввожу в поиск идентификатор чанка).

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

Нет, не движка, а файлов что ваш плагин читает. Как мне увидеть формат того же level.geom?

@PavelBlend
Copy link
Owner

Как мне увидеть формат того же level.geom?

нужно смотреть в исходниках движка. Или в исходниках конвертера от Бардака.

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

Чтож, попробую помочь

@PavelBlend
Copy link
Owner

@IgeNiaI попробуй импортировать уровень с помощью моего плагина:
https://github.com/PavelBlend/blender_stalker_tools_addon
Он вроде должен из ЗП уровни импортировать. Если что-то будет не получаться, то пиши.

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

@PavelBlend попробую, но часов через 9.
Я вот что подумал. Ведь чтоб открыть уровень в SDK, нужно распаковать его конвертером от бардака. А он все лоды кидает как отдельные меши в отдельную папку, но в редакторе уровней они на своих местах. Наверняка в распакованном формате где-то есть отдельный файл со всеми координатами, возможно даже текстовый.

@PavelBlend
Copy link
Owner

Да, есть такой файл. Называется scene_object.part Лежит в папке с декомпилированным уровнем в rawdata\levels

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

Вот только все координаты там на нуле. Редактор же берёт где-то информацию.

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

А вот кстати и нет. Прокрутите к середине списка, там координаты есть.
Объекты zaton_part координат не имеют, а у zaton_lod они есть.

@IgeNiaI
Copy link
Author

IgeNiaI commented Apr 30, 2019

@PavelBlend что ж ты не сказал что уже сделал? :) Я то подумал что ещё мучаешься.
В блендере открылось вроде бы нормально, сейчас попробую экспортировать в UE

@IgeNiaI
Copy link
Author

IgeNiaI commented May 1, 2019

Импортируется в блендер прекрасно, правда в UE я пока не перевёл. Там нужно пару оптимизаций провести, но это я уже сам сделаю. Если хотите, поделюсь потом скриптом.
Пока что больше вопросов нет, благодарю.

@IgeNiaI
Copy link
Author

IgeNiaI commented May 1, 2019

Правда, есть один недостаток. Нормальная и упрощённая модели для всех мешей импортируются как два разных объекта. Но это проблема при дальнейшем экспорте в UE, а как в остальных случаях, не знаю.

@PavelBlend
Copy link
Owner

Чтобы удалить упрощённую геометрию, запусти этот скрипт:

import bpy


bpy.ops.object.select_all(action='DESELECT')
for obj in bpy.data.objects:
    if obj.name.startswith('FASTPATH'):
        obj.select = True

И все упрощённые модели будут выделены.

@IgeNiaI
Copy link
Author

IgeNiaI commented May 1, 2019

Я собираюсь их использовать, поэтому ситуация сложнее. Пока что всё работает хорошо, дальше уже целиком моя морока. Так что можно закрывать issue.

@IgeNiaI
Copy link
Author

IgeNiaI commented May 2, 2019

Сделайте, пожалуйста, чтоб названия секторов брались из поля "name" в файле sector.part. Просто у карт есть дефолтный сектор, который содержит около 80% всех объектов и мой скрипт по оптимизации должен его обрабовать по-другому. Просто нужно чтоб этот сектор всегда имел одинаковое имя, которое в файле sector.part всегда равно "Sector_DEFAULT"

@PavelBlend
Copy link
Owner

@IgeNiaI давай, если будут ещё вопросы по плагину stalker_tools, то пиши их сюда:
https://github.com/PavelBlend/blender_stalker_tools_addon/issues
Так как этот репозиторий относится только к blender-xray плагину.
Для данного вопроса я создал issue здесь:
PavelBlend/blender_stalker_tools_addon#9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants