-CHAIN-

четверг, 26 апреля 2007 г.

Без швов

Сейчас буду делиться мудростью, естественно, не только своей, но и народной:)
Пока переделываю мир, приходится вспоминать множество вещей, таких например как бесшовные текстуры (в просторечии seamless).
В чем их отличие от обыкновенных текстур? Если взять одну такую текстуру, повторить 4 раза и сложить в один квадрат , вы не увидите швов, копии будут идеально стыковаться
друг с другом. Количество повторений не ограничено, швы все равно не появятся.
Каким образом сделать такую текстуру для, скажем, травяного покрытия? По шагам:
  1. Для начала запускаем Google. Пишем в поиске "grass free texture" и по первой же ссылке идем за фотографией травяного поля.


  2. Качаем текстурку (мне понравилась free-grass-texture-016.jpg).

  3. Работать с ней будем без нарушения лицензий в абсолютно бесплатном, в отличие от Photoshop, редакторе Gimp. Скачать его можно здесь http://www.gimp.org/windows/ (не забудьте библиотеку GTK, без нее Гимп работать не будет). Загружаем текстуру в редактор.

  4. Для начала, уберем все лишнее, так как в мире мы используем небольшие текстуры для поверхности земли 64х64 или 128х128, то надо взять небольшой лоскут изображения, на котором, после уменьшения масштаба, можно будет рассмотреть хоть что-нибудь, кроме зеленого цвета. Поэтому берем нож (жмём на клавиатуре SHIFT+C или кликаем на изображение ножа в панели инструментов слева) кликаем по фотографии и не отпуская кнопку мыши вытягиваем небольшой квадрат. После этого, в дополнительно открывшемся окне, проверяем соотношение сторон, нам нужен именно квадрат и кликаем кадрировать, я выбрал вот такой участок с размерами 312 на 312. Размеры могут быть, в принципе, любыми, главное, чтобы они были не меньше чем размер желаемой текстуры, но в общем: чем выше разрешение, тем проще с ним работать.




  5. Теперь поработаем с полученным квадратом. Миры у нас все таки нереальные, поэтому сделаем изображение более насыщенным. В Гимпе это можно сделать в меню "Слой"-> "Цвет"->"Авто"->"Насыщенность". Стало гораздо ярче. Те, кого устраивает полученное изображение, переходят к следующему пункту. Меня не совсем устраивает цвет, поэтому сделаем его чуть потемнее и немножко другого оттенка. В том же меню слоев, только не в авто режиме, с помощью инструментов "Тонировать" и "Яркость-Контрастность" я получил примерно следующее: Да.. небольшое белое пятно справа, наверняка, будет бросаться в глаза при повторении текстуры, поэтому мы его уберем с помощью инструмента "Штамп" (выглядит как печать в панели инструментов). Работать с ним очень просто - удерживая CTRL кликаем на участке изображения, который хотим клонировать, скажем, где-нибудь слева посередине, а потом, отпустив CTRL, кликнуть на месте белого пятна.




    Итак от пятна избавились. К следующему шагу.



  6. Теперь желательно добиться ровного тона, без резких перепадов темного и светлого, чтобы текстура при повторении не создавала впечатление шахматного поля. В Photoshop для этого есть готовый фильтр под названием "High Pass"(его действие было описано на gamasutra.com, точное название статьи не помню, но желающие могут использовать google, он наверняка поможет). В Гимпе нет готового решения, однако можно добиться того же результата с помощью несложной комбинации действий или записав эти действия в script-foo. Скажем спасибо страничке http://www.coniserver.net/wiki/index.php/Seamless_Texture_Tutorial , благодаря которой, я сделал эту обучалку по-русски, там есть готовый скрипт. Добавим его в Гимп и сможем им пользоваться в один шаг и постоянно. Создайте текстовый файл, вставьте в него этот текст:

    (
    define (high-pass image drawable radius)
    (gimp-image-undo-group-start image)
    (set! new-layer (car (gimp-layer-copy drawable 0)))
    (gimp-drawable-set-name new-layer "temporary layer")
    (gimp-image-add-layer image new-layer 0)
    (gimp-displays-flush)
    (plug-in-gauss-iir 1 image new-layer radius 1 1)
    (gimp-invert new-layer)
    (gimp-desaturate new-layer)
    (gimp-layer-set-mode new-layer 5)
    (gimp-image-merge-down image new-layer 0)
    (gimp-image-undo-group-end image)
    (gimp-displays-flush)
    )
    (
    script-fu-register
    "high-pass"
    "/Script-Fu/High Pass..."
    "a high-pass filter..."
    "ventilator"
    "ventilator"
    "2004-04-12"
    "RGB*"
    SF-IMAGE "image" 0
    SF-DRAWABLE "layer" 0
    SF-ADJUSTMENT "radius" '(50 1 1000 1 10 0 1)
    )





    сохраните с именем highpass.scm в директорию, куда установили Гимп, в поддиректорию GIMP-2.0/share/gimp/2.0/scripts. Потом в Гимпе, в меню "Расш", выберите "Скрипт-Фу"-> "обновить скрипты". Новый скрипт появится в панели инструментов "Скрипт-Фу" в окне, где вы работаете с текстурой.


    Осталось применить его на нашем изображении. В опциях скрипта есть радиус, можете поэкспериментировать со значениями, я выбрал 15, чтобы получить вполне ровный оттенок. Получилось немного ярко, с помощью яркости-контраста, поправим результат. И переходим к созданию текстуры без шва.


  7. В Гимпе это можно сделать несколькими способами, мы рассматриваем самый простой вариант. Выбираем в меню "Фильтры"->"Карта"->"Без Швов". У нас готова нужная текстура. Масштабируем ее в меню "Изображение"->"Масштабировать" до размера 128х128 и сохраняем. При сохранении выбираем тип jpg , потом на вопрос про экспорт, соглашаемся, выбираем качество, если поставить галочку на предпросмотре, то двигая слайдер увидим насколько портится изображение и его преполагаемый размер после экспорта. У меня получилось около 4.5 килобайт, вполне устраивает.

  8. Теперь выгружаем текстуру в мир, и смотрим, что у нас получилось.

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

пятница, 20 апреля 2007 г.

такие миры я создавал...


иногда приятно почувствовать себя богом:)
сейчас я этот мир восстанавливаю, может адама и еву туда добавлю... кандидаты wanted!

четверг, 19 апреля 2007 г.

Для чего заводят блоги


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

Архив блога