foxes
> не будет ни каких сжатий и растяжений
> разница только в масштабе по горизонтали
Для альтернативно одаренных, разница в масштабе = сжатие или растяжение.
С практической точки зрения будет видна разница в характере поверхности.
}:+()___ [Smile]
> Для альтернативно одаренных, разница в масштабе = сжатие или растяжение.
Сам ты альтернативно одаренный, разница в масштабе по параллелям компенсируется обратным масштабированием!
Найди тут разницу в сжатие или растяжение "характерную":
foxes
2D справа - это билборд чтоль?
MrShoor
2D генератор по XY (широта, долгота) на сфере, со всех сторон круглая без магии и подвоха. Код прилагается.
foxes
> Найди тут разницу в сжатие или растяжение "характерную":
Так ты полюсом поверни, для начала. Еще у тебя разрывы видны, подозреваю, что из-за твоей "компенсации".
Я уж не говорю, что у тебя отстойный квадратно-гнездовой шум (на 3D, кстати, гораздо менее заметно).
}:+()___ [Smile]
> подозреваю, что из-за твоей "компенсации".
Нету там ни каких разрывов, нормали глючат из за тангета, и высоты.
}:+()___ [Smile]
> Так ты полюсом поверни, для начала.
И вообще - код под носом сам верти как вздумается.
Глючный пост
Делать простым шумом карту - это моветон. Она будет либо не играбельная, либо неинтересная. Лучше покопать в сторону алгоритмов terragen. В случае стратегии вообще не вижу смысла заморачиваться. Либо предполагается игра на каких-то мелких планетоидах-астероидах, где будет видно скругление рельефа, тогда видимо проще сферу случайным шумом помучить. Либо стратегия планетарного масштаба без управления отдельными юнитами, тогда над ландшафтом можно вообще не заморачиваться и делать нормальный бамп. А уж как натянуть текстуру на сферу я думаю разберётесь.
Мизраэль
Думаешь в terragen оно без шумов генерится?
Мизраэль
> А уж как натянуть текстуру на сферу я думаю разберётесь.
Вообще-то, тема как раз и сводится к проблеме натянуть текстуру на сферу.
Мизраэль
> Делать простым шумом карту - это моветон.
Кто сказал, что это должен быть сырой шум? Естественно, он должен быть с постобработкой.
Мизраэль
> вообще не вижу смысла заморачиваться
Возможно, Вы и правы, однако хочется до конца разобраться в теме. Игру делаю скорее как хобби, в свободное время, так что никуда не спешу.
Mikle
> Естественно, он должен быть с постобработкой.
Вообще, судя по тому, что я читал, достаточно пройтись по шуму еще раз шумом, чтобы получилась интересная карта (с выступами и пещерами). А какую постобработку подразумеваете Вы?
kasom
> А какую постобработку подразумеваете Вы?
Любую, на какую хватит фантазии. Вот три с половиной года назад я уже демонстрировал, на сколько улучшается ландшафт на шуме Перлина, если его просто возвести в квадрат:
http://www.gamedev.ru/code/forum/?id=179462#m6
Имитация эрозии тоже может быть всего лишь постобработкой исходного шума.
Еще за счет некоторых схем сглаживания шума можно получить вполне реалистичную поверхность, с характерными горными хребтами. По сути это будет аналогом Diamond алгоритма, если выполнять сглаживание в определенных пределах вычисляемых в зависимости от соседних величин шума. Но скорость генерации ооочень медленная.
Приблизительно тот же эффект получится если к координатам шума добавить смещение полученное от самого шума - Distortion эффект.
Еще один вопрос есть, задам его здесь, дабы не засорять форум простыми вопросами. Допустим, я сгенерировал сферу, используя алгоритм кубической проекции. При генерации сферы я еще каким-нибудь шумом или суперпозицией шумов сразу же сгенерировал на ней ландшафт. Теперь если я загружу всю сферу, так сказать, as is, в видеопамять, это будет не очень круто, так как будет одинаковая детализация поверхности для разноудаленных участков, да к тому же будут обрабатываться невидимые области. Для решения первой проблемы есть LOD-алгоритмы, для решения второй - frustum culling. После некой обработки поисковой выдачи гугла, я пришел к выводу, что алгоритм CDLOD + frustum culling - то, что мне нужно. Ознакомившись с авторской реализацией и статьей, я так и не понял: на каком этапе я должен его применить в своем случае? На сколько я понял, алгоритм с ипользованием дерева квадрантов как бы размечает карту высот на LOD'ы и в соответствии с этой разметкой я должен генерировать с определенной детализацией. Значит ли это, что каждый раз мне нужно заново генерировать кусок сферы? То есть, сферу целиком и сразу мне вообще никогда не нужно создавать?
PS: кстати, насколько велики накладные расходы на выгрузку буфера вершин из оперативной памяти в видеопамять? Если я каждый раз буду создавать "хороший" буфер (полученный после CDLOD), а потом грузить его в видеопамять, не будут ли накладные расходы слишком велики? Возможно лучше будет один раз сгенерировать детализированную сферу, полностью загрузить ее в видеопамять, а уже потом как-нибудь работать с готовым буфером и искать LOD'ы?
Вот тут http://unity3d.ru/distribution/viewtopic.php?f=17&t=37940 один разработчик пытается решить вопросы примерно на вашу тему.
Код выложен на github .
kasom
никакой тригонометрии, брать треугольник и пока размер/расстояние до наблюдателя > X делить каждую сторону на 2 (получая 4 треугольника)
среднюю точку нормировать по радиусу планеты и применять высоту
Тема в архиве.