From 87423c1c7c5a6d980b0534f075d022ef7f4dfd4e Mon Sep 17 00:00:00 2001 From: seungho Date: Tue, 24 Aug 2021 14:08:30 +0900 Subject: [PATCH] Fix VD svace problem. - The return type of fread is size_t has been converted to ssize_t. - At the previous implementation, because fread always returns positive value, the case ssize_t can be negative exists only when the fseek returns non-zero value. - This patch changes ReadBinFile to return false if it read nothing from binary. Change-Id: I0de843de4a1b87593b0fc1653a92d2a0d11360f7 Signed-off-by: seungho --- automated-tests/resources/coverageTest.gltf | 1439 ++++++++++++++++++++ .../src/dali-toolkit/utc-Dali-Scene3dView.cpp | 3 +- .../internal/controls/scene3d-view/gltf-loader.cpp | 55 +- 3 files changed, 1474 insertions(+), 23 deletions(-) create mode 100644 automated-tests/resources/coverageTest.gltf diff --git a/automated-tests/resources/coverageTest.gltf b/automated-tests/resources/coverageTest.gltf new file mode 100644 index 0000000..ae8bf63 --- /dev/null +++ b/automated-tests/resources/coverageTest.gltf @@ -0,0 +1,1439 @@ +{ + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5125, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5122, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5120, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 7, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 11, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 12, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 13, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 14, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 15, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 16, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 17, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 18, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 19, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 20, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 21, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 22, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 23, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 24, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 25, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 26, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 27, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 28, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 29, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 30, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 31, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 32, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1, + 1, + 1 + ], + "min" : [ + -1, + -1, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 33, + "componentType" : 5126, + "count" : 24, + "type" : "VEC3" + }, + { + "bufferView" : 34, + "componentType" : 5126, + "count" : 24, + "type" : "VEC2" + }, + { + "bufferView" : 35, + "componentType" : 5121, + "count" : 36, + "type" : "SCALAR" + }, + { + "bufferView" : 36, + "componentType" : 5126, + "count" : 4, + "max" : [ + 1, + 0, + 1 + ], + "min" : [ + -1, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 37, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3" + }, + { + "bufferView" : 38, + "componentType" : 5126, + "count" : 4, + "type" : "VEC2" + }, + { + "bufferView" : 39, + "componentType" : 5121, + "count" : 6, + "type" : "SCALAR" + }, + { + "bufferView" : 40, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.6666666666666667 + ], + "min" : [ + 0.041666666666666664 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 41, + "componentType" : 5126, + "count" : 5, + "type" : "VEC3" + }, + { + "bufferView" : 42, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.6666666666666667 + ], + "min" : [ + 0.041666666666666664 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 43, + "componentType" : 5126, + "count" : 15, + "type" : "VEC3" + }, + { + "bufferView" : 44, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.6666666666666667 + ], + "min" : [ + 0.041666666666666664 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 45, + "componentType" : 5126, + "count" : 15, + "type" : "VEC3" + }, + { + "bufferView" : 46, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.7083333333333333 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 47, + "componentType" : 5126, + "count" : 5, + "type" : "VEC4" + }, + { + "bufferView" : 48, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.7083333333333333 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 49, + "componentType" : 5126, + "count" : 15, + "type" : "VEC4" + }, + { + "bufferView" : 50, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.7083333333333333 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 51, + "componentType" : 5126, + "count" : 5, + "type" : "VEC4" + }, + { + "bufferView" : 52, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.7083333333333333 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 53, + "componentType" : 5126, + "count" : 5, + "type" : "VEC3" + }, + { + "bufferView" : 54, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.6666666666666667 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 55, + "componentType" : 5126, + "count" : 15, + "type" : "VEC3" + }, + { + "bufferView" : 56, + "componentType" : 5126, + "count" : 5, + "max" : [ + 1.6666666666666667 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 57, + "componentType" : 5126, + "count" : 5, + "type" : "VEC3" + } + ], + "animations" : [ + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 0, + "path" : "scale" + } + } + ], + "name" : "Step Scale", + "samplers" : [ + { + "input" : 40, + "interpolation" : "STEP", + "output" : 41 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 3, + "path" : "scale" + } + } + ], + "name" : "Linear Scale", + "samplers" : [ + { + "input" : 40, + "interpolation" : "LINEAR", + "output" : 41 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 4, + "path" : "scale" + } + } + ], + "name" : "CubicSpline Scale", + "samplers" : [ + { + "input" : 44, + "interpolation" : "CUBICSPLINE", + "output" : 45 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 5, + "path" : "rotation" + } + } + ], + "name" : "Step Rotation", + "samplers" : [ + { + "input" : 46, + "interpolation" : "STEP", + "output" : 47 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 6, + "path" : "rotation" + } + } + ], + "name" : "CubicSpline Rotation", + "samplers" : [ + { + "input" : 48, + "interpolation" : "CUBICSPLINE", + "output" : 49 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 7, + "path" : "rotation" + } + } + ], + "name" : "Linear Rotation", + "samplers" : [ + { + "input" : 50, + "interpolation" : "LINEAR", + "output" : 51 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 8, + "path" : "translation" + } + } + ], + "name" : "Step Translation", + "samplers" : [ + { + "input" : 52, + "interpolation" : "STEP", + "output" : 53 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 9, + "path" : "translation" + } + } + ], + "name" : "CubicSpline Translation", + "samplers" : [ + { + "input" : 54, + "interpolation" : "CUBICSPLINE", + "output" : 55 + } + ] + }, + { + "channels" : [ + { + "sampler" : 0, + "target" : { + "node" : 10, + "path" : "translation" + } + } + ], + "name" : "Linear Translation", + "samplers" : [ + { + "input" : 56, + "interpolation" : "LINEAR", + "output" : 57 + } + ] + } + ], + "asset" : { + "generator" : "Khronos Blender glTF 2.0 I/O", + "version" : "2.0" + }, + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 288 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 576 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 768 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 804 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 1092 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 1380 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 1572 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 1608 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 1896 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 2184 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 2376 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 2412 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 2700 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 2988 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 3180 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 3216 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 3504 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 3792 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 3984 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 4020 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 4308 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 4596 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 4788 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 4824 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 5112 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 5400 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 5592 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 5628 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 5916 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 6204 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 6396 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 6432 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 6720 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 7008 + }, + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 7200 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 7236 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 7284 + }, + { + "buffer" : 0, + "byteLength" : 32, + "byteOffset" : 7332 + }, + { + "buffer" : 0, + "byteLength" : 6, + "byteOffset" : 7364 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 7372 + }, + { + "buffer" : 0, + "byteLength" : 60, + "byteOffset" : 7392 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 7452 + }, + { + "buffer" : 0, + "byteLength" : 180, + "byteOffset" : 7472 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 7652 + }, + { + "buffer" : 0, + "byteLength" : 180, + "byteOffset" : 7672 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 7852 + }, + { + "buffer" : 0, + "byteLength" : 80, + "byteOffset" : 7872 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 7952 + }, + { + "buffer" : 0, + "byteLength" : 240, + "byteOffset" : 7972 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 8212 + }, + { + "buffer" : 0, + "byteLength" : 80, + "byteOffset" : 8232 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 8312 + }, + { + "buffer" : 0, + "byteLength" : 60, + "byteOffset" : 8332 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 8392 + }, + { + "buffer" : 0, + "byteLength" : 180, + "byteOffset" : 8412 + }, + { + "buffer" : 0, + "byteLength" : 20, + "byteOffset" : 8592 + }, + { + "buffer" : 0, + "byteLength" : 60, + "byteOffset" : 8612 + } + ], + "buffers" : [ + { + "byteLength" : 8672, + "uri" : "interpolation.bin" + } + ], + "extensions" : {}, + "images" : [ + { + "mimeType" : "image/jpeg", + "name" : "l.jpg", + "uri" : "l.jpg" + } + ], + "materials" : [ + { + "name" : "Material", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.001", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.002", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.007", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.006", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.008", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.004", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.005", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.003", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "name" : "Material.009", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0, + "texCoord" : 0 + }, + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + } + ], + "meshes" : [ + { + "name" : "Cube", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 1, + "POSITION" : 0, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + } + ] + }, + { + "name" : "Cube.001", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 5, + "POSITION" : 4, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 1 + } + ] + }, + { + "name" : "Cube.002", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 9, + "POSITION" : 8, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 2 + } + ] + }, + { + "name" : "Cube.003", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 13, + "POSITION" : 12, + "TEXCOORD_0" : 14 + }, + "indices" : 15, + "material" : 3 + } + ] + }, + { + "name" : "Cube.004", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 17, + "POSITION" : 16, + "TEXCOORD_0" : 18 + }, + "indices" : 19, + "material" : 4 + } + ] + }, + { + "name" : "Cube.005", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 21, + "POSITION" : 20, + "TEXCOORD_0" : 22 + }, + "indices" : 23, + "material" : 5 + } + ] + }, + { + "name" : "Cube.006", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 25, + "POSITION" : 24, + "TEXCOORD_0" : 26 + }, + "indices" : 27, + "material" : 6 + } + ] + }, + { + "name" : "Cube.008", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 29, + "POSITION" : 28, + "TEXCOORD_0" : 30 + }, + "indices" : 31, + "material" : 7 + } + ] + }, + { + "name" : "Cube.009", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 33, + "POSITION" : 32, + "TEXCOORD_0" : 34 + }, + "indices" : 35, + "material" : 8 + } + ] + }, + { + "name" : "Plane.001", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 37, + "POSITION" : 36, + "TEXCOORD_0" : 38 + }, + "indices" : 39, + "material" : 9 + } + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "Cube" + }, + { + "name" : "Light", + "rotation" : [ + 0.16907575726509094, + 0.7558802962303162, + -0.27217137813568115, + 0.570947527885437 + ], + "scale" : [ + 1, + 1, + 0.9999999403953552 + ], + "translation" : [ + 0.18540644645690918, + 5.903861999511719, + 8.732584953308105 + ] + }, + { + "name" : "Camera", + "rotation" : [ + 0.6819981932640076, + 0, + 0, + 0.7313538193702698 + ], + "scale" : [ + 1, + 0.39365354180336, + 1 + ], + "translation" : [ + 0.31374117732048035, + 4.958309173583984, + 29.236623764038086 + ] + }, + { + "mesh" : 1, + "name" : "Cube.001", + "translation" : [ + -3.2963297367095947, + 0, + 6.461143493652344e-05 + ] + }, + { + "mesh" : 2, + "name" : "Cube.002", + "translation" : [ + 3.3401193618774414, + 0, + 0.008944988250732422 + ] + }, + { + "mesh" : 3, + "name" : "Cube.003", + "translation" : [ + 0, + 3.356412410736084, + 0 + ] + }, + { + "mesh" : 4, + "name" : "Cube.004", + "rotation" : [ + 0, + 0, + -0.006683696992695332, + 0.9999777674674988 + ], + "translation" : [ + 3.33506178855896, + 3.356412410736084, + 0 + ] + }, + { + "mesh" : 5, + "name" : "Cube.005", + "rotation" : [ + 0, + 0, + -0.03925982117652893, + 0.9992290735244751 + ], + "scale" : [ + 0.9999999403953552, + 0.9999999403953552, + 1 + ], + "translation" : [ + -3.311399221420288, + 3.356412410736084, + 0 + ] + }, + { + "mesh" : 6, + "name" : "Cube.006", + "translation" : [ + 0, + 6.665226459503174, + 0 + ] + }, + { + "mesh" : 7, + "name" : "Cube.008", + "translation" : [ + 3.3051798343658447, + 6.734194278717041, + 0 + ] + }, + { + "mesh" : 8, + "name" : "Cube.009", + "translation" : [ + -3.2975807189941406, + 6.958913326263428, + 0 + ] + }, + { + "mesh" : 9, + "name" : "Plane", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "scale" : [ + 4.218648433685303, + 1, + 0.3652837574481964 + ], + "translation" : [ + 0, + -1.7941787242889404, + 1.0036747455596924 + ] + } + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + } + ], + "textures" : [ + { + "source" : 0 + } + ] +} diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Scene3dView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Scene3dView.cpp index 1105c73..2b058a0 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Scene3dView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Scene3dView.cpp @@ -43,7 +43,8 @@ namespace * Take from https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/AnimatedCube */ const char* TEST_GLTF_FILE_NAME[] = {TEST_RESOURCE_DIR "/AnimatedCube.gltf", - TEST_RESOURCE_DIR "/InterpolationTest.gltf"}; + TEST_RESOURCE_DIR "/InterpolationTest.gltf", + TEST_RESOURCE_DIR "/coverageTest.gltf"}; /** * For the diffuse and specular cube map texture. * These textures are based off version of Wave engine sample diff --git a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp index 95f54f1..2c8de12 100644 --- a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp +++ b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp @@ -231,21 +231,20 @@ void FitBuffer(Dali::Vector& bufferDestination, Dali::Vector& buffer template bool ReadBinFile(Vector& dataBuffer, std::string url, int32_t offset, int32_t count) { + size_t readCount = 0; Dali::FileStream fileStream(url, FileStream::READ | FileStream::BINARY); FILE* fp = fileStream.GetFile(); - if(!fp) + if(fp) { - return false; - } - - dataBuffer.Resize(count); - ssize_t result = -1; - if(!fseek(fp, offset, SEEK_SET)) - { - result = fread(&dataBuffer[0], sizeof(T), count, fp); + dataBuffer.Resize(count); + if(!fseek(fp, offset, SEEK_SET)) + { + readCount = fread(&dataBuffer[0], sizeof(T), count, fp); + dataBuffer.Resize(readCount); + } } - return (result >= 0); + return (readCount > 0); } template @@ -301,38 +300,50 @@ void LoadDataFromAccessor(int32_t accessorIdx, Dali::Vector& bufferData, std: if(accessor.componentType == 5120) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5121) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5122) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5123) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5125) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } else if(accessor.componentType == 5126) { Dali::Vector inputBufferData; - ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count); - FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + if(ReadBinFile(inputBufferData, path + load_uri, bufferView.byteOffset + accessor.byteOffset, elementNumOfByteStride * accessor.count)) + { + FitBuffer(bufferData, inputBufferData, accessor.count, elementNumOfByteStride, accessor.normalized); + } } } -- 2.7.4