Текстура плитки - избегая плиточного вида? - PullRequest
1 голос
/ 11 октября 2010

Я работаю над приложением, которое будет работать на экранах разных размеров, и мне нужно сгенерировать текстуру (например, пергаментную бумагу), которая будет заполнять все доступное пространство экрана.

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

Существуют ли какие-либо методы для создания больших мозаичных областей текстуры, которые не выглядят ... мозаичными?

Спасибо

Ответы [ 3 ]

0 голосов
/ 11 октября 2010

Я не пробовал их использовать, но я был впечатлен тем, что некоторые люди сделали с процедурными текстурами .

0 голосов
/ 16 октября 2010

Вот рецепт, который я разработал для создания случайных текстур, пригодных для листов (то есть периодических) в редакторе изображений (Photoshop, Paint.net, GIMP).

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

Предположим, вы хотите создать изображение 256x256.

  1. Начните с пустого изображения 256x256
  2. Добавить случайный шум.
  3. Увеличить холст, добавив поле в 256 пикселей в каждом направлении.Теперь у вас есть изображение 768x768
  4. Скопируйте центральное изображение 256x256 на восемь окружающих квадратов (этот шаг является наиболее громоздким, и его необходимо выполнить точно - вы можете автоматизировать его, например, в Paint.NET)
  5. Сделайте некоторые локальные преобразования SI (объясненные ниже) на полном изображении.
  6. Если не красиво, GOTO 5
  7. Обрежьте изображение, 256 пикселей на каждом поле.Результат: мозаичное изображение 256x256.

«Локальное преобразование SI (пространственно-инвариантное)» (SI аналогично части «TI» в LTI фильтрах) - любое преобразование изображения(фильтр, настройка, эффект), который изменяет значение каждого пикселя некоторым детерминированным способом, основываясь только на текущем значении и соседних пикселях, инвариантных относительно трансляций.Это включает, среди прочего:

  • Любая настройка цвета (яркость, контрастность, оттенок, насыщенность, кривые уровней, эквалайзер, постеризация).
  • Стандартный низкочастотный или высокочастотныйфильтры, резкость и размытие, медианные фильтры.
  • Локальные эффекты: обнаружение краев, тиснение, рельеф

Это НЕ включает "глобальные" эффекты (рендеринг текстур, пространственные искажения)

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

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

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

0 голосов
/ 11 октября 2010

Мой лучший совет (если вы пойдете по пути листов) - это найти образец текстуры, достаточно маленький, чтобы соответствовать вашим требованиям к памяти, но достаточно отполированный, чтобы не выглядеть «мозаичным» при мозаичном.Когда вы размещаете какое-либо изображение, оно будет выглядеть мозаичным, если границы не будут плавно перетекать друг с другом с любой стороны.То есть общий «край» для всех сторон с небольшим изменением в середине может иметь большое значение для того, чтобы изображение не выглядело «мозаичным».Это не должно быть слишком сложно с чем-то вроде пергаментной бумаги, и действительно работает для вещей, которые выложены плиткой, например, кирпича или бетона.

В Интернете есть несколько хороших примеров вещей (тоже бесплатно!), Которые вы можетепосмотрите, если вам не хватает художественного таланта, чтобы снять что-то подобное.

Другой подход - просто использовать версию изображения с высоким разрешением и «растянуть» ее, чтобы она соответствовала экрану.Чем выше разрешение, тем меньше пикселов вы получите при растяжении изображения.(или попытайтесь сделать что-то похожее на mip-mapping, где вы сохраняете несколько версий изображения с различным разрешением, а затем выбираете лучшую в зависимости от размера экрана.)

...