From f9c6fed1907c3d15e118c7cf41a3984196819360 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 11 Sep 2019 22:34:53 +0200 Subject: [PATCH] Add a camera unittest. --- code/glTF2/glTF2Importer.cpp | 8 +- test/models/glTF2/cameras/Cameras.gltf | 98 +++++++++++++++++++++ test/models/glTF2/cameras/simpleSquare.bin | Bin 0 -> 60 bytes test/unit/utglTF2ImportExport.cpp | 7 ++ 4 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 test/models/glTF2/cameras/Cameras.gltf create mode 100644 test/models/glTF2/cameras/simpleSquare.bin diff --git a/code/glTF2/glTF2Importer.cpp b/code/glTF2/glTF2Importer.cpp index 61e5f4b8a..ced37601e 100644 --- a/code/glTF2/glTF2Importer.cpp +++ b/code/glTF2/glTF2Importer.cpp @@ -705,9 +705,11 @@ void glTF2Importer::ImportCameras(glTF2::Asset& r) aicam->mHorizontalFOV = cam.cameraProperties.perspective.yfov * aicam->mAspect; aicam->mClipPlaneFar = cam.cameraProperties.perspective.zfar; aicam->mClipPlaneNear = cam.cameraProperties.perspective.znear; - } - else { - // assimp does not support orthographic cameras + } else { + aicam->mClipPlaneFar = cam.ortographic.zfar; + aicam->mClipPlaneNear = cam.ortographic.znear; + aicam->mHorizontalFOV = 0.0; + aicam->mAspect = cam.ortographic.xmag / cam.ortographic.ymag; } } } diff --git a/test/models/glTF2/cameras/Cameras.gltf b/test/models/glTF2/cameras/Cameras.gltf new file mode 100644 index 000000000..25e9e24a3 --- /dev/null +++ b/test/models/glTF2/cameras/Cameras.gltf @@ -0,0 +1,98 @@ +{ + "scenes" : [ + { + "nodes" : [ 0, 1, 2 ] + } + ], + "nodes" : [ + { + "rotation" : [ -0.383, 0.0, 0.0, 0.92375 ], + "mesh" : 0 + }, + { + "translation" : [ 0.5, 0.5, 3.0 ], + "camera" : 0 + }, + { + "translation" : [ 0.5, 0.5, 3.0 ], + "camera" : 1 + } + ], + + "cameras" : [ + { + "type": "perspective", + "perspective": { + "aspectRatio": 1.0, + "yfov": 0.7, + "zfar": 100, + "znear": 0.01 + } + }, + { + "type": "orthographic", + "orthographic": { + "xmag": 1.0, + "ymag": 1.0, + "zfar": 100, + "znear": 0.01 + } + } + ], + + "meshes" : [ + { + "primitives" : [ { + "attributes" : { + "POSITION" : 1 + }, + "indices" : 0 + } ] + } + ], + + "buffers" : [ + { + "uri" : "simpleSquare.bin", + "byteLength" : 60 + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteOffset" : 0, + "byteLength" : 12, + "target" : 34963 + }, + { + "buffer" : 0, + "byteOffset" : 12, + "byteLength" : 48, + "target" : 34962 + } + ], + "accessors" : [ + { + "bufferView" : 0, + "byteOffset" : 0, + "componentType" : 5123, + "count" : 6, + "type" : "SCALAR", + "max" : [ 3 ], + "min" : [ 0 ] + }, + { + "bufferView" : 1, + "byteOffset" : 0, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3", + "max" : [ 1.0, 1.0, 0.0 ], + "min" : [ 0.0, 0.0, 0.0 ] + } + ], + + "asset" : { + "version" : "2.0" + } +} diff --git a/test/models/glTF2/cameras/simpleSquare.bin b/test/models/glTF2/cameras/simpleSquare.bin new file mode 100644 index 0000000000000000000000000000000000000000..a6edb3b0d31b460695b9a225476ee921ab01ab58 GIT binary patch literal 60 ZcmZQzU}RtdVrC$T3L5OO^FiVeIRG=<0|o#9 literal 0 HcmV?d00001 diff --git a/test/unit/utglTF2ImportExport.cpp b/test/unit/utglTF2ImportExport.cpp index 1e8e4af9d..829d31451 100644 --- a/test/unit/utglTF2ImportExport.cpp +++ b/test/unit/utglTF2ImportExport.cpp @@ -375,6 +375,13 @@ TEST_F( utglTF2ImportExport, bug_import_simple_skin ) { EXPECT_NE( nullptr, scene ); } +TEST_F(utglTF2ImportExport, import_cameras) { + Assimp::Importer importer; + const aiScene* scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/cameras/Cameras.gltf", + aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); +} + #ifndef ASSIMP_BUILD_NO_EXPORT TEST_F( utglTF2ImportExport, exportglTF2FromFileTest ) { EXPECT_TRUE( exporterTest() );