mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
129 lines
3.5 KiB
C++
129 lines
3.5 KiB
C++
// Filename: eggTrans.cxx
|
|
// Created by: drose (14Feb00)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PANDA 3D SOFTWARE
|
|
// Copyright (c) 2001, Disney Enterprises, Inc. All rights reserved
|
|
//
|
|
// All use of this software is subject to the terms of the Panda 3d
|
|
// Software license. You should have received a copy of this license
|
|
// along with this source code; you will also find a current copy of
|
|
// the license at http://www.panda3d.org/license.txt .
|
|
//
|
|
// To contact the maintainers of this program write to
|
|
// panda3d@yahoogroups.com .
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
#include "eggTrans.h"
|
|
|
|
#include <eggGroupUniquifier.h>
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: EggTrans::Constructor
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
EggTrans::
|
|
EggTrans() {
|
|
add_normals_options();
|
|
add_transform_options();
|
|
add_texture_options();
|
|
|
|
set_program_description
|
|
("egg-trans reads an egg file and writes an essentially equivalent "
|
|
"egg file to the standard output, or to the file specified with -o. "
|
|
"Some simple operations on the egg file are supported.");
|
|
|
|
add_option
|
|
("F", "", 0,
|
|
"Flatten out transforms.",
|
|
&EggTrans::dispatch_none, &_flatten_transforms);
|
|
|
|
add_option
|
|
("t", "", 0,
|
|
"Apply texture matrices to UV's.",
|
|
&EggTrans::dispatch_none, &_apply_texmats);
|
|
|
|
add_option
|
|
("T", "", 0,
|
|
"Collapse equivalent texture references.",
|
|
&EggTrans::dispatch_none, &_collapse_equivalent_textures);
|
|
|
|
add_option
|
|
("c", "", 0,
|
|
"Clean out degenerate polygons and unused vertices.",
|
|
&EggTrans::dispatch_none, &_remove_invalid_primitives);
|
|
|
|
add_option
|
|
("C", "", 0,
|
|
"Clean out higher-order polygons by subdividing into triangles.",
|
|
&EggTrans::dispatch_none, &_triangulate_polygons);
|
|
|
|
add_option
|
|
("N", "", 0,
|
|
"Standardize and uniquify group names.",
|
|
&EggTrans::dispatch_none, &_standardize_names);
|
|
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: EggTrans::run
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
void EggTrans::
|
|
run() {
|
|
if (_remove_invalid_primitives) {
|
|
nout << "Removing invalid primitives.\n";
|
|
int num_removed = _data.remove_invalid_primitives();
|
|
nout << " (" << num_removed << " removed.)\n";
|
|
_data.remove_unused_vertices();
|
|
}
|
|
|
|
if (_triangulate_polygons) {
|
|
nout << "Triangulating polygons.\n";
|
|
int num_produced = _data.triangulate_polygons(true);
|
|
nout << " (" << num_produced << " triangles produced.)\n";
|
|
}
|
|
|
|
if (_apply_texmats) {
|
|
nout << "Applying texture matrices.\n";
|
|
_data.apply_texmats();
|
|
_data.remove_unused_vertices();
|
|
}
|
|
|
|
if (_collapse_equivalent_textures) {
|
|
nout << "Collapsing equivalent textures.\n";
|
|
int num_removed = _data.collapse_equivalent_textures();
|
|
nout << " (" << num_removed << " removed.)\n";
|
|
}
|
|
|
|
if (_flatten_transforms) {
|
|
nout << "Flattening transforms.\n";
|
|
_data.flatten_transforms();
|
|
_data.remove_unused_vertices();
|
|
}
|
|
|
|
if (_standardize_names) {
|
|
nout << "Standardizing group names.\n";
|
|
EggGroupUniquifier uniquifier;
|
|
uniquifier.uniquify(&_data);
|
|
}
|
|
|
|
if (!copy_textures()) {
|
|
exit(1);
|
|
}
|
|
|
|
write_egg_file();
|
|
}
|
|
|
|
|
|
int main(int argc, char *argv[]) {
|
|
EggTrans prog;
|
|
prog.parse_command_line(argc, argv);
|
|
prog.run();
|
|
return 0;
|
|
}
|