Страница 2 из 4

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 10:33
Cyrix
Cr0c писал(а):noiseOffset - это сид (seed, зерно) для генерации псевдорандомного шума


А есть ли способ прикрутить к этому скрипту карту высот из файла bmp?

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 14:00
Paul Siberdt
Нууууу... а вы создаете карту высот на плоскости и хотите безболезненно прикрутить к сфере?
Я бы сначала посоветовал поработать руками с картой высот, натянув ее просто диффузкой на сфероид с разверткой, чтобы подогнать стыки и убрать швы.
ПЕотом всего делов останется - вместо строчки с запросом шума, вы берете с тексуры цвет ювишки.

noiseOffset - это не seed в его ключевом понимании, это тупо отступ по осям от нуля, В нуле Перлин зеркальный по всем направлениям, что совсем не красиво. Но да, работает, как рукожопый seed. :)

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 14:16
IDoNotExist
Paul Siberdt писал(а):Нууууу... а вы создаете карту высот на плоскости и хотите безболезненно прикрутить к сфере?

Для этого как раз и нужен дутый куб. Еще его удобнее ЛОДить по квадрадереву.
Еще вот что у себя в закладках нашел https://habr.com/post/335588/

Cyrix писал(а):Я вчитывался, как сделать рельеф из карты высот на ПЛОСКОСТИ.

Ну так создай такую плоскость, а потом спроецируй её на сферу, вот у тебя и получилась одна грань дутого куба.

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 14:42
Paul Siberdt
Мне представляется стремным занятием подгонка карт высот для каждой грани куба, я бы все эти штуки делал до Юнити, и, в конце концов, снимал бы готовую дисплейсмент дату со сферы. Она и весить будет много меньше карт высот, чисто пиксель на вертекс... хотя, это разговор про процедурно генерируемые сферы.

В своем старом танчике я в Майке скульптил руками астероиды, а потом сохранял в мисиписечные карты высот, типа таких:

Изображение.
Изображение

Все, конечно, зависит от необходимого конечного результата, кто знает, чем там занят топикстартер, VR-симулятором прилунения или мобильной аркадкой про сбор монеток среди астероидного поля.

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 14:59
IDoNotExist
Paul Siberdt писал(а):Мне представляется стремным занятием подгонка карт высот для каждой грани куба, я бы все эти штуки делал до Юнити,

Я когда то давно именно так и делал, брал готовую карту высот марса/земли в сферических координатах, преобразовывал координаты, и нарезал на 6 кубических, ничего сложного тут нет (это скорее муторно, особенно писать парсеры .raw файлов). А разрешение карт высот как собственно и размер, можно настроить под свои нужды во время нарезки.

Paul Siberdt писал(а):кто знает, чем там занят топикстартер

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

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 15:27
Paul Siberdt
Кстати, еще всплывет вопрос освещения и, следовательно, выставления правильных нормалей крайним и угловым вертексам вздутых и отдисплейченных граней куба. Если своевременно не научиться создавать процедурные сетки, тут можно сильно застрять с правкой артефактов. :)

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 15:41
IDoNotExist
Paul Siberdt писал(а):Кстати, еще всплывет вопрос освещения и, следовательно, выставления правильных нормалей крайним и угловым вертексам вздутых и отдисплейченных граней куба.

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

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 16:15
Paul Siberdt
IDoNotExist писал(а):Не только нормалей но еще и тангентов по хорошему...

Там еще бамп был? Мои соболезнования. :)

Я месяца как три назад забил на освещение и начал другим заниматься, благо есть, чем. Но время "Ч" близится. :D

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 16:23
Cyrix
Так... тема проекта такова: Планета, на ней одна вода и больше ничего, кроме двух островов, которые находятся на значительном расстоянии друг от друга. Острова не маленькие. На каждом острове - по аэродрому! Беда в том, что острова процедурные, да и вода тоже (волны там, всё-такое..., но только вблизи острова, а дальше, в необозримой части, вода низкополигонная). Сами острова не могут быть плоскими - они должны быть изогнутыми по сфере (планете) плюс собственные неровности из карты высот. Почему не рандомные - объясняю: Аэродром - плоская полянка относительно острова, на карте высот надо будет нарисовать одноцветную площадь, чтобы полянка была ровная. С острова надо будет перебираться на другой остров за ресурсами. Два раза в игровую неделю будет прилетать самолёт и забирать игроков в рейс на другой остров и обратно, но билет платный. Погода на планете бывает не очень, самолёт может не долететь... если повезёт, то окажешься в воде, но плавать в ней до прибытия спасателей - не просто... ну и т.д. и т.п...
Как мне сделать остров, который будет менять свои полигоны и вершины на более мелкие и частые (и текстурировать их) только вблизи камеры игрока, но при этом чтобы плоскость самого острова была параллельно сфере (чтобы остров был изогнут по сфере) ?
Я сделал высокополигонную рандомную сферу, но FPS - 5...8! Это кошмар! Всё-таки надо как-то делать процедурную генерацию. Но кааак???

Re: из куба сферу

СообщениеДобавлено: 11 окт 2018, 16:39
Paul Siberdt
Ок, вообще тогда нет проблем. Создаем регулярную сетку, что вписывает остров, гнем ее по радиусу водяной планеты, дисплейсим плоской картой высот и ориентируем в нужное место. Повторяем то же самое для второго острова.

Процедурная генерация все так же сожрет фпс, сама генерация не означает создание прогрессивмеша. Прогрессивмеш - это отдельная надстройка над процедурным террейном. Для применения прогрессивмеша на острове, вам его (остров) надо разбить на отдельные квадраты (объекты, сабмеши или логические куски одного меша - не суть), как это сделано во многих террейн-генераторах (включая Юневский), и управлять плотностью сетки каждого квадрата в отдельности при помощи анализа а-ля "насколько значимы детали квадрата в текущем вьюпорте". Естесственно, надо разбираться, писать код, тестить, дебажить и много читать примеров и разборов в интернете.

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

Re: из куба сферу

СообщениеДобавлено: 12 окт 2018, 11:25
Cyrix
А каким образом можно согнуть плоскость по радиусу в Unity? Вот например создал я остров в 3DS MAX-е, он не гнутый, а ровный, экспортировал в FBX, получил объект в Unity, у этого объекта есть меш. Как мне перебрать циклом все вершины этого меша и изменить их высоту относительно радиуса планеты? Может в Unity есть какой-то инструмент для этого?

Re: из куба сферу

СообщениеДобавлено: 12 окт 2018, 12:29
IDoNotExist
Cyrix писал(а):Как мне перебрать циклом все вершины этого меша

foreach(Vector3 vert in mesh.vertices)

Cyrix писал(а):и изменить их высоту относительно радиуса планеты?

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

Cyrix писал(а):Может в Unity есть какой-то инструмент для этого?

Да, есть он находится рядом с кнопкой "Сделать Готовую Игру"

Re: из куба сферу

СообщениеДобавлено: 12 окт 2018, 13:53
Cyrix
Cyrix писал(а):Да, есть он находится рядом с кнопкой "Сделать Готовую Игру"


Весьма информативно

Re: из куба сферу

СообщениеДобавлено: 12 окт 2018, 16:49
Paul Siberdt
А каким образом можно согнуть плоскость по радиусу в Unity? Вот например создал я остров в 3DS MAX-е, он не гнутый, а ровный...

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

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

Re: из куба сферу

СообщениеДобавлено: 12 окт 2018, 16:58
Paul Siberdt
Может быть, вам просто подойдет геометрический шейдер, что трансформирует скринспейс? Тут вообще про планеты не надо париться.

Curved World