проблема в том, что при декомпиляции моделей uvw карты съезжают на один пиксель. на hh-pack моделях это ещё не так заметно, а на оригинальных выглядит очень мерзко. какие есть методы борьбы с этим недугом?
или, может у кого имеются оригинальные исходники (из полного хлсдк?) моделей из хл?
текс-коорды храняться, не как флоаты, а как шорты, умноженные на высоту\длину текстуры, поделенную на один.
псевдокод:
C++ Source Code:
1
float s = 1.0f / (float)ptexture[pskinref[pmesh->skinref]].width;
2
float t = 1.0f / (float)ptexture[pskinref[pmesh->skinref]].height;
3
float u = ptricmds[2] * s;
4
float v = ptricmds[3] * t;
ptricmds - это вот тот самый raw-поток шортов, который содержит индекс вертекса, индекс нормали и UV-мап закодированный таким образом.
Конечно при декомпиляции точность теряется.
Кстати, при декомпиляции ещё и анимации нарушаются иногда. Причём хитрым образом - во вьювере перекомпиленная модель выглядит и действует абсолютно нормально, но как дело доходит до игры, особенно, когда NPC действует, руководимый скриптом, то тут что угодно может произойти - он может запнуться на ровном месте и остановиться там навечно, или начинает двигаться медленнее, чем должен был и т. п. В результате исполнение скрипта нарушается и нормальное прохождение игры может стать невозможным.
Добавлено 15-04-2013 в 21:34:
ONeiLL:
Хранятся относительные координаты, которые не меняются, если в модельку вкомпилить текстуру другого размера.