Есть такой вопрос. В изначальной статье говориться о некоем свертывании полигонов (про нормали это уже я сделал по аналогии). Для этого механизма я завел на каждый вертекс отдельный вектор original_pos (для нормали original_norm), после чего применяю к ним матрицу свертки при загрузке (которую подобрал по сути методом тыка) и каждый кадр перед умножением на матрицу кадра сначала возвращаю этот вертекс и нормаль вот в этот original_pos (original_norm). Насколько это вообще корректно, может есть иной способ без промежуточных векторов? Потому-что насколько я понял из той статьи, автор делал все весьма наобум и в целом особо не сталкивался с теми проблемами, которые сейчас всплывают у меня
Добавлено 30-06-2020 в 02:27:
ncuxonaT я не подключал шейдеры в конвертер, это чисто утилитарная визуализация на FFP, мне главное настроить чтобы корректно конвертировалось и в самом движке отображалось
Добавлено 30-06-2020 в 02:34:
Это уже дальше пойдут разные MaterialGroup, шейдеры и все такое, мне главное из smd сделать валидную vertex data и скелетную анимацию
ncuxonaT в том-то и дело, что когда я просто умножил ноомаль на матрицу кости, то она люто искорежилась, а вот если из матрицы вычленить вектор вращения и перемножить на ноомаль, то как раз все хорошо)
Кстати, относительно моего предыдущего поста, вангую, что предпочтительнее использовать квантерионы?
Вот матрицы брал свои же из этого бэкапа, там же в ветке render/smd непосредственно первая версия рендер smd. Ну у меня там моими матрицами и проекция задавалась, а вот в новой версии проекцию я задаю на JOML
KiQ писал: FiEctro это я для своего движка делаю, smd взял как промежуточный формат, потому-что в нем нет ничего лишнего и удобная скелеталка, плюс его легко парсить
Сложно назвать это форматом, из современных фишек ничего не поддерживает, в 3д пакете так просто не отредактируешь, смд плагины давно устарели.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
KiQ писал: В изначальной статье говориться о некоем свертывании полигонов
а где ссылка на изначальную статью? Я предполанаю речь идёт о том, что вертексы при компиляции переносятся в локальное пространство кости, а в smd расположены в абсолютном. Ну это кстати частая практика. Например те же кривые безье в ку3 и дуум, имеют абсолютную позицию и дублирующий оригин, который надо вычесть.
Цитата:
KiQ писал: в том-то и дело, что когда я просто умножил ноомаль на матрицу кости, то она люто искорежилась, а вот если из матрицы вычленить вектор вращения и перемножить на ноомаль, то как раз все хорошо)
потому что нормаль, это вектор, а не положение в пространстве. У нее нет позиции, у нее только направление, как у самурая. А ты её пытаешься трансформировать. И в матрице нет никакого "вектора вращения". Ты наверное хотел сказать - базис.
Цитата:
ncuxonaT писал: четвертая компонента нормали была 0 или 1?
в матлибах обычно делают кейсы на вращение трёхкомпонентных векторов.
Цитата:
KiQ писал: предпочтительнее использовать квантерионы?
Кватернионы для сферической интерполяции. Больше они там ни для чего не нужны.
Цитата:
FiEctro писал: из современных фишек ничего не поддерживает
Морфинг, адеквакватная развесовка, материалы, анимационные слои, вертексколор, вертексгруппы (не только для костей), миррор, субдивижен, кривые и т.д. Ещё бы добавил разные констрейты, но это скорее вопрос софта и движка, нежели формата.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал:
Морфинг, адеквакватная развесовка, материалы, анимационные слои, вертексколор, вертексгруппы (не только для костей), миррор, субдивижен, кривые и т.д.
Разве что вертексколор и вертексгруппы в кассу. Остальное либо специфика редактора или движка, либо уже выражено в SMD (в сорсовом же есть морфы, а имя текстуры чем не имя материала).
Ты, наверное, этим хочешь сказать, что мол хороший формат FBX. Но приятного в нём мало и не будем забывать, что это изначально родной формат редактора MotionBuilder, отсюда и редакторские фишки.
Добавлено 30-06-2020 в 12:41:
Хотя про морфы гоню, там же в сорсе отдельный формат для них.
Дядя Миша писал: вертексы при компиляции переносятся в локальное пространство кости
А, ну вот походу да, оно и есть
Цитата:
Дядя Миша писал: А ты её пытаешься трансформировать. И в матрице нет никакого "вектора вращения". Ты наверное хотел сказать - базис
Я сначала попытался, но сразу исправил) ну я просто в матрице скопировал метод трансформации вектора и убрал из него сумму компонент перемещения.
Цитата:
Дядя Миша писал: Кватернионы для сферической интерполяции. Больше они там ни для чего не нужны.
Насколько я понял они также решают проблему gimbalock, хотя с другой стороны матрицы тоже ее решают, да и интерполировать матрицы тоже можно, в JOML даже lerp изкаропки идёт, но надо будет с ним разбираться
Цитата:
FiEctro писал: Морфинг, адеквакватная развесовка, материалы, анимационные слои, вертексколор, вертексгруппы (не только для костей), миррор, субдивижен, кривые и т.д.
Я буквально пару постов назад писал, что взял smd, потому-что там нет всего этого нагромождения Материалы у меня будут в скрипте компиляции, развесовка там имхо достаточная, для морфинга есть сорсовский аналогичный формат с vertex animation, анимационные слои не очень понял, что ты имеешь в виду, я не моделлер, так что вряд-ли с ними буду заморачиваться. Вертекс-группы я думаю не проблема добавить в экспортере из редактора, например как и номер кости в той же строчке, вертексколор аналогично. Отражение можно указать в том же скрипте и делать при компиляции программно.
Цитата:
FiEctro писал: 3д пакете так просто не отредактируешь, смд плагины давно устарели
KiQ
>> последнее обновление - от 7 июня 2020 у импорта, и от 2019 года у экспортера о чем ты?
Не видел, спасибо, посмотрю
>> Я буквально пару постов назад писал, что взял smd, потому-что там нет всего этого нагромождения Материалы у меня будут в скрипте компиляции, развесовка там имхо достаточная, для морфинга есть сорсовский аналогичный формат с vertex animation, анимационные слои не очень понял, что ты имеешь в виду, я не моделлер, так что вряд-ли с ними буду заморачиваться. Вертекс-группы я думаю не проблема добавить в экспортере из редактора, например как и номер кости в той же строчке, вертексколор аналогично. Отражение можно указать в том же скрипте и делать при компиляции программно.
Ну да, не хотим делать в редакторе, нам давай циферки в блокнотике набивать.
Я давно таким вдалбливаю, что моделер должен делать модели, а не писать скрипты, конечно хорошо если такая возможность есть, но когда это обязаловка, уж извиняйте. Удобно когда ты быстро можешь перекинуть модель и сразу посмотреть как она будет выглядеть в игре, а не сидеть заниматься компиляциями.
Но в целом если реализуешь там новые фишки, будет здорово. Хотя лично я к GS и Source врядли уже вернусь, разве что в каких то ностальгиских или любопытных случаях, вроде того чтобы посмотреть как там реализована та или иная фича.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro так компилятор в любом случае будет не в mdl а в свой формат, иначе бы проще было взять и расширить mdl)
Цитата:
FiEctro писал: Ну да, не хотим делать в редакторе, нам давай циферки в блокнотике набивать.
Я давно таким вдалбливаю, что моделер должен делать модели, а не писать скрипты
Обоюдная ситуация - моделлера еще найти ннада, а мне проще и правда в скрипте что-то поправить Не забывай, что все, что там наворотит моделлер, программисту потом парсить и обрабатывать. Но индустрия сейчас заточена под дезигнеров, да
FiEctro писал:
Ну да, не хотим делать в редакторе, нам давай циферки в блокнотике набивать.
Работать, конечно, надо в редакторах. Соответственно и исходники ресурсов хранить в редакторских, а не в движочных форматах (которые совсем для другого).
Цитата:
KiQ писал: последнее обновление - от 7 июня 2020 у импорта, и от 2019 года у экспортера
Оно для блендера 2.79, а уже на дворе 2.83. Я портану под 2.8*, но пока руки не доходят.
KiQ писал: FiEctroНо индустрия сейчас заточена под дезигнеров, да
Я бы не сказал, много матана с этими вашими кватерионами, эйлерами и векторами в которых я ноль. Хоть бы кто то тутор написал как эта вся фигня в 3д работает... Много вещей делается посредством скриптов и разных плясок с бубном (для тех кому знакомо слово Maya). Так что здесь понятие "дезигнер" прямо пересекается с понятием, если не "программист" то "скриптёр" уж точно. Но фишка в том что я не призываю вообще от этого отказаться раз и навсегда, да? Я просто предлагаю максимально автоматизировать самые шаблонные операции. Нравится циферки в блокноте колупать? Да не вопрос, но дай другим возможность сделать эти вещи автоматически.
Цитата:
nemyax писал: Оно для блендера 2.79, а уже на дворе 2.83. Я портану под 2.8*, но пока руки не доходят.
Я щас в 2.83 работаю, обучался на 2.79, но уже полностью отвык от его интерфейса.
Цитата:
KiQ писал: Не забывай, что все, что там наворотит моделлер, программисту потом парсить и обрабатывать.
Если программист не умеет парсить и обрабатывать, тогда какой из него программист?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Дядя Миша писал: У тебя матрица какой размерности?
4 x 4 флоата. Да собственно я в лоб пока сделал, для экспортера несущественно, вот в самом движке надо будет что-то думать, но там и матрицы жомловские
C++ Source Code:
1
publicvoid transform(Vector3f v) {
2
float x, y, z;
3
4
x = v.x;
5
y = v.y;
6
z = v.z;
7
8
v.x = x * m[0] + y * m[4] + z * m[8] + m[12];
9
v.y = x * m[1] + y * m[5] + z * m[9] + m[13];
10
v.z = x * m[2] + y * m[6] + z * m[10] + m[14];
11
}
12
13
//Это для нормалей
14
publicvoid transformRotate(Vector3f v) {
15
float x, y, z;
16
17
x = v.x;
18
y = v.y;
19
z = v.z;
20
21
v.x = x * m[0] + y * m[4] + z * m[8];
22
v.y = x * m[1] + y * m[5] + z * m[9];
23
v.z = x * m[2] + y * m[6] + z * m[10];
24
}
Добавлено 30-06-2020 в 13:56:
Цитата:
FiEctro писал: Нравится циферки в блокноте колупать? Да не вопрос, но дай другим возможность сделать эти вещи автоматически.
Мне кажется, Дядя Миша предложил идеальный вариант в своем modelviewer, с визуальной настройкой аттачментов и все такое. Вот я думаю тоже вроде этого запилю, а писаться будет в скрипт. Ну чтобы например можно было батником пакетную компиляцию запускать. Но до этого еще долго и упорно идти (надеюсь получится быстрее, чем предыдущие восемь лет)