вторник, 19 мая 2015 г.

Wavefront .mtl в Assimp. Shininess

Воспользовавшись тем, что исходные коды Assimp открыты, с описанным выше багом сохранения материалов я разобралась. Однако проблемы на этом не закончились.

В .mtl-файле, описывающем материал, указывается коэффициент зеркального блеска SHININESS. Однако при загрузке материала с помощью Assimp, внутри своего приложения я получала не такое значение, как указано в файле. Методом пристального взгляда я определила, что загружается значение, ровно в четыре раза большее.

Действительно, в коде загрузчика Wavefront Obj нашлась совершенно замечательная строчка:

// multiplying the specular exponent with 2 seems to yield better results
pCurrentMaterial->shineness *= 4.f;

Поиск показал, что эта строчка привела в замешательство далеко не только меня. Но меня привела в замешательство не только и не столько она.

А то, что при этом при сохранении модели и материалов в файлы Wavefront Obj и Mtl - деление не производится. То есть взяли мы модель, загрузили, ничего не делали, сохранили - и материал поменялся.

Комментариев нет:

Отправить комментарий