Този сайт използва бисквитки (cookies). Ако желаете можете да научите повече тук. Разбрах

Новини Добрите практики

За V-Ray от първо лице

Архитектурата на софтуера трябва да е такава, че да позволява продължително време да се работи върху нея, съветва Владо Койлазов от CHAOS GROUP

от , 04 октомври 2017 0 1023 прочитания,

Над 200 филма по света са правени със софтуер на CHAOS GROUP. Над 85% от архитектурните студия в света използват български софтуер, за да си визуализират архитектурните проекти. Повечето автомобилни производители също използват софтуер на компанията при представяне на новите си модели. Това стана ясно по време на презентацията на Петър Митев и Владимир Койлазов, създатели на CHAOS GROUP, която бе представена в рамките на третата техническа конференция HackConf 2017. Компанията доби широка популярност, след като в началото на годината Владимир Койлазов бе отличен с награда “Оскар” за принос в разработването на технологията за фотореалистична графика V-Ray – основна продуктова линия на CHAOS GROUP.

1

Това е различен софтуер от останалите, защото той не е самостоятелна програма, а добавка към други. V-Ray e plug-in. Има SDK (software development kit), който позволява разработката ни да се вгражда в други програми. Освен това, дава възможност да се разширява и самият V-Ray с нови видове текстури, материали и лампи”, разказа Владимир Койлазов.

Голямата популярност на V-Ray налага поддържането на три операционни системи - Linux, Windows и MAC, а множеството изчисления, които трябва да извърши софтуера, налагат вграждането на опция за едновременна работа върху много устройства, което усложнява допълнително задачата на програмистите на CHAOS GROUP. Технологията поддържа различни видове хардуер, като освен нормалните CPU-та, V-Ray може да смята и на графични карти, посредством CUDA или Open CL, а също така поддържа и функция за работа в облачна среда.

Архитектура на софтуера

Архитектурата на софтуера трябва да е такава, че да позволява продължително да се работи върху нея. V-Ray е софтуер на 15 години и още позволява добавянето на нови функционалности, без те да го объркват. Също така кодът трябва да позволява повече програмисти да работят едновременно върху него, без да си пречат, съветва Койлазов. По думите му при създаването на софтуер трябва да се обърне сериозно внимание на неговото обслужване и поддръжка впоследствие. “Ако възникне някакъв проблем с нашия софтуер, ние можем много бързо да реагираме и да помогнем на нашите клиенти – дали защото е възникнал някакъв бъг или има нужда от някакъв допълнителен фючър, ние трябва да сме в състояние да го направим, без да счупим цялата система”, добави отличеният с “Оскар” специалист.

V-Ray като plug-in – предимства и недостатъци

Това, че V-Ray e plug-in, си има и своите предимства, и своите недостатъци. “Едно от големите предимства, когато започнахме да пишем V-Ray, беше, че имахме възможност да вземем някои неща наготово от основното приложение. Първата версия беше в 3D Studio Max и ние можехме директно да се възползваме от възможностите на програмата – текстури, материали, лампи и т.н. Целият потребителски интерфейс вече беше направен, а ние трябваше просто да си добавим възможност за контрол на нашия plug-in конкретно. Други програми обаче не предлагат нищо такова и трябваше сами да си го напишем” спомня си Койлазов.

Има обаче и много неща, върху които създателите на V-Ray нямат контрол. Такъв пример е изборът на компилатор. “Ние не можем да определяме в много голяма степен какъв компилатор да ползваме. Така от приложение на приложение трябва да поддържаме доста видове компилатори и под Windows, и под Linux, и под MAC. Друго нещо, върху което нямаме никакъв контрол, е потребителският интерфейс. Приложенията обикновено го предлагат, но ако ние искаме да направим нещо наше, нещата се усложняват много”, разкава Койлазов.

За да може V-Ray да работи като plug-in, от CHAOS GROUP са категорични, че използването на 3D party библиотеки трябва да се ограничи до минимум, защото съществува реална опасност от възникване на конфликти между различните им версии, ползвани от основното приложение или негови модули. “Когато човек започне да пише нов проект, изкушението да вземе нещо готово, като Boost или STL(Standard Template Library), за да получи известни предимства, е голямо, но този подход създава проблеми, защото не е ясно приложението, в което ще вграждаме V-Ray, какви библиотеки използва”, обърна внимание Владимир Койлазов и добави, че има случаи, в които се налага да бъдат използвани библиотеки за графичен интерфейс, но не и за писане на мрежи и string-ове.

AppSDK

Основните изисквания към SDK са три – да е пълен, да е удобен за ползване и да е стабилнен. Два са основните подходи за един отлично работещ SDK. “Единият е да се напише за външния свят изцяло различен API (application program interface) от този, който се използва вътрешно. Другият подход е самият вътрешен API на продукта да се отвори към външния свят. “И двата подхода си имат предимства и недостатъци. Ние ползваме комбинация от двата. Имаме инструмент, който се нарича AppSDK – един слой върху основния SDK на V-Ray, който позволява лесната интеграция в други продукти. С такъв SDK е и Maya”, разкриха още от CHAOS GROUP.

И при тази технология обаче недостатъци не липсват. Един от тях е, че понякога е възможно да се разсинхронизират външният и вътрешният API. На второ място, когато се добавят нови характеристики на основния продукт или се вадят такива, това трябва да бъде отразено и в двата SDK – вътрешния и външния. “Също така, нашият AppSDK позволява V-Ray да се вгражда в други продукти, но не позволява да се пишат текстури, шейдъри и т.н., които директно се занимават с рендъринг”, обърна внимание Владимир Койлазов.

2

Интерфейсно програмиране

API трябва да може да се разширява, без да се губи обратната съвместимост. За тази цел от CHAOS GROUP използват метод, който наричат интерфейсно програмиране. “Имаме един базов тип обекти и те могат да поддържат различни интерфейси. Един обект може да е лампа и съответно ще поддържа всичко нужно за една лампа. Ако е текстура, ще има методи за семплиране на тази текстура в разни точки и т.н. Самите интерфейси са просто един празен клас, който може да се допълва с каквото поискаме. Когато става дума за лампи, те се дефинират в plug-in за V-Ray с конкретна имплементация на този метод, а самият V-Ray, когато трябва да сметне тази лампа, взима базов обект, който в началото само предполага, че е лампа. След това изпраща запитване за смятане на лампа и ако получи положителен отговор, може да активира метода за смятане на тази лампа”, разказва програмистът.

При интерфейсното програмиране могат да се добавят нови интерфейси, без това да влияе негативно на API и от компанията помнят много случаи, в които това им е помагало да добавят нови функционалности във V-Ray. Владимир Койлазов също така обърна внимание и на основния недостатък на технологията - натрупването на много интерфейси. “Не е необходимо всички обекти да поддържат интерфейси. Базови елементи, като математически вектори, матрици, цветове и др., нямат нужда от това. От друга страна ако на някой клас е трябвало да сложим поддръжка на интерфейс, а сме забравили, също се получават много нежелани резултати”, предупреди съоснователят на CHAOS GROUP.

Какво не трябва да се прави?

При публичния API не е добра идея да се използва стандартната библиотека, защото компилаторът на V-Ray може да е различен от този на самото приложение, което се ползва. “STL е различна от компилатор до компилатор и понякога няма как да се съвместят. Така че, без STL в публичния API”, категоричен е Владо Койлазов. Според специалиста други библиотеки, използващи Boost, също не са вариант, защото, ако всяка от тях иска различна версия, неминуемо се появяват проблеми.

Иван Гайдаров

ЕТИКЕТИ:
V-Ray

КОМЕНТАРИ ОТ  

Полезни страници
    За нас | Аудитория | Реклама | Контакти | Общи условия | Декларация за поверителност | Политика за бисквитки |
    Действителни собственици на настоящото издание са Иво Георгиев Прокопиев и Теодор Иванов Захов