Sidebar

Paranoia 2 SDK

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Ну скинь исходники, объясни, как студию настроить, я сам и проверю
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Нет ножек - нет мультиков :)

[ADDED=Дядя Миша]1446671802[/ADDED]
Чтобы раз и навсегда закрыть этот вопрос. Смотрим сорцы компилятора моделей первохалфы:
Code:
// 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 для нее, экспериментируй вообщем.
Потом покажешь что у тебя получилось.
 
Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Так разве при скиннинге вертекс и нормаль не переносятся обратно в абсолютное пространство?
Где брать сорцы модельвьювера?
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Сорцы модельвьювера как ни странно - на сайте разработчика: http://www.chumba.ch/chumbalum-soft//hlmv/index.html

[ADDED=Дядя Миша]1446712558[/ADDED]
И еще немного информации по теме. То что модель режется на обломки, которые сбиваются в кучу - никоим образом не мешает правильно построить TBN, поскольку он не опирается на позицию, а только на направление. Но! Некоторые кости не только двигают, но еще и вращают кусок меша, в этих местах и возникают артефакты. Я решил эту проблему при помощи постоянно включенного глобального сглаживания, но только отчасти. Любая попытка построить TBN для якобы целой модели, приведт просто к двойной прямо конкатенциии нормалей, их в итоге развернет дополнительно еще на 90 градусов, т.е. некоторые части скорее всего будут полностью черными или со странным затенением.
 
Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Ну вот построение вектора касательной для модели в произвольной позе работает нормально.
 

Attachments

Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Ну выкладывай, так сказать, рабочий пример. Я надеюсь там уже и бамп есть и анимации работают, так? Или дальше отрисовки TBN дело не пошло?
 

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Дальше отрисовки T и N дело не пошло. А дальше и не надо идти, потому что в Паранойе проблема в T и В.
 
Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Пока ты не доделаешь до момента с работающим бампом от виртуального источника и с возможностью переключения построения TBN для обоих случаев, говорить не о чем. Я выше написал почему.
 

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
Может мне еще свой движок написать?
Для каких обоих случаев?
Выше ерунду какую-то написал. Какую-то конкатенцию нормалей выдумал. Нормали вообще трогать не надо, они и так нормально работают.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Значит так, объясняю крайний раз для особо одаренных.
ты при построении "случайной" позы нормали умножал на матрицу костей этой случайно позы? Умножал. Т.е. у тебя они уже в пространстве модели, а не в пространстве кости. Теперь когда ты их умножишь еще раз на матрицу кости, но уже при отрисовке, куда повернется нормаль? Причём все твои упражениня на первый взгляд могут выглядеть почти правильно для тех случаев, где кость не вращает меш, а только двигает его. Но в конечном итоге получится по принципу "уши приклеили - хвост отвалился".

[ADDED=Дядя Миша]1447088582[/ADDED]
Нормали вообще трогать не надо, они и так нормально работают.
У тебя нормаль в исходном виде в локальном пространстве кости. Ты понимаешь что это значит?

[ADDED=Дядя Миша]1447093521[/ADDED]
На тебе две картинки. Первая - TBN построен для вертексов из позы. Вторая - текущий вариант. Они обе неправильные.
 

Attachments

Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 KiQ:
в том, что если строить TBN не для фарша, а для модели в произвольной позе из анимации, то не будет артефактов.

2 Дядя Миша:
Т.е. у тебя они уже в пространстве модели, а не в пространстве кости.
А после расчетов в пространстве модели я умножаю TB на обратную матрицу кости, и вуаля, они в локальном пространстве кости.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Диффузко.

[ADDED=Дядя Миша]1447093841[/ADDED]
А после расчетов в пространстве модели я умножаю TB на обратную матрицу кости
Эххх. Локальная матрица кости не покидает пределов компилятора :) Тебе её неоткуда взять.
 

Attachments

Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
2 Дядя Миша:
ты в локальное пространство кости переводил TB?
Какая еще локальная матрица?
Я ставлю модель в позу, умножив вершины и нормали на матрицы костей, рассчитываю TB, умножаю их на обратные матрицы.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
На тебе дллку - играйся сам.

[ADDED=Дядя Миша]1447096557[/ADDED]
Вот вам самый наглядный пример вышеозвученного тезиса "уши приклеили - хвост отвалился".
Первый скриншот - по методу Психопата. Швы уменьшились и бамп на свиторе стал неправильный. Второй скриншот - текущая реализация.
Есть швы, но и бамп правильный.
И пока компилятор рвёт модель на кусочки и херит локальную матрицу кости - ничего с этим не поделаешь. Либо тут гамно вылезет, либо там.
Остается только выбрать между двумя сортами говна.
 

Attachments

Last edited:

ncuxonaT

Well-known member
May 5, 2013
1,136
37
48
.

[ADDED=ncuxonaT]1447096790[/ADDED]
Как ты правильный бамп от неправильного отличаешь?


[ADDED=ncuxonaT]1447097064[/ADDED]
Переделал скрин с Полиной. А то в шейдере фонаря еще был мой перерасчет бинормали.
 

Attachments

Last edited:

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
Как ты правильный бамп от неправильного отличаешь?
На воротник посмотри - весь микрорельеф исчез. Я тут еще чуть-чуть побаловался с вращением бинормали и тангенты. Любые попытки просто приводят TBN к исходному состоянию.

[ADDED=Дядя Миша]1447097195[/ADDED]
2 ncuxonaT: не выкладывай скрины "справа\слева". Выкладывай два скрина, чтобы их можно было щелкать - так мозгу проще увидеть отличия.
 
Last edited:

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord