mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
94 lines
2.8 KiB
C++
94 lines
2.8 KiB
C++
// Filename: eggToObj.cxx
|
|
// Created by: drose (28Feb12)
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PANDA 3D SOFTWARE
|
|
// Copyright (c) Carnegie Mellon University. All rights reserved.
|
|
//
|
|
// All use of this software is subject to the terms of the revised BSD
|
|
// license. You should have received a copy of this license along
|
|
// with this source code in a file named "LICENSE."
|
|
//
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
#include "eggToObj.h"
|
|
#include "pystub.h"
|
|
#include "eggPolygon.h"
|
|
#include "eggGroupNode.h"
|
|
#include "dcast.h"
|
|
#include "string_utils.h"
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: EggToObj::Constructor
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
EggToObj::
|
|
EggToObj() :
|
|
EggToSomething("Obj", ".obj", true, false)
|
|
{
|
|
set_program_description
|
|
("This program converts egg files to obj. It "
|
|
"only converts polygon data, with no fancy tricks. "
|
|
"Very bare-bones at the moment; not even texture maps are supported.");
|
|
|
|
redescribe_option
|
|
("cs",
|
|
"Specify the coordinate system of the resulting " + _format_name +
|
|
" file. Normally, this is z-up.");
|
|
|
|
add_option
|
|
("C", "", 0,
|
|
"Clean out higher-order polygons by subdividing into triangles.",
|
|
&EggToObj::dispatch_none, &_triangulate_polygons);
|
|
|
|
_coordinate_system = CS_zup_right;
|
|
_got_coordinate_system = true;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: EggToObj::run
|
|
// Access: Public
|
|
// Description:
|
|
////////////////////////////////////////////////////////////////////
|
|
void EggToObj::
|
|
run() {
|
|
if (_triangulate_polygons) {
|
|
nout << "Triangulating polygons.\n";
|
|
int num_produced = _data->triangulate_polygons(~0);
|
|
nout << " (" << num_produced << " triangles produced.)\n";
|
|
}
|
|
|
|
EggToObjConverter saver;
|
|
saver.set_egg_data(_data);
|
|
|
|
if (!saver.write_file(get_output_filename())) {
|
|
nout << "An error occurred while writing.\n";
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
// Function: EggToObj::handle_args
|
|
// Access: Protected, Virtual
|
|
// Description: Does something with the additional arguments on the
|
|
// command line (after all the -options have been
|
|
// parsed). Returns true if the arguments are good,
|
|
// false otherwise.
|
|
////////////////////////////////////////////////////////////////////
|
|
bool EggToObj::
|
|
handle_args(ProgramBase::Args &args) {
|
|
return EggToSomething::handle_args(args);
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
// A call to pystub() to force libpystub.so to be linked in.
|
|
pystub();
|
|
|
|
EggToObj prog;
|
|
prog.parse_command_line(argc, argv);
|
|
prog.run();
|
|
return 0;
|
|
}
|