@@ -766,7 +766,7 @@ protected bool ExportInstance (GameObject unityGo, FbxNode fbxNode, FbxScene fbx
766
766
/// <summary>
767
767
/// Exports camera component
768
768
/// </summary>
769
- protected bool ExportCamera ( GameObject unityGO , FbxScene fbxScene , FbxNode fbxNode )
769
+ protected bool ExportCamera ( GameObject unityGO , FbxScene fbxScene , FbxNode fbxNode , bool addAsChildNode = false )
770
770
{
771
771
Camera unityCamera = unityGO . GetComponent < Camera > ( ) ;
772
772
if ( unityCamera == null ) {
@@ -806,22 +806,29 @@ protected bool ExportCamera (GameObject unityGO, FbxScene fbxScene, FbxNode fbxN
806
806
// FarPlane
807
807
fbxCamera . SetFarPlane ( unityCamera . farClipPlane * 100 ) ;
808
808
809
+ FbxNode cameraNode = fbxNode ;
810
+ // fbxNode already has a node attribute, so add the camera as a child of fbxNode
811
+ if ( addAsChildNode ) {
812
+ cameraNode = FbxNode . Create ( fbxScene , GetUniqueName ( unityGO . name + "_Camera" ) ) ;
813
+ fbxNode . AddChild ( cameraNode ) ;
814
+ }
815
+
809
816
// Export backgroundColor as a custom property
810
817
// NOTE: export on fbxNode so that it will show up in Maya
811
- ExportColorProperty ( fbxNode , unityCamera . backgroundColor ,
818
+ ExportColorProperty ( cameraNode , unityCamera . backgroundColor ,
812
819
MakeName ( "backgroundColor" ) ,
813
820
"The color with which the screen will be cleared." ) ;
814
821
815
822
// Export clearFlags as a custom property
816
823
// NOTE: export on fbxNode so that it will show up in Maya
817
- ExportIntProperty ( fbxNode , ( int ) unityCamera . clearFlags ,
824
+ ExportIntProperty ( cameraNode , ( int ) unityCamera . clearFlags ,
818
825
MakeName ( "clearFlags" ) ,
819
826
"How the camera clears the background." ) ;
820
827
821
- fbxNode . SetNodeAttribute ( fbxCamera ) ;
828
+ cameraNode . SetNodeAttribute ( fbxCamera ) ;
822
829
823
830
// make the last camera exported the default camera
824
- DefaultCamera = fbxNode . GetName ( ) ;
831
+ DefaultCamera = cameraNode . GetName ( ) ;
825
832
826
833
return true ;
827
834
}
@@ -926,11 +933,17 @@ protected int ExportComponents (
926
933
927
934
ExportTransform ( unityGo . transform , fbxNode , newCenter , exportType ) ;
928
935
929
- // try exporting mesh as an instance or camera, export regularly if we cannot
930
- if ( ! ExportInstance ( unityGo , fbxNode , fbxScene ) && ! ExportCamera ( unityGo , fbxScene , fbxNode ) ) {
931
- ExportMesh ( unityGo , fbxNode ) ;
936
+ // try export mesh
937
+ bool exportedMesh = ExportInstance ( unityGo , fbxNode , fbxScene ) ;
938
+ if ( ! exportedMesh ) {
939
+ exportedMesh = ExportMesh ( unityGo , fbxNode ) ;
932
940
}
933
941
942
+ // try export camera
943
+ // if a mesh has already been added to fbxNode, add camera as child node of fbxNode
944
+ bool addAsChildNode = exportedMesh ? true : false ; // adding this extra step so it's clearer what we are passing
945
+ ExportCamera ( unityGo , fbxScene , fbxNode , addAsChildNode ) ;
946
+
934
947
if ( Verbose )
935
948
Debug . Log ( string . Format ( "exporting {0}" , fbxNode . GetName ( ) ) ) ;
936
949
0 commit comments