@@ -516,7 +516,7 @@ protected void ExportTransform (UnityEngine.Transform unityTransform, FbxNode fb
516
516
UnityEngine . Vector3 unityScale ;
517
517
518
518
switch ( exportType ) {
519
- case TransformExportType . Zeroed :
519
+ case TransformExportType . Reset :
520
520
unityTranslate = Vector3 . zero ;
521
521
unityRotate = Vector3 . zero ;
522
522
unityScale = Vector3 . one ;
@@ -691,7 +691,40 @@ public static HashSet<GameObject> RemoveRedundantObjects(IEnumerable<UnityEngine
691
691
return toExport ;
692
692
}
693
693
694
- public enum TransformExportType { Local , Global , Zeroed } ;
694
+ private Vector3 FindCenter ( IEnumerable < GameObject > gameObjects )
695
+ {
696
+ // renderer, mesh, collider
697
+ Vector3 average = Vector3 . zero ;
698
+ int count = 0 ;
699
+ foreach ( var go in gameObjects ) {
700
+ var renderer = go . GetComponent < Renderer > ( ) ;
701
+ if ( renderer ) {
702
+ average += renderer . bounds . center ;
703
+ count ++ ;
704
+ Debug . Log ( "Renderer: " + renderer . bounds . center ) ;
705
+ continue ;
706
+ }
707
+ var mesh = go . GetComponent < Mesh > ( ) ;
708
+ if ( mesh ) {
709
+ average += mesh . bounds . center ;
710
+ count ++ ;
711
+ Debug . Log ( "Mesh: " + mesh . bounds . center ) ;
712
+ continue ;
713
+ }
714
+ var collider = go . GetComponent < Collider > ( ) ;
715
+ if ( collider ) {
716
+ average += collider . bounds . center ;
717
+ Debug . Log ( "Collider: " + collider . bounds . center ) ;
718
+ count ++ ;
719
+ continue ;
720
+ }
721
+ average += go . transform . position ;
722
+ count ++ ;
723
+ }
724
+ return average / count ;
725
+ }
726
+
727
+ public enum TransformExportType { Local , Global , Reset } ;
695
728
696
729
/// <summary>
697
730
/// Export all the objects in the set.
@@ -764,14 +797,19 @@ public int ExportAll (IEnumerable<UnityEngine.Object> unityExportSet)
764
797
765
798
if ( revisedExportSet . Count == 1 ) {
766
799
foreach ( var unityGo in revisedExportSet ) {
767
- exportProgress = this . ExportComponents ( unityGo , fbxScene , fbxRootNode , exportProgress , count , TransformExportType . Zeroed ) ;
800
+ exportProgress = this . ExportComponents ( unityGo , fbxScene , fbxRootNode , exportProgress , count , TransformExportType . Reset ) ;
768
801
if ( exportProgress < 0 ) {
769
802
Debug . LogWarning ( "Export Cancelled" ) ;
770
803
return 0 ;
771
804
}
772
805
}
773
806
}
774
807
else {
808
+ // find the center of the export set
809
+ Vector3 center = FindCenter ( revisedExportSet ) ;
810
+ var test = GameObject . CreatePrimitive ( PrimitiveType . Sphere ) ;
811
+ test . transform . position = center ;
812
+
775
813
foreach ( var unityGo in revisedExportSet ) {
776
814
exportProgress = this . ExportComponents ( unityGo , fbxScene , fbxRootNode , exportProgress , count ,
777
815
unityGo . transform . parent == null ? TransformExportType . Local : TransformExportType . Global ) ;
0 commit comments