.obj Модели и нормали

Я работаю над Three.js уже месяц, в основном изучаю, как он работает и что я могу сделать. Теперь я пытаюсь устроить Car Expo, загружая модели автомобилей.obj. Моя проблема в том, что некоторые лица машины не видны с некоторых точек зрения, как на этом изображении.

Я использую Maya 2012 и Blender 2.5, чтобы работать с моделями, неуместно пытаясь столкнуться с нормали или свернуть их, но ничего не получается. Для загрузки я использую загрузчик.obj и mtl в хранилище.

Надеюсь, вы можете помочь мне, спасибо заранее.

https://f.cloud.github.com/assets/3899568/507362/4e3a7bf0-bd6e-11e2-8a54-47b1949bba69.jpg

2 ответа

Решение

Проблема не в нормалях и не в текстурных координатах. В настоящее время существует ограничение WebGL, в котором вы можете ссылаться только на 65 тыс. Вершин для каждого вызова отрисовки, если вы используете gl.DrawElements и текущая реализация OBJMTLLoader делает. Так что вашу модель автомобиля (кстати, отличную модель) нельзя рассматривать как есть. Вы должны разделить это. Вы можете посмотреть в three.js / utils / converters / obj / split_obj.py. Но есть проблема со сценарием, задокументированная по адресу https://github.com/mrdoob/three.js/issues/2397. Так что вы не сможете увидеть материалы. Поэтому экспортируйте многие модели из Maya или Blender и убедитесь, что результирующий объект не имеет индекса лица, превышающего 65535. В противном случае снова разделите.

Также в следующем выпуске (three.js r59) я полагаю, что будет функция NormalHelper, чтобы вы могли просматривать свои нормали.

Смотрите миграцию с r49 на r50:

Координаты текстуры больше не переворачиваются в геометрии, вместо этого текстуры имеют свойство flipY (по умолчанию true); все модели должны быть реэкспортированы / реконвертированы (также были обновлены инструменты). Обходной путь: ув.v = 1 - ув.в;

У меня была похожая проблема, установив flipY в false, чтобы текстура решила ее.

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