Каков текущий статус форматов сетки JSON в three.js?

Общий вопрос: какой стабильный формат JSON для загрузки 3D-моделей широко используется в настоящее время?

Расширенный вопрос:

Я программист, работаю с WebGL, особенно с языком программирования Elm. Я рассматривал различные форматы моделей, и мне кажется, что использование формата JSON three.js в качестве своего рода стандарта имеет большой смысл для моего проекта (и, возможно, для языка в целом).

Однако на github three.js говорится, что версия 3 языка модели скоро будет прекращена.

Итак, я хотел бы знать текущий статус формата модели, прежде чем конвертировать. Является ли версия 3 стабильной на данный момент? Версия 4 вышла? Будет ли формат модели версии 4 или его заменит формат геометрии? Являются ли грядущие изменения настолько серьезными, что принятие формата в данный момент — плохая идея?

Я видел новые классы ObjectLoader, как они связаны с форматами сетки Json? Это формат, в который я могу конвертировать .obj?


person jmite    schedule 21.05.2014    source источник


Ответы (2)


Чтобы продолжить мой пост на github:

Честно говоря, я не думаю, что можно с уверенностью сказать, что версия 3 никогда не была слишком стабильной. 3 всегда были проблемы, и класс SceneLoader, который поддерживает, стал неудобным в обслуживании. Теперь 4 довольно стабильна, только не хватает поддержки текстур. Это нормально для объектов, геометрии и материалов, но пока нет экспортера (о котором я знаю).

Теперь, я думаю, вас больше всего интересует фактический формат модели, а именно: https://github.com/mrdoob/three.js/wiki/JSON-Geometry-format-4#example-of-geometry

Честно говоря, реальный формат геометрии не сильно изменился, насколько я могу судить. Большое изменение между 3 и 4 (пока что) — это форматирование сцены. На самом деле геометрия анализируется с помощью класса JSONLoader. Фактически, через пару дней я передал в ветку dev новый пример файла для сжатых msgpack сцен JSON. https://github.com/mrdoob/three.js/blob/dev/examples/webgl_loader_msgpack.html

msgpack — это просто сжатие JSON, поэтому при декодировании это объект JSON. Этот файл msgpack был преобразован из three.js/blob/dev/examples/scenes/robo_pigeon.js.

Эта сцена представляет собой формат сцены версии 4. Каждая запись в таблице "геометрии" на самом деле является форматом встроенной геометрии. Этот формат также может жить во внешнем файле. Если вы сравните его с первой ссылкой, вы увидите, что форматы одинаковы. Файлы геометрии можно индивидуально загружать в сцену с помощью JSONLoader.

Теперь вы спросили о конвертерах: взглянув на convert_obj_three.py, он говорит «версия модели JSON» в документации, поэтому я собираюсь предположить, что он выдает базовый формат геометрической модели, а не формат сцены, поэтому это может быть полезно. Даже экспортер блендера может по-прежнему экспортировать сцены совместимой геометрии (оставьте флажок «Сцена» отмеченным). Откуда я знаю? Поскольку геометрия, которую я использовал для robo_pigeon.js, была получена от этого экспортера, мне просто пришлось создать сцену версии 4 вручную.

Это начинает отвечать на ваш вопрос?

person repsac    schedule 21.05.2014

По словам mrdoob, он планирует изменить формат геометрии, но на данный момент формат модели версии 3 отлично работает в сцене версии 4, потому что ObjectLoader передает определения геометрии (модели) в JSONLoader. Таким образом, до тех пор, пока не будет определен новый формат и не будет обновлен JSONLoader, модель версии 3 является текущей.

Еще одно замечание: загрузчики сцен (SceneLoader, ObjectLoader) изначально не загружают геометрию. Они всегда отправляют задачи правильному классу. Не уверен, поддерживается ли он еще в версии 4, но в версии 3 вы можете напрямую связать сцену с файлами OBJ. И говоря о файлах OBJ, если вы только начинаете работать с three.js и имеете ресурсы в OBJ, то рассматривали ли вы возможность работы непосредственно с OJBLoader?

person repsac    schedule 21.05.2014