Друзья, встречайте 28-й выпуск SDCast’а. У меня в гостях Юрий Ковеленов, основатель и руководитель разработки проекта Blend4Web — открытой платформы для создания трехмерных веб-приложений.
В этом выпуске мы, в основном, ведем речь о проекте Blend4Web: Юра рассказывает про историю и предпосылки появления проекта, освещает основные идеи и функциональные возможности, рассказывает про архитектуру и используемые технологии. Рассказывает про интеграцию Blender и Blend4Web, как это упрощает жизнь дизайнерам и программистам.
Наряду с этим мы обсуждаем темы, связанные с разработкой opensource проектов: это и отправка патчей в крупные opensource проекты, такие как Blender, и взаимодействие с сообществом, важность обратной связи от пользователей вашего продукта, выбор фич и планирование развития проекта, принимая во внимание запросы и пожелания пользователей.
Поскольку проект Blend4Web активно использует технологию WebGL, мы пообщались и на эту тему. Юра рассказал, какие технологии использовались до появления стандарта WebGL для отображения трехмерной графики в вебе, как этот стандарт живет и развивается сейчас, насколько хороша поддержка этого стандарта в современных браузерах и что нас ждет в ближайшем будущем. Затронули так же тему поддержки WebGL на мобильных платформах.
UPD: Спасибо Юре, добавил текстовку подкаста.
Всем привет! Вы слушаете 28 выпуск SDCast, подкаста о разработке ПО и его окрестностях, с вами я, ksdaemon, и сегодня у меня очень интересный гость — это Юрий Ковеленов, основатель и руководитель разработки проекта Blend4Web. Юрий, привет.
Привет, Константин.
По сложившийся традиции, расскажи немного о себе, как давно и чем занимаешься?
В первый раз я увидел программиста по телевизору. Я был в малолетнем возрасте и спросил свою маму: почему этот странный человек постоянно смотрит в экран, это же так скучно? На что был ответ, что зато им дают за вредность молоко (смеется).
В каких же это годах было, что по телевизору показывали? (смеется)
Ох, давно. Для себя я сделал вывод, что никогда на свете не стану программистом. Только потом, когда у меня самого появился компьютер, я понял, как это интересно. В МГУ на первом курсе был курс программирования (Pascal), потом пробовал писать на Delphi. После окончания университета искал себя, менял работу, и в определенный момент вспомнил, что когда-то мне нравилось программировать. В конце 2000-х гг был бум IT и интернет-технологий… Случайно попалась на глаза книжка по JavaScript. Самое главное, что я из нее подчерпнул, это то, что браузер – это среда выполнения программ, результат работы которых доступен для просмотра миллионам пользователей Интернета. В той же самой книжке был упомянут некий Flash, что он и быстрее, и мощнее, чем JavaScript, и может показывать красивую графику. Тогда Flash был достаточно популярен, везде висели баннеры…
…да, раньше он был вездесущ.
Скачал тестовую версию Flash, старую, в которой использовался язык ActionScript первой версии, с таким же синтаксисом, как у JavaScript. Меня захватила идея программирования графики и анимации. Будучи новичком, я вознамерился в одиночку писать, не много ни мало, свою собственную массовую многопользовательскую онлайн-игру (смеется). Пробовал и серверные технологии, клепал «программер арт» страшного вида… В конце концов решил — если это мне так нравится, почему бы мне не пойти на работу? (смеется)
Та-а-к!
Практически с первого объявления я устроился в компанию, в которой работаю до сих пор. Руководство компании, как и я сам, были новичками в интернет-технологиях, мы не были зашорены «традиционными» вещами вроде PHP — именно поэтому мы смогли создать такой инновационный продукт, как Blend4Web. Технология WebGL (Web Graphics Library), на основе которой он работает, была доступна только в экспериментальных сборках браузеров, и само ее будущее было под большим сомнением. Это было забегание вперед на годы, и я очень ценю, что компания предоставила возможность этим заниматься и поддерживала меня.
Мы очень удачно подошли к теме разговора. Расскажи, как появилась идея создания Blend4Web, какие были для этого предпосылки и как это все произошло.
Для Flash была трехмерная библиотека, называлась она Away3D. Поскольку во флэше тогда еще не было аппаратного ускорения, эта библиотека могла держать порядка 1000 треугольников максимум, если кто знает, это мизер…
…даже я – не особый специалист — понимаю, что 1000 треугольников — это какой-нибудь шарик, квадратик летают по экрану, и все. (смеется)
Тем не менее, сам факт, что это 3D, всех поразил – вдруг все осознали, что 3D лучше чем 2D, и, несмотря на такие суровые ограничения, мы начали использовать Away3D. Так у нас появился некий первый рабочий цикл (workflow), включающий изготовление моделей и их последующую загрузку в приложение для дальнейших манипуляций. Вообще, это распространенное явление: каждая команда создает собственный workflow, когда начинает работать с трехмерной графикой.
Что было потом? Напомню, что во флэше не было аппаратного ускорения, и мы очень быстро уперлись в ограничения. Альтернативой мог бы стать уже известный тогда движок Unity, но он не запускался на Linux. Как линуксоид, я не мог этого допустить (смеется), к тому же это несвободное ПО, которое влечет за собой зависимость, поэтому мы прошли мимо него…
…а тогда уже Unity Web Player уже был разве? Он, мне кажется, уже позже появился, нет?
Может быть и позже. Как бы то ни было, «корпорация добра» Google представила свой плагин для браузеров, O3D. Это был типичный гугловый эксперимент, который заключается в том, чтобы сделать какую-то технологию, покрутить ее и потом выкинуть… (смеется)
…выбросить! (смеется)
Мы об этом тогда еще не знали, ведь это же такая крупная и уважаемая компания… O3D был с открытым исходным кодом, работал на линуксе, и самое главное, что в нем было – это аппаратное ускорение. Стала возможной графика совершенно другого уровня. Сейчас понятно, что в проекте O3D была опробована идеология будущего WebGL. Шейдеры (программы для видео-карт) можно было вставить непосредственно в HTML файл, а код самого приложения нужно было писать на JavaScript. Приложение запускалось в браузере, более или менее долго загружалось — короче, классический rich internet application.
Мы испытали шок, когда Google сообщил об отказе от разработки O3D в пользу WebGL. В качестве временного решения они решили портировать O3D для работы поверх WebGL, однако проект был в низком приоритете, и JavaScript библиотека, которую они предложили вместо плагина, была мало пригодной. Нужно было срочно переходить на WebGL. Так началось первое знакомство с низкоуровневыми графическими API.
WebGL – это браузерная версия OpenGL ES 2.0, того самого, который работает на мобильных устройствах. Рабочая группа разработки стандарта WebGL выбрала именно эти API, потому что они были кроссплатформенными, работали как на мобильных устройствах, так и на десктопе. По своим возможностям эти API близки к DirectX 9 – API 10-летней давности, и, соответственно, уровень графики, который можно ожидать от WebGL — это графика 10-летней давности. Самым ярким примером такой графики я бы назвал игру Crysis (первую часть)…
…в те времена это было ого-го, извини меня! Crysis, он же произвел, такой переворот…
Мы решили достичь того же самого в браузере, ведь раз это было возможно на DirectX 9, значит, это возможно и в WebGL. Это наша тайная идеология. (смеется)
…поня-я-тно.
В O3D использовался формат COLLADA, в который модели экспортировались из 3D редакторов. Мы написали загрузчик для этого формата и научились показывать модели в браузере. Фактически, был реализован первый примитивный движок.
Начал выстраиваться новый workflow. Вскоре вскрылась проблема взаимодействия в команде – в случае любой ошибки художника программист узнает об этом самым последним. Нет обратной связи…
…ну в смысле она очень долгая, потому что приходится в самый последний момент возвращаться…
Опять же, несовместимые операционные системы Linux, Windows… Решением проблемы стал Blender, программа для 3D моделирования, которая работает на линуксе. Blender до версии 2.5 был неудобен для использования, однако после выхода версии 2.5 в 2010 г он стал гораздо лучше. В нем был сделан свободный короткометражный фильм «Синтель», эти фильмы периодически выпускаются командой Blender…
…у них самый известный фильм, по-моему, Big Buck Bunny.
…новая версия Blender была еще на стадии разработки, но когда я начал на нем работать, то почувствовал себя настоящим моделлером (смеется). Решили: раз Blender позволяет делать такие замечательные фильмы, то почему бы нам всем не работать в этом Блендере? Конечно же, было жесткое сопротивление, ведь художникам очень тяжело расставаться с инструментами…
…уже все привычно, все освоено, и тут новое и непонятное что-то, зачем, не хочу и все такое.
В дальнейшем, когда мы начали нанимать художников, которые изначально работали в Blender, проблема решилась сама собой. Начала формироваться команда единомышленников, мы отказались и от 3ds Max, и от Maya, все художники перешли на Linux. Соответственно, Photoshop пришлось тоже забыть…
…GIMP!
Да, вся графика у нас на сайте blend4web.com создавалась в свободных инструментах. Кстати, звук тоже мы записываем в свободных инструментах — Audacity…
…ну Audacity да, понятно, конечно…
…Ardour (там происходит редактирование). Полностью свободный workfow — это наша особенность и гордость, потому что мы умеем делать качественную графику полностью в open source и ни от кого не зависим.
Не было когда-нибудь таких ситуаций, когда не хватало возможностей инструментов? Все-таки, хотя Blender сейчас активно развивается, на те времена какая-нибудь Майа, 3ds Max были лучше.
Сейчас Blender, как мне кажется, вообще им не уступает. К Блендеру никаких претензий нет. Есть небольшие претензии к открытым двухмерным редакторам, в первую очередь к Inkscape, это…
…векторный редактор,…
…за медленную работу, отсутствие слоев и т.п. GIMP (растровый редактор) более или менее устраивает, особенно с версии 2.8, в которой появились слои…
…им только интерфейс чуть-чуть причесать и будет вообще шикарно.
Кстати, для Блендера мы начали регулярно писать патчи, сейчас думаем и для двухмерных редакторов начать писать, чтобы улучшить их работу. Например, цветовые пространства для полиграфии не поддерживаются или плохо поддерживаются.
Почему Blend4Web? Так как сцены экспортировались из Blender в WebGL, то наш фреймворк мы так и назвали, Blender-to-WebGL, или Blend2Web. Перед релизом мы еще раз его переименовали, в Blend4Web. Таким образом, первоначальное назначение фреймворка – блендеровский экспортер для веба. Вообще говоря, такая концепция, экспортировать из традиционных 3D редакторов в веб, сейчас набирает популярность. 3ds Max готовит нечто подобное, на форумах обсуждения других инструментов задают вопросы типа: у Blender есть Blend4Web, а у Cinema4D что есть? Ничего нет? (смеется) Редактор Marmoset, предназначенный для создания фотореалистичной графики в реальном времени, тоже имеет экспортер для веба.
А они экспортируют в собственные форматы, или есть какие-нибудь общепринятые интероперабельные форматы? Или экспортируют в каком-то своем внутреннем формате, который только им понятен? Как обстоят дела?
Обстоит дело именно так — экспорт происходит во внутренние форматы, и у нас то же самое. Существует proposal со стороны Khronos, организации, занимающейся графическими API – формат glTF (OpenGL/WebGL Transmission Format). Назначение формата…
…унифицировать подход всего этого дела.
Формат подразумевает JSON-файл плюс бинарный файл, точно так же, как у нас. Нам задавали вопросы, почему мы не используем glTF. Проблема в том, что он слишком малофункциональный, по причине своего универсализма он не позволяет хранить всю специфичную информацию, которая имеется в Blender…
…они универсальные, и еще к тому же находятся в начале разработки.
Сейчас мы отходим от концепции экспортера для Blender — мы хотим, чтобы Blend4Web был полноценным 3D фреймворком, удобным для создания интерактивных веб-приложений, и который – в качестве бонуса – соединен с Blender. То есть – интегрированная среда разработки, на подобие того же Unity, или даже лучше, чем Unity, потому что в том нельзя редактировать модели. В конце этого месяца (июнь 2015) мы готовим очередной релиз, в котором эта новая концепция будет явно выражена, а именно будет полностью переписан интерфейс Blender. Чтобы это стало возможным, мы написали патч, который после долгих переговоров с разработчиками проекта удалось включить в состав Blender. Начиная с этого релиза, вместо Blender будет Blend4Web. (смеется)
Расскажи про архитектуру проекта, из каких частей он состоит?
Работа начинается с того, что человек загружает и устанавливает Blender. После этого нужно загрузить Blend4Web — мы предлагаем два варианта поставки — отдельный аддон к Блендеру и полноценный SDK (комплект средств разработки). Аддон представляет собой компактный файл, который устанавливается в Blender и позволяет экспортировать. В SDK же включены различные инструменты, демо-приложения, приложение-каталог для просмотра и редактирования моделей в WebGL, мы его называем viewer (просмотрщик). Там же есть полезные утилиты – для нас они удобные, а для пользователей, наверное, не очень удобные, т. к. запускаются из командной строки, но мы сейчас делаем для них интерфейс-обвязку в Блендере. Эти утилиты предназначены для автоматического экспорта файлов, оптимизации текстур, поиска ошибок, компиляции и т.д. Blend4Web распространяется условиях GPL (General Public License) и коммерческой лицензии (т. н. двойное лицензирование). Мы разрешаем делать модификации движка и пускать их в дело, и SDK — это как раз та среда, в которой это можно удобно сделать.
Когда устанавливается аддон к Блендеру, появляются две опции экспорта: в JSON и в HTML. В первом случае при экспорте появляется json-файл вместе с бинарным файлом, содержащим данные моделей. Бинарный формат оказался гораздо эффективнее…
…бинарный, соответственно, закодирован в base64, чтобы в браузере восприниматься, да? Или как?
…нет, он именно бинарный, потому что..
…вы его загружаете сразу в ArrayBuffer?
Совершенно верно. А опция экспорта в HTML — эта очень интересная особенность Blend4Web, потому что у пользователя получается единственный HTML-файл, в котором как раз в base64 все закодировано – текстуры, звуки, модели, и в который включен, собственно, сам движок.
Ну то есть он запускает его в браузере и уже видит эту самую модель, очень быстро и ничего делать не надо.
Совершенно верно. (смеется) Этот HTML, кроме возможности вращать камеру, имеет кнопки, такие как авто-вращение, полноэкранный режим и т.п.
Ну у вас там на демках как раз они есть, кругленькие в правом углу.
Потом кнопки социальных сетей туда еще добавили. Когда на OpenNet мы опубликовали пресс-релиз, первый комментарий был: «а как их убрать?» (смеется)
OpenNet – это вообще очень специфичная «среда-коммюнити-тусовка», потому что я его тоже почитываю, и в какой-то момент думаю — почему мы мне туда про SDcast не написать про какой-то выпуск? Как раз удачно так получилось, я записал выпуск о Linux, Евгений Любимкин приходил, один из разработчиков Debian. Я туда выложил, как обычно, в mp3, и первый комментарий был: «Где ogg? Слушать же невозможно». (смеется)
«Не нужно!» – очень частый комментарий.
Да-да-да! (смеется) Чуть мы отошли в сторону, но тем не менее. Замечательные кстати демки, последняя про яхту — вообще шикарно, такие виды…
Да, это была эпопея, художник кинематографистом стал. (смеется)
Всем советую зайти посмотреть — просто понять, что это все работает в браузере, и это не что-то придуманное, специально сделанное. Расскажи: так, формат JSON, а что в браузере происходит?
Разработчики приложений подключают к странице JavaScript-библиотеку, наподобие jQuery. Далее – инициализация, при этом происходит получение контекста WebGL. Нужно сказать, что не все 100% браузеров поддерживают WebGL: он поддерживается давно в Chrome, давно в Firefox, в Safari – начиная только с 8-й версии, в Internet Explorer – начиная только с 11-й версии, в Яндекс-браузере, потому что он на Chromium…
…все что на Chromium — понятно, более или менее ясна ситуация, Opera сейчас тоже.
Далее обычно загружается сцена. Сейчас я все рассказываю с точки зрения программиста – дело в том, что у нас имеется визуальный редактор логики для непрограммистов, чтобы можно было добавлять простейшую интерактивность. Например, нажал на кубик, и он начал крутиться, или надпись появилась и потом рассыпалась и т.п., короче, дальше уже идет анимация. Еще одна отличительная особенность Blend4Web — это то, что мы сгружаем максимум ответственности на художника. У нас даже поддерживается блендеровский редактор материалов, который разве что еще только в Unreal Engine имеется. В нем визуально расставляются блоки (ноды) для математических преобразований над цветом, например, можно реализовать движение текстуры по поверхности, чтобы получить эффект течения лавы или водопад. Этот инструмент – тоже наша гордость, потому что его было довольно сложно поддержать, но зато возможности он предоставляет неограниченные. Все последние демо в обязательном порядке используют редактор материалов, без него качественную графику сделать сложно.
Мы уже привыкли к тому, что 95% времени над приложением работает художник, который создает контент и анимацию. Потом программисту достаточно две недели на сборку приложения и верстку интерфейса. Кода, как правило, получается мало (до 1000 строк). Несмотря на малый размер, приложение насыщено графикой, потому что художник имеет возможность работать независимо от программиста.
Расскажи подробнее — вот есть модель, насколько легко добавить интерактивность, не просто вращение, а чтобы по клику что-нибудь появлялось, отдавалось либо перемещалось?
Все это фактически различные виды анимации: любое движение, исчезновение, деформация, движение поверхности по материалу, даже звук в Blender считаются анимацией. В Blender есть очень мощный редактор анимации, NLA (nonlinear animation), который мы используем на полную катушку. Большая часть того, что может делать приложение, может быть представлено в виде анимации.
По сути, для программиста приложений это стандартный API, вопрос только в том, как анимировать?
Этим самым мы отличаемся от других популярных движков, в которых на нагрузка в основном ложится на программиста. Выпущено много приложений на WebGL, многие довольно красивые, однако умалчивается о том, какой квалификацией нужно обладать, чтобы делать подобный контент.
Первое, что приходит в голову, это WebGL-фреймворк Three.js, но он действительно программистами для программистов, что называется. (смеется)
В случае Three.js, если нужно, например, создать какой-нибудь необычный эффект, то для этого нужно иметь талант художника и быть продвинутым кодером, а это очень редко встречающееся сочетание — я, например, таким специалистом не являюсь. На мой взгляд, Three.js не пригоден для массового использования. Количество проектов, которые его используют, объясняется тем, этот движок существовал еще до WebGL, который, в свою очередь, начал разрабатываться с 2009 г. Three.js использовал софтверный ренедеринг на JavaScript, архитектура и API были уже разработаны, и поэтому появление WebGL просто значительно ускорило рендеринг.
При этом сохранил полностью весь интерфейс — все заработало, просто для конечных программистов проектов ничего не изменилось – стало быстрее и красивее.
Да, такое чудо. Все же я не понимаю людей, которые им пользуются, потому что, по-моему, им пользоваться невозможно (смеется) – нужно быть программистом, либо иметь такую команду, в которой художник смотрит в рот программисту и наоборот.
Это экстрим-программинг, вдвоем с художником за одним компьютером, в 4 руки, один код пишет, другой говорит, какие шейдеры применить — только так. (смеется)
Мне, кстати, это знакомо, когда еще не было Blend4Web, мы писали на WebGL шейдеры для кожи персонажа. Художник сидел рядом и давал рекомендации типа «сделай тут блеска больше». (смеется)
Давай теперь поговорим про такие смежные вопросы — он у вас open source движок, расскажи: когда вы его опубликовали, насколько у вас большая команда его разрабатывает, сформировалось ли сообщество – как общественная жизнь у вас протекает?
Выходили мы в авральном режиме, это было в марте прошлого года. Решался главный вопрос — выходим мы или нет. Все другие вопросы, такие как сообщество, документация и прочее, были второстепенными вопросами. Я думаю, что могли бы выйти даже раньше – еще в 2011 г у нас уже было демо с самолетом над островом. Но мы занимались разработкой, и в итоге вышли только в 2014 г. Я также понял, как не надо выходить. (смеется)
Расскажи — очень интересный опыт!
Не было ни нормального сайта, ни форума, где будет собираться сообщество, ни социальных сетей. Документация не была переведена на английский язык, она была только на русском – пользователям приходилось пользоваться переводчиками типа Google Translate. Я думаю, мы смогли бы достичь гораздо большего эффекта, если бы подготовились к релизу, но поскольку вопрос решался в ключе «выходим или не выходим», остальное было побочными вопросами…
…вторичными.
Потом мы начали исправлять положение, запустили форум. В соцсетях у нас было по нулю подписчиков — соответственно, что бы ты ни писал, никто это не прочитает. (смеется) Были первые дни после релиза, мы пытались рассказать всем какие мы крутые. (смеется) Поскольку мы давние читатели OpenNet, конечно же в первую очередь написали новость там. На популярном форуме блендеровцев, BlenderArtists, нас приняли очень тепло, в комментариях благодарили, даже сказали: какие талантливые люди сейчас в России. (смеется)
Приятно такие слова слышать.
На новостном ресурсе блендеровского сообщества BlenderNation мы сейчас регулярно публикуемся – фактически это наша целевая аудитория. Люди, которые уже умеют работать в Блендере, не испытывают никаких сложностей при использовании Blend4Web. На Хабрахабре в последнее время также можно было видеть статьи.
А есть какой-нибудь feedback, народ же начал пользоваться, обратная связь?
Сейчас обратная связь — это главный мотор, который нас движет. Когда запустили форум, пришла масса народу, причем в основном иностранцы. Стали хором просить функционал, например, панорамирование камеры. Поскольку у нас релизы раз в месяц, мы реагируем практически мгновенно: camera panning? – пожалуйста, будет в следующем релизе. Потом кто-то из них говорит — все, теперь я полностью удовлетворен блендфовебом. (смеется)
Отлично!
У нас есть аккаунт на GitHub, который мы используем как хостинг GPL версии. Скажу сразу: GPL версия и коммерческая версия по кодовой базе не отличаются совсем, функционал полностью один и тот же.
Это логично, поддерживать еще их. Странно, если было бы по-другому, наверное.
Отличие в том, что в коммерческой версии у нас есть исходники наших крупных демо-приложений. Все же, GitHub мы не воспринимаем как площадку для разработки, у нас много больших файлов, был бы огромный трафик. По этой технической причине мы не принимаем патчи – в основном принимаем обратную связь. Сейчас, особенно на русскоязычном форуме, начали появляться программисты, которые делают сложные приложения. Яркий пример — человек делает браузерный Counter Strike — в нем задействована и физика, и сетевая система, приложение насыщено логикой. При подготовке очередного релиза нам это очень помогает в отладке.
А большая команда у вас занимается разработкой? Сколько человек?
Сейчас 16 человек. Когда мы пришли на конференцию по компьютерной графике CGEvent, то все удивлялись, что нас так много. Говорили, что у них даже в студиях столько нет. (смеется) Вообще говоря, я не думаю, что это так уж и много, в том же Unity 150 программистов — гораздо более серьезная команда.
Все познается в сравнении. 16 человек это все таки прилично, обычно в проектах 2-3 программиста что-то там пилят. Я так понимаю, именно это позволяет вам быстро выпускать релизы и при этом удовлетворять какие-то запросы. А не так чтобы «ну да, допилим, через полгода».
Пример из последних событий: мы сделали новый редактор нормалей (нормали описывают поверхность модели), многие начали им пользоваться, в том числе для разработки под другие движки типа Unity. Т.е. люди сидят на Unity, но качают Blend4Web только для того, чтобы пользоваться инструментом. Смешно.
Если инструмент делает что-то хорошо, зачем мучаться – это радует. Ну а какие ближайшие планы, что вы хотите еще интересного сделать, какие интересные функциональные штучки?
Сейчас самая главная задача для нас – это usability, мы хотим достичь интуитивности интерфейса, функционала, чтобы в Blender выглядело так же, как на веб-странице, в идеале WYSIWYG, “What You See Is What You Get”. Именно поэтому мы пишем и отправляем патчи в проект Blender. Что касается функционала, я считаю, что мы его достаточно активно добавляли, и, в целом, паритет с конкурентами достигнут. Специализированный функционал, например, для игр, мы даже не собираемся реализовывать, т.к. для нас главное направление – 3D визуализация, прежде всего презентации продуктов на сайтах, электронное обучение, инструкции к промышленному оборудованию, инфографика и вообще все, что обычно делалось на Flash. С игровыми движками даже не хочется особо соревноваться, так конкуренция серьезная, установившиеся сообщества, серьезные игроки.
Это немного другое — и концепция другая, все по другому.
Конечно, игры на нашем движке тоже можно делать, у нас есть игровые примеры, но Интернет все же гораздо шире и перспективнее, чем игровая индустрия.
Еще не затронули пару вопросов. Как движок ведет себя на мобильных устройствах? Сейчас это достаточно большой сегмент, ориентироваться только на десктоп неправильно, наверное.
Согласен. У нас есть «стопка» мобильных устройств основных производителей. Для нас самое главное, чем отличаются дивайсы – это графические чипы, которые иногда ведут себя совершенно по разному. Все свои последние приложения мы обязательно оптимизируем под мобильные устройства. Помимо браузеров, HTML5 приложения могут быть размещены и в магазинах – мы пробовали один из фреймворков, который упаковывает веб-приложение в нативное мобильное приложение.
Ну да, и Titanium, и чего там только нет. По WebGL есть какое-нибудь развитие? Тот же Khronos опубликовал новый стандарт, Phoenix или я что-то забыл…
…Vulkan! (смеется)
…точно Vulkan. (смеется) Насколько вообще развивается WebGL как стандарт, производители браузеров что-то там добавляют или оно в каком-то стабильном состоянии пребывает? Я просто не очень в теме, было бы интересно услышать.
Существует рабочая группа, которая занимается разработкой стандарта WebGL, ее возглавляет представитель от Google. У нас есть с ними рабочие контакты, отправляли баг-репорты. Вообще, WebGL – это активно развивающийся стандарт. Версия 1.0 реализована уже во всех браузерах, к выпуску готовится WebGL 2.0, он будет основан на мобильных API OpenGL ES 3.0, которые вышли в прошлом году, совсем недавно…
…ну свежие, да.
На этот раз мы не будем бежать впереди паровоза, как это у нас происходило с WebGL 1.0 — дождемся, пока WebGL 2.0 не будет реализован хотя бы в двух браузерах. По поводу Вулкана я могу сказать, что это более низкоуровневые API, которые объединяют десктопные, мобильные, браузерные API, а также API для вычислений на видео-картах (GPGPU). Что касается разработчиков браузеров — Apple реализовал WebGL в Safari в 2014, Microsoft был сначала против WebGL, якобы это небезопасный стандарт, но в итоге и он его поддержал. Понятно, почему Microsoft был против, потому что у него все-таки есть DirectX, конкурент OpenGL.
Сообщество диктует свои условия. Хочешь, не хочешь – им пришлось.
Либо поддерживать стандарты, либо исчезнуть как браузер – они уже давно не монополисты.
Насколько все разработчики не любили Internet Explorer всю жизнь, в последней версии 10-11 они стали чуть ли не во главе браузерного движения, что не может не радовать. И еще такой специфичный вопрос (смеется), всякие эти 3D очки, Oculus Rift и прочие штуки набирают популярность. Вы вообще в эту сторону как, смотрели? Есть у вас интерес? Какие-то задумки в этой части?
Есть примеры на WebGL, и по использованию расширенной реальности, и по использованию стерео-очков, и еще разные штуки. Больной вопрос (смеется), мы понимаем что это надо делать, чтобы хотя бы не отличаться от конкурентов в том, что у нас этого нет, но в глубине души понимаешь, что это все-таки игрушка, малопригодная на практике. Мало у кого есть те же трехмерные очки Oculus, и не понятно, что с ним вообще происходит.
Ну да, оно еще в зачаточном состоянии, еще все слишком шатко.
Facebook его купил, все недовольны, какие-то скандалы, непонятно что творится. Короче – пока у нас нет этих очков. (смеется)
Понятно – пока только в мыслях (смеется), думаете, размышляете, ясно. Ну мы так довольно таки продолжительно с тобой, вначале были мысли что нужно покороче, но получилось как обычно, что называется как всегда. Тем не менее, был очень интересный разговор, рассказал про всю историю, и как чего есть. Спасибо тебе большое, что пришел в гости, было очень интересно. Друзья, всем спасибо, что были с нами, и до новых встреч. Пока пока!
До свидания!
Ссылки на ресурсы по темам выпуска:
- Сайт проекта Blend4Web.
- Шикарные демки на сайте проекта.
- Blender. Пакет трёхмерного моделирования с открытым исходным кодом.
- Спецификация WebGL.
- Away3D. Opensource 3D движок на flash.
- Google O3D. Плагин для браузеров для трёхмерной графики. Его уже не найти, есть JavaScript реализация на WebGL.