![]() |
Показать все 100 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Скелетная SMD анимация (https://hlfx.ru/forum/showthread.php?threadid=5532)
Скелетная SMD анимация
Всем доброго времени суток, товарищи! Может кто-нибудь помнит, как я пытался имплементировать в свой движок анимацию из smd из древней статьи на tmlibе, лет этак пять назад. Тогда мне удалось успешно забороть все глюки и выверты скелета и меша. И вот спустя столько времени, я решил портировать этот код на текущую версию движа, используя в качестве матриц не самописную либу, а рекомендуемый в среде lwjgl погромистов - JOML (Java OpenGL Math Library). После определенных манипуляций я переписал загрузчик, но по итогу вновь вернулся к раскоряченному скелету и полигонам. Собственно, что удалось выяснить - в JOML используется порядок матрицы вертикального вида
00, 10, 20, 30
01, 11, 21, 31
02, 12, 22, 32
03, 13, 23, 33
в то время, как у меня порядок был горизонтальный. Кроме того, отпала необходимость в конверсии радианов в градусы, так как JOML изначально работает в радианах. В остальном же код не слишком изменился, но модели вновь корежит (координаты вертексов тут без преобразования, то есть загружены напрямую из smd "как есть").
Загружаю рефренсный фрейм прямо
1 | int boneId = Integer.parseInt(tokens[0]); |
2 |
3 | float x = Float.parseFloat(tokens[1]); |
4 | float y = Float.parseFloat(tokens[2]); |
5 | float z = Float.parseFloat(tokens[3]); |
6 |
7 | float ax = Float.parseFloat(tokens[4]); |
8 | float ay = Float.parseFloat(tokens[5]); |
9 | float az = Float.parseFloat(tokens[6]); |
10 |
11 | referenceFrame.pos.put(boneId, new Vector3f(x, y, z)); //Сюда сторим референсную позицию |
12 | referenceFrame.angles.put(boneId, new Vector3f(ax, ay, az)); //А сюда углы в радианах |
1 | //Читаем все кости подряд |
2 | for (Bone b : bones.values()) { |
3 | Vector3f pos = startFrame.pos.get(b.id); //Получаем позицию для кости |
4 | Vector3f angles = startFrame.angles.get(b.id); //И углы |
5 |
6 | b.matRelative.identity(); //Промежуточная матрица |
7 | b.matRelative.rotateX(angles.x); |
8 | b.matRelative.rotateY(angles.y); |
9 | b.matRelative.rotateZ(angles.z); |
10 | b.matRelative.translate(pos.x, pos.y, pos.z); |
11 |
12 | if (b.parentId == -1) { |
13 | b.matAbsolute = b.matRelative; //Если парент-кости нет - то присваимаем абсолютной матрице локальную |
14 | } else { |
15 | //В ином случае - перемножаем абсолютную матрицу парента с текущей и сохраняем в текущую абсолютную |
16 | Bone p = bones.get(b.parentId); |
17 | p.matAbsolute.mul(b.matRelative, b.matAbsolute); |
18 | } |
19 |
20 | b.matAbsolute.transformPosition(b.pos); |
21 | } |
__________________
-Brain is dead-
Порядок эйлеров XYZ в этом жомле?
Таблица конверсии
Original - smd
YAW -> ROLL
PITCH -> YAW
ROLL -> PITCH
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | b.matRelative.translation(pos.z, pos.x, pos.y); |
2 | b.matRelative.rotateX(angles.z); |
3 | b.matRelative.rotateY(angles.x); |
4 | b.matRelative.rotateZ(angles.y); |
__________________
-Brain is dead-
Компилятор действительно свапает вертексы и еще по дефолту вращает скелет на 90 градусов.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Переделал под LH проекцию, ну это просто какая-то жесть. Такое ощусчение, что вальва просто рандомно свапала значения в smd, до кучи добавив этот непонятный и ненужный поворот root кости на 90 градусов. Теперь буду проверять анимации. Кстати, хотел спросить, по идее у модели же может быть несколько мировых костей (с parent == -1)?
Тут внезапно всплыла еще одна проблема, а именно - нормали вертексов, которые не трансформируются вместе с костями, в итоге при развороте скелета вместо симпатичного "пинхеда" мы получаем такое
__________________
-Brain is dead-
Походу они никак не могли определиться в какой системе координат им работать.
Надеюсь в ксаше и волатиле такого трешака не будет
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Эксперементально выяснил, что если в матрице проекции ось Z направлена от камеры, то модель отзеркаливается горизонтально. Ерунда какая-то
Добавлено 29-06-2020 в 17:23:
FiEctro это я для своего движка делаю, smd взял как промежуточный формат, потому-что в нем нет ничего лишнего и удобная скелеталка, плюс его легко парсить
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
-Brain is dead-
Если ты делаешь VectorTransform для вертексов, очевидно надо сделать и VectorRotate для нормалей.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша именно только вращение? То есть, получается берём матрицу кости, вычленяем из неё вектор вращения и умножаем на ноомаль?
Добавлено 30-06-2020 в 01:45:
Так-то эта вся визуализация чисто утилитарная, потом я оставлю только консольный конвертер, но мне важно сейчас все правильно настроить
Добавлено 30-06-2020 в 02:04:
Вообще интересно, например, читаю Quake Specs, там пишется, что квака использует стандартную left-handed проекцию, где ось Z идёт положительно вверх. В то время, как JOML упорно строит матрицу проекции с z от камеры или в камеру. С другой стороны, это логично, Z-buffer же. Где-то меня клинит, а где, не могу понять. Как будто в 2010 откатился
__________________
-Brain is dead-
Нормали поправил, благодарствую
Есть такой вопрос. В изначальной статье говориться о некоем свертывании полигонов (про нормали это уже я сделал по аналогии). Для этого механизма я завел на каждый вертекс отдельный вектор original_pos (для нормали original_norm), после чего применяю к ним матрицу свертки при загрузке (которую подобрал по сути методом тыка) и каждый кадр перед умножением на матрицу кадра сначала возвращаю этот вертекс и нормаль вот в этот original_pos (original_norm). Насколько это вообще корректно, может есть иной способ без промежуточных векторов? Потому-что насколько я понял из той статьи, автор делал все весьма наобум и в целом особо не сталкивался с теми проблемами, которые сейчас всплывают у меня
Добавлено 30-06-2020 в 02:27:
ncuxonaT я не подключал шейдеры в конвертер, это чисто утилитарная визуализация на FFP, мне главное настроить чтобы корректно конвертировалось и в самом движке отображалось
Добавлено 30-06-2020 в 02:34:
Это уже дальше пойдут разные MaterialGroup, шейдеры и все такое, мне главное из smd сделать валидную vertex data и скелетную анимацию
__________________
-Brain is dead-
KiQ я прост идею хотел донести, как нормали вертеть вместе с вершинами
ncuxonaT в том-то и дело, что когда я просто умножил ноомаль на матрицу кости, то она люто искорежилась, а вот если из матрицы вычленить вектор вращения и перемножить на ноомаль, то как раз все хорошо)
Кстати, относительно моего предыдущего поста, вангую, что предпочтительнее использовать квантерионы?
__________________
-Brain is dead-
ncuxonaT у меня матрицы и векторы самописные ещё пятилетней давности, нлрмаль там Vector3f, соответственно w отсутствует как факт)
Добавлено 30-06-2020 в 05:04:
Если бы я делал через JOML, то там у матрицы есть отдельные методы transformPosition и transformRotation, вероятно юзал бы их
Добавлено 30-06-2020 в 05:07:
https://github.com/DarkPartizaN/fen...nyx/engine/geom
Вот матрицы брал свои же из этого бэкапа, там же в ветке render/smd непосредственно первая версия рендер smd. Ну у меня там моими матрицами и проекция задавалась, а вот в новой версии проекцию я задаю на JOML
__________________
-Brain is dead-
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Морфинг, адеквакватная развесовка, материалы, анимационные слои, вертексколор, вертексгруппы (не только для костей), миррор, субдивижен, кривые и т.д. Ещё бы добавил разные констрейты, но это скорее вопрос софта и движка, нежели формата.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
-Brain is dead-
KiQ
>> последнее обновление - от 7 июня 2020 у импорта, и от 2019 года у экспортера о чем ты?
Не видел, спасибо, посмотрю
>> Я буквально пару постов назад писал, что взял smd, потому-что там нет всего этого нагромождения Материалы у меня будут в скрипте компиляции, развесовка там имхо достаточная, для морфинга есть сорсовский аналогичный формат с vertex animation, анимационные слои не очень понял, что ты имеешь в виду, я не моделлер, так что вряд-ли с ними буду заморачиваться. Вертекс-группы я думаю не проблема добавить в экспортере из редактора, например как и номер кости в той же строчке, вертексколор аналогично. Отражение можно указать в том же скрипте и делать при компиляции программно.
Ну да, не хотим делать в редакторе, нам давай циферки в блокнотике набивать.
Я давно таким вдалбливаю, что моделер должен делать модели, а не писать скрипты, конечно хорошо если такая возможность есть, но когда это обязаловка, уж извиняйте. Удобно когда ты быстро можешь перекинуть модель и сразу посмотреть как она будет выглядеть в игре, а не сидеть заниматься компиляциями.
Но в целом если реализуешь там новые фишки, будет здорово. Хотя лично я к GS и Source врядли уже вернусь, разве что в каких то ностальгиских или любопытных случаях, вроде того чтобы посмотреть как там реализована та или иная фича.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro так компилятор в любом случае будет не в mdl а в свой формат, иначе бы проще было взять и расширить mdl)
__________________
-Brain is dead-
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
1 | public void 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 | public void 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 | } |
__________________
-Brain is dead-
__________________
-Brain is dead-
Цыпцын доходчивый чувак.
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вот не пойму, неужто в итоге весь сыр-бор с глюками в JOML из-за того, что кости нужно трансформировать row-major матрицы, а рисовать column-major, ну не должно же это по идее никак влиять
__________________
-Brain is dead-
Забавно. Оказывается вальва добавила в SMD расширение vertexanimation.
Да там в принципе можно любые расширения добавлять, по такому же принципу: begin keyword - end
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
И все же некоторые скелеты корячит на JOML, причом на моих матрицах всё отлично. Обращаю внимание, что с моими матрицами я читаю значения костей подряд как они записаны в time0, только инвертирую Z. В JOML же я загружаю в порядке Z, X, Y и не инвертирую ничего
Гордон
Учоный
Добавлено 30-06-2020 в 15:51:
Так же в JOML сначала применяется трансляция, потом вращение, а вмоих - наоброт
__________________
-Brain is dead-
>> А потом начинаются наезды от креативной команды, мол "А какого вот эта моделька в игре выглядит вот так, в редакторе у нас всьо по-другому!", а оказывается, что моделлер применил там какой-нибудь пятый модификатор из третьей вкладки, о котором программист и в жизни не слыхивал, зато в редакторе "все красиво".
Вот потому и надо садиться вместе и обсуждать, а не спихивать собственные косяки друг на друга, порой программист может подсказать более элегантное решение чем те костыли которые городят моделеры, а порой и моделеры могут нагородить костылей которые будут работать, но к ним не нужно писать код. Но лучше конечно когда есть свобода выбора, если продукт ориентирован для юзания другими людьми.
>> А в чём неадекватность текущей развесовки? Вышеперечисленное это не особенность формата, а вопрос поддержки этих вещей самим софтом. К примеру, тот же ase может содержать кадры анимации, но эти кадры никто и никогда не читает в кваках. То есть возможность есть, но не используется.
Игровые движки одной квакой не заканчиваются. Поиграй хотя бы в ГТА4 и ГТА5, посмотри на физику игрока, анимации персонажей. Меня например переворачивает когда у перса рука как росток лука перегибается, и простой развесовкой тут не отделаешься.
>> Сергей Цыпцын два тома по Майе написал, там конечно не Дядя Миша но именно текст а не формулы.
А можно полное название? Звучит вкусно.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
1 | Vector3f pos = startFrame.pos.get(b.id); |
2 | Vector3f angles = startFrame.angles.get(b.id); |
3 |
4 | b.pos.reset(); |
5 | b.matRelative = Matrix.rotate(angles.x, 1, 0, 0); |
6 | b.matRelative = Matrix.mul(b.matRelative, Matrix.rotate(angles.y, 0, 1, 0)); |
7 | b.matRelative = Matrix.mul(b.matRelative, Matrix.rotate(angles.z, 0, 0, 1)); |
8 | b.matRelative = Matrix.mul(b.matRelative, Matrix.translate(pos.x, pos.y, pos.z)); |
9 |
10 | if (b.parentId == -1) { |
11 | b.matAbsolute = b.matRelative; |
12 | } else { |
13 | Bone p = bones.get(b.parentId); |
14 | b.matAbsolute = Matrix.mul(b.matRelative, p.matAbsolute); |
15 | } |
16 |
17 | b.matAbsolute.transform(b.pos); |
1 | Vector3f pos = startFrame.pos.get(b.id); |
2 | Vector3f angles = startFrame.angles.get(b.id); |
3 |
4 | b.pos.zero(); |
5 | b.matRelative.rotationX(angles.x); |
6 | b.matRelative.mul(new Matrix4f().rotationY(angles.y), b.matRelative); |
7 | b.matRelative.mul(new Matrix4f().rotationZ(angles.z), b.matRelative); |
8 | b.matRelative.mul(new Matrix4f().translation(pos.x, pos.y, pos.z), b.matRelative); |
9 |
10 | if (b.parentId == -1) { |
11 | b.matAbsolute = b.matRelative; |
12 | } else { |
13 | Bone p = bones.get(b.parentId); |
14 | p.matAbsolute.mul(b.matRelative, b.matAbsolute); |
15 | } |
16 |
17 | b.matAbsolute.transformPosition(b.pos); |
__________________
-Brain is dead-
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>> ну вот для этого и нужна сферическая интерполяция, о которой так долго твердили большевики. А еще DualQuats.
Ну будет у тебя вместо перегиба шланга, эта рука надуваться. Никакая интерполяция здесь не поможет. Для костей есть специальные шейпкеи, где в одной позиции у кости один шейп кей, в другой позиции - другой. Т.е. формально мы эту складку редактируем ещё морфингом. Это используется трёхмерщиками уже много лет повсеместно. Но да, в кваках такого нету.
У меня впрочем своя система борьбы с этим, без шейпкеев, правда пришлось дописать дополнительные констрейнсы для костей уже в самой игре.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
И корректирующие блендшейпы, и dual quat успешно борются с потерей объёма. С блендшейпами контроля больше, понятное дело.
http://wiki.polycount.com/wiki/Limb_Topology
FiEctro
Я непонимаю твою нелюбовь к smd формату.
Чем он тебе не угодил?
Вот ещё от жухлых коленок средство без всяких погромистских затей:
Добавлено 30-06-2020 в 18:12:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Я когда сталкеровские ogf перегонял в smd, то меши и анимации были повернуты на 90 градусов. Приходилось в 3ds Max разворачивать. Это как-то связанно с тем что вы обсужлади на первой странице?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В общем да, с этими осями беда полная, из-за констрейнтов всё перекручивается и разваливается, буду сидеть подбирать теперь, с какой ориентацией мне ставить кости чтобы они правильные углы давали.
Из вторых неприятностей - блендер просирает веса, после применения модификатора субдивайда, вернее как, веса остаются как на лоупольной версии, из-за чего модель хоть и хайполи, но всеравно вся квадратная.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
А кто?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro
Блендер весов не просирает, разбирайся.
nemyax
Порядок модификаторов если что, ничего не меняет.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
А, ну тут понятно, что развесовку редактировать надо. Пока модификатор не применённый, оно динамически субдивайдит деформируемую сетку. А так ты замораживаешь те веса, которые он втупую поделил между вершинами в одной позе.
nemyax
А говорил, не просирает. Кстати, не знаешь случаем, можно ли в блендере как то размыть сразу все веса для кости, без кисточки?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
А разве веса задаются не настройкой радиуса от положения кости?
Ну типо, всё что попало в радиус будет учитывать положение кости затухая с квадратом расстояния. Я даже одно время думал авто-развесовку сделать на подобном принципе, но потом меня что-то отвлекло и я забыл.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Это один из способов. Другой — явное назначение весов раскраской. В блендере их можно комбинировать как хош и есть ещё дополнительные методы контроля весов.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
ncuxonaT
У Автодеска, хотя в целом принцип конечно везде один и тот же, но у Автодеска инструментов больше.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Я так понимаю, хорошего редактора до сих пор нету или просто у ково-то руки кревые?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Тут корочи неразрешимое противоречие. Общий редактор наверняка обладает мощными средствами редактирования, но не заточен ни под один из движков. Плагины позволяют экспортировать, а вот редактировать некоторые движко-зависимые вещи визуально - вряд ли.
И наоборот - редактор идущий в комплекте с движком может быть дико неудобен в плане обычных операций, т.к. у тех, кто его писал в любом случае опыта меньше чем у разрабов майи или автодеска.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
В майе к слову уже лет 10 как есть возможность переключить up axis на Z.
nemyax
Я почти уверен что им Автодеск откаты давал, у них стиль работы такой
Щас они Майю ещё активнее продвигают и зачем то питон в придачу.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ну вот теперь и имеем такой зоопарк
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Ось Z в небо — CAD-ошная традиция, где первичен чертёж на плоскости XY, а Z его расширяет. Ну как у Кармака по сути дела.
А ось Y киношники придумали наверх. Видимо оттого, что для дваде-аниматора такая проекция естественнее.
nemyax
2д аниматорам вообще пофиг на оси, как 2д кадр не крути, перспектива будет той же.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Им пофигу до тех пор, пока их не сажают за софт с осями. В софте для дваде-анимации Y будет именно в небо. А теперь добавим глубину.
Насчёт осей у меня вот какое соображение. Графики всю жизнь чертили в двухмерном пространстве XY. Следовательно X у нас слева направо, Y снизу вверх. Добавили еще одну ось - фглупь. Поэтому Z-буффер так и называется, что он вглубину, которую на бумажке не изобразить.
Кармак, рассудил, что это как-то не очень удобно и повернул оси на 90 градусов раз ( Z оказался снизу-вверх). И повернул два, x оказался вперёд-назад. Вот эти два волшебных поворота и являются камнем преткновения. Потому что их легко симулировать простой перестановкой компонент вектора, но это далеко не всегда корректно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
nemyax
И какой 2д софт имеет явное название осей?
Дядя Миша
У математиков вроде Z всегда была вертикальной, разве нет? Хотя в учебниках так же встречаются оба варианта.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Всеравно удручает что сам софт не даёт переворачивать эти оси, ни одного движка не знаю.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Оси перевернуть не проблема, только ворочать надо как положено матричкой, а не перестановкой.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Можно ведь эти долбаные перестановки тоже представить в виде цепочки матриц, а там уж дело техники, не?
nemyax там была моделька, которую сперва сохранили в ASE, загрузили в q3map2, скомпилили в BSP и им же обратно экспортнули в ase.
Понять что и сколько раз там переставлялось, учитывая перестановки в самом ase уже почти невозможно. Заметьте, я не говорю что она корректно выглядит, задача в том, чтобы воспроизвести баги для совместимости.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>> Начинаешь инвертировать оси - её еще в какую-то сторону выворачивает, корочи я устал с этим бодаться.
Вот и у меня таже ситуация, в редакторе выворачивает в одну сторону, а в движке в другую.
Вот наверное кватернионы эти и вылазят. Если принять во внимание то что ещё каждая кость является дочерней и все они имеют свою систему координат, то бошка пухнет от попыток представить что вообще там происходит. Придётся ставить эксперименты и выявлять для себя наиболее стабильные ориентации костей по осям.
Дядя Миша
По твоему мнению, в идеале как бы это должно было правильно работать?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Может записывать в формат порядок следования координат? Я такого вроде бы нигде не встречал. Ну вот писать, что тут у нас XYZ или YZX. Чтобы сразу понятно было.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
http://www.moddb.com/mods/monorail-quest
Группы сглаживания вообще не имеют отношения к материалам. Они сделаны для удобства редактирования, грубо говоря, чтобы иметь возможность делать острые грани, не разбивая при этом ребра.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Временная зона GMT. Текущее время 22:09. | Показать все 100 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024