При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Paranoia 2: Savior
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.11.2015, 21:49  #141
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

Ну скинь исходники, объясни, как студию настроить, я сам и проверю
ncuxonaT вне форума Ответить с цитированием
Старый 04.11.2015, 22:12  #142
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

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

Дядя Миша, подумав, добавил 05.11.2015 в 00: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 для нее, экспериментируй вообщем.
Потом покажешь что у тебя получилось.

Последний раз редактировалось Дядя Миша, 05.11.2015 в 00:17.
Дядя Миша вне форума Ответить с цитированием
Старый 05.11.2015, 03:58  #143
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

Так разве при скиннинге вертекс и нормаль не переносятся обратно в абсолютное пространство?
Где брать сорцы модельвьювера?
ncuxonaT вне форума Ответить с цитированием
Старый 05.11.2015, 11:32  #144
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

Сорцы модельвьювера как ни странно - на сайте разработчика: http://www.chumba.ch/chumbalum-soft//hlmv/index.html

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

Последний раз редактировалось Дядя Миша, 05.11.2015 в 11:35.
Дядя Миша вне форума Ответить с цитированием
Старый 05.11.2015, 19:15  #145
KiQ
KiQ
Старший сержант
Регистрация: 12.07.2010
Сообщения: 367


По умолчанию

так может таки формат моделей поменять?
KiQ вне форума Ответить с цитированием
Старый 05.11.2015, 21:00  #146
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

Когда будет подготовлена достаточная база - обязательно поменяю.
Дядя Миша вне форума Ответить с цитированием
Старый 08.11.2015, 23:18  #147
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

Ну вот построение вектора касательной для модели в произвольной позе работает нормально.
[ Миниатюры ]
bump_fatty_0003.png Просмотров: 177 Размер:  276.0 Кбайт  

Последний раз редактировалось ncuxonaT, 08.11.2015 в 23:28.
ncuxonaT вне форума Ответить с цитированием
Старый 08.11.2015, 23:30  #148
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

Ну выкладывай, так сказать, рабочий пример. Я надеюсь там уже и бамп есть и анимации работают, так? Или дальше отрисовки TBN дело не пошло?
Дядя Миша вне форума Ответить с цитированием
Старый 08.11.2015, 23:39  #149
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

Дальше отрисовки T и N дело не пошло. А дальше и не надо идти, потому что в Паранойе проблема в T и В.

Последний раз редактировалось ncuxonaT, 09.11.2015 в 01:14.
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 19:01  #150
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

А вот бинормаль для произвольной позы
[ Миниатюры ]
bump_fatty_0004.png Просмотров: 116 Размер:  310.6 Кбайт  
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 19:42  #151
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

Пока ты не доделаешь до момента с работающим бампом от виртуального источника и с возможностью переключения построения TBN для обоих случаев, говорить не о чем. Я выше написал почему.
Дядя Миша вне форума Ответить с цитированием
Старый 09.11.2015, 19:50  #152
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

Может мне еще свой движок написать?
Для каких обоих случаев?
Выше ерунду какую-то написал. Какую-то конкатенцию нормалей выдумал. Нормали вообще трогать не надо, они и так нормально работают.
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 19:57  #153
KiQ
KiQ
Старший сержант
Регистрация: 12.07.2010
Сообщения: 367


По умолчанию

2 ncuxonaT:
в чем смысл твоих скринов-то?
KiQ вне форума Ответить с цитированием
Старый 09.11.2015, 20:01  #154
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

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

Дядя Миша, подумав, добавил 09.11.2015 в 20:03
[ Цитата ] Нормали вообще трогать не надо, они и так нормально работают.
У тебя нормаль в исходном виде в локальном пространстве кости. Ты понимаешь что это значит?

Дядя Миша, подумав, добавил 09.11.2015 в 21:25
На тебе две картинки. Первая - TBN построен для вертексов из позы. Вторая - текущий вариант. Они обе неправильные.
[ Миниатюры ]
p_savior20_0000.JPG Просмотров: 136 Размер:  48.9 Кбайт  p_savior20_0001.JPG Просмотров: 129 Размер:  48.9 Кбайт  

Последний раз редактировалось Дядя Миша, 09.11.2015 в 21:25.
Дядя Миша вне форума Ответить с цитированием
Старый 09.11.2015, 21:27  #155
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

2 KiQ:
в том, что если строить TBN не для фарша, а для модели в произвольной позе из анимации, то не будет артефактов.

2 Дядя Миша:
[ Цитата ] Т.е. у тебя они уже в пространстве модели, а не в пространстве кости.
А после расчетов в пространстве модели я умножаю TB на обратную матрицу кости, и вуаля, они в локальном пространстве кости.
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 21:29  #156
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

Диффузко.

Дядя Миша, подумав, добавил 09.11.2015 в 21:30
[ Цитата ] А после расчетов в пространстве модели я умножаю TB на обратную матрицу кости
Эххх. Локальная матрица кости не покидает пределов компилятора Тебе её неоткуда взять.
[ Миниатюры ]
p_savior20_0002.JPG Просмотров: 122 Размер:  58.8 Кбайт  p_savior20_0003.JPG Просмотров: 124 Размер:  56.8 Кбайт  

Последний раз редактировалось Дядя Миша, 09.11.2015 в 21:30.
Дядя Миша вне форума Ответить с цитированием
Старый 09.11.2015, 21:30  #157
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

2 Дядя Миша:
ты в локальное пространство кости переводил TB?
Какая еще локальная матрица?
Я ставлю модель в позу, умножив вершины и нормали на матрицы костей, рассчитываю TB, умножаю их на обратные матрицы.
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 21:50  #158
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

На тебе дллку - играйся сам.

Дядя Миша, подумав, добавил 09.11.2015 в 22:15
Вот вам самый наглядный пример вышеозвученного тезиса "уши приклеили - хвост отвалился".
Первый скриншот - по методу Психопата. Швы уменьшились и бамп на свиторе стал неправильный. Второй скриншот - текущая реализация.
Есть швы, но и бамп правильный.
И пока компилятор рвёт модель на кусочки и херит локальную матрицу кости - ничего с этим не поделаешь. Либо тут гамно вылезет, либо там.
Остается только выбрать между двумя сортами говна.
[ Миниатюры ]
test_dyn_0004.JPG Просмотров: 135 Размер:  61.2 Кбайт  test_dyn_0005.JPG Просмотров: 125 Размер:  61.5 Кбайт  

Последний раз редактировалось Дядя Миша, 10.11.2015 в 22:28.
Дядя Миша вне форума Ответить с цитированием
Старый 09.11.2015, 22:18  #159
ncuxonaT
ncuxonaT
Лейтенант
Регистрация: 05.05.2013
Сообщения: 743


По умолчанию

.

ncuxonaT, подумав, добавил 09.11.2015 в 22:19
Как ты правильный бамп от неправильного отличаешь?


ncuxonaT, подумав, добавил 09.11.2015 в 22:24
Переделал скрин с Полиной. А то в шейдере фонаря еще был мой перерасчет бинормали.
[ Миниатюры ]
bump_fatty_0002.jpg Просмотров: 130 Размер:  374.8 Кбайт  p_savior20_0003.jpg Просмотров: 134 Размер:  511.6 Кбайт  

Последний раз редактировалось ncuxonaT, 09.11.2015 в 22:24.
ncuxonaT вне форума Ответить с цитированием
Старый 09.11.2015, 22:24  #160
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,236


По умолчанию

[ Цитата ] Как ты правильный бамп от неправильного отличаешь?
На воротник посмотри - весь микрорельеф исчез. Я тут еще чуть-чуть побаловался с вращением бинормали и тангенты. Любые попытки просто приводят TBN к исходному состоянию.

Дядя Миша, подумав, добавил 09.11.2015 в 22:26
2 ncuxonaT: не выкладывай скрины "справа\слева". Выкладывай два скрина, чтобы их можно было щелкать - так мозгу проще увидеть отличия.

Последний раз редактировалось Дядя Миша, 09.11.2015 в 22:26.
Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:50.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community