Надежда отечественного геймдева 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, но в целом пока не достаточно высока.
Естественно, верить википедии на слово не стоит, а лучше убедиться лично, что я и проделал. Думаю, golergka прекрасно известна многопользовательская игра «Танки онлайн«, в 2009 году ставшая «прорывом года» в использовании Flash.
Немного поиграл в эту «техническую заслугу» отечественных флешеров. Как игра — вполне приятно, ничего против не имею. Но насчет поразительной 3D-графики — не соглашусь. Графика довольно примитивна и каким-то прорывом является лишь для браузерных игр. А достигается это просто невероятной ценой — на моей не особо «дохлой» машине загрузка процессора достигала, держитесь за стул, 60-70%. Неудивительно — уже лет 10-15 для обсчета сложных 3D-сцен применяют либо очень низкоуровневые языки (вплоть до «оптимизации» на уровне ассемблерных кодов), либо специализированные графические процессоры. Flash не имеет доступа ни к тому, ни к другому.
В общем, по уровню графики все это напомнило мне виденную еще в начале 2000-х «игрушку» с паровозиком, сделанную фирмой Parallel Graphics для демонстрации возможностей своего VRML-браузера.
К сожалению, на новом сайте Parallel Graphics эту демку уже не так легко найти, да и онлайн-версия почему-то не работает. Зато сохранилась версия в виде архива, которую я и выложил у себя на сайте для всех железнодорожных симмеров и прочих извращенцев.
Для работы потребуется VRML-плагин, причем желательно — Cortona 3D Viewer. Скачать его можно на сайте производителя.
PS Не надо понимать эту запись, как «Flash говно, VRML форева». Просто мне хочется показать, что в разработке 3D-контента для веба существует не только современный мейнстрим (в виде Flash и софтверного рендера) и не только перспективные разработки (Silverlight, JavaFX), но и «хорошо забытое старое». Кстати, поддержка асинхронных запросов к серверу в VRML тоже была прописана в стандарте 1997 года (в виде функции CreateVRMLfromURL()), просто применений ей тогда не нашлось.
UPD Почему-то Parallel Graphics не любит браузеры, отличные от IE, хотя их плагин в них прекрасно работает. Видимо, срабатывают ограничения из начала 2000-х.