12 мая 2013 г.

Создаем традиции выходного дня

Довольно удобно использовать длинные выходные для изучения чего-то нового.
Продолжаю свои искания в сфере программирования.

Многое осознано, двигаемся дальше.
Решил набраться смелости и замахнуться на GUI но не просто графический интерфейс который предлагается фреймворками, а создание своих собственных элементов управления, которых не хватает, чтобы в полную силу начать работу над редактором V-Ray сцен.

В планах довольно много всего, максимализма нам не занимать )))
Пока решил разобраться с ноде-эдитором.
Через него будет идти основная работа по оптимизации, настройке и управлению сценами V-Ray.

Исходя из того набора, что я выбрал (GTK + C# + .NET + Mono), логично было начать изучать GDK + Cairo + Pango, это веселая связка высоко зарекомендовавшая себя на разработке таких приложений как Gimp - может довольно многое.

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

Я взял за основу исходники Olivier Lecointre (VMPanel.cs VMObject.cs).
Поначалу долго изучал код, потом начал пробовать его модификации.
В конечном счете выкинул 80% от оригинал, все переписал и вот что стало получаться:


Пока скромно и мало что понятно )))
Мне перспективы видны очень интересные.
Получается красивая структура с которой будет очень легко работать.
В виде нод можно представлять как весь проект в целом, так и отдельно взятые сцены или материалы.
Редактор материалов для подстройки шейдеров тоже возможен.

А главное - оптимизация данных для анимации...
Это приложение будет завершающим этапом пэйплайна, следующий этап - большая кнопка RENDER. Которая здесь тоже будет ;-)

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

Впереди будут выходные еще, посмотрим.

P.S.
Для тех кто не в курсе.
Вот мое мнение - сейчас V-Ray отлично подходит для малых и средних проектов, но что-то большое сделать на нем весьма сложно.
Я пытаюсь создать условия в которых он на прямую будет конкурировать по удобству и гибкости с RenderMan.
Хотя и подключение RenderMan к этой разработке - не исключаю... )))