Среда, 21 Ноября 2018, 19:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Планетарный Terrain (C#)
Планетарный Terrain
dzrone3488Дата: Суббота, 27 Января 2018, 21:20 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет! hello Сегодня я пришёл с весьма трудным вопросом (по крайней мере для меня). У меня стоит задача создать планету в реальных пропорциях с персонажем, с возможностью передвигаться по ней.

Безусловно я уже рассмотрел много различных способов реализовать это. Создать притяжение к этой планете будет совсем просто, именно по этому этот вопрос можно исключить. Основной проблемой является непосредственный переход из космоса на поверхность планеты. Давайте рассмотрим, что мне необходимо сделать, и этакие варианты осуществления:

Есть текстуры спутника Земли - "Луны", разрешением в 8K и карта Normal и Height соответственно, тоже 8K. Нужно создать сферический Terrain в реальных пропорциях с персонажем. При этом поверхность планеты должна быть идентична текстуре, чтобы переход был максимально не заметен. Также планируется наименование кратеров, и других Лунных достопримечательностей реальными названиями. (Идеальной точности по размерам планеты не обязательно, разрешена погрешность)

Первый вариант осуществления задачи это переход из классической сферы на Terrain. Можно например сделать, так чтобы во время пересечения границы космоса и атмосферы, планета каким-либо образом скрывалась из видимости игрока, и именно в этот момент заменить сферу Terrain'ом. Этот вариант не подходит по нескольким причинам: во-первых игра будет сетевой, и луна будет не единственной планетой на которую можно будет приземлится, это значит что переходы между поверхностью и сферой могут быть заметны другим игрокам, и как я считаю наведут мусора в коде, во-вторых появляется необходимость писать новый скрипт, который будет определять в какую часть планеты приземлился игрок (В данном случае мы лишаемся точности). Игра предусматривает с помощью приборов определять приблизительную точку соприкосновения с грунтом (+ на некоторых планетах возможны такие факторы, как ветер).

Второй вариант - смена сцен. Этот вариант, можно сравнить с перемещением между измерениями в игре Minecraft. Имеет те же минусы, что и первый способ.

Третий вариант, как я считаю самый правильный, но имеет некоторые нюансы - использовать сферический Terrain с системой LOD. Данный способ позволит приземляться на поверхность без переходов и спокойно менять гравитацию игроку, при этом появляется возможность наблюдать за игроками используя средства масштаба изображения. Минимум кода, возможность задать планете необходимые размеры. Но есть ряд минусов. Ну для начала нужно, чтобы рельеф планеты был приближен к оригиналу и имел текстуру как из космоса, так и на поверхности без перехода. И есть вариант как это исправить, можно взять текстуру 16K и замостить бесшовной текстурой грунта, а затем смешать с помощью режимов наложения, но это увы я сделать не смог и это отразится на оптимизации. Также горы которые я получаю с 8K карты высот, имеют слишком мало полигонов и требуют как минимум 2x кратного увеличения (Эксперимент на плоском Terrain). Кратеры вовсе не вышли (Только больших размеров). Я порылся в интернете и набрёл на такой плагин для Unity как "Planetary Terrain", но как я понял он позволяет создавать только свои собственные планеты, и других размеров. + Слишком много кода, и работать будет трудно, тем-более если в игре будет возможность посещать другие звёздные системы. Единственный вариант - это найти текстуру 16K Луны, которую я переведу в карту высот. Далее следует создание сферы с рельефом, а потом текстура, которую я не знаю как сделать, потом сделать LOD этой сферы в 5 ступеней. Все эти 5 ступеней разрезать на отдельные части. А далее в Unity создать систему прорисовки этих самых частей. Но увы это выглядит трудно, и я бы хотел узнать у вас как можно реализовать мою задумку? 1) Где найти текстуру 16K в полной мере? 2) Есть-ли плагин для Unity который умеет прорисовывать определённые участки модели?

Снизу я оставлю видео, того что я хочу сделать, но там отсутствует текстура поверхности и горы имеют слишком мало полигонов (Если текстура всё-таки имеется, то как я подозреваю отличается от оригинала)



Текстура Луны но в маленького размера (У меня 8K)


lovegcup lovegcup lovegcup lovegcup lovegcup lovegcup lovegcup lovegcup lovegcup crazy

ЗАРАНЕЕ СПАСИБО!!!


Я делаю игры, а вы в них играете! :)
Моя группа по созданию игр - www.vk.com/dzrone

GMasstaДата: Воскресенье, 28 Января 2018, 09:21 | Сообщение # 2
был не раз
Сейчас нет на сайте
Дочитал до сюда и на этом закончим)
Цитата
это значит что переходы между поверхностью и сферой могут быть заметны другим игрокам


Что за реализация "сервер-клиент", где игроки видят работу других клиентов?
roma3fonДата: Воскресенье, 28 Января 2018, 11:48 | Сообщение # 3
участник
Сейчас нет на сайте
dzrone3488, Значит так:
1. Для высокой детализации планеты можно использовать World Machine, используя вашу карту высот. Есть много видео на Ютюб, о создание точных и красивых географических мест.
2. При масштабах, которые вы затеяли, вам самому придеться писать динамичную систему лодов. Dynamic LOD
3. При верном построение архитектуры, каждый игрок будет видеть то, что ему нужно. Опять же, при ваших масштабах, скорее всего придеться реализовывать "регионы", для синхронизации игроков. Unite Europe 2016
Этот проект выглядит очень сложным, и предпологает приличное количество знаний в векторной математике, логике и сетевой архитектуре, поэтому я не рекомендовал бы вам начинать с таких проектов.



Восприятие субъективно, реальность индивидуальна!
OtinagiДата: Понедельник, 29 Января 2018, 09:09 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Можно обратить внимание на Space Engine. Там в дополнительных материалах есть пак с текстурой луны, кажется, 64К. Но она, разумеется, не цельная, а разбита на квадратики. Думаю, их несложно сопоставить друг с другом, раз вся документацыя открыта. Причём, там бамп уже готовый есть.

«Смерти меньше всего боятся те люди, чья жизнь имеет наибольшую ценность.»
Иммануил Кант
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Планетарный Terrain (C#)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг