![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Здравствуйте!
Второй день бьюсь над картой высот. Вот что у меня получается, это чтото очень далеко напоминает сглажженую карту высот. Присоединённый файл ( Кол-во скачиваний: 19 ) ![]() -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
А вот это я делал еще на старом OpenGL, и там у меня все получилось отлично, жаль только исходников неосталось.
Может ктонибудь на глаз определит в чем проблема. Нашел на форуме подобную проблему, человек нашел ошибку в хранении данных, но я не совсем уверен что это тоже самое, и найти эту ошибку я не смогу, т.к. фактически все работает, но плохо :( Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Очень похоже на округление. Нет ли у тебя там где-нибудь конвертации через int?
-------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Vetos |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Не вроде нету, я использую glm( gl mathematics), нашел ее на Khonors.org, в ней используются типы и функции как в glsl.
Вот как строится фасетная нормаль:
а б ц это массивы с координатами вершины. Все эти координаты хнранятся в массиве структур: struct GLVertex
Вначале строил вершинные нормали от всех граней которые содержат вершину, находил их сумму и нормализовал. теперь строю просто от 8ми соседних точек, ну тоесть нахожу вначале фасетную нормаль треугольничков окружающих вершину, складываю их и нормализую но эффект тотже самый.
Т.е. просто в цикле передаю вершину и восемь вокруг нее. Может глюк в использовании типов и функций glm, но врятле бы Khonors.org рекомедовал бы ее. кстати функция cross с этойже библиотеки. Ну на последок цикл, не даже всю функцию создания Карты высот:
Незнаю може где чо натупил но вроде все правильно, а вот идея про округление мне нравится, но только гдеж собака зарыта)) Это сообщение отредактировал(а) Vetos - 18.4.2011, 19:25 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||||||
|
|||||||||
Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 3 Всего: 4 |
Ура, закончились мучения и я обрел покой. после того как я попробовал загрузить вертексы с карты через один, результат немного приоткрыл глаза, И я просто стал просчитывать нормали не от соседних точек а через 2,3,5,10 и на десятке картинка радует глаз
Присоединённый файл ( Кол-во скачиваний: 17 ) ![]() -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 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. |