TypeScript должен неплохо пойти после опыта с Java. Или же чистый js, да.
В качестве библиотеки для отрисовки 3д можно использовать threejs, для 2д raphaeljs.
На java не стоит писать клиентскую часть веб-приложения, js сейчас умеет практически все, что нужно.
Или же можно взять утилиты вроде Blend4web, на которых можно собрать простенькое приложение с графикой вообще без кода.
Ошибка возникает потому что код ответа надо писать максимум один раз и перед записью тела ответа. Делайте return при ошибке, это прервёт функцию.
JSON лучше всего формировать с помощью модуля encoding/json, тогда избавитесь от этой некрасивой конструкции.
Отрендерить в 3д редакторе пролет камеры вокруг комплекса в виде последовательности изображений высокого разрешения. Сконвертировать полученный материал в видео низкого разрешения через avconv, например (форматы h264 и webm) и в последовательность подготовленных для веба jpg. С помощью javascript обеспечить прелоад видеоролика и его прокрутку по drag'n'drop. При остановке прокрутки подменять видеоролик соответствующей jpg-шкой высокого разрешения.
Blender. Бесплатный, легковесный, много умеет, куча уроков на ютубе.
Вообще, стоит спросить друга, откуда он собирается брать модели для расстановки и исходя из этого выбирать редактор. Потому что поддержка разных форматов моделей везде разная, а просто расставить объекты по сцене можно в любом редакторе.
Если сделать go install на пакет, то все используемые им пакеты скомпилятся и сборка будет быстрее. Удобно так делать если большая часть кода редко меняется.
Нужно создать переменную окружения GOPATH и выставить в её значение путь к вашему дереву исходников go. Не делайте ее равной GOROOT!!!
Потом установить используемые вами пакеты с помощью go get. Например go get github.com/codegangsta/inject
Пакет скачается и его исходники упадут в папку $GOPATH/src
avconv -i input.srt output.ass
или же ffmpeg -i input.srt output.ass
ASS - это не 3d субтитры, это просто формат с большим количеством возможностей, чем srt. Т.е., текст можно позиционировать, стилизовать, итд.
Кавычки выводятся потому что вы у поля Data указали тип json.RawMessage. Этот тип предназначен как раз для отключения парсинга поля, т.е., вывода поля в исходном формате. Если замените json.RawMessage на string, то кавычки исчезнут.