Есть ли встроенный способ эффективного поиска, если вектор находится в массиве векторов, и если да, то какая это переменная # - PullRequest
0 голосов
/ 15 февраля 2020

Здравствуйте, я создаю процедурно сгенерированный сценарий создания пещеры, и я убрал весь мусор перлин-шума с пути и пытаюсь преобразовать вершины в me sh. Я понимаю, что мне нужно объявить грани для этого и нужен алгоритм алгоритма кубов. Для того, чтобы я знал, в каком направлении визуализировать лицо, мне нужен мой сценарий, чтобы знать все вершины вокруг него, просматривая вершины. Есть ли способ, с помощью которого мой скрипт может эффективно выполнять поиск в массиве vector3, чтобы определить, есть ли там вектор vector3, и если да, то в каком месте массива находится вектор Vector3?

1 Ответ

0 голосов
/ 16 февраля 2020

Если вы используете реализацию марширующих кубов на основе таблицы поиска триангуляции, вы можете сохранить нормальный вектор вдоль грани в той же записи таблицы. Видео Себастьяна Лейга упоминает использование такой таблицы. Я не совсем уверен, откуда он его скачал, но он включает его в свой репозиторий, лицензированный MIT. Видео , Таблица (РЕДАКТИРОВАТЬ: порядок одной вершины треугольника может быть достаточно для определения его направления, и вам может не потребоваться явный вектор нормали)

Также Heads Up: Старый шум Perlin имеет тенденцию быть заметно выровненным по сетке. В большинстве случаев я вижу, что он используется, кажется, потому что библиотека предоставила его или потому что это было упомянуто в учебнике, а не потому, что это был действительно лучший выбор для приложения. Шумы симплексного типа обычно дают меньше выровненных по сетке результатов. Импортировать внешний шум в Unity просто. Похоже, что вам может понадобиться в любом случае, если ваша реализация зависит от 3D-шума. Вот шумы из моего репо, которые используют открытую реализацию для 3D, адаптированную таблицу градиентов и повернутые оценщики, которые хороши для местности . Есть также много других вариантов, хотя они могут не иметь этих аспектов, в частности. Обратите внимание, что диапазон составляет [-1,1], а не [0,1], поэтому, если ваш текущий шум равен [0, 1], вам может потребоваться сделать шум (...) * 0,5 + 0,5, чтобы исправить это. Выберите версию 2F, если у вас много октав, или версию 2S, если у вас одна октава или вы делаете ребристый шум.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...