Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Про одно маленькое извращение

Посетители интернетов “со стажем”, наверное, помнят про язык VRML, появившийся еще в 1997 году и позволявший описывать трехмерные пространства в “читаемом” виде. Практически для каждого браузера существовали плагины, позволявшие встраивать окошко с 3D-контентом на HTML-страницы. Даже я в далеком 2002 году не остался в стороне от использования VRML на домашней страничке и нарисовал в нем какое-то подобие сортира или станции метро “Кузьминки” – почему-то мне очень понравилась текстура кафельной плитки в каком-то VRML-редакторе.

Почему-то совершенно незамеченной в то время осталась возможность VRML-плагинов взаимодействовать со страничкой, в которой они находятся. Web 1.0 тихо исчез, уступив место для динамических сайтов с JavaScript, DHTML и AJAX (все эти три слова означают примерно одно и то же, разница в гламурности). VRML вообще не отличался особыми красотами, анимация там была в зачаточном состоянии (ЕМНИП, делалась она средствами реализованного там же JavaScript, но писать всякие “эффекты” приходилось практически вручную), а о возможности изменения 3D-сцены по полученным откуда-то “снаружи” командам никто не задумывался.

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

В общем, задача состояла в следующем. Есть трехмерная сцена с “лампочками”, которые могут гореть, например, красным, желтым и зеленым – например, представим себе модель перекрестка со светофорами и база данных, даже проще – регулярно обновляющийся XML-файл, в котором записано, каким цветом горит какая “лампочка”. Надо, чтобы трехмерная сцена динамически изменялась, отслеживая изменения в XML-файле, и при этом не требовала никаких действий от пользователя.

Естественно, задача очень легко решается, если отказаться от использования всяких VRML-ных хитростей, а сделать все с использованием обычного HTML и AJAX. С другой стороны, можно управлять VRML-сценой через JavaScript в браузере. Почему-то эта возможность VRML используется настолько редко, что о ее существовании в рунете не упоминают, а в буржуйских интернетах удалось найти лишь перепевы курсовой работы по программированию в университе Нэпира, что находится в доброй старой Англии. Надо ли говорить о том, что про объединие AJAX и VRML не написано вообще ничего? Решается же вышеописанная задача буквально парой десятков строк кода.

Конечно, можно решить ту же задачу тысячей разных способов. Например, можно отображать трехмерные объекты с использованием Flash. Можно использовать не VRML и не V3D, а какой-нибудь гугловский O3D или даже COLLADA. Пожалуй, всерьез использовать это могут только разработчики браузерных говноигр. Кстати, графика в современных VRML-плагинах вполне “на уровне” и не уступает многим более серьезным играм. Ну что, как насчет Lineage прямо в браузере?

PS Кстати, Cortona3D не работает с примером Turtle Graphics. Там требуется совсем небольшая доработка, но раскрывать этот маленький секрет я пока не буду.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: игры, программирование, технологии высокаго пошибу
Subscribe

  • А вот ловите коктейль

    Коктейль «Карибский кризис» — ром (лучше Havana Club) и «Байкал», соотношение какое вам нравится, но 50:50 вполне…

  • 33

    Праздную. Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там или в ЖЖ.

  • Гусары, молчать!

    Пишут, что Sony запатентовала технологию использования любого «неэлектронного» предмета в качестве джойстика и проиллюстрировала патент…

Comments for this post were disabled by the author