понедельник, 8 августа 2011 г.

Design Pattern - Command, Decorator

Когда я только начинал эту статью, то планировалось, что она будет посвящена рассмотрению только Command Pattern-а, но по ходу ейо совершенствования и доработки статья разрослась и в нейо вошло рассмотрение еще двух паттернов, это Singleton Pattern и Decorator Pattern. Поэтому, статья получилась весьма обширная, я разделил ейо на блоки в которых рассмотрены дополнительные шаблоны, их реализация и примеры (в том числе и на Java). Но основной частью все равно является рассмотрение работы Command Pattern-а с интеграцией его в MVC.

Введение

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

Рисунок 1. Схематическое представление Command Pattern

Реализация команд проста и интуитивно понятна. Они указывают объекту на действие (набор действий).

понедельник, 13 июня 2011 г.

Custom Gallery ver. 0.1

Моя старая разработка на ActionScript 3.0 - полностью настраиваемая галлерея. Делал ейо еще зимой. Сейчас взялся за доработку, переработку и решил выложить бесплатную тестовую версию. Вы можете использовать ейо на любом свойом проекте, только при одном условии - мне будет известен этот проект (сайт, игра, интерактивная презентация и другие разработки на технологии Flash).

Рисунок 1. Внешний вид - базовый (картинки сторонние).

Рисунок 2. Внешний вид - развернутая картинка, название, описание, ссылка.

среда, 1 июня 2011 г.

Design Pattern - MVC

Patterns, они же "Шаблоны" или алгоритмы программирования (далее паттерны) предназначены для упрощения работы с кодом, а также организации функционала для лучшего его понимания и расширения. По сути, формирование паттерна это последняя стадия рефакторинга, на которой код принимает наиболее структурированный вид. Паттерн это всего лишь структура кода которая может быть применена к обширному кругу задач. Самым распространенным паттерном является, MVC - связка Model - View - Controller, в которой классы Model (Модель) включают в себя данные и упорядочивают их, View классы управляют отображаемыми на экране объектами, и Control классы управляют данными в модели, могут их изменять, а также обрабатывают сообщения от View, и основе этих изменений (изменений в модели) происходит обновление объектов на экране, т.е. классов View. Таким образом различный функционал, выполняющий одинаковые функции может быть объединен в блоки, которые затем будет легко расширить или изменить. Ниже можно посмотреть простейшую диаграмму того как устроен паттерн MVC.


Простейшей реализацией MVC паттерна является телевизор с пультом управления, где пульт это Controller управляющий каналами в телевизоре, внутренность телевизора представляет собой Model (данные в виде каналов), а View это экран. В данном случае экран не знает о количестве каналов и о том как они изменяются, пульту также абсолютно все равно какой экран у телевизора, а каналы не зависят от переключателя. 

пятница, 15 апреля 2011 г.

TileMaker for Adobe Photoshop CS5 (beta)


При создании изометрических игр  (Isometric Games) *[1] используются алгоритмы "плитки" или "тaйлинга" (tile) *[2], т.е. все игровое пространство разбивается на кусочки-"тайлы", которые вступаю в игру по мере их открытия, захвата или достижения пользователем определенного уровня. Если игровая карта достаточно велика, чтобы подгрузить за один раз, то ее удобно разбить на кусочки, загрузка которых происходит постепенно (в фоновом режиме). Также такое разбиение ускоряет выход готового продукта в тестовый режим. Когда карта готова ее нужно разрезать на одинаковые кусочки, что может занять длительное время если карта большая и количество кусочков более 50. Средствами Photoshop автоматически разрезать карту на равные кусочки не получается, поэтому мною был написан плагин позволяющий это сделать.

TileMaker - плагин для Photoshop предназначенный для автоматической разрезки картинки на заданное количество кусочков.
Интерфейс

Данный плагин написан на Adobe Flash Builder 4 (framework Flex), JS, Photoshop API. Как он работает, как написать похожий плагин и что для этого нужно я расскажу дальше.

понедельник, 31 мая 2010 г.

Ambient Occlusion in Mental Ray


Ambient Occlusion - быстрый и простой метод симулировать эффект глобального освещения. Occlusion (окклюзия или преграда) - мера того, насколько окружающее пространство вокруг точки, занято геометрией. Определяется это за счет испускания некоторого количества пробных лучей по полусфере вокруг точки, а затем анализа расстояния до блокирующего объекта. На основе этой информации строится карта затемнения точки. При этом необходимо чтобы был включен механизм трассировки лучей - RayTracing.

пятница, 28 мая 2010 г.

mia_materials - Fundamentals - Part 2


Часть 2. Характеристики материала 
"Модель" шейдера.

The mia_material shading model
Модель шейдера состоит из трех компонентов:
  • Диффузия (Diffuse) – диффузный канал (в том числе и «шероховатость» по Oren Nayar)
  • Отражение (Reflections) – глянцевое анизотропное отражение (и блики)
  • Преломление (Refractions) – глянцевое анизотропное преломление (и translucency-просвечиваемость)
Прямое и отраженное освещения вызывают диффузное рассеяние (diffuse reflections), так же как и эффекты просвечиваемости (translucency effects). Прямые источники света являются причиной возникновения «свечения» или бликов ("highlights" или specular highlights).

mia_materials - Fundamentals - Part 1

Mental Ray
Архитектурные материлы на основе шейдера mia_material и mia_material_x.



Что такое mia_material?
Mental Ray mia_material – монолитный шейдер-материал (шейдер - программой построения теней), разработанный специально для создания большинства материалов используемых в архитектурном дизайне. Он позволяет создавать практически все твердотельные материалы, такие как метал, дерево и стекло. Разработанный специально для быстрого просчета глянцевого рассеяния и преломления (fast glossy reflections and refractions), заменяет DGS материал, а также для создания высоко качественного стекла (заменяет диэлектрический материал - dielectric material).