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

Сохранение progressive ogf мешей #470

Open
PavelBlend opened this issue Feb 27, 2022 · 5 comments
Open

Сохранение progressive ogf мешей #470

PavelBlend opened this issue Feb 27, 2022 · 5 comments
Labels
enhancement Запрос нового функционала export Касается операторов экспорта ogf Формат *.ogf

Comments

@PavelBlend
Copy link
Owner

Эта проблема так же есть в game level экспортёре: #328

@PavelBlend PavelBlend added enhancement Запрос нового функционала export Касается операторов экспорта ogf Формат *.ogf labels Feb 27, 2022
@PavelBlend
Copy link
Owner Author

PavelBlend commented Feb 27, 2022

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

Когда тестировал swi, я создавал меш, который отображает смещение и количество треугольников в виде линий:
01
Одна полоска - это swi. Начало полоски - это offset, а конец полоски - это offset + triangles_count.

У некоторых swi есть пересекающиеся диапазоны треугольников. Отличается только начало и конец.

Значения vertices count можно легко сгенерировать, так как оно увеличивается на 1 в каждой последующей swi.
Значения triangles count тоже легко сгенерировать, они тоже увеличиваются, но на 2.
А offset легко сгенерировать, если диапазоны треугольников пересекаются.

Проблема в том, что треугольники нужно отсортировать так, чтобы offset можно было наращивать (прибавлять 6, так как 2 треугольника хранят 6 индексов) и получать корректную модель.

Вот код, который создаёт меш на картинке:

import bpy


a = (
    (651, 80, 63),
    (639, 78, 62),
    (627, 76, 61),
    (615, 74, 60),
    (603, 72, 59),
    (591, 70, 58),
    (579, 68, 57),
    (567, 66, 56),
    (375, 64, 55),
    (363, 62, 54),
    (354, 60, 53),
    (345, 58, 52),
    (336, 56, 51),
    (330, 54, 50),
    (174, 52, 49),
    (162, 50, 48),
    (150, 48, 47),
    (141, 46, 46),
    (9, 44, 45),
    (0, 42, 44)
)

verts = []
fcount = 0
for i, (o, f, v) in enumerate(a):
    verts.extend((
        (o * 0.1, i * 0.2, 0.0),
        (o * 0.1, i * 0.2 + 0.1, 0.0),
        (o * 0.1 + f * 3 * 0.1, i * 0.2 + 0.1, 0.0),
        (o * 0.1 + f * 3 * 0.1, i * 0.2, 0.0)
    ))
    fcount += 1
faces = []
for i in range(fcount):
    faces.append((i*4, i*4+1, i*4+2, i*4+3))
me = bpy.data.meshes[0]
me.clear_geometry()
me.from_pydata(verts, (), faces)

Кортеж a хранит swi из реального ogf файла. Первое число - смещение, второе - количество треугольников, третье - количество вершин.

@igelbox
Copy link
Collaborator

igelbox commented Mar 1, 2022

@SamArtGit, спасибо за наводку от atanda про Sliding Window VIPM with Hugue's Hoppe QEM. Я там разное интересное по этой теме нашёл.

@igelbox
Copy link
Collaborator

igelbox commented Mar 1, 2022

Скопировал из #468, чтоб всё в 1м месте было:

Поигрался я тут с SWI на примере green_stalker_4.ogf и вот видно, что там хренова куча SWI-уровней и на каждом пропадает по 1 ребру. Но, самое странное, почему-то мелкие детали (сумки, шарф, сапоги) не упрощаются даже на самых низкодетализированных уровнях:

original.mov

@LittleBabyGABE
Copy link

А хочется узнать - есть какой-либо прогресс по данному топику? Фича очень-очень, поэтому интересно есть ли что-то на ближайшее будущее.

@igelbox
Copy link
Collaborator

igelbox commented Apr 18, 2022

Есть PR #472, он ждёт ревью. Пока он не замёржен - можете попробовать установить аддон из ветки, что в этом PR указана.
Заодно и с тестированием поможете - может я там чего странного понаписал.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Запрос нового функционала export Касается операторов экспорта ogf Формат *.ogf
Projects
None yet
Development

No branches or pull requests

3 participants