2016-07-12 3 views
1

Я новичок в программировании графики, и мне приходится отображать лица в 3D для проекта в моем университете. Для молнии и затенения и прочее мне нужны нормали вершин, и по некоторым причинам они отсутствуют в нескольких объектных файлах, которые я использую. Я искал эту тему в течение нескольких дней, так что вы, ребята, (моя последняя надежда): Есть ли инструмент, где я в основном просто вставляю свой obj-файл и вычисляет недостающие нормали и сохраняет их в файле? Я знаю, что я мог бы рассчитать нормали сам, но это сэкономит много времени, если мне не нужно. Большое спасибо за любую помощь!Сохранение нормалей вершин в файле obj

+0

Я думаю, что вы предоставили очень мало информации, и вы ожидаете слишком много .. здесь, на SO, вы задаете вопрос типа (почти всегда). У меня есть этот код, и это не работает .. или я получаю такую ​​ошибку. этот вопрос, вероятно, будет закрыт как слишком широкий - пожалуйста, предоставьте некоторую дополнительную информацию, как формат объектного файла, - это объектные файлы C++ (это звучит странно. У меня мало знаний о реализации 3D-графики), используете ли вы какой-то графический движок? позаботьтесь о том, чтобы поделиться своим кодом. – nayana

ответ

0

Ну, если вы уже загружаете файл obj и разбираете его, вы можете также вычислить нормали одновременно. Если нет версальных нормалей, просто сделайте немного Cross (AB, BC) .Normalize() и сохраните это на треугольник (или квадрат). Если вы хотите, чтобы нормальная вершина вы могли усреднить все нормали над вершиной, например. если вершина является частью 5 треугольников, добавьте 5 нормалей к этой вершине, а затем разделите на 5, чтобы вы имели нормальную вершину. Возможно, потребуется дополнительная структура промежуточных данных, но должна быть достаточно простой.

Если вам разрешено использовать библиотеки, ASSIMP - это библиотека, которую я использовал для разбора различных форматов файлов в единый формат. Вероятно, они посчитают для вас нормали. Но так как это для университетского графического класса, вы, вероятно, должны сами выполнить эту работу.

Смежные вопросы