(Я думаю, что это очень хорошо). Я счастлив: P Теперь пришло время оптимизации: P
продолжаю этот вопрос без ответа (Сглаживание случайных шумов с разными амплитудами) и у меня есть еще один вопрос.
Я решил использовать контур / тень фигуры (Перевод / трансформация? список точек от его центра со смещением / расстоянием).
Этот контур / тень больше, чем текущий путь. Я использовал этот репозиторий (https://github.com/n-yoda/unity-vertex-effects) воссоздать тень. И это работает довольно хорошо, за исключением одного факта.
Чтобы узнать высоту всех точек (полученных этим алгоритмом тени (Строка 13 из ModifiedShadow.cs & Строка 69 из CircleOutline.cs)) Я получаю расстояние от текущей точки до центра и делю максимальное расстояние до центра:
float dist = orig.Max(v => (v - Center).magnitude);
foreach Point in poly --> float d = 1f - (Center - p).magnitude / dist;
Где orig - полный список точек, полученных алгоритмом тени. D - высота тени.
Но проблема очевидна: я получаю идеальный круг:
В красном и черном, чтобы увидеть контраст:
И это не то, что я хочу
Как видите, это не идеальный градиент. Давайте объясним, что происходит.
Я использую эту библиотеку для генерации шумов:https://github.com/Auburns/FastNoise_CSharp
Примечание: Если вы хотите узнать, что я использую для получения шумов с различной амплитудой:Сглаживание случайных шумов с разными амплитудами (см. первый блок кода), чтобы увидеть это в действии,увидеть это репо
Зеленый цвет фона представляет шумы со средней высотой -0,25 и амплитудой 0,3Белый цвет фона представляет шумы со средней высотой 0 и амплитудой 0,1Красный означает 1 (общая интерполяция для шумов, соответствующих белым пикселям)Черный означает 0 (общая интерполяция для шумов, соответствующих зеленым пикселям)Вот почему у нас есть такой вывод:
На самом деле, я попытался сравнить расстояния каждой отдельной точки до центра, но это привело к странному и неожиданному результату.
На самом деле, я не знаю, что попробовать ...