Three.js - BinaryLoader против BufferGeometry для больших сеток?

Я ищу наиболее эффективный способ загрузки больших полигональных сеток (до 1M треугольников) в Three.js. Я рассматриваю либо использование THREE.BufferGeometry объект или загрузка с THREE.BinaryLoader, Мои вопросы:

  • Создает ли BinaryLoader.js THREE.BufferGeometry объект под? Или это создает нечто такое же эффективное?
  • Если нет, есть ли у кого рекомендация, какую из них использовать?

Некоторая дополнительная информация:

  • Мои модели находятся в проприетарном формате на сервере, поэтому мне все равно нужно конвертировать / кодировать их.
  • Я не нашел загрузчик Three.js, который создает THREE.BufferGeometry, Похоже, мне нужно написать свое. Но я могу подготовить данные на стороне сервера для согласования с THREE.BufferGeometry состав.
  • BinaryLoader.js предоставляет всю необходимую инфраструктуру для загрузки данных, но требует, чтобы данные были подготовлены особым образом на стороне сервера.

1 ответ

Взгляните на формат glTF и glTFLoader для Three.js. Он использует BufferGeometry. Производительность намного лучше; тем не менее, он имеет свои собственные реализованные анимации (не использует THREE.Animation), и я столкнулся с несколькими проблемами, связанными с Three.js, такими как клонирование модели не будет работать (по крайней мере, из коробки)

glTF: https://github.com/KhronosGroup/glTF

glTFLoader: https://github.com/mrdoob/three.js/blob/54a1e789c3a84557d6b05782f5cbd9f1064f5e4f/examples/js/loaders/GLTFLoader.js

Другие вопросы по тегам