Разберите пиксель спрайта для определения вектора - PullRequest
1 голос
/ 09 апреля 2011

Учитывая изображение, которое может содержать любое разнообразие однотонных изображений, каков наилучший метод для анализа изображения в данной точке и последующего определения наклона (или вектора, если вы предпочитаете) этой области?

Будучи новичком в разработке XNA, я чувствую, что должен быть установленный метод для такого рода вещей, но я уже некоторое время гуглял по этому вопросу.

Например, я смоделировал быстрое изображение, чтобы продемонстрировать, что я пытаюсь сделать. Белая часть изображения (где отображаются метки) будет прозрачными пикселями. «Ground» - это объект RenderTarget2D или Texture2D, который будет предоставлять массив пикселей Color.

Пример

1 Ответ

0 голосов
/ 09 апреля 2011

То, что вы ищете, это tangent, что составляет 90 градусов к normal (который используется чаще).Эти два термина должны помочь вам в поиске.

Это тривиально, если у вас есть данные контура многоугольника.Если все, что у вас есть, это изображение, то вам нужно придумать способ преобразовать его в многоугольник.

Возможно, он не совсем подходит для вашей проблемы, но первое, на что я бы остановился, это Farseer Physics Engine , который имеет функцию «текстура в многоугольник», которую вы, возможно, можете использовать повторно.


Если вы используете местность как своего рода «землю», вы можете обманутьнемного, глядя на соседний столбец пикселей и используя его, чтобы определить наклон земли в этой точной точке.Вроде того, что делают Лемминги и Черви.

Если вы сделаете это определение на границе между каждым пикселем, вы можете получить градиенты роста: бегите между двумя пикселями по горизонтали.Обычно вы просто разбиваете его на категории: такие плоские (1: 1), 45 градусов (2: 1) или слишком крутые (> 3: 1).С более сложным алгоритмом, который смотрит наружу на большее количество столбцов, вы можете получить лучшее разрешение.

...