2016-01-17 12 views
0

Я хочу экспортировать мою сцену threeJS в файл STL. Я использую этот консигнант: https://gist.github.com/kjlubick/fb6ba9c51df63ba0951fЭкспорт трех сценариев JS в файл STL приводит к очень большому размеру файла

Моя проблема - размер файла, который я получаю. Например, для 4 сфер (созданных с помощью new THREE.SphereGeometry(1,32, 32)) у меня есть файл размером 15 МБ, который, на мой взгляд, огромен, если вы считаете, что этот мяч здесь: http://archive3d.net/?a=download&id=469e26a6 составляет менее 0,5 МБ.

Есть ли способ уменьшить размер файла? Почему он настолько велик для всего лишь четырех сфер? Один из способов - создать временные сферы с низким разрешением (new THREE.SphereGeometry(1, 16, 16)) во время экспорта и удалить их впоследствии, но есть ли другой лучший способ?

EDIT: Я совершил ошибку независимо от процесса экспорта, и когда я исправил ее, размер уменьшился до 6 МБ, но он по-прежнему очень большой для всего лишь двух сфер.

Заранее благодарю вас за любое Ваше мнение.

+2

Это природа текстовых форматов 3D. Если у вас много треугольников, файл будет большим. Возможно, вы можете попробовать binary stl: https://en.wikipedia.org/wiki/STL_%28file_format%29#Binary_STL – kovacsv

ответ

1

Выведенный вами экспорт использует ASCII STL format, который по своей природе довольно многословен и занимает значительное количество байтов для хранения одного треугольника. Каждая из ваших сфер будет состоять из нескольких тысяч треугольников. Опции:

  • Используйте двоичный формат файла STL. Это гораздо более компактное представление, использующее 50 байт на грань. По некоторым подсчетам конвертов *, это займет около 0,1 МБ на сферу. Репозиторий three.js имеет номер binary STL exporter example.
  • Уменьшите числовую точность, которую вы используете для экспорта своих номеров. Если вы экспортируете цифры, такие как 0.1, а не 0.100001, для сохранения результата потребуется меньше символов (но вы потеряете точность).
  • Используйте меньше треугольников, чтобы составить свои сферы, как обсуждалось в вопросе.
  • Если вы действительно действительно отчаянно пользуетесь ASCII, вы также можете попробовать удалить некоторые ненужные пробелы в пробелы, которые создает экспортер, но это приведет к незначительным улучшениям.

* Предполагая, 32 * 32 * 2 треугольников в сфере, 32 * 32 * 2 * 50 = ~ 100e3 = ~ 0.1Mb ​​

+0

спасибо за ваш ответ. 1. Binary stl - отличная идея, но там нет ни одного двоичного экспортера, но я сейчас борюсь за разработку самостоятельно. Я пропустил какой-нибудь js stl bin. экспортер? 2. Я попробовал вашу идею, но это дало мне небольшие результаты по размеру. – ThanosSar

+0

3. Я сделал это, и это действительно помогло! – ThanosSar

+0

4. Я не отчаянно использую ascii, у меня просто нет двоичного экспортера. – ThanosSar