|
Модераторы: Rickert, Alexeis, BorisVorontsov |
|
Vetos |
|
|||
Опытный Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Здравствуйте уважаемые программисты!
В сети существует множество уроков про Bump Mapping, и во всех уроках теория вроде бы одна, но реализации разные. Хоть убейте, но вникнуть в математику этого процесса для меня проблематично, особо в математике не силен, но программный подход мне понятен, в принципе ничего сложного, если бы в сети не было кучи вариантов исполнения. Я использую связку Qt 5.4 + OpenGL 3.3. Немного оформив все функции в классы, я переработал урок или если быть точнее туториал Урок 26 - Карта нормалей. Всё вроде бы ничего, бамп работает, но первый баг что заметен, плоскость вращающаяся под одним и тем же направлением источника света и направлением наблюдателя - от 0-180 градусов освещается вроде бы как положено, но при 180-360 градусов заметно темнеет и не даёт отражения. Т.е. плоскость, допустим квадрат, в своем центре крутится вокруг оси Х и он ей перпендикулярен, т.е. бамп должен работать одинаково если этот квадрат оказался к верх ногами, но нет, он становится слегка темнее, и на нем больше не показываются блики, когда пройдет еще пол оборота(т.е. станет на ноги:)) всё обратно отображается отлично. Я так полагаю что тут зависит направление тангента к источнику освещения, он проворачивается вместе с нормалью при повороте полигона в вершинном шейдере. Но мне не ясно одно - ка с этим бороться, ведь будет проблематично подстраивать объекты в "мире" под источник освещения, хотелось бы не зависить от угла поворота. Может кто сталкивался с такой проблемой, не охота останавливаться на этом и изучить Parallax Mapping или типо Offset Bump Mapping. Но если в простом деле я наткнулся на такой подводный камень, даже нехочется знать что ждет меня в дальнейшем. P.S. Кстати я не шел подряд по этим урокам, я взял только участок кода с получением Тангента, и функцию получения нормали из bump текстуры в фрагметном шейдере. У меня объект вращается с помощью квантерниона и сцена по отношению к камере вращается также с помощью него. Хотя в этих уроках авторы используют матрицы. Если понадобиться выложу куски исходного кода, знаю мало людей в этом разбирается и готовы помогать остальным, но если Кто-то поможет решить эту проблему, здесь появится туториал по Bump Mapping'у, который, я думаю, решит все вопросы по этой теме на форуме)))! Заранее спасибо! P.S.(2) Приклепляю принтскрины двух ситуаций, когда стенка из кирпича повернута влево, и когда вправо на 90 градусов, т.е. она вообще по длине была вертикальна, но когда переворачиваешь на -90, она отображается вроде бы ничего так, а когда на +90(как на второй картинке) то она затемненная какая-то и нет на ней отражений. В чем же бок, где же собака зарыта, надеюсь кто нибудь поможет, хотя бы толкните идею, может и сам разколупаю, но очень хотелось бы помощи(отпуска осталось мало, не хотел бы на этом стопориться). Спасибо! Добавлено через 7 минут и 48 секунд Извиняюсь за эту тему, но всё там работает в порядке:) Я просто решил в своем шейдере нормализовать BumpNormal получаемую с текстуры, и это и привело к этой ошибке. Я извиняюсь еще раз, но пока не начнешь размышлять над тем как передать свои проблемы другим, сам не догадаешься. Только дописал пост и тут же вспомнил про мою модернизацию))) Всё таки там на сайте все чётко, если что можно удалить этот пост, дабы не захломлять форум. Еще раз Всем спасибо! Присоединённый файл ( Кол-во скачиваний: 3 ) moiyspex.jpg 477,15 Kb -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |