Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование в широком смысле слова > Математика

Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр

Ответ
 
Опции темы
Старый 23.03.2013, 01:35   #1
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Моделирование сферического игрового пространства (планета)

Заинтересовался идеей не плоского мира, а сферического, отличный пример - планета.

Давайте по обсуждаем идею, математические и алгоритмические сложности данной задачи, и вообще идеи по моделированию планет и игрового пространства на них.

Например давайте посчитаем сколько данных нужно для высотной карты всей планеты Земля?
Земля имеет радиус 6,378,100 метров.
Используя формулу площади сферы - 4 * PI * r^2 мы получим площадь планеты земля: 511,201,962,310,545 кв. м.
Далее зная площадь, если мы хотим создать высотную карту всей планеты с детализацией до 1 метра, нам понадобиться предположим 2 байта на ячейку. И это выходит 929.871 терабайт данных.
Естественно числа заоблачные, что говорит о создании высотной карты всей планеты - не вариант для игр.
Конечно есть интересные подходы совмещения подготовленных и процедурных данных, теоретически можно иметь детализацию всего на каждый километр, тем самым снизить объём данных всего до 975.04 мегабайт на всю планету! Ну и далее использовать процедурный шум для детализации, но естественно детальность не будет столь качественной и реалистичной, но для космического симулятора - по моему отличный вариант.

А теперь представьте сколько данных хранит Google для их карт, снимков satelite, и ещё не забываем что основные карты они генерируют на лету при каждом запросе.


Но отклонимся от высотной карты.
Как насчёт координатной системы?
В плоском мире используется X и Y. А в плоском 3D мире X, Y и Z, но сам мир по прежнему плоский, что делает эти координаты всегда прямыми.
В сферическом мире - это Прямоугольная Система Координат (Cartesian coordinate system). Основная разница в том что например координата Y - не будет указывать на высоту объектов от уровня моря (например), а в абсолютных координатах будет указывать "вверх" относительно севера. Что на разных позициях на планете воспринимается по разному. На южном полюсе - это это указывает под землю, а на экваторе вдоль земли, а на севере от земли.
Следственно работа с прямоугольной системой координат не удобна для математики и логики работы с поверхностью земли.

Есть Сферическая Системам Координат, которая хранит координату в трёх измерениях, расстояние до центра, зенитный и азимутальный угол.
Такая система координат возможно удобна для навигации, т.к. зенит и азимут весьма интуитивны для представление относительно сферы.
Но я не вижу никакого применения в математике этой системы координат.

Далее идут Географические Координаты (Geographic coordinate system), это очень схожая система координат со сферической, но немного удобнее засчёт более интуитивных углов.
Мы повседневно имеем дело с этой системой координат используя GPS навигаторы.
Т.к. на нашей планете нам не нужно знать о расстояния от центра земли, мы обычно имеем лишь долготу и широту (longitude, latitude), и эти два числа очень удобны в ориентировании снова.
Но в 3Д они снова слабо применимы. Во первых вычислять расстояние между ними воспринимая их как X и Y в корню не верно. Т.к. расстояние по сфере - это дуга а не две точки.
Также выше от экватора долгота имеет меньшее расстояние между градусом.
В интернетах часто можно встретить как кто-то используя Google Maps берёт долготу и ширину и применяет теорему пифагора для вычисления дистанции, и затем умножает на коэфициент (который видиом подобрал), таким образом "получает" расстояние в километрах (или других мерках). Но проблема в том что на экваторе это может и будет работать с верных коэффициентом, а вот на полюсах совсем нет.
Следственно вычисление расстояния не так и просто, т.к. работая с углами, нужно вычислять по дуге. Благо формул в интернетах не мало.

Хоть долгота и ширина, удобны для пользовательской навигации, они же не удобны для математики.

Так что же, мы получается возвращаемся к X, Y, Z? По моему - да.
Только вот как же делать разного рода вычисления корректно, учитывая все сложности не плоскости пространства.

У меня была идея что нужно трансформировать все координаты для определённого вида, исходя из того где находится камера. Например если центра вычисления на Аляске, что выше экватора но не на полюсе, то нужно трансформировать все данные с которыми предполагается вычисления. Поворачиваем их так, чтобы X и Z - были перпендикулярны вектору от центра камеры к центру планеты.
Тогда X и Z - будут как в плоском мире, а Y - будет высотой от земли.

Но это работает на относительно мелких масштабах, а при достаточном отдалении от земли, это не будет работать, из-за достаточно высокого градуса обзора и такому грубому сплющиванию координат.
Но для вычислений это очень удобно.



Вообще интересует кто таки дочитал до конца, и что думает по этому поводу?
Особенно интересует методы проецирования сферических данных на плоскость в мелких масштабах.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 02:42   #2
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,177
Написано 725 полезных сообщений
(для 1,785 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Я игры никогда не делал, но тоже задавался подобным вопросом. Хотел сделать 2D игру с замкнутой картой, представляющую собой шар. Первое, что приходит в голову: замкнуть левый край карты с правым, а верхний край с нижним (как в пакмане), но таким образом мы получим не шар и не куб, как может показаться на первый взгляд, а тор, у которого, помимо прочего, внешний круг и внутренний будут иметь одинаковую окружность засчёт того, что "клетки" мира имеют одинаковые размеры между собой. По ходу получается геометрическое тело, невозможное в евклидовом пространстве. Для какой-нибудь фантастической игры, где действие происходит в параллельной вселенной с планетами в виде пончиков, идея неплоха, но мне хотелось что-то более близкое к реальности. Ну а так как в математике я не шарю и придумывать что-то более сложное, чем квадратные спрайты для карты мира, не хотелось, идею забросил. Но если кто-то предложит простое решение, интересно послушать.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 04:08   #3
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,695
Написано 2,090 полезных сообщений
(для 4,910 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Мне тоже интересно.
Но читать всё, стало страшно, хотя кое-что понял.
Когда я слышу слово математика, я хватаюсь за пистолет.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (23.03.2013)
Старый 23.03.2013, 05:43   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,508
Написано 2,963 полезных сообщений
(для 5,252 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Было бы так же интересно как устроены планеты в игре "Spore". Пока играл - было такое ощущение, что планета - это плоскость, изогнутая в форму сферы в месте, где ты находишься, причем странность иногда была в том, что при полете якобы пролетая вокруг планеты полный круг ты пролетал только ее часть.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 08:24   #5
AVL
Разработчик
 
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 418
Написано 100 полезных сообщений
(для 182 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

А что используется в Kebal space program? Процедурная генерация ландшафта?
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 08:32   #6
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,924
Написано 3,413 полезных сообщений
(для 9,325 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Для этого существуют такие науки как Геодезия и Картография.
И соответственно существуют формулы для пересчёта географических координат в плоские координаты. Так же есть формула для нахождения расстояния между точками на поверхности земли в географических координатах по поверхности.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
h1dd3n (23.03.2013)
Старый 23.03.2013, 14:37   #7
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от SBJoker Посмотреть сообщение
Для этого существуют такие науки как Геодезия и Картография.
И соответственно существуют формулы для пересчёта географических координат в плоские координаты. Так же есть формула для нахождения расстояния между точками на поверхности земли в географических координатах по поверхности.
Эти науки известны.
Но ты говоришь Картографической Проекции (http://en.wikipedia.org/wiki/Map_projection), это отличный метод визуализации поверхности планеты на плоскость и дальнейшей работы с этими данными, но тут есть проблема в том что это не годится для работы с вычислениями, т.к. даже расстояние будет всё равно считаться исходя из долготы и ширины используя формулу которая считает расстояние по дуге, которую ты упомянул.

Это отлично подходит для визуализации, но из-за сильного искривления пространства, очень не применимо к играм, т.к. задача не искривлять пространство, а визуализировать конкретный участок как он есть, без растягиваний.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 14:50   #8
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 677
Написано 263 полезных сообщений
(для 448 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от MoKa Посмотреть сообщение
Например давайте посчитаем сколько данных нужно для высотной карты всей планеты Земля?
Земля имеет радиус 6,378,100 метров.
Используя формулу площади сферы - 4 * PI * r^2 мы получим площадь планеты земля: 511,201,962,310,545 кв. м.
Далее зная площадь, если мы хотим создать высотную карту всей планеты с детализацией до 1 метра, нам понадобиться предположим 2 байта на ячейку. И это выходит 929.871 терабайт данных.
Естественно числа заоблачные, что говорит о создании высотной карты всей планеты - не вариант для игр.

А теперь представьте сколько данных хранит Google для их карт, снимков satelite, и ещё не забываем что основные карты они генерируют на лету при каждом запросе.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 400 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Гугл ничего на лету не генерирует. Представь что человек открыл гугл карты и нашел Лондон. Площадь Лондона - 1700кв. км. учитывая их точность каждый кв. км будет примерно 5000х5000 px. В итоге гуглу надо на лету отрендерить 1700кв.км по 25кк пикселей, то есть 42'500'000'000. На лету. И это только 1 человеку... Гугл бы сдох уже завно. Все растры (и 90% векторных карт) тайлятся и кэшируются. В итоге их js карты просто вычисляют какие тайлы нужны для заполнения вьюпорта, и загружают их.

Далее идут Географические Координаты (Geographic coordinate system), это очень схожая система координат со сферической, но немного удобнее засчёт более интуитивных углов.
Мы повседневно имеем дело с этой системой координат используя GPS навигаторы.
Т.к. на нашей планете нам не нужно знать о расстояния от центра земли, мы обычно имеем лишь долготу и широту (longitude, latitude), и эти два числа очень удобны в ориентировании снова.
Но в 3Д они снова слабо применимы. Во первых вычислять расстояние между ними воспринимая их как X и Y в корню не верно. Т.к. расстояние по сфере - это дуга а не две точки.
Также выше от экватора долгота имеет меньшее расстояние между градусом.
В интернетах часто можно встретить как кто-то используя Google Maps берёт долготу и ширину и применяет теорему пифагора для вычисления дистанции, и затем умножает на коэфициент (который видиом подобрал), таким образом "получает" расстояние в километрах (или других мерках). Но проблема в том что на экваторе это может и будет работать с верных коэффициентом, а вот на полюсах совсем нет.
Следственно вычисление расстояния не так и просто, т.к. работая с углами, нужно вычислять по дуге. Благо формул в интернетах не мало.

Хоть долгота и ширина, удобны для пользовательской навигации, они же не удобны для математики.
Вся математика в системе координат "долгота/широта" очень проста. Это же простой эллипсоид и углы. Там все в пределах синуса и косинуса.
http://en.wikipedia.org/wiki/Haversine_formula
http://www.movable-type.co.uk/scripts/latlong.html

Вообще интересует кто таки дочитал до конца, и что думает по этому поводу?
Особенно интересует методы проецирования сферических данных на плоскость в мелких масштабах.
Проекция на плоскость совсем другое дело.
http://ru.wikipedia.org/wiki/%D0%9A%...86.D0.B8.D0.B8
Изначально самой удобной проекция была проекция меркатора т.к. она сохраняет углы, а значит удобна для навигации (мореплавателям например). На сегодняшний день ничего лучше толком не придумали (и не придумают), только сделали несколько уточнений о форме земного шара (т.к. это не шар и даже не эллипсоид вовсе). В Роиссе например используются т.к. называемые местные ск. Для каждого региона местные органы самоуправления определяют систему координат. Эти системы координат являются произвольными и как правило одна система координат определяется для кусочка в 3 градуса долготы. Таким образом получается проекция этого кусочка на плоскость, при этом она с математической точки зрения не сохраняет ни углы ни площади, но значения проекции подобраны так, что по карте можно вычислять и углы и площади с определенной точностью (то есть погрешность будет, но она в допустимых пределах).

Для игры вся эта геодезия нахрен не нужна.
__________________
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 15:02   #9
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,333
Написано 1,998 полезных сообщений
(для 7,130 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Моделирование сферического игрового пространства
...в вакууме?
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ARA за это полезное сообщение:
Arton (23.03.2013), Nex (23.03.2013), radiobutton (29.05.2013)
Старый 23.03.2013, 15:11   #10
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от h1dd3n Посмотреть сообщение
*** скрытый текст ***
Гугл ничего на лету не генерирует. Представь что человек открыл гугл карты и нашел Лондон. Площадь Лондона - 1700кв. км. учитывая их точность каждый кв. км будет примерно 5000х5000 px. В итоге гуглу надо на лету отрендерить 1700кв.км по 25кк пикселей, то есть 42'500'000'000. На лету. И это только 1 человеку... Гугл бы сдох уже завно. Все растры (и 90% векторных карт) тайлятся и кэшируются. В итоге их js карты просто вычисляют какие тайлы нужны для заполнения вьюпорта, и загружают их.
Опровергаю. Во первых смотрел презентацию от самих Google которые рассказывали всю историю их алгоритмов, что они раньше кешировали, а сейчас снова генерируют всё на лету динамически.
Подтверждение этому, простая туулза для кастомизации вида карты:
http://gmaps-samples-v3.googlecode.c...ard/index.html
Заметь, тут можно изменить визуальный аспект любого элемента, текста и т.п. карты. Также текст локализируется тоже динамически и рендерится в карту.
Что подтверждает динамичность генерации. Без неё было бы очень сложно иметь такое разнообразие в картах.
Также вот почитай тут: http://www.theatlantic.com/technolog...ything/261913/

Лучше почитай и проверь, прежде чем делать свои выводы, которые могут ограничиваться твоими представлениями о возможном.


Сообщение от h1dd3n Посмотреть сообщение
Вся математика в системе координат "долгота/широта" очень проста. Это же простой эллипсоид и углы. Там все в пределах синуса и косинуса.
http://en.wikipedia.org/wiki/Haversine_formula
http://www.movable-type.co.uk/scripts/latlong.html
Я об этом уже писал. И знаю что это просто. Только это не даёт возможности удобно делать вычисления.
Например у тебя есть турель на здании, далее идёт моб, и турель нужно с определённой скоростью повернуть на моба.
В представлении X, Y, Z и плоского мира - это элементарно просто, вектор - и крутим его.
А вот имея Прямоугольные координаты, по сути вычислений ничего не меняется, Но, чтобы вычислить например горизонтальный поворот относительно плоскости земли - нужно делать дополнительные вычисления.
Следственно работать с сферическими или прямоугольными данными напрямую - не удобно ни в каком случае.

Сообщение от h1dd3n Посмотреть сообщение
Проекция на плоскость совсем другое дело.
http://ru.wikipedia.org/wiki/%D0%9A%...86.D0.B8.D0.B8
Изначально самой удобной проекция была проекция меркатора т.к. она сохраняет углы, а значит удобна для навигации (мореплавателям например). На сегодняшний день ничего лучше толком не придумали (и не придумают), только сделали несколько уточнений о форме земного шара (т.к. это не шар и даже не эллипсоид вовсе). В Роиссе например используются т.к. называемые местные ск. Для каждого региона местные органы самоуправления определяют систему координат. Эти системы координат являются произвольными и как правило одна система координат определяется для кусочка в 3 градуса долготы. Таким образом получается проекция этого кусочка на плоскость, при этом она с математической точки зрения не сохраняет ни углы ни площади, но значения проекции подобраны так, что по карте можно вычислять и углы и площади с определенной точностью (то есть погрешность будет, но она в допустимых пределах).
В том и проблема.
Проекцированная планета на плоскость по существующим методам - никак не подходит для игрового пространства, т.к. искажает всё, что под разным углом обзора и т.п. будет визуализировать данные с искажениями в пространстве.

Сообщение от h1dd3n Посмотреть сообщение
Для игры вся эта геодезия нахрен не нужна.
Ну так замути на планетку, с машинками, дорогами, строениями и человечиками на ней.
И так чтобы можно было с ощущением плоскости поуправлять машинкой или человечком.
Я посмотрю как ты справишься, мы все поучимся.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 16:01   #11
nil0q
ПроЭктировщик
 
Аватар для nil0q
 
Регистрация: 30.06.2009
Адрес: Челябинская обл.
Сообщений: 111
Написано 32 полезных сообщений
(для 99 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Заинтересовался идеей не плоского мира, а сферического, отличный пример - планета.

Давайте по обсуждаем идею, математические и алгоритмические сложности данной задачи, и вообще идеи по моделированию планет и игрового пространства на них.
aah, guys, you stole my great idea.
Одно время хотел сделать игру типа Worms 4 или Scorched 3D, с деформируемым ландшафтом на основе геосферы (имеется в виду триангуляция сферы проецированием на неё рёбер описанного многогранника, грани которого разбиты сеткой прямых, параллельных рёбрам, на правильные треугольники), с физикой движения планет. Из трёх вариантов триангуляции - тетраэдр, октаэдр, икосаэдр - октаэдр андазначна удобнее (восемь граней, каждая делится на n^2 треугольников, все рёбра на координатных плоскостях, нет проблем с построением - создаём массив векторов от центра ко всем точкам сетки и приводим их все к длине, равной 1, - нет проблем с текстурированием). Но сферическую геометрию (расчёт углов, направлений) так и не осилил, не математик я
Вот почему так мало "сферических" игр. Тот же Minecraft в "планетном" варианте был бы интереснее.
__________________
Аинéжарбази овокáсьф имятнэ́меле как, имякщтóт и имяини́ль оклёт ими́ньдо сяюзлёп, ильсы́м эынэвьтспóс ышáн мóнян тягалзи, эы́жущт тят-ищт сант-ищтý анакаккáт; áкызэй овóваримь авотэ́ як итя́ммарг тыжýлс аирьтэмяег аянлетя́трэщтанот, мадóраи мынавóзарбо мэ́сьф мынтáняп авокáныдя, икиньхэ́ть мóкызэй астэя́львэй шóтрэщт ильсэ́й.
Щамóпф раткáдэрь оидюá!
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 17:46   #12
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 12.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

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

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

Ну и работать в обычных координатах.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 18:08   #13
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от dsd Посмотреть сообщение
А если наплевать на плоские карты высот и использовать трех или более мерный шум. То есть берем обычную сферу с более менее регулярной сеткой, наподобие той же геосферы, потом для координат каждой точки поверхности из шума получаем ее высоту над уровнем моря. Умножаем вектор от центра сферы до точки на эту высоту. И в полученную координату ставим точку. В итоге получаем сферу деформированную к планетному виду причем без искажений у полюсов или еще где как было б при наложении двумерного шума.
Я не вижу как это решит проблему с относительностью шума на полюсах границе долготы где две стороны будут смешиваться.
Ведь шум - он не с балды берёться, а в зависимости от X и Y, можно конечно внести и Z, но это 3D шум, что совсем другого типа шум, и он да будет работать. А простая 2D карта шума, всё равно не спроецируется на сферу.

Сообщение от dsd Посмотреть сообщение
Ну а при большом увеличении когда поверхность из сферической практически превращается в плоскость, то просто и размещаем плоскость перпендикулярно вектору от центра планеты к камере, затем все вершины этой плоскости можно обернуть вокруг сферы, из полученных координат вершин этой сетки лежащих на сфере читаем из шума нужную высоту и далее умножаем вектор от центра сферы до точки на это значение. И получаем что эта плоскость в точности повторит поверхность планеты.
Ты предлагаешь иметь 2Д шум на локальные участки? Это может и сработать, только я тебе снова дам задачку - 2Д карта, обычно квадратная, а покрыть ровнымы квадратами всю планету - невозможно, следственно как ты разобьёшь сферу на квадраты?

Сообщение от dsd Посмотреть сообщение
Ну и работать в обычных координатах.
Прямоугольных? Это снова не решает проблемы описанной выше с углами и относительности игрового пространства на плоскости в близких масштабах.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 18:22   #14
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 12.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от MoKa Посмотреть сообщение
Я не вижу как это решит проблему с относительностью шума на полюсах границе долготы где две стороны будут смешиваться.
Ведь шум - он не с балды берёться, а в зависимости от X и Y, можно конечно внести и Z, но это 3D шум, что совсем другого типа шум, и он да будет работать. А простая 2D карта шума, всё равно не спроецируется на сферу.


Ты предлагаешь иметь 2Д шум на локальные участки? Это может и сработать, только я тебе снова дам задачку - 2Д карта, обычно квадратная, а покрыть ровнымы квадратами всю планету - невозможно, следственно как ты разобьёшь сферу на квадраты?


Прямоугольных? Это снова не решает проблемы описанной выше с углами и относительности игрового пространства на плоскости в близких масштабах.
Нет же. 3д шум дает для каждой точки пространства какое то свое значение. Зачем читать какуюто одну плоскость и затем деформировать ее к сфере если можно сразу считать шум лежащий на поверхности сферы.
Не разбивать сферу. Вот когда она целиком влазит в экран то она сфера. А когда не влазит, то берем и делаем плоскость перпендикулярную вектору от центра планеты к камере. Размещаем эту плоскость на расстоянии радиуса от центра планеты. Дальше есть у нас координаты каждой вершины, соответственно и есть вектор от центра до вершины плоскости, и если этот вектор нормализовать, а потом умножить на радиус, то эта плоскость замечательно обернется вокруг сферы. Затем вот эти новые координаты точек лежат на той поверхности внутри 3дшума с которого можно читать нужные смещения для точек этой уже выгнутой по сфере поверхности. нет никакого разбиения.
(Offline)
 
Ответить с цитированием
Старый 23.03.2013, 19:06   #15
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Моделирование сферического игрового пространства (планета)

Сообщение от dsd Посмотреть сообщение
Нет же. 3д шум дает для каждой точки пространства какое то свое значение. Зачем читать какуюто одну плоскость и затем деформировать ее к сфере если можно сразу считать шум лежащий на поверхности сферы.
Не разбивать сферу. Вот когда она целиком влазит в экран то она сфера. А когда не влазит, то берем и делаем плоскость перпендикулярную вектору от центра планеты к камере. Размещаем эту плоскость на расстоянии радиуса от центра планеты. Дальше есть у нас координаты каждой вершины, соответственно и есть вектор от центра до вершины плоскости, и если этот вектор нормализовать, а потом умножить на радиус, то эта плоскость замечательно обернется вокруг сферы. Затем вот эти новые координаты точек лежат на той поверхности внутри 3дшума с которого можно читать нужные смещения для точек этой уже выгнутой по сфере поверхности. нет никакого разбиения.
Ты видимо не замечаешь, что любая 2D плоскость тупо никак не ляжет на сферу по определению.
Возьми глобус, и лист бумаги - попробуй сам. Даже большой лист - у тебя будут складки и даже если обтянешь, границы разных сторон листа которые будут соприкасаться, не следуют квадратной форме листа - следственно там будут рёбра резких переходов шума.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 01:32.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com