На Хабре очень мало статей, посвящённых неигровым применениям Unity3D. Мы решили исправить эту досадную ситуацию и рассказать о том, как мы делали (и продолжаем делать) онлайн-планировщик квартир (да-да, очередной!) с рендерингом качественных изображений на серверной стороне и интеграцией с Oculus Rift.
По нашим прикидкам, материала набирается на добрый десяток статей, поэтому мы немного расскажем о самом проекте, а вы выбирайте, какую тему раскрыть подробнее.
Disclaimer: все изображения в статье — либо скриншоты из браузера, либо автоматически сгенерированы на сервере, и не имеют никакой пре- или пост-обработки.
Как мы много лет занимались другим
От TurnTool к Unity3D
3D-интерактивом мы занимались давно, до 2006 года используя Flash и TurnTool. Например, ещё в 2006 мы руками собрали квартиру с интерактивом для петербургского ТЦ «Грэйт» (до сих пор работает, но только в IE). Для того времени — крутейшая штука, с раскладывающимся диваном и меняющимися текстурами.
После TurnTool мы начали мучить VirTools, на которой разработали онлайн-гонки: сначала на грузовиках, а потом на трековых автомобилях. Критическим ограничением технологии оказалось полное отсутствие серверной части, которую пришлось писать самостоятельно.
Игра на Unity3D
Поэтому, наконец, в 2009 году мы приступили к освоению Unity3D, тогда ещё версии 2.0, и через некоторое время окончательно перешли на него и полностью перенесли на новый движок нашу онлайн-гонку, TurboDrive.
Игра имела разные трассы, раскраску машинок, обработку коллизий и отваливающиеся от ударов бампера. Она до сих пор работает как приложение ВКонтакте (запускать строго по http, не https!), но уже не развивается. Про TurboDrive можно складывать отдельную эпическую историю шишек, фэйлов и открытий.
История показала, что окончательный переход на Unity3D был правильным решением: TurnTool и VirTools умерли совсем, Flash потерял рынок как инструмент для 3D-интерактива.
От гонок к онлайн-планировкам
Работая над клиентскими проектами, в 2010 году мы сделали первую интерактивную прогулку по квартире на Unity3D для шведского застройщика NCC. В ней можно побродить по квартире, посмотреть на реальный вид из окна и поменять варианты отделки.
Проект оказался успешным, и мы решили все имеющиеся наработки и опыт (а также часть прибыли агентства) вложить в создание онлайн-инструмента для планирования квартир и дизайна интерьеров. Так появился...
Планоплан
За два года с 2011-го мы создали онлайн-планировщик квартир. И не «просто планировщик», а первый планировщик на Unity3D с рендерингом высококачественных изображений на серверной стороне.
Для обычных частных пользователей он работает по freemium-модели — вы можете зарегистрироваться и пользоваться им бесплатно.
В нём есть весь приличествующий функционал типа расставления стенок, навешивания текстур и расстановки мебели — об этом мы рассказывать не будем. Коснёмся только некоторых «фишек», которые стали возможными благодаря Unity3D (и ограничений тоже, так и быть).
Качество картинки в браузере
Благодаря тому, что Unity заточен под производительную 3D-графику, мы получаем отличное качество картинки в браузере без потери скорости. Также стало возможным реалистичное освещение на достаточно производительных компьютерах.
Если раньше в треугольнике «скорость — качество — возможность свободных углов просмотра» можно было выбрать в лучшем случае любые два пункта, то в «Планоплане» можно выбрать все три.
Видны, например, полупрозрачные занавеси. В хромированной ноге кресла отражается вся комната. Есть возможность располагать много оживляющих интерьер аксессуаров: книги, безделушки, апельсины. На одном и том же компьютере приложение Unity3D работает значительно быстрее, чем решения на Flash с тем же качеством картинки. И даёт значительно более высокое качество картинки, чем решения на Flash с той же скоростью работы.
Видео ниже показывает качество картинки (лучше смотреть в HD, fullscreen, с настройкой «Scaling is Off»).
Apartama. Unity3D, быстро, малокачественно, 8 углов обзора с прогулкой.
AutoDesk Homestyler. Flash, медленно, среднекачественно, 8 углов обзора без прогулки.
FloorPlanner. Flash, медленно, среднекачественно, свободно без прогулки.
IKEA Planner. Собственный плагин, медленно, малокачественно, дискретные углы обзора.
Outline3D. Собственный плагин, медленно, малокачественно, свободно с прогулкой.
Planner5D. Flash, среднебыстро, среднекачественно, свободно с прогулкой.
Realaxy. Flash, медленно, суперкачественно, свободно с прогулкой.
Интерактивные элементы
Ровно по той же причине (Unity заточен под производительную 3D-графику) мы смогли сделать так, чтобы в камине горел огонь, радио шуршало, а часы показывали текущее время. Диваны раскладываются, двери открываются и закрываются… В общем, широкое поле для геймификации дизайна интерьеров.
Скриншот из браузера, сполохи камина дают живое «играющее» освещение.
Быстрая математика
В «Планоплане» возможны гнутые стены, фигурные проёмы в стенах, процедурная генерация мешей для создания контурных объектов в помещениях (многоуровневых потолков, фигурных плинтусов, подиумов, балок), правильно рассчитываются пересечения плинтусов, стен и дверных коробок.
Правильные пересечения всех поверхностей.
Пример процедурно генерируемого потолочного плинтуса со сложным профилем.
Положение солнца на небесной сфере (и как следствие, освещение квартиры дневным светом) также может рассчитываться автоматически прямо в браузере в зависимости от заданных координат квартиры и текущего времени суток.
Серверный рендеринг
Пока что подобный функционал есть только в AutoDesk. Мы сделали связку «Unity Web Player → Custom Server → Unity Standalone → Render Server», и теперь нажав в любом месте кнопку можно получить высококачественную картинку. По сути, большинство начинающих и средней руки дизайнеров теперь не нуждаются в услугах специалистов по 3D-графике.
Чтобы протестировать ограничения технологии, мы отрендерили изображение 15 360 × 8 640 пикселей (картинка ниже кликабельна, ведёт на Яндекс.Диск с JPG на 10 МБ). Не бог весть что с точки зрения интерьера, но видно, как во вросшем в столешницу чайнике отражается вся кухня.
Кроссплатформенность и мобильные устройства
В отличие от Flash-планировщиков, «Планоплан» работает везде, где в браузер ставится плагин. То есть, на Windows и MacOS. В Linux пока что работает только standalone-сборка.
Кроме того, мы можем быстро и легко делать из готовых проектов, созданных в онлайне, сборки для мобильных устройств как на iOS, так и на Android (на видео ниже — с 04:00). Это позволяет добавлять интерактивную демонстрацию планировок и интерьеров в мобильные приложения при том же качестве картинки и скорости работы.
Виртуальная реальность
Разработчики Unity3D — люди, достойные памятника при жизни и недвижимости на Гавайях. Они очень быстро начали давать возможности вывода картинки в 3D. Сначала это был 3D-монитор с очками. Было круто, но не сверхкруто.
Это не руки у фотографа дрожат, это включен 3D-режим на мониторе.
А потом появился он — шлем Oculus Rift (на видео ниже — с 00:30). С его помощью мы можем погрузить человека в пространство его будущей квартиры (если он покупает квартиру) или интерьера (если он пользуется услугами дизайнера интерьера, покупает мебель или отделочные материалы).
Технология сносит крышу нам самим и 98,5% посетителей наших стендов на выставках. Остальные 1,5% — зануды, которым не нравится зерно и низкое разрешение.
Кстати, любой желающий сможет увидеть это своими глазами 18–22 ноября в Экспоцентре на выставке «Мебель ’2013» и 30 ноября — 1 декабря в Сокольниках на CG Event.
Ограничения
Полного счастья в жизни нет, конечно. И технология Unity3D, кроме широких возможностей, даёт всего несколько капель дёгтя. Вот полный список того, что мы не смогли победить за полтора года разработки.
- Ограничение памяти в 32-битной версии под Windows и падение 64-битной сборки. Сейчас девелоперы над этим активно работают и обещают скоро исправить, мы держим с ними связь.
- Для мобильных устройств и под Linux нужны отдельные сборки, в браузере это великолепие пока не работает. Остаётся только верить в девелоперов, но пока что обещаний изменить эту ситуацию не звучало.
- К веб-версии нельзя привинтить Oculus Rift, потому что она не позволяет подключать сторонние библиотеки. Верим, что парни из Unity и Oculus как-нибудь договорятся.
И многое другое
В процессе работы нам пришлось пройти длинный путь, и на стенах рядом с некоторыми разработчиками видны вмятины от головы. Голосуйте, о чём вам интересно было бы расспросить наших Unity-ветеранов в первую очередь.
Автор: Heath