2010-06-10 10 views
4

У меня есть текстуры, которые я создаю, и хотел бы их сгладить. У меня есть доступ к цвету каждого пикселя, учитывая это, как я могу сгладить всю текстуру?Алгоритм сглаживания?

Благодаря

ответ

4

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

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

Как говорили другие, хотя: сглаживание - это не то, что сделано для изображения, которое уже является растровым изображением пикселей. Это метод, реализованный в 2D/3D рендеринге.

+0

Можете ли вы рассказать о том, как вы вычисляете «среднее» цветов? – Pacerier

5

«Сглаживание» может относиться к широкому спектру различных методов. Ни один из них, как правило, не был бы тем, что вы делали бы заранее до текстуры.

Возможно, вы имеете в виду mip-mapping? http://en.wikipedia.org/wiki/Mipmap

+0

Нет, я не ищу этого, я ищу, чтобы зубчатые края выглядели гладкими. – jmasterx

+0

Если артефакты уже находятся в вашей текстуре, попробуйте уменьшить их до меньшего размера. Или загрузите их в Photoshop и попробуйте использовать инструменты размытия, чтобы улучшить внешний вид. Нет волшебного алгоритма для удаления ошибок псевдонимов после их рендеринга. – Alan

+0

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

0

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

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

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

5

Извините, но истинное сглаживание не состоит в том, чтобы получить средний цвет от соседей, как указано выше. Это, несомненно, смягчит края, но это не сглаживание, а размытие. Истинное сглаживание просто невозможно сделать правильно на растровом изображении, так как оно должно быть рассчитано во время рисования, чтобы определить, какие пиксели и/или края должны быть «смягчены», а какие нет. Например: представьте, что вы рисуете горизонтальную линию, которая должна быть ровно в 1 пиксель (скажем, «высокий») и должна быть помещена точно в координату строки целочисленного экрана. Очевидно, вы захотите, чтобы он не был размягчен, и правильный алгоритм сглаживания сделает это, привлекая вашу линию как идеальный ряд твердых пикселей, окруженный идеальными цветными пикселями фона, без какого-либо смешивания тона. Но если вы возьмете ту же строку после ее рисования (т. Е. Растрового изображения) и примените средний метод, вы получите размытие выше и ниже линии, в результате получится горизонтальная линия шириной 3 пикселя, что не является целью. Конечно, все может быть достигнуто с помощью правильной кодировки, но с совершенно другого и гораздо более сложного подхода.

+0

Сглаживание - это нарушение теоремы о выборке Шеннона. В этом смысле размытие является допустимым решением - оно удаляет высокочастотные компоненты. Как и все пиксели изображения для одного и того же значения. – Vorac

Смежные вопросы