Кельник
Компания
34,89
рейтинг
22 октября 2013 в 15:38

Разработка → Неигровое применение Unity3D и Oculus Rift

На Хабре очень мало статей, посвящённых неигровым применениям Unity3D. Мы решили исправить эту досадную ситуацию и рассказать о том, как мы делали (и продолжаем делать) онлайн-планировщик квартир (да-да, очередной!) с рендерингом качественных изображений на серверной стороне и интеграцией с Oculus Rift.

По нашим прикидкам, материала набирается на добрый десяток статей, поэтому мы немного расскажем о самом проекте, а вы выбирайте, какую тему раскрыть подробнее.

Disclaimer: все изображения в статье — либо скриншоты из браузера, либо автоматически сгенерированы на сервере, и не имеют никакой пре- или пост-обработки.



Как мы много лет занимались другим


Длинная предыстория для любопытных

От TurnTool к Unity3D


3D-интерактивом мы занимались давно, до 2006 года используя Flash и TurnTool. Например, ещё в 2006 мы руками собрали квартиру с интерактивом для петербургского ТЦ «Грэйт» (до сих пор работает, но только в IE). Для того времени — крутейшая штука, с раскладывающимся диваном и меняющимися текстурами.

Интерактивная квартира на TurnTool, 2006 год

После 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 или HTML5 с тем же качеством картинки. И даёт значительно более высокое качество картинки, чем решения на Flash с той же скоростью работы.

Видео ниже показывает качество картинки (лучше смотреть в HD, fullscreen, с настройкой «Scaling is Off»).



Как другие планировщики выглядят в браузере

Apartama. Unity3D, быстро, малокачественно, 8 углов обзора с прогулкой.


AutoDesk Homestyler. Flash, медленно, среднекачественно, 8 углов обзора без прогулки.


FloorPlanner. Flash, медленно, среднекачественно, свободно без прогулки.


IKEA Planner. Собственный плагин, медленно, малокачественно, дискретные углы обзора.


Outline3D. Собственный плагин, медленно, малокачественно, свободно с прогулкой.


Planner5D. HTML5, среднебыстро, среднекачественно, свободно с прогулкой.


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-режим с применением NVidia 3D Vision.

А потом появился он — шлем 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-ветеранов в первую очередь.

Upd: Кстати, в комментариях появился один из отцов-разработчиков «Планоплана», FoxUmkov — респекты и вопросы можно адресовать ему непосредственно.
Я хочу узнать подробнее:

Проголосовало 610 человек. Воздержалось 207 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Автор: @Heath
Кельник
рейтинг 34,89
Компания прекратила активность на сайте

Комментарии (41)

  • +2
    Проголосовал за второй вариант, но вообще я бы хотел узнать подробнее обо всём. Неудобно что в режиме прогулки по квартире, чтобы повернуть нужно зажать кнопку мыши. Было бы прикольно, чтобы в этом режиме приложение вело себя как шутер. Вроде в Unity есть функционал, позволяющий вернуть курсор мыши по эскейпу (на случай если понадобится снова взаимодействовать с интерфейсом).
    • 0
      Пока что популярность тем примерно одинаковая, так что будем постепенно рассказывать обо всём.
  • 0
    Вас в свое время не смутила низкая распространенность плагина и тотальная боязнь народа что-то стороннее ставить?
    Потому что именно из-за этого многие все еще сидят на флэше.
    • +1
      Опасения были и они даже оправдались на нашей игре Turbodrive в Вконтакте, но рост популярности Unity3d пересилил.
    • 0
      Наша практика показывает, что а) боязнь сильно преувеличена, и б) есть ряд применений, когда поставить плагин вообще не является проблемой. Например, если это дизайнер интерьеров и ему нужен инструмент. Или если это ноутбук сотрудника компании, использующей планировщик для стимулирования продаж.

      Так что мы за пять лет только укрепились в мнении, что Unity3D — это лучший выбор. Особенно с теми возможностями, которые они всё больше и больше дают для живого интерактива (типа интеграции с тем же Oculus).
  • 0
    Очень здорово! =)
    Помню около 4-5 лет назад пробовал пользоваться IKEA Planner'ом — кололся, плакал, но других альтернатив на тот момент особо не было.
    А ваше решение — это просто сказка как в плане функциональности, так и в плане выдаваемой картинки.
  • 0
    Было бы интересно узнать сколько человек в команде и как тестируете продукт перед релизом?
    • 0
      Привет, Сергей! Приятно видеть коллег. Насчёт тестирования попрошу ответить джедая, FoxUmkov.

      Насчёт «сколько человек» сложно ответить, поскольку продукт внутри агентства делается. Три постоянных программиста + один моделер, которые работают только над «Планопланом». И куча людей, которые привлекаются под задачи — дизайнеры, верстальщики, дизайнер интерьеров, 3D-спецы, и так далее.
      • 0
        Кстати у вас крутая система материалов, понравилось обозначение частей объекта.
    • 0
      Тестирование производится на отдельном сервере, с полностью повторяющимся функционалом. Перед выкладкой на тестовый сервак прогоняются автотесты. На тестовом сервере новые фичи тестируются нашими колегами. Так проходит несколько итераций и уже потом выкладываем все на боевой. Ну а дальше тестируют уже наши пользователи, а нам остается только смотреть на логи и проверять стабильность.
  • 0
    Какие планы с поддержкой линукса?
    Как вы получаете модели продающейся мебели? Делаете по фото или производитель предоставляет чертежи?
    • +1
      Тут, как мы написали, мы заложники технологии. Unity3D пока что молчат, как партизаны, насчёт веб-плеера под *nix. Поэтому если они не выпустят веб-плеер, мы выпустим скачиваемое с сайта полнофункциональное standalone-приложение, которое будет требовать подключения к Интернету, чтобы к базе обращаться. Оно у нас уже тестируется, портирование делается очень легко.

      Отмоделить мы можем как угодно, но самое предпочтительное — модели от производителя + фото. Модели потом всё равно приходится дотачивать в низкополигональное состояние.
  • 0
    Ребята, в вебе выглядит круто, а приложение под iOS планируете?
    • 0
      Да, чуть позже — планируем. Всё, что связано с движком, элементарно портируется (это видно в конце ролика, который встроен в статью). Основная заморочка выпуска приложения под iOS (думаю, что у Planner5D та же) — это сделать нормальный интерфейс под тач и сделать хороший маркетинг в AppStore. В 2014 году надеемся запустить.
      • 0
        Согласен. Во Flash такая же ситуация — можно просто выгнать. Но это довольно бессмысленно. Нужно делать другой интерфейс.
      • 0
        А с Андроидом что, не подскажете? планируете выпуск?
  • +1
    Привет, коллеги, я из Realaxy. Да, прикольно получается. Видел уже ваш проект раньше.

    Вообще, странно получается, что в одной России 3 проекта на эту тематику на трех разных технологиях. Это не считая уже почивших в бозе. К чему бы это?

    И да, производительность всех трёх технологий примерно одинакова. Ну, может JS чутка тупее остальных, но основа производительности всё-таки лежит в аппаратной поддержке, т.е. за пределами выбранной технологии.
    • 0
      Привет, Иван! У нас тут уютный чатик получается. :) Насчёт трёх проектов на трёх технологиях — я думаю, это чтобы весь мировой рынок по всем трём технологиям накрыть.

      На наш взгляд (и многих пользователей), Unity3D-таки быстрее при прочих равных, и мы будем отстаивать это мнение до потери пульса. А вот достоинства и ограничения каждой из технологий, как мне кажется, в конечном счёте повлияют на область применимости и маркетинг каждого продукта.
    • 0
      Основа может и лежит в аппаратной поддержке, а вот как реализована эта аппаратная поддержка и функционал в том или ином движке? Разработчики Unity постоянно работают над улучшением производительности. Думаю, что вопрос производительности — это отдельная тема для споров, и каждый будет отстаивать свое.
      • 0
        Ну, я спорить не буду, потому, что как раз не сильно заморачиваюсь на тему производительности. Даже +-20% или даже +-200% роли могут вовсе не сыграть. Думаю, что в итоге закон Мура свое дело сделает. А важны другие вещи, часто даже от вопросов разработки весьма далёкие, не то что от нюансов производительности.
  • 0
    Ребята я понимаю вопрос который я задам может быть наивным, но можно ли сохранить созданную комнату для дальнейшего использования в 3д редакторах. Ну или хотябы как .obj?
    • 0
      Да, эта функция реализована, и сейчас тестируется. Сохранение будет в формате .obj.
  • +1
    Очень здорово!
  • 0
    О! Ссылка на мою статью :)
    Обязательно расскажите о создании контурных объектов, расчёте пересечения плинтусов и триангуляции. Очень интересные темы.
  • +1
    Замечательный проект! А скажите, что на рендер-сервере крутится?
    • 0
      Расскажем в следующих статьях. Там хитрая связка с Vray.
      • 0
        Жду с нетерпением=) Очень актуальная тема для меня.
  • 0
    Такая ситуация: стена делиться на две части разной толщины, в одной из комнат стена на стыке частей — ровная (т.е. одна половина «в торец» с другой). На данный момент у вас выравнивание разных по толщине (но стыкующихся друг с другом) стен «по середине». Возможно ли как-то выровнять такие стены «по краю»? Надеюсь смог объяснить проблему.
    • 0
      Можно выровнять как угодно. Для этого есть специальный параметр «Смещение» в свойствах стены.
      image
  • 0
    Пока что подобный функционал есть только в AutoDesk.


    А разве у Benley нет ничего похожего?
    • 0
      А можно ссылку? (И простите за серость...)
      Может коллеги видели, лично я не сталкивался.
      • 0
        Извините, я опечатался — Bentley.
        • 0
          Это что-то очень далёкое от онлайна и от масс-маркета, нет? Я так понимаю, это нишевые b2b-решения?
          • 0
            Да нет, это массовый САПР.
  • 0
    Плагин падает в хроме и лисе на win7x64. Вы про это говорили, что никак не можете победить? :)
    • 0
      Если падает на большом проекте при переходе в 3Д — то да.
  • 0
    Нет, падает сразу.
    joxi.ru/5ptoUtg5CbAIYijvn2w

    Дома всё работает. Тоже win7x64
    • 0
      А что говорит лог C:\Users\username\AppData\Local\Temp\UnityWebPlayer\log\log_UNIQUEID.txt?
      • 0
        Есть только путь. Самого лога нет :(
  • 0
    Отличный сервис, наконец-то добрался его потестировать.

    Могу сказать, что очень не хватает функции загрузки чертежа квартиры фоном и отрисовка плана по нему, как это сделано в программе sweethome 3D. Очень удобно для квартир с большим количеством кривых углов. В таком случае нарисовать более-менее точный план кватриры, как мне кажется, просто невозможно. Или есть способ?

    А еще он в хроме у меня отказывается работать.
    • +1
      «подложку» нашёл :) она в правом нижнем углу

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка