Gildor's Forums

Author Topic: Ошибка (?) при распаковке текстур в TGA  (Read 4914 times)
ID-Daemon
Newbie
*
Posts: 25


View Profile
Ошибка (?) при распаковке текстур в TGA
« on: February 02, 2014, 15:39 »

Добрый день.

Похоже что при распаковке текстур Bioshock Infinite, а конкретно Normal Map'ов, в TGA, красный и синий слои меняются местами, в итоге текстура как бы выворачивается наизнанку.

То есть, если я распаковываю одну и ту же текстуру в форматах DDS и TGA, они получаются разные, а должны быть одинаковые.

Проверьте пожалуйста.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #1 on: February 02, 2014, 17:39 »

Добрый день.
Скорее всего вы чем-то не тем открываете tga. Я в tga ничего не менял уже несколько лет, оно не может вдруг просто так перестать работать.
Если вы всё-таки уверены, что что-то не так - назовите название пакета и название текстуры, я посмотрю.
Logged
ID-Daemon
Newbie
*
Posts: 25


View Profile
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #2 on: February 02, 2014, 18:50 »

Дело тут не в TGA, а в переводе карты нормалей если я правильно понимаю. Я думаю просто никто не пробовал до этого их вставлять обратно в игру и поэтому не заметили разницы.

Например пакет  DCOM_AtriumLower
Файл  Clothing_Draped_NORM.tga
и соотв. Clothing_Draped_NORM.dds

Чем бы я его не открывал, DDS получается не такой как TGA, а именно каналы переставлены местами. Это не очень заметно сразу, так как вся картинка в целом фиолетовая, но если присмотреться, видно что цвета перепутаны.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #3 on: February 02, 2014, 20:07 »

Эта текстура в формате BC5 (ATITC). Честно говоря, я не смог открыть dds. Paint.NET открывает DDS, но только не в этом формате. Текстуры в таком формате порддерживаются отчасти на уровне шейдеров - этот формат содержит только 2 цветовых компоненты, и 3я должна быть вычислена.

TGA выглядит нормально.
Logged
ID-Daemon
Newbie
*
Posts: 25


View Profile
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #4 on: February 04, 2014, 22:55 »

DDS можно открыть любым DDS view-ером, в т.ч. фриварным, либо сконвертировать в TGA програмкой, которую бесплатно предоставляют сами NVIDIA. Может это и редкий формат, тем не менее, ваш распаковщик как-то конвертирует его в таргу, и после этого он выглядит так как слева, а DDS, распакованный им же, выглядит как справа.



Как видите, каналы перепутаны.
« Last Edit: February 04, 2014, 22:57 by ID-Daemon » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #5 on: February 04, 2014, 22:59 »

Чем открывали DDS?
Logged
ID-Daemon
Newbie
*
Posts: 25


View Profile
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #6 on: February 05, 2014, 13:08 »

Открывал:
- Free DDS File Viewer
- NVidia plugin для фотошопа
- NVidia Windows Texture Viewer
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #7 on: February 05, 2014, 13:30 »

Ok. Какая текстура по-вашему правильная? dds или tga? Посмотрю что можно сделать.
Logged
ID-Daemon
Newbie
*
Posts: 25


View Profile
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #8 on: February 05, 2014, 18:53 »

Насколько я могу судить, правильная - DDS, так как она извлекается из игры без изменений (ну если не считать распаковки), я это специально проверял.

TGA же, напротив, конвертируется при распаковке, и где-то в этом процессе происходит замена цветов.
« Last Edit: February 05, 2014, 18:55 by ID-Daemon » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #9 on: February 05, 2014, 20:08 »

Похоже, что проблема всё-таки в DDS:
https://code.google.com/p/nvidia-texture-tools/issues/detail?id=41

Я сделал несколько тестов (часть из них была сделана давно, когда я добавил поддержку формата BC5 и DDS). Импортировал одну и ту же текстуру-normalmap в UDK несколько раз как RGB, DXT1, DXT5 и BC5, а потом сделал так, чтобы эта текстура одинаково отображалась в umodel. Единственное что я не смог проверить - BC5 DDS, с которым сейчас проблема.

Судя по всему, есть варианты, в которых R и G меняются местами, и никто толком не понял, когда это делается.
Logged
ID-Daemon
Newbie
*
Posts: 25


View Profile
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #10 on: February 05, 2014, 22:18 »

Спасибо. Похоже проблема в том, что нет однозначного соглашения, в каких компонентах должны храниться X и Y. Вопрос закрыт.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7977



View Profile WWW
Re: Ошибка (?) при распаковке текстур в TGA
« Reply #11 on: February 05, 2014, 22:27 »

Именно так Smiley

Я позже обновлю nvidia texture tools - я использую последний релиз, а он 2010 года. В svn же код постоянно обновляется. Может быть это как-то изменит ситуацию, но уверенности в этом нет.

Если Photoshop и 3ds Max (и другие популярные программы) загружают этот формат с переменой X и Y местами, то я могу сделать принудительную перестановку при экспорте, чтобы совпадало с большинством (или со всеми?) программ. Пока что были проверки только в нескольких DDS viewer-ах. К сожалению у меня сейчас не установлен полный DirectX SDK, там тоже должна быть утилита для визаулизации DDS, от Microsoft. Не мешало бы ей тоже проверить.
Logged
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS