* support -lightmapsastexcoord conversion to .ase
This commit is contained in:
@@ -140,7 +140,12 @@ static void ConvertSurface( FILE *f, bspModel_t *model, int modelNum, bspDrawSur
|
||||
{
|
||||
v = i + ds->firstVert;
|
||||
dv = &bspDrawVerts[ v ];
|
||||
fprintf( f, "\t\t\t*MESH_TVERT\t%d\t%f\t%f\t%f\r\n", i, dv->st[ 0 ], ( 1.0 - dv->st[ 1 ] ), 1.0f );
|
||||
if ( lightmapsAsTexcoord ) {
|
||||
fprintf( f, "\t\t\t*MESH_TVERT\t%d\t%f\t%f\t%f\r\n", i, dv->lightmap[0][0], ( 1.0 - dv->lightmap[0][1] ), 1.0f ); // dv->lightmap[0][1] internal, ( 1.0 - dv->lightmap[0][1] ) external
|
||||
}
|
||||
else{
|
||||
fprintf( f, "\t\t\t*MESH_TVERT\t%d\t%f\t%f\t%f\r\n", i, dv->st[ 0 ], ( 1.0 - dv->st[ 1 ] ), 1.0f );
|
||||
}
|
||||
}
|
||||
fprintf( f, "\t\t}\r\n" );
|
||||
|
||||
|
||||
@@ -71,17 +71,18 @@ static void ConvertSurfaceToOBJ( FILE *f, bspModel_t *model, int modelNum, bspDr
|
||||
|
||||
/* export shader */
|
||||
if ( lightmapsAsTexcoord ) {
|
||||
if ( objLastShaderNum != ds->lightmapNum[0] ) {
|
||||
fprintf( f, "usemtl lm_%04d\r\n", ds->lightmapNum[0] + deluxemap );
|
||||
objLastShaderNum = ds->lightmapNum[0] + deluxemap;
|
||||
const int lmNum = ds->lightmapNum[0];
|
||||
if ( objLastShaderNum != lmNum ) {
|
||||
fprintf( f, "usemtl lm_%04d\r\n", lmNum + deluxemap );
|
||||
objLastShaderNum = lmNum + deluxemap;
|
||||
}
|
||||
if ( ds->lightmapNum[0] + (int)deluxemap < firstLightmap ) {
|
||||
Sys_Warning( "lightmap %d out of range (exporting anyway)\n", ds->lightmapNum[0] + deluxemap );
|
||||
firstLightmap = ds->lightmapNum[0] + deluxemap;
|
||||
if ( lmNum + (int)deluxemap < firstLightmap ) {
|
||||
Sys_Warning( "lightmap %d out of range (exporting anyway)\n", lmNum + deluxemap );
|
||||
firstLightmap = lmNum + deluxemap;
|
||||
}
|
||||
if ( ds->lightmapNum[0] > lastLightmap ) {
|
||||
Sys_Warning( "lightmap %d out of range (exporting anyway)\n", ds->lightmapNum[0] + deluxemap );
|
||||
lastLightmap = ds->lightmapNum[0] + deluxemap;
|
||||
if ( lmNum > lastLightmap ) {
|
||||
Sys_Warning( "lightmap %d out of range (exporting anyway)\n", lmNum + deluxemap );
|
||||
lastLightmap = lmNum + deluxemap;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -101,10 +102,10 @@ static void ConvertSurfaceToOBJ( FILE *f, bspModel_t *model, int modelNum, bspDr
|
||||
fprintf( f, "v %f %f %f\r\n", dv->xyz[ 0 ], dv->xyz[ 2 ], -dv->xyz[ 1 ] );
|
||||
fprintf( f, "vn %f %f %f\r\n", dv->normal[ 0 ], dv->normal[ 2 ], -dv->normal[ 1 ] );
|
||||
if ( lightmapsAsTexcoord ) {
|
||||
fprintf( f, "vt %f %f\r\n", dv->lightmap[0][0], -dv->lightmap[0][1] );
|
||||
fprintf( f, "vt %f %f\r\n", dv->lightmap[0][0], ( 1.0 - dv->lightmap[0][1] ) ); // dv->lightmap[0][1] internal, ( 1.0 - dv->lightmap[0][1] ) external
|
||||
}
|
||||
else{
|
||||
fprintf( f, "vt %f %f\r\n", dv->st[ 0 ], -dv->st[ 1 ] );
|
||||
fprintf( f, "vt %f %f\r\n", dv->st[ 0 ], ( 1.0 - dv->st[ 1 ] ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,6 +257,7 @@ int ConvertBSPToOBJ( char *bspName ){
|
||||
fprintf( fmtl, "# Generated by Q3Map2 (ydnar) -convert -format obj\r\n" );
|
||||
if ( lightmapsAsTexcoord ) {
|
||||
int lightmapCount;
|
||||
//FIXME numBSPLightmaps must be bspLightBytes / ( game->lightmapSize * game->lightmapSize * 3 )
|
||||
for ( lightmapCount = 0; lightmapCount < numBSPLightmaps; lightmapCount++ )
|
||||
;
|
||||
for ( ; ; lightmapCount++ )
|
||||
|
||||
Reference in New Issue
Block a user