Еще за VRML

Надежда отечественного геймдева [info]golergka как-то спрашивал в комментах, зачем нужны VRML-ные извращения. А я сейчас на наглядном примере покажу, зачем.

На данный момент “мейнстримом” в плане динамического контента в вебе является Adobe Flash, правда, с начала 2000-х сильно сдавший позиции в пользу более универсального Ajax. Во всяком случае, извращения тех лет, вроде “сайтов целиком на Flash”, встречаются реже и реже – “изобразительные” и “технические” возможности Flash теперь реализуют с использованием HTML, CSS и Javascript.

Единственная область, где позиции Flash до сих пор сильны – это динамическая графика. Если, к примеру, текстовую “мочиловку” такого типа:

И плодть его содрыгнулыся от боли, и страшные черные птицы обклювали иго со всех сторон…
А злой волшебник Хухур достал иликрическую пилу и стал, весело хохоча, отпиливать ему ногу и отпилил ее три раза! Воистину!..
И он, хохоча, откусил ему глаз…
Злая колдунья острым ножом разрезывала плоть жертвы…
Его жилы, хохоча, хрустнули под ударом стальной дубины, и кровь толстым потоком затопила Долину Смерти…
Воистину прольется кровь, ибо да будет так!!!

…думаю, этого достаточно – все же видели игрушки типа “Бойцовского клуба”, где “мочилово” представляет собой длинный лог того, кто откусил кому яйца, в общем, если такую мочиловку попытаться снабдить графикой, то придется использовать Flash – нормальное рисование в Javascript+HTML совершенно недоступно (а когда все дойдут до поддержки HTML5 и элемента Canvas – я не скажу, да и никто не скажет).

В принципе, ничего против Flash я не имею – это довольно удобное средство отображения динамически меняющихся двумерных картинок. Но вот когда речь заходит о трехмерности…

Конечно, трехмерная графика с “оперативным” рендерингом на ПК применяется уже лет 20, вспомним тот же Wolfenstein 3D или Doom. Математическая основа 3D-графики прекрасно известна, и реализация “софтверного” рендерера не должна вызывать больших проблем при использовании любого языка высокого уровня (хоть того же ECMAScript). Недостаточная производительность скриптовых языков уже лет пять как не является проблемой, в чем нас пытаются убедить “веб-программисты”. Но это теория. А что мы имеем на практике? Для Flash существует десяток софтверных 3D-”движков”. Как говорит про них Википедия,

Скорость работы перечисленных движков зависит от используемой версии Flash Player, но в целом пока не достаточно высока.

Естественно, верить википедии на слово не стоит, а лучше убедиться лично, что я и проделал. Думаю, [info]golergka прекрасно известна многопользовательская игра “Танки онлайн“, в 2009 году ставшая “прорывом года” в использовании Flash.

tanki

Немного поиграл в эту “техническую заслугу” отечественных флешеров. Как игра – вполне приятно, ничего против не имею. Но насчет поразительной 3D-графики – не соглашусь. Графика довольно примитивна и каким-то прорывом является лишь для браузерных игр. А достигается это просто невероятной ценой – на моей не особо “дохлой” машине загрузка процессора достигала, держитесь за стул, 60-70%. Неудивительно – уже лет 10-15 для обсчета сложных 3D-сцен применяют либо очень низкоуровневые языки (вплоть до “оптимизации” на уровне ассемблерных кодов), либо специализированные графические процессоры. Flash не имеет доступа ни к тому, ни к другому.

В общем, по уровню графики все это напомнило мне виденную еще в начале 2000-х “игрушку” с паровозиком, сделанную фирмой Parallel Graphics для демонстрации возможностей своего VRML-браузера.

parovoz

К сожалению, на новом сайте Parallel Graphics эту демку уже не так легко найти, да и онлайн-версия почему-то не работает. Зато сохранилась версия в виде архива, которую я и выложил у себя на сайте для всех железнодорожных симмеров и прочих извращенцев.

Для работы потребуется VRML-плагин, причем желательно – Cortona 3D Viewer. Скачать его можно на сайте производителя.

PS Не надо понимать эту запись, как “Flash говно, VRML форева”. Просто мне хочется показать, что в разработке 3D-контента для веба существует не только современный мейнстрим (в виде Flash и софтверного рендера) и не только перспективные разработки (Silverlight, JavaFX), но и “хорошо забытое старое”. Кстати, поддержка асинхронных запросов к серверу в VRML тоже была прописана в стандарте 1997 года (в виде функции CreateVRMLfromURL()), просто применений ей тогда не нашлось.

UPD Почему-то Parallel Graphics не любит браузеры, отличные от IE, хотя их плагин в них прекрасно работает. Видимо, срабатывают ограничения из начала 2000-х.

5 комментариев

  1. [info]golergka пишет:

    Кстати, посмотри подробнее на разработчиков Танков – их главный проект это Альтернатива, 3d-движок на флеше.
    Также, ещё одна причина, по которой я не вижу перспектив для VRML – это более современные 3d-плагины, например, unity. Опять же пример – Джаггернаут.
    И самая веска причина – отсутствие удобных тулзов. При производстве проектов средних масштабов (где вручную забивать координаты в файлы уже не получится, а бюджета на собственную команду тулзовиков ещё нет) это приобретает достаточно серьёзное значение.

    • Отсутствие тулзов???

      Посмотри раздел Web 3D Products на сайте Cortona, там эти тулзы лежат, не обновляясь с 2000 года :) Ну и любой 3D-редактор прекрасно экспортирует в VRML, даже сохраняя названия объектов – очень удобно для последующего написания скриптов.

      Ну а вообще, мы говорим про разные параллельные миры :) Там, где используют VRML (инженерная и научная графика), либо понятия не имеют о Flash/Unity/…, либо предпочитают VRML, как стандарт ISO, а там, где используют Flash – про VRML вообще не знают.

      Перспективы слабые по другой причине – за VRML с 1998 года не стоит ни одной крупной фирмы (SGI, продвигавшая этот формат, в 1998 реструктурировалась и отдала поддержку формата какой-то скоро обанкротившейся фирме), а всякие Cortona или Blaxxun совсем не заинтересованы в совместимости своих продуктов (скорее наоборот – они предлагают “решения под ключ” для всевозможных систем технической документации).

    • Ну а 3D-движки на флеше – это реальное извращение, в чем я и убедился. 60-70% загрузки процессора – это неприлично.

  2. norvog пишет:

    Меня на флэше в свое время приятно удивила качеством графики Phosphor
    http://www2.rasterwerks.com/game/phosphor/beta2.asp

    • Это не Flash, это Shockwave – там рендер действительно сделан на DirectX или OpenGL. Хотя графика все равно недалеко ушла от первого-второго Квейка :)

      Для веба, согласен, более чем прилично.