Как мне реализовать генерацию континентов в Unity?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Как мне реализовать генерацию континентов в Unity?

Сообщение Гость »


Это скорее общий совет относительно разработки игр и Unity.

Я новичок в Unity, но у меня есть некоторый опыт работы с vulkan, opengl, godot, pygame и созданием игр в целом, и я довольно хорошо знаю C#.

Я работаю над приложением, в котором пользователь может генерировать континенты, щелкая мышкой по поверхности сферы. В настоящее время континент отображается только как набор изогнутых линий вдоль сферы. Мне нужен выбираемый интерактивный контент.

Я думал о двух возможных вариантах:
[*]
Создайте шейдер, который окрашивает каждый пиксель сферы, находящейся внутри заданного многоугольника (под многоугольником я подразумеваю многоугольник, проецируемый на сферу). С этого момента я могу вручную что-то делать с ней, например, устанавливать более яркий цвет сферы при наведении курсора мыши. Для этого в шейдере мне нужно будет спроецировать точки сферы на 2D-плоскость (конечно, используя проекцию, которая не нарушает сдерживание), а затем проверить каждый пиксель, содержится ли он в многоугольнике. Возможная проблема в том, что я никогда не писал шейдеры в Unity и не знаю, какую математическую поддержку он имеет для этого, поскольку он находится на графическом процессоре. Я бы предпочел не реализовывать обнаружение лучей и пересечений с нуля.
[*]
Создайте отдельную сетку для каждого континента, и так будет проще привязать к ней поведение. Проблема в том, что я понятия не имею, насколько сложно процедурно создать сетку вдоль сферы на основе всего лишь нескольких точек. Я подумал, что возможным способом сделать это может быть (снова) проецирование точек сферы на двухмерную плоскость (конечно, опять же, используя проекцию, которая не разрушает сдерживание), и тогда у нас возникает гораздо более общая проблема. создания треугольников для 2d многоугольника. Я не знаю точно, как выполняется этот шаг, но я нашел для этого актив ProceduralToolkit, который, надеюсь, может помочь. После создания треугольников просто спроецируйте точки обратно.

Мой конкретный вопрос: есть ли более простой способ сделать это, чем тот, который я описал? Если нет, то какой из них, по вашему мнению, проще реализовать? Меня не волнует производительность, мне просто нужно более простое и легкое в обслуживании решение. Также приветствуются любые общие советы.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»