|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.04.2012, 18:41 | #11 | ||
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Цитата:
Цитата:
Сначала там были картиночки 412х770. Подумал, что лабораторная, максимум курсовая, и не стал сильно заморачиваться. Я даже и не думал, что девушке придётся обрабатывать даже 1500х2000 и уж тем более 17000х5000 (это ж 2 картинки по 2 с лишним Гб)! Последний абзац высказан совершенно верно. Но что-то могло измениться по прошествии 3 недель.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 22.04.2012 в 18:44. |
||
22.04.2012, 20:18 | #12 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Я чего-то не понимаю.
2 с лишним Гб при 17000х5000 - это 50 байт на пиксель. Откуда? И еще, правильно ли я понял, что картинка и карта высот совпадают точка в точку? |
22.04.2012, 20:48 | #13 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Что-то дико соврал! Множитель лишний добавил. Недосып влияет. 247 метров получается, если использовать 3 байта на пиксель без альфа-канала. Но все равно увесисто.
Да, картинка и карта высот совпадают точка в точку.
Если помог, проси поставить минус. Будь оригинален!
|
22.04.2012, 23:48 | #14 |
Регистрация: 16.03.2012
Сообщений: 8
|
Изображение занимает около 60мб. Да, Вы все правильно поняли
Последний раз редактировалось un_known; 22.04.2012 в 23:59. |
23.04.2012, 18:54 | #15 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Ну, во-первых, т.к. характерные размеры, как я понял, уже неоднократно менялись в сторону увеличения, хотелось бы знать желательные верхние оценки для размеров.
Дальше, как я бы решал эту задачу, ориентируясь на уже указанные размеры 17000х5000. Во-первых, насколько я понял, карта высот меняется от точки к точке очень плавно. Поэтому вполне допустимо существенно уменьшить количество таких точек без сколь-нибудь заметных искажений. Причины для этого две: 1. Вертех (Vertex - точка в виртуальном 3-мерном пространстве) требует для описания не менее 12 байт (без учета текстурных координат) против 3 байт для пискеля. Поэтому желательно, чтобы вертексов было минимум в несколько раз меньше, чем пикселей (из соображений баланса расходуемой памяти). 2. На тех видеокартах, где вершинные и фрагментные шейдерные процессоры аппаратно различны, вершинных обычно намного меньше, чем фрагментных. А на набортных видеоконтроллерах вершинный шейдерный блок зачастую отсутствует полностью и вместо него используется блок SSE центрального процессора. Отсюда следует, что вычислительная нагрузка при обработке координат должна быть существенно меньше, чем при вычислении цвета пикселей. Я бы для начала проредил карту высот раз в 8 по каждой координате, а оставшиеся представил массивом вертексов с полным набором как пространственных координат (3 штуки) так и текстурных (2 штуки), а также нормалей (3 штуки). Итого по 32 байта на вертекс. Самих же вертексов будет 2125х625=1328125. 1.3 млн вертексов - это не 85 млн. Занимаемая память около 42 Мбайт. Применение каких-либо деревьев при таких размерах необязательно и я бы обошелся без них. Текстуру я бы разрезал на фрагменты 1024х1024, которых будет 85. Такой размер текстуры гарантированно поддерживает любая видеокарта, а перебор по 85 объектам не займет много времени. Вертексы я бы сгруппировал в квадратные блоки, совпадающие по размерам с текстурой. Размеры каждого (кроме неполных крайних) будут по 129х129. Крайние вертексы блоков совпадают по координатам и нормалям, но отличаются по текстурным координатам - чтобы не было видно стыков. Ну а дальше натягивать на каждый меш (квадрат вертексов 129х129) свой фрагмент текстуры. Вблизи поверхности следовало бы заранее исключать невидимые меши, при этом программа должна рисовать достаточно шустро. А на отдалении - когда видна вся поверхность целиком, - надо смотреть. Если будет тормозить, вводит LOD'ы. Вполне вероятно, достаточно будет 1-2 дополнительных. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
создание бд в с++ | Alena_897 | C/C++ Базы данных | 7 | 19.11.2011 21:18 |
Создание внутреннего и внешнего серверов. Создание серверов автоматизации. | Ann_Sh | Помощь студентам | 3 | 09.10.2011 15:53 |
Создание ОС | misher | Операционные системы общие вопросы | 2 | 17.07.2010 00:32 |
Создание виртуального ландшафта и интерактивного полета над ним. | Иван Мещеряков | Помощь студентам | 2 | 20.12.2009 12:08 |