Category: искусство

Category was added automatically. Read all entries about "искусство".

nyaload

Standard brush

Стандартное упражнение на использование стандартной кисточки фотошопа. На самом деле Krita, но эта кисточка с pressure mapped to opacity (hard/soft edge) общая для всех программ рисования.
Collapse )
nyaload

Krita rotational symmetry

В Krita есть режим рисования, в котором автоматически применяется поворотная симметрия. Это позволяет легко стыковать сектора поворотной симметрии, и за минуту нарисовать что-то такое -



Вот бы ещё такой режим для других мозаик, тогда было бы легко делать Эшеро-подобные сюжеты
nyaload

Krita

dzugaru посоветовал классную рисовалку, Krita (Lin/Win/Mac, бесплатная)

Все легко и просто, не нужно постоянно лезть в гугл и отвлекаться на чтение туториалов по слоям, кисточкам, GUI, диалогам настройки, и тд, всё сразу интутивно понятно. Так же есть какое-то неосознанное чувство легкости и отзывчивости программы. Планшет не надо "включать в опциях" и "настраивать кисточки", всё заработало сразу.
Оказывается, я могу не только стыковать готовые рисунки, но и сам нарисовать (пусть и что-то очень простое), причем быстрее чем в фотошопе


Collapse )

Пипетка по зажатой клавише Ctrl, в качестве палитры используем сам рисунок, новый слой добавляется по Insert, слои переключаются по PageUp/PageDown, по правой кнопке "мыши" - контекстное меню с кисточками/цветами (первая - для мультяшных малоцветных рисунков, последняя - для полутоновых), средняя кнопка - зумит и таскает. Размер кисточки регулируется по '[', ']'. Часто спасает кнопка "отключить/включить модификацию альфа-канала".
nyaload

Дикий узел.

"Дикий узел" - узел с бесконечным числом самопересечений, который нельзя представить как гладкую замкнутую кривую (или как ломаную из конечного числа звеньев).

Некоторые из этих узлов можно воспринимать как произведение искусства: ( взято с http://www.cameronius.com/graphics/wild-knots-figures/ )


(Слева - обычный узел, не "дикий").



Collapse )
nyaload

эргономика

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

Так вот, вторым концом стилуса - писать и рисовать удобней, чем тем который специально для работы с тач-скрином. Это же сколько усилий нужно было приложить дизайнеру, что кончик для рисования рисовал хуже, чем случайный кончик!

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

nyaload

632305222316434

Занялся народным развлечением. Скачать izbirkom.ru, распарсить, и нарисовать зависимость голосов за партии от явки.



Хорошо видны горизонтальные линии y = 75% и дальше с остановками через каждые 5% :)

Для тех, кто хочет сам порисовать:

Данные в таблице: http://dobrokot.ru/izbirkom-download/izbirkom-data.zip
Скрипт скачки: http://dobrokot.ru/izbirkom-download/izbirkom-dl.py ( внимание, выкачивает два гигабайта и 100'000 html-лек за несколько часов, оцените свои возможности )
Скрипт парсинга: http://dobrokot.ru/izbirkom-download/izbirkom-parse.py
Скрипт рисования: http://dobrokot.ru/izbirkom-download/izbirkom-view.py

Писалось в спешке, as-is, с некоторым вниманием к корректности работы и целостности данных. На красоту кода и тп забивал :)
nyaload

Разноцветные мипмапы.

Как известно, художники любят большие детализированные текстуры. Такие, что в игре видны только их мипмапы ненулевого уровня. Например, текстура 512x512 на наконечнике копья.
Борис Баткин рассказывал про интересный трюк, как быстро находить такие текстуры в игре: надо в загрузчике текстур заменить мипмапы на отладочные. У которых нулевой мип-уровень залит зелёным цветом, 1-й синим, 2-й - жёлтым, 3й - оранжевым, 4й и дальше - красным. Таким образом, если камера вблизи объекта и он не зелёный - это повод бить тревогу.

Скриншот трюка в действии:Collapse )

Пример неадекватной текстуры:
Collapse )

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

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

Графические файлы DDS. Что лучше, DXT1, DXT3, DXT5 и тп.

DDS файлы - картинки, в которых данные хранятся так же, как в видеопамяти (включая мипмапы). Это позволяет их быстро загружать в игре. В DDS могут храниться объёмные текстуры, кубо-мапы и прочие необычные (для графических файлов) вещи.

2D слои в DDS-файле могут храниться в RGBA формате, а могут быть сжаты в форматы DXT1, DXT3, DXT5.

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

DXT1 - для RGB картинок c однобитной альфой, четыре бита на пиксел (сжатие в 8 раз по сравнению с RGBX).
DXT3 и DXT5 - для картинок с альфа-каналом, типично DXT5 лучше. 8 бит на пиксел, сжатие в четыре раза.


Подробней про метод сжатия, на уровне битов:


изображение делится на блоки 4x4. Для каждого блока хранится два 16-битных цвета. При распаковке из двух цветов x,y генерится четыре последовательных цвета, палитра [x, ⅔x + ⅓y, ⅓x + ⅔y, y]. После 2*16 бит цветов хранится 4*4 двухбитых индексов в эту палитру. Порядок двух цветов (цвет_0 > цвет_1 ?) так же содержит один бит информации. Если цвет_0 > цвет_1, то в палитре одно из значений используется как нулевая альфа, и остальные 3 цвета [x, ½x + ½y, y] - палитра из непрозрачных цветов. Всего получается 64 бита на блок 4x4 пиксела.
В DXT3 и DXT5 rgb-канал хранится точно так же как в DXT1. Альфа в DXT3 хранится просто как округлённое с 8 битов до 4 битов на пиксел, без сжатия. В DXT5 для альфы используется метод сжатия, похожий на метод для RGB в DXT1. Два значения альфы на блок 4x4. Если цвет_0 > цвет_1, создаётся 6 промежуточных значений альфы в палитре и ещё отдельно два особых значения 0 и 1 для альфы. Если цвет_0 <= цвет_1, то из двух крайних значений альфы создаётся 8 промежуточных. После двух 8-битных граничных значений альфы идёт 16 3-битных индексов. DXT5 обычно гораздо точней сохраняет альфу и рекомендуется вместо DXT3.

Артефакты после сжатия малозаметны, чаще всего их можно увидеть в блоках, где сходится 3 разных оттенка (3 оттенка в 2-х на один блок не помещаются).

DXT2 раскодируется так же как DXT3, DXT4 так же как DXT5, только программа должна интерпретировать RGB как уже умноженный на альфу. В них хранится флажок "premultiplied alpha", который может быть интересен универсальной смотрелке картинок, но не игровому движку.

Это сжатие с потерями, паковщик должен выбрать два идеальных цвета для квадрата 4x4, поэтому разные инструменты могут конвертировать с разным соотношением время работы/качество результата. NVidia хвастается, что её nvcompress лучший, не знаю насколько справедливо. На глаз вроде результат лучше, чем у TEXCONV из D3D SDK.

При сжатии DXT в zip имеет смысл разделить индексы и палитру, хранить приращения. Тогда сожмётся чуть лучше. Увы сам не мерял, только напел. Если вы пробовали - напишите, интересно.

Можно чуть-чуть "подвигать" ползунок качество/сжатие таким образом: перед DXT-сжатием использовать текстуру которая в 2 раза больше, если такая есть. Например, уменьшить то, что нарисовал художник не с 4096x4096 до 128x128x, а до 256x256.

Итого:

Eсли картинка без альфы или достаточно однобитной альфы, используйте DXT1. С плавной альфой - DXT5. На "мультяшных" картинках с мелкими деталями будут артефакты, на реалистичных текстурах с шумом и градиентом компрессия незаметна.

Иллюстрация (масштаб 400%):
Collapse )
nyaload

C++, Именованные параметры функций в С++. Спрайты в 2d движках.

Блог же у меня вроде про программирование и разработку игр? И про C++?

Тут я изложу свой опыт того, как надо организовывать основную API-функцию 2d-игр: вывод прямоугольных спрайтов. Это основая функция, игра наполовину состоит из неё :) Остальная половина - игровая логика и чуточку прочего, вроде сейвов, звука, мат-библиотеки.
А, ещё билд ресурсов, шрифты, плавная анимация тоже важные темы, работа с которыми у программиста будет сильно влиять на скорость разработки.

Не знаю насколько, это будет полезно. Для PC лучше взять скриптуемый готовый движок, или флеш и положить игру в Facebook/вконтакт :)
Но если вдруг окажется, что начинаете возиться с таким низким уровнем, да ещё и на C++, тут можете увидеть советы, как сделать жизнь гейм-кодера слаще. Остальные могут увидеть удобный приём для языков с ООП (C++, Java, C#, JavaScript, Python, ...).

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

Ещё один важный момент. Сортировка спрайтов по Z. .
Collapse )

см . так же сжатие графики для спрайтов
nyaload

почему в коктейле две трубочки?

Позавчера устанавливал в баре горизонтальные связи с нашими художниками. Попробовал что такое «Лонг Айленд». На очереди - B-52 и «камикадзе».
В связи с потерей алкогольной девственности решил выяснить, зачем в коктейлях две трубочки. Посмотрел в гугле, похоже единой цели нет, пригождается сразу для всего.
1) Кто-то хочет по быстрому влить в себя всё. А кто-то хочет насладиться вкусом и растянуть удовольствие. Поэтому две трубки, толще и тоньше. Если одинаковые, можно пить через одну или две.
2) Можно дать попробовать другому.
3) В хитрых коктейлях, где разные жидкости образуют слои, можно по своему вкусу смешивать разные слои. По одной трубочке идёт ром, по другой сок.
4) Можно одновременно с девушкой пить один коктейль