mirror of
https://github.com/aimrebirth/tools.git
synced 2026-04-15 01:43:25 +00:00
Fix mmp_extractor.
This commit is contained in:
parent
541c3a0a89
commit
5c8565d9d1
4 changed files with 27 additions and 5 deletions
|
|
@ -107,7 +107,7 @@ std::string buffer::read_string(uint32_t blocksize) const
|
||||||
std::wstring buffer::read_wstring(uint32_t blocksize) const
|
std::wstring buffer::read_wstring(uint32_t blocksize) const
|
||||||
{
|
{
|
||||||
std::vector<uint16_t> data(blocksize);
|
std::vector<uint16_t> data(blocksize);
|
||||||
_read(data.data(), data.size());
|
_read(data.data(), data.size() * sizeof(wchar_t));
|
||||||
return (const wchar_t *)data.data();
|
return (const wchar_t *)data.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ void mmp::load(const buffer &b)
|
||||||
void mmp::load(const std::string &fn)
|
void mmp::load(const std::string &fn)
|
||||||
{
|
{
|
||||||
filename = fn;
|
filename = fn;
|
||||||
buffer b(read_file(filename, true));
|
buffer b(read_file(filename));
|
||||||
load(b);
|
load(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,6 +175,8 @@ void mmp::process()
|
||||||
texmap = decltype(texmap)(h.width, h.length);
|
texmap = decltype(texmap)(h.width, h.length);
|
||||||
texmap_colored = decltype(texmap_colored)(h.width, h.length);
|
texmap_colored = decltype(texmap_colored)(h.width, h.length);
|
||||||
colormap = decltype(colormap)(h.width, h.length);
|
colormap = decltype(colormap)(h.width, h.length);
|
||||||
|
shadowmap = decltype(shadowmap)(h.width, h.length);
|
||||||
|
normalmap = decltype(normalmap)(h.width, h.length);
|
||||||
|
|
||||||
h_min = std::numeric_limits<Height>::max();
|
h_min = std::numeric_limits<Height>::max();
|
||||||
h_max = std::numeric_limits<Height>::min();
|
h_max = std::numeric_limits<Height>::min();
|
||||||
|
|
@ -208,6 +210,8 @@ void mmp::process()
|
||||||
|
|
||||||
texmap_colored(y_rev, x1) = textures_map_colored[t];
|
texmap_colored(y_rev, x1) = textures_map_colored[t];
|
||||||
colormap(y_rev, x1) = data.Colormap[p];
|
colormap(y_rev, x1) = data.Colormap[p];
|
||||||
|
shadowmap(y_rev, x1) = *(uint32_t*)&data.Shadowmap[p];
|
||||||
|
normalmap(y_rev, x1) = *(uint32_t*)&data.Normalmap[p];
|
||||||
|
|
||||||
auto length = data.Heightmap[p];
|
auto length = data.Heightmap[p];
|
||||||
h_min = std::min(h_min, length);
|
h_min = std::min(h_min, length);
|
||||||
|
|
@ -331,3 +335,15 @@ void mmp::writeColorMap()
|
||||||
auto fn = filename + ".colormap.bmp";
|
auto fn = filename + ".colormap.bmp";
|
||||||
write_mat_bmp(fn, colormap);
|
write_mat_bmp(fn, colormap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mmp::writeShadowMap()
|
||||||
|
{
|
||||||
|
auto fn = filename + ".shadowmap.bmp";
|
||||||
|
write_mat_bmp(fn, shadowmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mmp::writeNormalMap()
|
||||||
|
{
|
||||||
|
auto fn = filename + ".normalmap.bmp";
|
||||||
|
write_mat_bmp(fn, normalmap);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ struct segment
|
||||||
mini_lod mlod;
|
mini_lod mlod;
|
||||||
Height Heightmap[size];
|
Height Heightmap[size];
|
||||||
info Infomap[size];
|
info Infomap[size];
|
||||||
color Colormap[size];
|
color Colormap[size]; // diffuse color of material
|
||||||
shadow Shadowmap[size];
|
shadow Shadowmap[size];
|
||||||
normal Normalmap[size];
|
normal Normalmap[size];
|
||||||
};
|
};
|
||||||
|
|
@ -185,6 +185,8 @@ struct mmp
|
||||||
mat<uint32_t> texmap;
|
mat<uint32_t> texmap;
|
||||||
mat<uint32_t> texmap_colored;
|
mat<uint32_t> texmap_colored;
|
||||||
mat<uint32_t> colormap;
|
mat<uint32_t> colormap;
|
||||||
|
mat<uint32_t> shadowmap;
|
||||||
|
mat<uint32_t> normalmap;
|
||||||
|
|
||||||
void load(const buffer &b);
|
void load(const buffer &b);
|
||||||
void load(const std::string &filename);
|
void load(const std::string &filename);
|
||||||
|
|
@ -200,4 +202,6 @@ struct mmp
|
||||||
void writeTextureAlphaMaps();
|
void writeTextureAlphaMaps();
|
||||||
void writeTextureMapColored();
|
void writeTextureMapColored();
|
||||||
void writeColorMap();
|
void writeColorMap();
|
||||||
|
void writeShadowMap();
|
||||||
|
void writeNormalMap();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -48,10 +48,12 @@ try
|
||||||
//m.writeTexturesList();
|
//m.writeTexturesList();
|
||||||
m.writeHeightMap();
|
m.writeHeightMap();
|
||||||
//m.writeHeightMapSegmented();
|
//m.writeHeightMapSegmented();
|
||||||
/*m.writeTextureMap();
|
m.writeTextureMap();
|
||||||
m.writeTextureAlphaMaps();
|
m.writeTextureAlphaMaps();
|
||||||
m.writeTextureMapColored();
|
m.writeTextureMapColored();
|
||||||
m.writeColorMap();*/
|
m.writeColorMap();
|
||||||
|
m.writeShadowMap();
|
||||||
|
m.writeNormalMap();
|
||||||
};
|
};
|
||||||
|
|
||||||
path p = argv[1];
|
path p = argv[1];
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue