Skip to content

Commit bfc855e

Browse files
committed
camera export fixes
- export game fit - export aspect ratio size of game view as resolution aspect
1 parent c55bcf1 commit bfc855e

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

com.unity.formats.fbx/Editor/CameraVisitor.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
using UnityEngine;
22
using Autodesk.Fbx;
33
using UnityEditor.Formats.Fbx.Exporter.CustomExtensions;
4+
using System.Collections.Generic;
45

56
namespace UnityEditor.Formats.Fbx.Exporter
67
{
78
namespace Visitors
89
{
910
internal static class CameraVisitor
1011
{
12+
private static Dictionary<Camera.GateFitMode, FbxCamera.EGateFit> s_mapGateFit = new Dictionary<Camera.GateFitMode, FbxCamera.EGateFit>()
13+
{
14+
{ Camera.GateFitMode.Fill, FbxCamera.EGateFit.eFitFill },
15+
{ Camera.GateFitMode.Horizontal, FbxCamera.EGateFit.eFitHorizontal },
16+
{ Camera.GateFitMode.None, FbxCamera.EGateFit.eFitNone },
17+
{ Camera.GateFitMode.Overscan, FbxCamera.EGateFit.eFitOverscan },
18+
{ Camera.GateFitMode.Vertical, FbxCamera.EGateFit.eFitVertical }
19+
};
20+
1121
/// <summary>
1222
/// Visit Object and configure FbxCamera
1323
/// </summary>
@@ -56,6 +66,14 @@ private static void ConfigureGameCamera (FbxCamera fbxCamera, Camera unityCamera
5666
return ;
5767
}
5868

69+
public static Vector2 GetSizeOfMainGameView()
70+
{
71+
System.Type T = System.Type.GetType("UnityEditor.GameView,UnityEditor");
72+
System.Reflection.MethodInfo GetSizeOfMainGameView = T.GetMethod("GetSizeOfMainGameView", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
73+
System.Object Res = GetSizeOfMainGameView.Invoke(null, null);
74+
return (Vector2)Res;
75+
}
76+
5977
/// <summary>
6078
/// Configure FbxCameras from a Physical Camera
6179
/// </summary>
@@ -80,11 +98,14 @@ private static void ConfigurePhysicalCamera (FbxCamera fbxCamera, Camera unityCa
8098

8199
fbxCamera.ProjectionType.Set(projectionType);
82100
fbxCamera.FilmAspectRatio.Set(aspectRatio);
101+
102+
Vector2 gameViewSize = GetSizeOfMainGameView();
103+
fbxCamera.SetAspect(FbxCamera.EAspectRatioMode.eFixedRatio, gameViewSize.x/gameViewSize.y, 1.0);
83104
fbxCamera.SetApertureWidth (apertureWidthInInches);
84105
fbxCamera.SetApertureHeight (apertureHeightInInches);
85106

86107
// Fit the resolution gate horizontally within the film gate.
87-
fbxCamera.GateFit.Set(FbxCamera.EGateFit.eFitHorizontal);
108+
fbxCamera.GateFit.Set(s_mapGateFit[unityCamera.gateFit]);
88109

89110
// Lens Shift ( Film Offset ) as a percentage 0..1
90111
// FBX FilmOffset is in inches

0 commit comments

Comments
 (0)