Как мне реализовать генерацию континентов в Unity? ⇐ C#
Как мне реализовать генерацию континентов в Unity?
Это скорее общий совет относительно разработки игр и Unity.
Я новичок в Unity, но у меня есть некоторый опыт работы с vulkan, opengl, godot, pygame и созданием игр в целом, и я довольно хорошо знаю C#.
Я работаю над приложением, в котором пользователь может генерировать континенты, щелкая мышкой по поверхности сферы. В настоящее время континент отображается только как набор изогнутых линий вдоль сферы. Мне нужен выбираемый интерактивный контент.
Я думал о двух возможных вариантах:
[*]
Создайте шейдер, который окрашивает каждый пиксель сферы, находящейся внутри заданного многоугольника (под многоугольником я подразумеваю многоугольник, проецируемый на сферу). С этого момента я могу вручную что-то делать с ней, например, устанавливать более яркий цвет сферы при наведении курсора мыши. Для этого в шейдере мне нужно будет спроецировать точки сферы на 2D-плоскость (конечно, используя проекцию, которая не нарушает сдерживание), а затем проверить каждый пиксель, содержится ли он в многоугольнике. Возможная проблема в том, что я никогда не писал шейдеры в Unity и не знаю, какую математическую поддержку он имеет для этого, поскольку он находится на графическом процессоре. Я бы предпочел не реализовывать обнаружение лучей и пересечений с нуля.
[*]
Создайте отдельную сетку для каждого континента, и так будет проще привязать к ней поведение. Проблема в том, что я понятия не имею, насколько сложно процедурно создать сетку вдоль сферы на основе всего лишь нескольких точек. Я подумал, что возможным способом сделать это может быть (снова) проецирование точек сферы на двухмерную плоскость (конечно, опять же, используя проекцию, которая не разрушает сдерживание), и тогда у нас возникает гораздо более общая проблема. создания треугольников для 2d многоугольника. Я не знаю точно, как выполняется этот шаг, но я нашел для этого актив ProceduralToolkit, который, надеюсь, может помочь. После создания треугольников просто спроецируйте точки обратно.
Мой конкретный вопрос: есть ли более простой способ сделать это, чем тот, который я описал? Если нет, то какой из них, по вашему мнению, проще реализовать? Меня не волнует производительность, мне просто нужно более простое и легкое в обслуживании решение. Также приветствуются любые общие советы.
Это скорее общий совет относительно разработки игр и Unity.
Я новичок в Unity, но у меня есть некоторый опыт работы с vulkan, opengl, godot, pygame и созданием игр в целом, и я довольно хорошо знаю C#.
Я работаю над приложением, в котором пользователь может генерировать континенты, щелкая мышкой по поверхности сферы. В настоящее время континент отображается только как набор изогнутых линий вдоль сферы. Мне нужен выбираемый интерактивный контент.
Я думал о двух возможных вариантах:
[*]
Создайте шейдер, который окрашивает каждый пиксель сферы, находящейся внутри заданного многоугольника (под многоугольником я подразумеваю многоугольник, проецируемый на сферу). С этого момента я могу вручную что-то делать с ней, например, устанавливать более яркий цвет сферы при наведении курсора мыши. Для этого в шейдере мне нужно будет спроецировать точки сферы на 2D-плоскость (конечно, используя проекцию, которая не нарушает сдерживание), а затем проверить каждый пиксель, содержится ли он в многоугольнике. Возможная проблема в том, что я никогда не писал шейдеры в Unity и не знаю, какую математическую поддержку он имеет для этого, поскольку он находится на графическом процессоре. Я бы предпочел не реализовывать обнаружение лучей и пересечений с нуля.
[*]
Создайте отдельную сетку для каждого континента, и так будет проще привязать к ней поведение. Проблема в том, что я понятия не имею, насколько сложно процедурно создать сетку вдоль сферы на основе всего лишь нескольких точек. Я подумал, что возможным способом сделать это может быть (снова) проецирование точек сферы на двухмерную плоскость (конечно, опять же, используя проекцию, которая не разрушает сдерживание), и тогда у нас возникает гораздо более общая проблема. создания треугольников для 2d многоугольника. Я не знаю точно, как выполняется этот шаг, но я нашел для этого актив ProceduralToolkit, который, надеюсь, может помочь. После создания треугольников просто спроецируйте точки обратно.
Мой конкретный вопрос: есть ли более простой способ сделать это, чем тот, который я описал? Если нет, то какой из них, по вашему мнению, проще реализовать? Меня не волнует производительность, мне просто нужно более простое и легкое в обслуживании решение. Также приветствуются любые общие советы.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение