Тема: Paranoia 2 SDK
Показать сообщение отдельно
Старый 04.11.2015, 21:12  #142
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 13,654


По умолчанию

Нет ножек - нет мультиков

Дядя Миша, подумав, добавил 04.11.2015 в 23:16
Чтобы раз и навсегда закрыть этот вопрос. Смотрим сорцы компилятора моделей первохалфы:
Код:
// move vertex position to object space.
VectorSubtract( p.org, bonefixup[p.bone].worldorg, tmp );
VectorTransform(tmp, bonefixup[p.bone].im, p.org );

// move normal to object space.
VectorCopy( normal.org, tmp );
VectorTransform(tmp, bonefixup[p.bone].im, normal.org );
VectorNormalize( normal.org );
Еще на этапе парсинга SMD и вертекс и нормаль переносятся в локальное пространство кости. Отсюда и берутся эти "обломки" - каждый обломок привязан к своей кости. Т.е. они уже находятся не в абсолютном пространстве и модель расчленена. А локальная матрица кости в модель не пишется, чтобы избежать лишних трансформаций при рендеринге. Идёт предумножение в компиляторе.
В хл2 этой порнографии нет. Там модель записывается в неизменном виде, а те самые локальные матрицы костей сохраняются в структуру mstudiobone_t, в результате чего появляется возможность построить TBN для целостной модели и избежать артефактов на тех границах где кости делят меш на кусочки.
Т.е. единственный выход из положения - смена\доработка формата модели.

Впрочем, если так уж не терпится - бери сорцы модельвьювера, строй вбо, делай свою "случайную позу", считай TBN для нее, экспериментируй вообщем.
Потом покажешь что у тебя получилось.
Дядя Миша вне форума Ответить с цитированием