From 055e817097703323e0b40d046c2a103f737ef0fe Mon Sep 17 00:00:00 2001 From: kovacsv Date: Fri, 22 Oct 2021 15:13:51 +0200 Subject: [PATCH] Minor modification. --- source/import/importero3dv.js | 14 ++-- test/testfiles/o3dv/hierarchy.o3dv | 117 +++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 test/testfiles/o3dv/hierarchy.o3dv diff --git a/source/import/importero3dv.js b/source/import/importero3dv.js index 1986896..17aab26 100644 --- a/source/import/importero3dv.js +++ b/source/import/importero3dv.js @@ -89,34 +89,34 @@ OV.ImporterO3dv = class extends OV.ImporterBase return; } + let mesh = null; if (meshContent.type === 'cuboid') { if (parameters.size_x === undefined || parameters.size_y === undefined || parameters.size_z === undefined) { return; } - const mesh = OV.GenerateCuboid (genParams, parameters.size_x, parameters.size_y, parameters.size_z); - this.model.AddMesh (mesh); + mesh = OV.GenerateCuboid (genParams, parameters.size_x, parameters.size_y, parameters.size_z); } else if (meshContent.type === 'cylinder') { if (parameters.radius === undefined || parameters.height === undefined) { return; } let segments = OV.ValueOrDefault (parameters.segments, 25); let smooth = OV.ValueOrDefault (parameters.smooth, true); - const mesh = OV.GenerateCylinder (genParams, parameters.radius, parameters.height, segments, smooth); - this.model.AddMesh (mesh); + mesh = OV.GenerateCylinder (genParams, parameters.radius, parameters.height, segments, smooth); } else if (meshContent.type === 'sphere') { if (parameters.radius === undefined) { return; } let segments = OV.ValueOrDefault (parameters.segments, 20); let smooth = OV.ValueOrDefault (parameters.smooth, true); - const mesh = OV.GenerateSphere (genParams, parameters.radius, segments, smooth); - this.model.AddMesh (mesh); + mesh = OV.GenerateSphere (genParams, parameters.radius, segments, smooth); } else if (meshContent.type === 'platonic') { if (parameters.solid_type === undefined) { return; } let radius = OV.ValueOrDefault (parameters.radius, 1.0); - const mesh = OV.GeneratePlatonicSolid (genParams, parameters.solid_type, radius); + mesh = OV.GeneratePlatonicSolid (genParams, parameters.solid_type, radius); + } + if (mesh !== null) { this.model.AddMesh (mesh); } } diff --git a/test/testfiles/o3dv/hierarchy.o3dv b/test/testfiles/o3dv/hierarchy.o3dv new file mode 100644 index 0000000..b502c41 --- /dev/null +++ b/test/testfiles/o3dv/hierarchy.o3dv @@ -0,0 +1,117 @@ +{ + "root" : { + "children" : [ + { + "name" : "Cubes", + "transformation" : { + "translation" : [0.0, 0.0, 2.0] + }, + "children" : [ + { + "name" : "Cube 01", + "transformation" : { + "translation" : [0.0, 0.0, 0.0] + }, + "meshes" : [0] + }, + { + "name" : "Cube 02", + "transformation" : { + "translation" : [2.0, 0.0, 0.0] + }, + "meshes" : [0] + }, + { + "name" : "Cube 03", + "transformation" : { + "translation" : [2.0, 2.0, 0.0] + }, + "meshes" : [0] + }, + { + "name" : "Cube 04", + "transformation" : { + "translation" : [0.0, 2.0, 0.0] + }, + "meshes" : [0] + } + ] + }, + { + "name" : "Spheres", + "transformation" : { + "translation" : [0.0, 0.0, 4.0] + }, + "children" : [ + { + "name" : "Spheres 01", + "transformation" : { + "translation" : [0.0, 0.0, 0.0] + }, + "meshes" : [1] + }, + { + "name" : "Spheres 02", + "transformation" : { + "translation" : [2.0, 0.0, 0.0] + }, + "meshes" : [1] + }, + { + "name" : "Spheres 03", + "transformation" : { + "translation" : [2.0, 2.0, 0.0] + }, + "meshes" : [1] + }, + { + "name" : "Spheres 04", + "transformation" : { + "translation" : [0.0, 2.0, 0.0] + }, + "meshes" : [1] + } + ] + }, + { + "name" : "Cube and Sphere", + "transformation" : { + "translation" : [0.0, 0.0, 6.0] + }, + "children" : [ + { + "name" : "Cube 01", + "transformation" : { + "translation" : [0.0, 0.0, 0.0] + }, + "meshes" : [1] + }, + { + "name" : "Sphere 01", + "transformation" : { + "translation" : [2.0, 0.0, 0.0] + }, + "meshes" : [1] + } + ] + } + ], + "meshes" : [0, 1] + }, + "meshes" : [ + { + "type" : "cuboid", + "parameters" : { + "size_x" : 1.0, + "size_y" : 1.0, + "size_z" : 1.0 + } + }, + { + "type" : "sphere", + "parameters" : { + "radius" : 0.5 + } + } + ] +}