15 мая 2013 г.

Transparent for Window (GTK# Cairo Xamarin Studio)

Возникли определенные проблемы с пониманием графики в GTK и Cairo
Главный поиск заключался в установке прозрачности для Виджетов.
Информации было крайне мало.
Много экспериментировал и до экспериментировался...

Вот чего достиг )))


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

Исходники проекта тут
Можно баловаться ;-)


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 к этой разработке - не исключаю... )))


9 мая 2013 г.

MeShaderEd

В отличие от всех аналогичных разработок, данная продолжает упорно развиваться.
Слава и почет автору!

Речь конечно о редакторе шейдеров для RenderMan - MeShaderEd

Идем по ссылке и изучаем все новое...

7 мая 2013 г.

Будда::Ох о кошках

Однажды Будда::Ох вернулся с Тибета и обнаружил в своем доме кошку.
Он обрадовался тому, что за время его отсутствия дом не был пустым, в доме была жизнь.

Они быстро подружились. Белая пушистая кошка была очень мила. Будда::Ох старался ей во всем помогать.

- Мяу
И Будда::Ох бежит открывать двери...

- Мяу
И Будда::Ох бежит с новой едой для кошки

- Мяу
И Будда::Ох спешит погладить милое существо.

- Мяу
И Будда::Ох думает о туалете для кошки...

Это продолжалось довольно долго, но однажды Будда::Ох задумался.

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

Кошки правят людьми?

И тогда Будда::Ох сказал:
- Всякий господин - слуга.




Вечер после будней

Решил потестить Mono.
C ним доводилось работать, но только в версии для Unity.
Сейчас поставил на MAC и PC полную родную версию.
Первые эксперименты обнадеживают.

Причины выбора:

  • Мне удобно писать на всем что есть под рукой, а под рукой может быть Windows, MAC OS, Linux.
  • V-Ray и Blender созданы для этого списка платформ и значит я тоже должен придерживаться этого курса.
  • По моему мнению из всех аналогичных предложений, Mono наиболее "прокачен" и очень здорово развивается.
  • Это бесплатная среда разработки. Не хочется платить за то, что может закончиться крахом и вообще изначально весьма сомнительно (моя идея может быть полной туфтой, время покажет).

Успехи
Попробовал "распарсить" *.vrscene.  В общем-то и парсиногом это назвать неправильно. Я решил считывать данные на лету и сразу их обрабатывать, без всяких там RegExp.
Получилось.
Работает чрезвычайно быстро, это радует.
Пока решил тормознуться на консольном исполнении и не лезть в GUI.
Когда наработаю основное количество классов и функций - займусь интерфейсом. То есть что-то вроде подготовительной работы. А то что было до этого сделано на Flex - ляжет в основу. Может еще что-то буду на Flex делать, но только ради поиска оптимального решения. Там все довольно просто и быстро лепится, можно использовать его как макет или концепт.

Планы
Теперь призадумаюсь о структуре, как это всё должно быть. Это очень важно.

6 мая 2013 г.

Продолжаем отдыхать...

Еще один выходной добавил новую фишечку к V-Ray пэйплайну.
Теперь геометрию из *.vrscene можно просматривать в окошке.
Думаю любители Блендера узнают очертания Сюзанны )))
Вообще она там крутится, на скриншоте этого не видно конечно.


Пока очень примитивный шейдинг без освещения.
Дело наживное...
Да и особых красот наводить не планирую. Будет легкая поддержка шейдинга, текстуры и примитивный свет, а всё остальное решит кнопка "рендер".
Самое сложное позади, дольше всего провозился с пониманием HEX формата от Chaos Group

Но когда разобрался - понял на сколько все просто )))

Сейчас у меня есть проблемы с чтением данных, пока не разобрался почему, но файлы *.vrscene у меня пока открываются ужасно медленно. А вот когда открылись, то все работает очень шустро, включая показ моделей. Модели очень быстро подгружаются.
Пока две догадки относительно проблемы:
- "кривые" ручки
- Flex+AIR не совсем C++ )))

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

Будут еще выходные )))

P.S.
О простоте HEX формата, используемого Chaos Group
Вообще у них несколько форматов, они немного отличаются типом данных но главная суть проста.
Восемь символов на байт, байт формируется не с права на лево (как учат в школе), а наоборот, но при этом числа чередуются парами.

Например в привычной записи будет:
FAFF7FBF  ---->   а V-Ray сделает ----->  BF7FFFFA
000080BF  ---->   а V-Ray сделает ----->  BF800000
3F800000  ---->   а V-Ray сделает ----->  0000803F

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

Дело в том, что поток данных всегда читается последовательно, то есть слева на право, а привычная нам кодировка (из курса информатики) переставляет знаки с права на лево - это лишние расходы на ресурсы... То есть надо сначала прочитать 8 символов, и только потом что-то вычислить и при этом в обратной последовательности.

Так что все очень даже правильно :-)