(Я думаю, что это очень хорошо). Я счастлив: 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 (общая интерполяция для шумов, соответствующих зеленым пикселям)

Вот почему у нас есть такой вывод:

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

На самом деле, я не знаю, что попробовать ...

Ответы на вопрос(1)

Ваш ответ на вопрос