Ландшафт

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

AiLEX
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 18.09.2005 (Вс) 11:44
Откуда: Котлас

Ландшафт

Сообщение AiLEX » 23.09.2005 (Пт) 18:09

Видел в интернете много алгоритмов генерации ландшафтов, решил попробовать самый простой (на мой взгляд).
Алгоритм такой:
1) Создаем двухмерный массив, заполняем его случайными значениям
2) Потом сглаживаем его
3) Суем в буфер
4) Рисуем

И вот тут проблема:
В буфер точки заносятся правильно, но они соединяются не так, как бы мне хотелось. Вообщем посмотрите пожалуйста исходник и подскажите как бы его до ума довести. Заранее спасибо.
У вас нет доступа для просмотра вложений в этом сообщении.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 23.09.2005 (Пт) 22:56

чем тебе ланд mikle'a не угодил? сейчас буду посмотреть...
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 23.09.2005 (Пт) 23:00

посмотрел =) если хочешь весь ланд рендерить за один проход, то из своего двуперного массива создай одномерный массив так, что 6 точек второго (нового) будут соответствовать 4ем точкам первого. И рендерить надо в этом случае как Trianglelist.

Твой способ заботал бы на DX7, но на DX8 с этим явно проблемы. Там небольшие различия в типе рендеринга с флагом strip. Если что не понятно, объясню подробнее.
ХЎ

AiLEX
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 18.09.2005 (Вс) 11:44
Откуда: Котлас

Сообщение AiLEX » 23.09.2005 (Пт) 23:56

Что-то я не совсем понял насчет замены одномерным массивом. У меня двухмерный массив Land(x,y) является как бы промежуточным, в него только заносятся точки, обрабатываются, а потом переводятся в одномерный массив Vertexes(), который потом и рендерится. Тогда какой смысл заменять Land(x,y) на одномерный, получится ведь тоже самое? Все-таки можно это объяснить поподробнее?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.09.2005 (Сб) 0:11

ну я толком код не смотрел...

щас на пальцах.

*1----------*2
| |
| |
| |
| |
*3----------*4

цифры - это индексы точек одного из прямоугольников твоего 2D массива.

в Vertexes заноси треугольники вот так: (1,2,3),(2,4,3)

то есть у тебя будет 6 вертексов для каждых 4х точек.
ХЎ

AiLEX
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 18.09.2005 (Вс) 11:44
Откуда: Котлас

Сообщение AiLEX » 24.09.2005 (Сб) 14:04

Сделал, как вы сказали. Если смотреть сверху, то уже можно догадаться, что это как бы ландшафт :) , если не считать дырок, которые там есть (похоже на шахматное поле). Возможно, я намудрил с координатами вершин, но я ни как не могу найти ошибку.
У вас нет доступа для просмотра вложений в этом сообщении.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.09.2005 (Сб) 15:22

я сделал тебе простейший примерчик, там ландшафт загружается из рисунка bmp. Если тебе все же нежно делать его из случайных чисел, вместо рисунка подставь свой двумерный массив.
ХЎ

AiLEX
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 18.09.2005 (Вс) 11:44
Откуда: Котлас

Сообщение AiLEX » 24.09.2005 (Сб) 22:18

Огромное спасибо. Теперь все понятно


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21

    TopList  
cron