mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -04:00
Added proper unit conversion for egg2maya
This commit is contained in:
parent
beeeedbb5e
commit
b52227d615
@ -118,6 +118,16 @@ add_units_options() {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void EggToSomething::
|
||||
apply_units_scale(EggData *data) {
|
||||
|
||||
// [gjeon] since maya's internal unit is fixed to cm
|
||||
// and when we can't change UI unit without affecting data
|
||||
// we need to convert data to cm for now
|
||||
// this will be set later to proper output unit user provided
|
||||
// by using MayaApi::set_units() in eggToMaya.cxx
|
||||
DistanceUnit output_units = _output_units;
|
||||
if (_format_name == "Maya")
|
||||
_output_units = DU_centimeters;
|
||||
|
||||
if (_output_units != DU_invalid && _input_units != DU_invalid &&
|
||||
_input_units != _output_units) {
|
||||
nout << "Converting from " << format_long_unit(_input_units)
|
||||
@ -125,6 +135,7 @@ apply_units_scale(EggData *data) {
|
||||
double scale = convert_units(_input_units, _output_units);
|
||||
data->transform(LMatrix4d::scale_mat(scale));
|
||||
}
|
||||
_output_units = output_units;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -379,6 +379,44 @@ get_units() {
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: MayaApi::set_units
|
||||
// Access: Public
|
||||
// Description: Set Maya's UI units.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void MayaApi::
|
||||
set_units(DistanceUnit unit) {
|
||||
switch (unit) {
|
||||
case DU_inches:
|
||||
MDistance::setUIUnit(MDistance::kInches);
|
||||
break;
|
||||
case DU_feet:
|
||||
MDistance::setUIUnit(MDistance::kFeet);
|
||||
break;
|
||||
case DU_yards:
|
||||
MDistance::setUIUnit(MDistance::kYards);
|
||||
break;
|
||||
case DU_statute_miles:
|
||||
MDistance::setUIUnit(MDistance::kMiles);
|
||||
break;
|
||||
case DU_millimeters:
|
||||
MDistance::setUIUnit(MDistance::kMillimeters);
|
||||
break;
|
||||
case DU_centimeters:
|
||||
MDistance::setUIUnit(MDistance::kCentimeters);
|
||||
break;
|
||||
case DU_kilometers:
|
||||
MDistance::setUIUnit(MDistance::kKilometers);
|
||||
break;
|
||||
case DU_meters:
|
||||
MDistance::setUIUnit(MDistance::kMeters);
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: MayaApi::get_coordinate_system
|
||||
// Access: Public
|
||||
|
@ -47,6 +47,7 @@ public:
|
||||
bool clear();
|
||||
|
||||
DistanceUnit get_units();
|
||||
void set_units(DistanceUnit unit);
|
||||
CoordinateSystem get_coordinate_system();
|
||||
|
||||
private:
|
||||
|
@ -95,6 +95,18 @@ run() {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// [gjeon] since maya's internal unit is fixed to cm
|
||||
// and when we can't change UI unit without affecting data
|
||||
// all distance data is converted to cm
|
||||
// we need to convert them back to proper output unit user provided here
|
||||
// along with UI unit
|
||||
maya->set_units(_output_units);
|
||||
|
||||
if (_output_units != DU_centimeters && _output_units != DU_invalid) {
|
||||
nout << "Converting from centimeters"
|
||||
<< " to " << format_long_unit(_output_units) << "\n";
|
||||
}
|
||||
|
||||
// Now convert the data.
|
||||
if (!MayaLoadEggData(_data, true, _convert_model, _convert_anim, _respect_normals)) {
|
||||
nout << "Unable to convert egg file.\n";
|
||||
|
Loading…
x
Reference in New Issue
Block a user