Three.js (r64) - Blender JSON экспортирует пропускные нормали для плавного затенения.

Используя Three.js r64, я хотел бы импортировать из Blender анимированный объект с его группами сглаживания, файл экспортируется как JSON через программу экспорта Blender Three.js.

Часть анимации работает нормально.

В Blender модель выглядит нормально (вокруг центральной части есть небольшая группа сглаживания).

Изображение: http://www.defresne.fr/demo/so/three/smooth_shading/gears.png

Я могу добиться того же результата при экспорте в OBJ с отмеченными опциями «Smooth Groups» и «Include Normals». Однако я не могу заставить его работать правильно при экспорте файла JSON (с нормалями). Далее представлены фотографии сцены с живой демонстрацией.

Изображение: (добавить следующую ссылку с помощью) three_gears.png

Живая демонстрация: http://www.defresne.fr/demo/so/three/smooth_shading/

Я тщательно искал в Интернете и не смог найти правильную информацию. Best - это еще один вопрос по SO, который немного устарел (r55) и так и не получил принятого ответа.

Я пытался вычислить нормали объекта с помощью

geometry.computeFaceNormals();
geometry.computeVertexNormals();

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

Итак, каким должен быть правильный подход, чтобы группы сглаживания JSON работали в three.js? Ждать встроенную функцию? построить сам? Изменить экспортера?

Поскольку three.js, похоже, правильно загружает модели OBJ и Collada с группами сглаживания, может быть, я мог бы позаимствовать часть кода из этих загрузчиков, чтобы получить логику?

Спасибо за вашу помощь

[РЕДАКТИРОВАТЬ]

Я только что нашел что-то отличное!

В Blender создайте 2 экспорта модели: первый файл JSON, второй файл OBJ. Загрузите второй онлайн-редактор three.js, затем преобразуйте его, чтобы получить геометрию JSON ... Я могу собрать вершины, нормали и грани этой только что экспортированной геометрии и скопировать их в первый экспортированный файл.

Работает нормально! Получились хорошие группы штриховки. Даже снятие шкуры работает нормально.

Но это утомительный способ обработки, и я хотел бы сэкономить на дополнительных преобразованиях.

Значит ли это, что при экспорте геометрии из Blender возникла проблема? Есть идеи, почему?

Любая помощь будет принята с благодарностью!


person vxdcxw    schedule 11.01.2014    source источник


Ответы (1)


Хорошо, я наконец понял, что происходит.

Экспортер Blender r64 Three.js не экспортирует группы сглаживания, поэтому, если вам нужно сохранить их, нет другого решения, кроме как экспортировать геометрию в файл OBJ, а затем преобразовать его с помощью скрипта python convert_obj_three.py, доступного в рамках Three Репозиторий .js. Конвертированный файл будет иметь правильные нормали. (не забудьте выбрать нормальный вариант при экспорте файла OBJ)

person vxdcxw    schedule 12.01.2014