воскресенье, декабря 16, 2012

Augmented reality - unity3d webplayer


Существует много разных фреймворков для встраивания дополненной реальности в свои unity3d-проекты, как платных, так и бесплатных. К сожалению, все библиотеки платформозависимы и требуют native-линковку.


Заказчику детской 3d игрушки с управлением через маркеры потребовался подобный функционал в браузере. Казалось бы - нерешаемая задача без вливания денежных средств в покупку существующих решений. Но нашелся порт ARToolkit-фреймворка на яве и от того же автора - порт с явы на C#.
Сразу могу сказать - код ужасен, не учитывает особенности управления памятью CLR (не используются MarshalByValue-типы, исключительно MarshalByRef с сопутствующими фризами при сборке мусора). Так как изобретать велосипед было некогда, код был оптимизирован еще более грязными хаками в наиболее важных частях (получился прирост до 30% от первоначальной скорости) и был отправлен в продакшн.

2 комментария:

Rustam Ganeyev комментирует...

Посмотрел на ar библиотечку - похоже, что работает на маркерах. Почему именно эта либа? Чем не устроил всеми хваленый qualcomm ar?

Leopotam Beast комментирует...

Android / iOS only. Задача стояла получить тот же функционал в обычном браузере, где нейтив запрещен.