diff --git a/source/export/exporter.js b/source/export/exporter.js index ddc3c44..dd27fec 100644 --- a/source/export/exporter.js +++ b/source/export/exporter.js @@ -1,26 +1,26 @@ OV.Exporter = class { - constructor () - { - this.exporters = [ - new OV.ExporterObj (), - new OV.ExporterStl (), - new OV.ExporterPly (), - new OV.ExporterOff (), - new OV.ExporterGltf () - ]; - } + constructor () + { + this.exporters = [ + new OV.ExporterObj (), + new OV.ExporterStl (), + new OV.ExporterPly (), + new OV.ExporterOff (), + new OV.ExporterGltf () + ]; + } - Export (model, format, extension) - { - let files = []; - for (let i = 0; i < this.exporters.length; i++) { - let exporter = this.exporters[i]; - if (exporter.CanExport (format, extension)) { - exporter.Export (model, format, files); - break; - } - } - return files; - } + Export (model, format, extension) + { + let files = []; + for (let i = 0; i < this.exporters.length; i++) { + let exporter = this.exporters[i]; + if (exporter.CanExport (format, extension)) { + exporter.Export (model, format, files); + break; + } + } + return files; + } }; diff --git a/source/model/mesh.js b/source/model/mesh.js index ab3927f..626052f 100644 --- a/source/model/mesh.js +++ b/source/model/mesh.js @@ -1,100 +1,100 @@ OV.Mesh = class { - constructor () - { - this.name = ''; - this.vertices = []; - this.normals = []; - this.uvs = []; - this.triangles = []; - } + constructor () + { + this.name = ''; + this.vertices = []; + this.normals = []; + this.uvs = []; + this.triangles = []; + } - GetName () - { - return this.name; - } - - SetName (name) - { - this.name = name; - } - - VertexCount () - { - return this.vertices.length; - } - - NormalCount () - { - return this.normals.length; - } - - TextureUVCount () - { - return this.uvs.length; - } - - TriangleCount () - { - return this.triangles.length; - } - - AddVertex (vertex) - { - this.vertices.push (vertex); - return this.vertices.length - 1; - } + GetName () + { + return this.name; + } + + SetName (name) + { + this.name = name; + } + + VertexCount () + { + return this.vertices.length; + } + + NormalCount () + { + return this.normals.length; + } + + TextureUVCount () + { + return this.uvs.length; + } + + TriangleCount () + { + return this.triangles.length; + } + + AddVertex (vertex) + { + this.vertices.push (vertex); + return this.vertices.length - 1; + } - SetVertex (index, vertex) - { - this.vertices[index] = vertex; - } - - GetVertex (index) - { - return this.vertices[index]; - } - - AddNormal (normal) - { - this.normals.push (normal); - return this.normals.length - 1; - } + SetVertex (index, vertex) + { + this.vertices[index] = vertex; + } + + GetVertex (index) + { + return this.vertices[index]; + } + + AddNormal (normal) + { + this.normals.push (normal); + return this.normals.length - 1; + } - SetNormal (index, normal) - { - this.normals[index] = normal; - } + SetNormal (index, normal) + { + this.normals[index] = normal; + } - GetNormal (index) - { - return this.normals[index]; - } - - AddTextureUV (uv) - { - this.uvs.push (uv); - return this.uvs.length - 1; - } + GetNormal (index) + { + return this.normals[index]; + } + + AddTextureUV (uv) + { + this.uvs.push (uv); + return this.uvs.length - 1; + } - SetTextureUV (index, uv) - { - this.uvs[index] = uv; - } - - GetTextureUV (index) - { - return this.uvs[index]; - } - - AddTriangle (triangle) - { - this.triangles.push (triangle); - return this.triangles.length - 1; - } - - GetTriangle (index) - { - return this.triangles[index]; - } + SetTextureUV (index, uv) + { + this.uvs[index] = uv; + } + + GetTextureUV (index) + { + return this.uvs[index]; + } + + AddTriangle (triangle) + { + this.triangles.push (triangle); + return this.triangles.length - 1; + } + + GetTriangle (index) + { + return this.triangles[index]; + } }; diff --git a/source/model/model.js b/source/model/model.js index 0f459c0..e1debef 100644 --- a/source/model/model.js +++ b/source/model/model.js @@ -1,105 +1,105 @@ OV.Model = class { - constructor () - { - this.name = ''; - this.materials = []; - this.meshes = []; - } + constructor () + { + this.name = ''; + this.materials = []; + this.meshes = []; + } - GetName () - { - return this.name; - } + GetName () + { + return this.name; + } - SetName (name) - { - this.name = name; - } + SetName (name) + { + this.name = name; + } - MaterialCount () - { - return this.materials.length; - } + MaterialCount () + { + return this.materials.length; + } - MeshCount () - { - return this.meshes.length; - } + MeshCount () + { + return this.meshes.length; + } - VertexCount () - { - let count = 0; - for (let i = 0; i < this.meshes.length; i++) { - count += this.meshes[i].VertexCount (); - } - return count; - } + VertexCount () + { + let count = 0; + for (let i = 0; i < this.meshes.length; i++) { + count += this.meshes[i].VertexCount (); + } + return count; + } - NormalCount () - { - let count = 0; - for (let i = 0; i < this.meshes.length; i++) { - count += this.meshes[i].NormalCount (); - } - return count; - } + NormalCount () + { + let count = 0; + for (let i = 0; i < this.meshes.length; i++) { + count += this.meshes[i].NormalCount (); + } + return count; + } - TextureUVCount () - { - let count = 0; - for (let i = 0; i < this.meshes.length; i++) { - count += this.meshes[i].TextureUVCount (); - } - return count; - } + TextureUVCount () + { + let count = 0; + for (let i = 0; i < this.meshes.length; i++) { + count += this.meshes[i].TextureUVCount (); + } + return count; + } - TriangleCount () - { - let count = 0; - for (let i = 0; i < this.meshes.length; i++) { - count += this.meshes[i].TriangleCount (); - } - return count; - } + TriangleCount () + { + let count = 0; + for (let i = 0; i < this.meshes.length; i++) { + count += this.meshes[i].TriangleCount (); + } + return count; + } - AddMaterial (material) - { - this.materials.push (material); - return this.materials.length - 1; - } + AddMaterial (material) + { + this.materials.push (material); + return this.materials.length - 1; + } - GetMaterial (index) - { - return this.materials[index]; - } + GetMaterial (index) + { + return this.materials[index]; + } - AddMesh (mesh) - { - this.meshes.push (mesh); - return this.meshes.length - 1; - } + AddMesh (mesh) + { + this.meshes.push (mesh); + return this.meshes.length - 1; + } - AddMeshToIndex (mesh, index) - { - this.meshes.splice (index, 0, mesh); - return index; - } + AddMeshToIndex (mesh, index) + { + this.meshes.splice (index, 0, mesh); + return index; + } - RemoveMesh (index) - { - this.meshes.splice (index, 1); - } + RemoveMesh (index) + { + this.meshes.splice (index, 1); + } - GetMesh (index) - { - return this.meshes[index]; - } + GetMesh (index) + { + return this.meshes[index]; + } - Clear () - { - this.name = ''; - this.materials = []; - this.meshes = []; - } + Clear () + { + this.name = ''; + this.materials = []; + this.meshes = []; + } }; diff --git a/source/model/modelentities.js b/source/model/modelentities.js index 18c2076..958c754 100644 --- a/source/model/modelentities.js +++ b/source/model/modelentities.js @@ -1,255 +1,255 @@ OV.SRGBToLinear = function (component) { - if (component < 0.04045) { - return component * 0.0773993808; - } else { - return Math.pow (component * 0.9478672986 + 0.0521327014, 2.4); - } + if (component < 0.04045) { + return component * 0.0773993808; + } else { + return Math.pow (component * 0.9478672986 + 0.0521327014, 2.4); + } }; OV.LinearToSRGB = function (component) { - if (component < 0.0031308) { - return component * 12.92; - } else { - return 1.055 * (Math.pow (component, 0.41666)) - 0.055; - } + if (component < 0.0031308) { + return component * 12.92; + } else { + return 1.055 * (Math.pow (component, 0.41666)) - 0.055; + } }; OV.Color = class { - constructor (r, g, b) - { - this.r = r; // 0 .. 255 - this.g = g; // 0 .. 255 - this.b = b; // 0 .. 255 - } + constructor (r, g, b) + { + this.r = r; // 0 .. 255 + this.g = g; // 0 .. 255 + this.b = b; // 0 .. 255 + } - ToHexString () - { - function IntegerToHex (intVal) - { - let result = parseInt (intVal, 10).toString (16); - while (result.length < 2) { - result = '0' + result; - } - return result; - } + ToHexString () + { + function IntegerToHex (intVal) + { + let result = parseInt (intVal, 10).toString (16); + while (result.length < 2) { + result = '0' + result; + } + return result; + } - let r = IntegerToHex (this.r); - let g = IntegerToHex (this.g); - let b = IntegerToHex (this.b); - return r + g + b; - } + let r = IntegerToHex (this.r); + let g = IntegerToHex (this.g); + let b = IntegerToHex (this.b); + return r + g + b; + } - Clone () - { - return new OV.Color (this.r, this.g, this.b); - } + Clone () + { + return new OV.Color (this.r, this.g, this.b); + } }; OV.TextureMap = class { - constructor () - { - this.name = null; - this.url = null; - this.buffer = null; - this.offset = new OV.Coord2D (0.0, 0.0); - this.scale = new OV.Coord2D (1.0, 1.0); - this.rotation = 0.0; // radians - } + constructor () + { + this.name = null; + this.url = null; + this.buffer = null; + this.offset = new OV.Coord2D (0.0, 0.0); + this.scale = new OV.Coord2D (1.0, 1.0); + this.rotation = 0.0; // radians + } - IsValid () - { - return this.name !== null && this.url !== null && this.buffer !== null; - } + IsValid () + { + return this.name !== null && this.url !== null && this.buffer !== null; + } - HasTransformation () - { - if (!OV.CoordIsEqual2D (this.offset, new OV.Coord2D (0.0, 0.0))) { - return true; - } - if (!OV.CoordIsEqual2D (this.scale, new OV.Coord2D (1.0, 1.0))) { - return true; - } - if (!OV.IsEqual (this.rotation, 0.0)) { - return true; - } + HasTransformation () + { + if (!OV.CoordIsEqual2D (this.offset, new OV.Coord2D (0.0, 0.0))) { + return true; + } + if (!OV.CoordIsEqual2D (this.scale, new OV.Coord2D (1.0, 1.0))) { + return true; + } + if (!OV.IsEqual (this.rotation, 0.0)) { + return true; + } return false; - } + } - Clone () - { - let cloned = new OV.TextureMap (); - cloned.name = this.name; - cloned.url = this.url; - cloned.buffer = this.buffer; - cloned.offset = this.offset.Clone (); - cloned.scale = this.scale.Clone (); - cloned.rotation = this.rotation; - return cloned; - } + Clone () + { + let cloned = new OV.TextureMap (); + cloned.name = this.name; + cloned.url = this.url; + cloned.buffer = this.buffer; + cloned.offset = this.offset.Clone (); + cloned.scale = this.scale.Clone (); + cloned.rotation = this.rotation; + return cloned; + } }; OV.Material = class { - constructor () - { - this.name = ''; + constructor () + { + this.name = ''; - this.ambient = new OV.Color (0, 0, 0); - this.diffuse = new OV.Color (0, 0, 0); - this.specular = new OV.Color (0, 0, 0); - this.emissive = new OV.Color (0, 0, 0); + this.ambient = new OV.Color (0, 0, 0); + this.diffuse = new OV.Color (0, 0, 0); + this.specular = new OV.Color (0, 0, 0); + this.emissive = new OV.Color (0, 0, 0); - this.shininess = 0.0; // 0.0 .. 1.0 - this.opacity = 1.0; // 0.0 .. 1.0 + this.shininess = 0.0; // 0.0 .. 1.0 + this.opacity = 1.0; // 0.0 .. 1.0 - this.diffuseMap = null; - this.specularMap = null; - this.bumpMap = null; - this.normalMap = null; - this.emissiveMap = null; + this.diffuseMap = null; + this.specularMap = null; + this.bumpMap = null; + this.normalMap = null; + this.emissiveMap = null; - this.alphaTest = 0.0; // 0.0 .. 1.0 - this.transparent = false; - this.multiplyDiffuseMap = false; - } + this.alphaTest = 0.0; // 0.0 .. 1.0 + this.transparent = false; + this.multiplyDiffuseMap = false; + } - EnumerateTextureMaps (enumerator) - { - if (this.diffuseMap !== null) { - enumerator (this.diffuseMap); - } - if (this.specularMap !== null) { - enumerator (this.specularMap); - } - if (this.bumpMap !== null) { - enumerator (this.bumpMap); - } - if (this.normalMap !== null) { - enumerator (this.normalMap); - } - if (this.emissiveMap !== null) { - enumerator (this.emissiveMap); - } - } + EnumerateTextureMaps (enumerator) + { + if (this.diffuseMap !== null) { + enumerator (this.diffuseMap); + } + if (this.specularMap !== null) { + enumerator (this.specularMap); + } + if (this.bumpMap !== null) { + enumerator (this.bumpMap); + } + if (this.normalMap !== null) { + enumerator (this.normalMap); + } + if (this.emissiveMap !== null) { + enumerator (this.emissiveMap); + } + } - Clone () - { - let cloned = new OV.Material (); + Clone () + { + let cloned = new OV.Material (); - cloned.name = this.name; + cloned.name = this.name; - cloned.ambient = this.ambient.Clone (); - cloned.diffuse = this.diffuse.Clone (); - cloned.specular = this.specular.Clone (); - cloned.emissive = this.emissive.Clone (); + cloned.ambient = this.ambient.Clone (); + cloned.diffuse = this.diffuse.Clone (); + cloned.specular = this.specular.Clone (); + cloned.emissive = this.emissive.Clone (); - cloned.shininess = this.shininess; - cloned.opacity = this.opacity; + cloned.shininess = this.shininess; + cloned.opacity = this.opacity; - cloned.diffuseMap = this.CloneTextureMap (this.diffuseMap); - cloned.specularMap = this.CloneTextureMap (this.specularMap); - cloned.bumpMap = this.CloneTextureMap (this.bumpMap); - cloned.normalMap = this.CloneTextureMap (this.normalMap); - cloned.emissiveMap = this.CloneTextureMap (this.emissiveMap); + cloned.diffuseMap = this.CloneTextureMap (this.diffuseMap); + cloned.specularMap = this.CloneTextureMap (this.specularMap); + cloned.bumpMap = this.CloneTextureMap (this.bumpMap); + cloned.normalMap = this.CloneTextureMap (this.normalMap); + cloned.emissiveMap = this.CloneTextureMap (this.emissiveMap); - cloned.alphaTest = this.alphaTest; - cloned.transparent = this.transparent; - cloned.multiplyDiffuseMap = this.multiplyDiffuseMap; + cloned.alphaTest = this.alphaTest; + cloned.transparent = this.transparent; + cloned.multiplyDiffuseMap = this.multiplyDiffuseMap; - return cloned; - } + return cloned; + } - CloneTextureMap (textureMap) - { - if (textureMap === null) { - return null; - } - return textureMap.Clone (); - } + CloneTextureMap (textureMap) + { + if (textureMap === null) { + return null; + } + return textureMap.Clone (); + } }; OV.Triangle = class { - constructor (v0, v1, v2) - { - this.v0 = v0; - this.v1 = v1; - this.v2 = v2; - - this.n0 = null; - this.n1 = null; - this.n2 = null; - - this.u0 = null; - this.u1 = null; - this.u2 = null; - - this.mat = null; - this.curve = null; - } + constructor (v0, v1, v2) + { + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + + this.n0 = null; + this.n1 = null; + this.n2 = null; + + this.u0 = null; + this.u1 = null; + this.u2 = null; + + this.mat = null; + this.curve = null; + } - HasVertices () - { - return this.v0 !== null && this.v1 !== null && this.v2 !== null; - } + HasVertices () + { + return this.v0 !== null && this.v1 !== null && this.v2 !== null; + } - HasNormals () - { - return this.n0 !== null && this.n1 !== null && this.n2 !== null; - } + HasNormals () + { + return this.n0 !== null && this.n1 !== null && this.n2 !== null; + } - HasTextureUVs () - { - return this.u0 !== null && this.u1 !== null && this.u2 !== null; - } + HasTextureUVs () + { + return this.u0 !== null && this.u1 !== null && this.u2 !== null; + } - SetVertices (v0, v1, v2) - { - this.v0 = v0; - this.v1 = v1; - this.v2 = v2; - return this; - } - - SetNormals (n0, n1, n2) - { - this.n0 = n0; - this.n1 = n1; - this.n2 = n2; - return this; - } - - SetTextureUVs (u0, u1, u2) - { - this.u0 = u0; - this.u1 = u1; - this.u2 = u2; - return this; - } + SetVertices (v0, v1, v2) + { + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + return this; + } + + SetNormals (n0, n1, n2) + { + this.n0 = n0; + this.n1 = n1; + this.n2 = n2; + return this; + } + + SetTextureUVs (u0, u1, u2) + { + this.u0 = u0; + this.u1 = u1; + this.u2 = u2; + return this; + } - SetMaterial (mat) - { - this.mat = mat; - return this; - } - - SetCurve (curve) - { - this.curve = curve; - return this; - } + SetMaterial (mat) + { + this.mat = mat; + return this; + } + + SetCurve (curve) + { + this.curve = curve; + return this; + } - Clone () - { - let cloned = new OV.Triangle (this.v0, this.v1, this.v2); - cloned.SetNormals (this.n0, this.n1, this.n2); - cloned.SetTextureUVs (this.u0, this.u1, this.u2); - cloned.SetMaterial (this.mat); - cloned.SetCurve (this.curve); - return cloned; - } + Clone () + { + let cloned = new OV.Triangle (this.v0, this.v1, this.v2); + cloned.SetNormals (this.n0, this.n1, this.n2); + cloned.SetTextureUVs (this.u0, this.u1, this.u2); + cloned.SetMaterial (this.mat); + cloned.SetCurve (this.curve); + return cloned; + } }; diff --git a/source/model/modelfinalization.js b/source/model/modelfinalization.js index 52ee632..1fe0cde 100644 --- a/source/model/modelfinalization.js +++ b/source/model/modelfinalization.js @@ -1,7 +1,7 @@ OV.FinalizeModel = function (model, getDefaultMaterial) { - function FinalizeMesh (mesh, getDefaultMaterialIndex) - { + function FinalizeMesh (mesh, getDefaultMaterialIndex) + { function CalculateCurveNormals (mesh) { function AddAverageNormal (mesh, triangle, vertexIndex, triangleNormals, vertexToTriangles) @@ -54,9 +54,9 @@ OV.FinalizeModel = function (model, getDefaultMaterial) } } - function FinalizeTriangle (mesh, triangle, status) - { - if (!triangle.HasNormals ()) { + function FinalizeTriangle (mesh, triangle, status) + { + if (!triangle.HasNormals ()) { if (triangle.curve === null || triangle.curve === 0) { let v0 = mesh.GetVertex (triangle.v0); let v1 = mesh.GetVertex (triangle.v1); @@ -67,29 +67,29 @@ OV.FinalizeModel = function (model, getDefaultMaterial) } else { status.calculateCurveNormals = true; } - } + } if (triangle.mat === null) { triangle.mat = status.getDefaultMaterialIndex (); } if (triangle.curve === null) { triangle.curve = 0; } - } - + } + let status = { getDefaultMaterialIndex : getDefaultMaterialIndex, calculateCurveNormals : false }; - for (let i = 0; i < mesh.TriangleCount (); i++) { - let triangle = mesh.GetTriangle (i); - FinalizeTriangle (mesh, triangle, status); - } + for (let i = 0; i < mesh.TriangleCount (); i++) { + let triangle = mesh.GetTriangle (i); + FinalizeTriangle (mesh, triangle, status); + } if (status.calculateCurveNormals) { CalculateCurveNormals (mesh); } - } + } let defaultMaterialIndex = null; let getDefaultMaterialIndex = function () { @@ -143,9 +143,9 @@ OV.CheckModel = function (model) } function CheckMesh (model, mesh) - { + { function CheckTriangle (model, mesh, triangle) - { + { if (!IsCorrectIndex (triangle.v0, mesh.VertexCount ())) { return false; } @@ -183,53 +183,53 @@ OV.CheckModel = function (model) } return true; - } - - for (let i = 0; i < mesh.VertexCount (); i++) { - let vertex = mesh.GetVertex (i); - if (!IsCorrectNumber (vertex.x)) { + } + + for (let i = 0; i < mesh.VertexCount (); i++) { + let vertex = mesh.GetVertex (i); + if (!IsCorrectNumber (vertex.x)) { return false; } - if (!IsCorrectNumber (vertex.y)) { + if (!IsCorrectNumber (vertex.y)) { return false; } - if (!IsCorrectNumber (vertex.z)) { + if (!IsCorrectNumber (vertex.z)) { return false; } - } + } - for (let i = 0; i < mesh.NormalCount (); i++) { - let normal = mesh.GetNormal (i); - if (!IsCorrectNumber (normal.x)) { + for (let i = 0; i < mesh.NormalCount (); i++) { + let normal = mesh.GetNormal (i); + if (!IsCorrectNumber (normal.x)) { return false; } - if (!IsCorrectNumber (normal.y)) { + if (!IsCorrectNumber (normal.y)) { return false; } - if (!IsCorrectNumber (normal.z)) { + if (!IsCorrectNumber (normal.z)) { return false; } - } + } - for (let i = 0; i < mesh.TextureUVCount (); i++) { - let uv = mesh.GetTextureUV (i); - if (!IsCorrectNumber (uv.x)) { + for (let i = 0; i < mesh.TextureUVCount (); i++) { + let uv = mesh.GetTextureUV (i); + if (!IsCorrectNumber (uv.x)) { return false; } - if (!IsCorrectNumber (uv.y)) { + if (!IsCorrectNumber (uv.y)) { return false; } - } + } for (let i = 0; i < mesh.TriangleCount (); i++) { - let triangle = mesh.GetTriangle (i); - if (!CheckTriangle (model, mesh, triangle)) { + let triangle = mesh.GetTriangle (i); + if (!CheckTriangle (model, mesh, triangle)) { return false; } - } + } return true; - } + } for (let i = 0; i < model.MeshCount (); i++) { let mesh = model.GetMesh (i); diff --git a/source/model/modelutils.js b/source/model/modelutils.js index e2f5df3..9e6a137 100644 --- a/source/model/modelutils.js +++ b/source/model/modelutils.js @@ -1,16 +1,16 @@ OV.CalculateTriangleNormal = function (v0, v1, v2) { - let v = OV.SubCoord3D (v1, v0); - let w = OV.SubCoord3D (v2, v0); - - let normal = new OV.Coord3D ( - v.y * w.z - v.z * w.y, - v.z * w.x - v.x * w.z, - v.x * w.y - v.y * w.x - ); + let v = OV.SubCoord3D (v1, v0); + let w = OV.SubCoord3D (v2, v0); + + let normal = new OV.Coord3D ( + v.y * w.z - v.z * w.y, + v.z * w.x - v.x * w.z, + v.x * w.y - v.y * w.x + ); - normal.Normalize (); - return normal; + normal.Normalize (); + return normal; }; OV.TransformMesh = function (mesh, transformation) @@ -43,20 +43,20 @@ OV.TransformMesh = function (mesh, transformation) OV.GetMeshBoundingBox = function (mesh) { - let min = new OV.Coord3D (Infinity, Infinity, Infinity); - let max = new OV.Coord3D (-Infinity, -Infinity, -Infinity); + let min = new OV.Coord3D (Infinity, Infinity, Infinity); + let max = new OV.Coord3D (-Infinity, -Infinity, -Infinity); for (let i = 0; i < mesh.VertexCount (); i++) { let vertex = mesh.GetVertex (i); - min.x = Math.min (min.x, vertex.x); - min.y = Math.min (min.y, vertex.y); - min.z = Math.min (min.z, vertex.z); - max.x = Math.max (max.x, vertex.x); - max.y = Math.max (max.y, vertex.y); - max.z = Math.max (max.z, vertex.z); - } - - return [min, max]; + min.x = Math.min (min.x, vertex.x); + min.y = Math.min (min.y, vertex.y); + min.z = Math.min (min.z, vertex.z); + max.x = Math.max (max.x, vertex.x); + max.y = Math.max (max.y, vertex.y); + max.z = Math.max (max.z, vertex.z); + } + + return [min, max]; }; OV.IsModelEmpty = function (model) diff --git a/source/viewer/domviewer.js b/source/viewer/domviewer.js index fa1a557..71adffe 100644 --- a/source/viewer/domviewer.js +++ b/source/viewer/domviewer.js @@ -37,7 +37,7 @@ OV.Init3DViewerElements = function () return true; }); viewer.AdjustClippingPlanes (boundingSphere); - viewer.FitToWindow (boundingSphere, false); + viewer.FitToWindow (boundingSphere, false); }, onTextureLoaded : function () { viewer.Render (); diff --git a/source/viewer/navigation.js b/source/viewer/navigation.js index de51edf..5e0167f 100644 --- a/source/viewer/navigation.js +++ b/source/viewer/navigation.js @@ -1,56 +1,56 @@ OV.GetClientCoordinates = function (canvas, clientX, clientY) { - if (canvas.getBoundingClientRect) { - let clientRect = canvas.getBoundingClientRect (); - clientX -= clientRect.left; - clientY -= clientRect.top; - } - if (window.pageXOffset && window.pageYOffset) { - clientX += window.pageXOffset; - clientY += window.pageYOffset; - } - return (new OV.Coord2D (clientX, clientY)); + if (canvas.getBoundingClientRect) { + let clientRect = canvas.getBoundingClientRect (); + clientX -= clientRect.left; + clientY -= clientRect.top; + } + if (window.pageXOffset && window.pageYOffset) { + clientX += window.pageXOffset; + clientY += window.pageYOffset; + } + return (new OV.Coord2D (clientX, clientY)); }; OV.Camera = class { - constructor (eye, center, up) - { - this.eye = eye; - this.center = center; - this.up = up; - } + constructor (eye, center, up) + { + this.eye = eye; + this.center = center; + this.up = up; + } - Clone () - { - return new OV.Camera ( - this.eye.Clone (), - this.center.Clone (), - this.up.Clone () - ); - } + Clone () + { + return new OV.Camera ( + this.eye.Clone (), + this.center.Clone (), + this.up.Clone () + ); + } }; OV.MouseInteraction = class { - constructor () - { - this.prev = new OV.Coord2D (0.0, 0.0); - this.curr = new OV.Coord2D (0.0, 0,0); - this.diff = new OV.Coord2D (0.0, 0.0); - this.buttons = []; - } + constructor () + { + this.prev = new OV.Coord2D (0.0, 0.0); + this.curr = new OV.Coord2D (0.0, 0,0); + this.diff = new OV.Coord2D (0.0, 0.0); + this.buttons = []; + } - Down (canvas, ev) - { - this.buttons.push (ev.which); - this.curr = this.GetCurrent (canvas, ev); - this.prev = this.curr.Clone (); - } + Down (canvas, ev) + { + this.buttons.push (ev.which); + this.curr = this.GetCurrent (canvas, ev); + this.prev = this.curr.Clone (); + } - Move (canvas, ev) - { - this.curr = this.GetCurrent (canvas, ev); + Move (canvas, ev) + { + this.curr = this.GetCurrent (canvas, ev); this.diff = OV.SubCoord2D (this.curr, this.prev); this.prev = this.curr.Clone (); } diff --git a/source/viewer/viewer.js b/source/viewer/viewer.js index d5ccd79..6be3c01 100644 --- a/source/viewer/viewer.js +++ b/source/viewer/viewer.js @@ -1,399 +1,399 @@ OV.GetDefaultCamera = function (direction) { - if (direction === OV.Direction.X) { - return new OV.Camera ( - new OV.Coord3D (2.0, -3.0, 1.5), - new OV.Coord3D (0.0, 0.0, 0.0), - new OV.Coord3D (1.0, 0.0, 0.0) - ); - } else if (direction === OV.Direction.Y) { - return new OV.Camera ( - new OV.Coord3D (-1.5, 2.0, 3.0), - new OV.Coord3D (0.0, 0.0, 0.0), - new OV.Coord3D (0.0, 1.0, 0.0) - ); - } else if (direction === OV.Direction.Z) { - return new OV.Camera ( - new OV.Coord3D (-1.5, -3.0, 2.0), - new OV.Coord3D (0.0, 0.0, 0.0), - new OV.Coord3D (0.0, 0.0, 1.0) - ); - } - return null; + if (direction === OV.Direction.X) { + return new OV.Camera ( + new OV.Coord3D (2.0, -3.0, 1.5), + new OV.Coord3D (0.0, 0.0, 0.0), + new OV.Coord3D (1.0, 0.0, 0.0) + ); + } else if (direction === OV.Direction.Y) { + return new OV.Camera ( + new OV.Coord3D (-1.5, 2.0, 3.0), + new OV.Coord3D (0.0, 0.0, 0.0), + new OV.Coord3D (0.0, 1.0, 0.0) + ); + } else if (direction === OV.Direction.Z) { + return new OV.Camera ( + new OV.Coord3D (-1.5, -3.0, 2.0), + new OV.Coord3D (0.0, 0.0, 0.0), + new OV.Coord3D (0.0, 0.0, 1.0) + ); + } + return null; }; OV.UpVector = class { - constructor () - { - this.direction = OV.Direction.Z; - this.isFixed = true; - this.isFlipped = false; - } + constructor () + { + this.direction = OV.Direction.Z; + this.isFixed = true; + this.isFlipped = false; + } - SetDirection (newDirection, oldCamera) - { - this.direction = newDirection; - this.isFlipped = false; + SetDirection (newDirection, oldCamera) + { + this.direction = newDirection; + this.isFlipped = false; - let defaultCamera = OV.GetDefaultCamera (this.direction); - let defaultDir = OV.SubCoord3D (defaultCamera.eye, defaultCamera.center); + let defaultCamera = OV.GetDefaultCamera (this.direction); + let defaultDir = OV.SubCoord3D (defaultCamera.eye, defaultCamera.center); - let distance = OV.CoordDistance3D (oldCamera.center, oldCamera.eye); - let newEye = oldCamera.center.Clone ().Offset (defaultDir, distance); + let distance = OV.CoordDistance3D (oldCamera.center, oldCamera.eye); + let newEye = oldCamera.center.Clone ().Offset (defaultDir, distance); - let newCamera = oldCamera.Clone (); - if (this.direction === OV.Direction.Y) { - newCamera.up = new OV.Coord3D (0.0, 1.0, 0.0); - newCamera.eye = newEye; - } else if (this.direction === OV.Direction.Z) { - newCamera.up = new OV.Coord3D (0.0, 0.0, 1.0); - newCamera.eye = newEye; - } - return newCamera; - } + let newCamera = oldCamera.Clone (); + if (this.direction === OV.Direction.Y) { + newCamera.up = new OV.Coord3D (0.0, 1.0, 0.0); + newCamera.eye = newEye; + } else if (this.direction === OV.Direction.Z) { + newCamera.up = new OV.Coord3D (0.0, 0.0, 1.0); + newCamera.eye = newEye; + } + return newCamera; + } - SetFixed (isFixed, oldCamera) - { - this.isFixed = isFixed; - if (this.isFixed) { - return this.SetDirection (this.direction, oldCamera); - } - return null; - } + SetFixed (isFixed, oldCamera) + { + this.isFixed = isFixed; + if (this.isFixed) { + return this.SetDirection (this.direction, oldCamera); + } + return null; + } - Flip (oldCamera) - { - this.isFlipped = !this.isFlipped; - let newCamera = oldCamera.Clone (); - newCamera.up.MultiplyScalar (-1.0); - return newCamera; - } + Flip (oldCamera) + { + this.isFlipped = !this.isFlipped; + let newCamera = oldCamera.Clone (); + newCamera.up.MultiplyScalar (-1.0); + return newCamera; + } }; OV.Viewer = class { - constructor () - { - this.canvas = null; - this.renderer = null; - this.scene = null; - this.camera = null; - this.light = null; - this.navigation = null; - this.upVector = null; - this.settings = { - animationSteps : 40 - }; - } - - Init (canvas) - { - this.canvas = canvas; - this.canvas.id = 'viewer'; - this.canvas.addEventListener ('contenxtmenu', function (ev) { - ev.preventDefault (); - }); + constructor () + { + this.canvas = null; + this.renderer = null; + this.scene = null; + this.camera = null; + this.light = null; + this.navigation = null; + this.upVector = null; + this.settings = { + animationSteps : 40 + }; + } + + Init (canvas) + { + this.canvas = canvas; + this.canvas.id = 'viewer'; + this.canvas.addEventListener ('contenxtmenu', function (ev) { + ev.preventDefault (); + }); - let parameters = { - canvas : this.canvas, - antialias : true - }; - - this.renderer = new THREE.WebGLRenderer (parameters); - this.renderer.setClearColor ('#ffffff', 1.0); - this.renderer.setSize (this.canvas.width, this.canvas.height); - - this.scene = new THREE.Scene (); + let parameters = { + canvas : this.canvas, + antialias : true + }; + + this.renderer = new THREE.WebGLRenderer (parameters); + this.renderer.setClearColor ('#ffffff', 1.0); + this.renderer.setSize (this.canvas.width, this.canvas.height); + + this.scene = new THREE.Scene (); - this.InitCamera (); - this.InitLights (); + this.InitCamera (); + this.InitLights (); - this.Render (); - } + this.Render (); + } - SetClickHandler (onClick) - { - this.navigation.SetClickHandler (onClick); - } + SetClickHandler (onClick) + { + this.navigation.SetClickHandler (onClick); + } - GetCamera () - { - return this.navigation.GetCamera (); - } - - SetCamera (camera) - { - this.navigation.SetCamera (camera); - this.Render (); - } + GetCamera () + { + return this.navigation.GetCamera (); + } + + SetCamera (camera) + { + this.navigation.SetCamera (camera); + this.Render (); + } - Resize (width, height) - { - let innerSize = OV.GetInnerDimensions (this.canvas, width, height); - this.ResizeRenderer (innerSize.width, innerSize.height); - } + Resize (width, height) + { + let innerSize = OV.GetInnerDimensions (this.canvas, width, height); + this.ResizeRenderer (innerSize.width, innerSize.height); + } - ResizeRenderer (width, height) - { - this.camera.aspect = width / height; - this.camera.updateProjectionMatrix (); - this.renderer.setSize (width, height); - this.Render (); - } + ResizeRenderer (width, height) + { + this.camera.aspect = width / height; + this.camera.updateProjectionMatrix (); + this.renderer.setSize (width, height); + this.Render (); + } - FitToWindow (boundingSphere, animation) - { - if (boundingSphere === null) { - return; - } - let center = new OV.Coord3D (boundingSphere.center.x, boundingSphere.center.y, boundingSphere.center.z); - let radius = boundingSphere.radius; - let fov = this.camera.fov; - if (animation) { - let newCamera = this.navigation.GetFitToSphereCamera (center, radius, fov); - this.navigation.MoveCamera (newCamera, this.settings.animationSteps); - } else { - this.navigation.FitToSphere (center, radius, fov); - } - } + FitToWindow (boundingSphere, animation) + { + if (boundingSphere === null) { + return; + } + let center = new OV.Coord3D (boundingSphere.center.x, boundingSphere.center.y, boundingSphere.center.z); + let radius = boundingSphere.radius; + let fov = this.camera.fov; + if (animation) { + let newCamera = this.navigation.GetFitToSphereCamera (center, radius, fov); + this.navigation.MoveCamera (newCamera, this.settings.animationSteps); + } else { + this.navigation.FitToSphere (center, radius, fov); + } + } - AdjustClippingPlanes (boundingSphere) - { - if (boundingSphere === null) { - return; - } - if (boundingSphere.radius < 10.0) { - this.camera.near = 0.01; - this.camera.far = 100.0; - } else if (boundingSphere.radius < 100.0) { - this.camera.near = 0.1; - this.camera.far = 1000.0; - } else if (boundingSphere.radius < 1000.0) { - this.camera.near = 10.0; - this.camera.far = 10000.0; - } else { - this.camera.near = 100.0; - this.camera.far = 1000000.0; - } - this.camera.updateProjectionMatrix (); - this.Render (); - } + AdjustClippingPlanes (boundingSphere) + { + if (boundingSphere === null) { + return; + } + if (boundingSphere.radius < 10.0) { + this.camera.near = 0.01; + this.camera.far = 100.0; + } else if (boundingSphere.radius < 100.0) { + this.camera.near = 0.1; + this.camera.far = 1000.0; + } else if (boundingSphere.radius < 1000.0) { + this.camera.near = 10.0; + this.camera.far = 10000.0; + } else { + this.camera.near = 100.0; + this.camera.far = 1000000.0; + } + this.camera.updateProjectionMatrix (); + this.Render (); + } - IsFixUpVector () - { - return this.navigation.IsFixUpVector (); - } + IsFixUpVector () + { + return this.navigation.IsFixUpVector (); + } - SetFixUpVector (fixUpVector) - { - let oldCamera = this.navigation.GetCamera (); - let newCamera = this.upVector.SetFixed (fixUpVector, oldCamera); - this.navigation.SetFixUpVector (fixUpVector); - if (newCamera !== null) { - this.navigation.MoveCamera (newCamera, this.settings.animationSteps); - } - this.Render (); - } + SetFixUpVector (fixUpVector) + { + let oldCamera = this.navigation.GetCamera (); + let newCamera = this.upVector.SetFixed (fixUpVector, oldCamera); + this.navigation.SetFixUpVector (fixUpVector); + if (newCamera !== null) { + this.navigation.MoveCamera (newCamera, this.settings.animationSteps); + } + this.Render (); + } - SetUpVector (upDirection, animate) - { - let oldCamera = this.navigation.GetCamera (); - let newCamera = this.upVector.SetDirection (upDirection, oldCamera); - let animationSteps = animate ? this.settings.animationSteps : 0; - this.navigation.MoveCamera (newCamera, animationSteps); - this.Render (); - } + SetUpVector (upDirection, animate) + { + let oldCamera = this.navigation.GetCamera (); + let newCamera = this.upVector.SetDirection (upDirection, oldCamera); + let animationSteps = animate ? this.settings.animationSteps : 0; + this.navigation.MoveCamera (newCamera, animationSteps); + this.Render (); + } - FlipUpVector () - { - let oldCamera = this.navigation.GetCamera (); - let newCamera = this.upVector.Flip (oldCamera); - this.navigation.MoveCamera (newCamera, 0); - this.Render (); - } + FlipUpVector () + { + let oldCamera = this.navigation.GetCamera (); + let newCamera = this.upVector.Flip (oldCamera); + this.navigation.MoveCamera (newCamera, 0); + this.Render (); + } - Render () - { - let navigationCamera = this.navigation.GetCamera (); - this.camera.position.set (navigationCamera.eye.x, navigationCamera.eye.y, navigationCamera.eye.z); - this.camera.up.set (navigationCamera.up.x, navigationCamera.up.y, navigationCamera.up.z); - this.camera.lookAt (new THREE.Vector3 (navigationCamera.center.x, navigationCamera.center.y, navigationCamera.center.z)); - - let lightDir = OV.SubCoord3D (navigationCamera.eye, navigationCamera.center); - this.light.position.set (lightDir.x, lightDir.y, lightDir.z); - this.renderer.render (this.scene, this.camera); - } + Render () + { + let navigationCamera = this.navigation.GetCamera (); + this.camera.position.set (navigationCamera.eye.x, navigationCamera.eye.y, navigationCamera.eye.z); + this.camera.up.set (navigationCamera.up.x, navigationCamera.up.y, navigationCamera.up.z); + this.camera.lookAt (new THREE.Vector3 (navigationCamera.center.x, navigationCamera.center.y, navigationCamera.center.z)); + + let lightDir = OV.SubCoord3D (navigationCamera.eye, navigationCamera.center); + this.light.position.set (lightDir.x, lightDir.y, lightDir.z); + this.renderer.render (this.scene, this.camera); + } - AddMeshes (meshes) - { - for (let i = 0; i < meshes.length; i++) { - let mesh = meshes[i]; - this.scene.add (mesh); - } - this.Render (); - } + AddMeshes (meshes) + { + for (let i = 0; i < meshes.length; i++) { + let mesh = meshes[i]; + this.scene.add (mesh); + } + this.Render (); + } - Clear () - { - this.ClearMeshes (); - this.Render (); - } + Clear () + { + this.ClearMeshes (); + this.Render (); + } - SetMeshesVisibility (isVisible) - { - this.EnumerateMeshes (function (mesh) { - let visible = isVisible (mesh.userData); - if (mesh.visible !== visible) { - mesh.visible = visible; - } - }); - this.Render (); - } + SetMeshesVisibility (isVisible) + { + this.EnumerateMeshes (function (mesh) { + let visible = isVisible (mesh.userData); + if (mesh.visible !== visible) { + mesh.visible = visible; + } + }); + this.Render (); + } - SetMeshesHighlight (highlightMaterial, isHighlighted) - { - function CreateHighlightMaterials (originalMaterials, highlightMaterial) - { - let highlightMaterials = []; - for (let i = 0; i < originalMaterials.length; i++) { - highlightMaterials.push (highlightMaterial); - } - return highlightMaterials; - } + SetMeshesHighlight (highlightMaterial, isHighlighted) + { + function CreateHighlightMaterials (originalMaterials, highlightMaterial) + { + let highlightMaterials = []; + for (let i = 0; i < originalMaterials.length; i++) { + highlightMaterials.push (highlightMaterial); + } + return highlightMaterials; + } - this.EnumerateMeshes (function (mesh) { - let highlighted = isHighlighted (mesh.userData); - if (highlighted) { - if (mesh.userData.threeMaterials === null) { - mesh.userData.threeMaterials = mesh.material; - mesh.material = CreateHighlightMaterials (mesh.material, highlightMaterial); - } - } else { - if (mesh.userData.threeMaterials !== null) { - mesh.material = mesh.userData.threeMaterials; - mesh.userData.threeMaterials = null; - } - } - }); - this.Render (); - } + this.EnumerateMeshes (function (mesh) { + let highlighted = isHighlighted (mesh.userData); + if (highlighted) { + if (mesh.userData.threeMaterials === null) { + mesh.userData.threeMaterials = mesh.material; + mesh.material = CreateHighlightMaterials (mesh.material, highlightMaterial); + } + } else { + if (mesh.userData.threeMaterials !== null) { + mesh.material = mesh.userData.threeMaterials; + mesh.userData.threeMaterials = null; + } + } + }); + this.Render (); + } - GetMeshUnderMouse (mouseCoords) - { - let raycaster = new THREE.Raycaster (); - let mousePos = new THREE.Vector2 (); - mousePos.x = (mouseCoords.x / this.canvas.width) * 2 - 1; - mousePos.y = -(mouseCoords.y / this.canvas.height) * 2 + 1; - raycaster.setFromCamera (mousePos, this.camera); - let iSectObjects = raycaster.intersectObjects (this.scene.children); - for (let i = 0; i < iSectObjects.length; i++) { - let iSectObject = iSectObjects[i]; - if (iSectObject.object.type === 'Mesh' && iSectObject.object.visible) { - return iSectObject.object.userData; - } - } - return null; - } + GetMeshUnderMouse (mouseCoords) + { + let raycaster = new THREE.Raycaster (); + let mousePos = new THREE.Vector2 (); + mousePos.x = (mouseCoords.x / this.canvas.width) * 2 - 1; + mousePos.y = -(mouseCoords.y / this.canvas.height) * 2 + 1; + raycaster.setFromCamera (mousePos, this.camera); + let iSectObjects = raycaster.intersectObjects (this.scene.children); + for (let i = 0; i < iSectObjects.length; i++) { + let iSectObject = iSectObjects[i]; + if (iSectObject.object.type === 'Mesh' && iSectObject.object.visible) { + return iSectObject.object.userData; + } + } + return null; + } - GetBoundingBox (needToProcess) - { - let hasMesh = false; - let boundingBox = new THREE.Box3 (); - this.EnumerateMeshes (function (mesh) { - if (needToProcess (mesh.userData)) { - boundingBox.union (new THREE.Box3 ().setFromObject (mesh)); - hasMesh = true; - } - }); + GetBoundingBox (needToProcess) + { + let hasMesh = false; + let boundingBox = new THREE.Box3 (); + this.EnumerateMeshes (function (mesh) { + if (needToProcess (mesh.userData)) { + boundingBox.union (new THREE.Box3 ().setFromObject (mesh)); + hasMesh = true; + } + }); - if (!hasMesh) { - return null; - } - return boundingBox; - } + if (!hasMesh) { + return null; + } + return boundingBox; + } - GetBoundingSphere (needToProcess) - { - let boundingBox = this.GetBoundingBox (needToProcess); - if (boundingBox === null) { - return null; - } + GetBoundingSphere (needToProcess) + { + let boundingBox = this.GetBoundingBox (needToProcess); + if (boundingBox === null) { + return null; + } - let boundingSphere = new THREE.Sphere (); - boundingBox.getBoundingSphere (boundingSphere); - return boundingSphere; - } + let boundingSphere = new THREE.Sphere (); + boundingBox.getBoundingSphere (boundingSphere); + return boundingSphere; + } - EnumerateMeshesUserData (enumerator) - { - this.EnumerateMeshes (function (mesh) { - enumerator (mesh.userData); - }); - } + EnumerateMeshesUserData (enumerator) + { + this.EnumerateMeshes (function (mesh) { + enumerator (mesh.userData); + }); + } - EnumerateMeshes (enumerator) - { - this.scene.traverse (function (object) { - if (object.isMesh) { - enumerator (object); - } - }); - } + EnumerateMeshes (enumerator) + { + this.scene.traverse (function (object) { + if (object.isMesh) { + enumerator (object); + } + }); + } - ClearMeshes () - { - for (let i = this.scene.children.length - 1; i >= 0; i--) { - let object = this.scene.children[i]; - if (object.isMesh) { - object.geometry.dispose (); - this.scene.remove (object); - } - } - } + ClearMeshes () + { + for (let i = this.scene.children.length - 1; i >= 0; i--) { + let object = this.scene.children[i]; + if (object.isMesh) { + object.geometry.dispose (); + this.scene.remove (object); + } + } + } - InitCamera () - { - this.camera = new THREE.PerspectiveCamera (45.0, this.canvas.width / this.canvas.height, 0.1, 1000.0); - this.scene.add (this.camera); + InitCamera () + { + this.camera = new THREE.PerspectiveCamera (45.0, this.canvas.width / this.canvas.height, 0.1, 1000.0); + this.scene.add (this.camera); - let canvasElem = this.renderer.domElement; - let camera = OV.GetDefaultCamera (OV.Direction.Z); + let canvasElem = this.renderer.domElement; + let camera = OV.GetDefaultCamera (OV.Direction.Z); - let obj = this; - this.navigation = new OV.Navigation (canvasElem, camera); - this.navigation.SetUpdateHandler (function () { - obj.Render (); - }); + let obj = this; + this.navigation = new OV.Navigation (canvasElem, camera); + this.navigation.SetUpdateHandler (function () { + obj.Render (); + }); - this.upVector = new OV.UpVector (); - } + this.upVector = new OV.UpVector (); + } - InitLights () - { - let ambientLight = new THREE.AmbientLight (0x888888); - this.scene.add (ambientLight); - - this.light = new THREE.DirectionalLight (0x888888); - this.scene.add (this.light); - } + InitLights () + { + let ambientLight = new THREE.AmbientLight (0x888888); + this.scene.add (ambientLight); + + this.light = new THREE.DirectionalLight (0x888888); + this.scene.add (this.light); + } - GetImageAsDataUrl (width, height) - { - let originalSize = null; - if (width && height) { - originalSize = new THREE.Vector2 (); - this.renderer.getSize (originalSize); - this.ResizeRenderer (width, height); - } - this.Render (); - let url = this.renderer.domElement.toDataURL(); - if (originalSize !== null) { - this.ResizeRenderer ( - parseInt (originalSize.x, 10), - parseInt (originalSize.y, 10) - ); - } - return url; - } + GetImageAsDataUrl (width, height) + { + let originalSize = null; + if (width && height) { + originalSize = new THREE.Vector2 (); + this.renderer.getSize (originalSize); + this.ResizeRenderer (width, height); + } + this.Render (); + let url = this.renderer.domElement.toDataURL(); + if (originalSize !== null) { + this.ResizeRenderer ( + parseInt (originalSize.x, 10), + parseInt (originalSize.y, 10) + ); + } + return url; + } }; diff --git a/test/test.js b/test/test.js index 5ef2ef2..0a6326a 100644 --- a/test/test.js +++ b/test/test.js @@ -7,8 +7,8 @@ var testDirName = './tests/'; var files = fs.readdirSync (testDirName, { withFileTypes: true }); var i, file; for (i = 0; i < files.length; i++) { - file = files[i]; - if (file.isFile ()) { - require (testDirName + file.name); - } + file = files[i]; + if (file.isFile ()) { + require (testDirName + file.name); + } } diff --git a/test/tests/exporter_test.js b/test/tests/exporter_test.js index b3d248d..83f1702 100644 --- a/test/tests/exporter_test.js +++ b/test/tests/exporter_test.js @@ -178,7 +178,7 @@ describe ('Exporter', function () { 'endsolid Model', '' ].join ('\n')); - }); + }); it ('Stl Binary Export', function () { let model = CreateTestModel (); @@ -201,7 +201,7 @@ describe ('Exporter', function () { let importedModel = importer.GetModel (); assert.strictEqual (importedModel.VertexCount (), 12); assert.strictEqual (importedModel.TriangleCount (), 4); - }); + }); it ('Off Export', function () { let model = CreateTestModel (); diff --git a/test/tests/fileutils_test.js b/test/tests/fileutils_test.js index bc61a95..7cc5aa0 100644 --- a/test/tests/fileutils_test.js +++ b/test/tests/fileutils_test.js @@ -2,40 +2,40 @@ var assert = require ('assert'); function GetLines (str) { - var lines = []; - OV.ReadLines (str, function (line) { - lines.push (line); - }); - return lines; + var lines = []; + OV.ReadLines (str, function (line) { + lines.push (line); + }); + return lines; } describe ('File Utils', function () { - it ('Get File Extension', function () { - assert.strictEqual (OV.GetFileExtension ('file'), ''); - assert.strictEqual (OV.GetFileExtension ('file.obj'), 'obj'); - assert.strictEqual (OV.GetFileExtension ('file.OBJ'), 'OBJ'); - }); - - it ('Get File Name', function () { - assert.strictEqual (OV.GetFileName ('file'), 'file'); - assert.strictEqual (OV.GetFileName ('file.obj'), 'file.obj'); - assert.strictEqual (OV.GetFileName ('file.OBJ'), 'file.OBJ'); - assert.strictEqual (OV.GetFileName ('folder/file'), 'file'); - assert.strictEqual (OV.GetFileName ('folder/file.obj'), 'file.obj'); - assert.strictEqual (OV.GetFileName ('folder/file.OBJ'), 'file.OBJ'); - assert.strictEqual (OV.GetFileName ('folder\\file'), 'file'); - assert.strictEqual (OV.GetFileName ('folder\\file.obj'), 'file.obj'); - assert.strictEqual (OV.GetFileName ('folder\\file.OBJ'), 'file.OBJ'); - }); + it ('Get File Extension', function () { + assert.strictEqual (OV.GetFileExtension ('file'), ''); + assert.strictEqual (OV.GetFileExtension ('file.obj'), 'obj'); + assert.strictEqual (OV.GetFileExtension ('file.OBJ'), 'OBJ'); + }); + + it ('Get File Name', function () { + assert.strictEqual (OV.GetFileName ('file'), 'file'); + assert.strictEqual (OV.GetFileName ('file.obj'), 'file.obj'); + assert.strictEqual (OV.GetFileName ('file.OBJ'), 'file.OBJ'); + assert.strictEqual (OV.GetFileName ('folder/file'), 'file'); + assert.strictEqual (OV.GetFileName ('folder/file.obj'), 'file.obj'); + assert.strictEqual (OV.GetFileName ('folder/file.OBJ'), 'file.OBJ'); + assert.strictEqual (OV.GetFileName ('folder\\file'), 'file'); + assert.strictEqual (OV.GetFileName ('folder\\file.obj'), 'file.obj'); + assert.strictEqual (OV.GetFileName ('folder\\file.OBJ'), 'file.OBJ'); + }); - it ('Read Lines', function () { - assert.deepStrictEqual (GetLines (''), []); - assert.deepStrictEqual (GetLines ('\n'), []); - assert.deepStrictEqual (GetLines ('\r\n'), []); - assert.deepStrictEqual (GetLines ('a\nb'), ['a', 'b']); - assert.deepStrictEqual (GetLines ('apple\nbanana'), ['apple', 'banana']); - assert.deepStrictEqual (GetLines ('apple\r\nbanana'), ['apple', 'banana']); - assert.deepStrictEqual (GetLines ('apple\r\n'), ['apple']); - assert.deepStrictEqual (GetLines ('\r\napple\r\n'), ['apple']); - }); + it ('Read Lines', function () { + assert.deepStrictEqual (GetLines (''), []); + assert.deepStrictEqual (GetLines ('\n'), []); + assert.deepStrictEqual (GetLines ('\r\n'), []); + assert.deepStrictEqual (GetLines ('a\nb'), ['a', 'b']); + assert.deepStrictEqual (GetLines ('apple\nbanana'), ['apple', 'banana']); + assert.deepStrictEqual (GetLines ('apple\r\nbanana'), ['apple', 'banana']); + assert.deepStrictEqual (GetLines ('apple\r\n'), ['apple']); + assert.deepStrictEqual (GetLines ('\r\napple\r\n'), ['apple']); + }); }); diff --git a/test/tests/geometry_test.js b/test/tests/geometry_test.js index ba28433..fe949cb 100644 --- a/test/tests/geometry_test.js +++ b/test/tests/geometry_test.js @@ -2,145 +2,145 @@ var assert = require ('assert'); function CreateYRot90Quaternion () { - let angle = Math.PI / 2.0; - let rotX = 0.0; - let rotY = 1.0; - let rotZ = 0.0; - let quaternion = [ - Math.sin (angle / 2.0) * rotX, - Math.sin (angle / 2.0) * rotY, - Math.sin (angle / 2.0) * rotZ, - Math.cos (angle / 2.0) - ]; - return quaternion; + let angle = Math.PI / 2.0; + let rotX = 0.0; + let rotY = 1.0; + let rotZ = 0.0; + let quaternion = [ + Math.sin (angle / 2.0) * rotX, + Math.sin (angle / 2.0) * rotY, + Math.sin (angle / 2.0) * rotZ, + Math.cos (angle / 2.0) + ]; + return quaternion; } describe ('Coord', function () { - it ('Length', function () { - var c = new OV.Coord3D (2.0, 0.0, 0.0); - assert.strictEqual (c.Length (), 2.0); - }); - - it ('Multiply Scalar', function () { - var c = new OV.Coord3D (2.0, 0.0, 0.0); - c.MultiplyScalar (3.0); - assert.strictEqual (c.x, 6.0); - assert.strictEqual (c.y, 0.0); - assert.strictEqual (c.z, 0.0); - }); - - it ('Normalize', function () { - var c = new OV.Coord3D (2.0, 0.0, 0.0); - c.Normalize (); - assert.strictEqual (c.x, 1.0); - assert.strictEqual (c.y, 0.0); - assert.strictEqual (c.z, 0.0); - }); + it ('Length', function () { + var c = new OV.Coord3D (2.0, 0.0, 0.0); + assert.strictEqual (c.Length (), 2.0); + }); + + it ('Multiply Scalar', function () { + var c = new OV.Coord3D (2.0, 0.0, 0.0); + c.MultiplyScalar (3.0); + assert.strictEqual (c.x, 6.0); + assert.strictEqual (c.y, 0.0); + assert.strictEqual (c.z, 0.0); + }); + + it ('Normalize', function () { + var c = new OV.Coord3D (2.0, 0.0, 0.0); + c.Normalize (); + assert.strictEqual (c.x, 1.0); + assert.strictEqual (c.y, 0.0); + assert.strictEqual (c.z, 0.0); + }); }); describe ('Triangle', function() { - it ('Calculate Normal', function () { - var normal = OV.CalculateTriangleNormal ( - new OV.Coord3D (0.0, 0.0, 0.0), - new OV.Coord3D (1.0, 0.0, 0.0), - new OV.Coord3D (1.0, 1.0, 0.0) - ); - assert.strictEqual (normal.x, 0.0); - assert.strictEqual (normal.y, 0.0); - assert.strictEqual (normal.z, 1.0); - }); + it ('Calculate Normal', function () { + var normal = OV.CalculateTriangleNormal ( + new OV.Coord3D (0.0, 0.0, 0.0), + new OV.Coord3D (1.0, 0.0, 0.0), + new OV.Coord3D (1.0, 1.0, 0.0) + ); + assert.strictEqual (normal.x, 0.0); + assert.strictEqual (normal.y, 0.0); + assert.strictEqual (normal.z, 1.0); + }); }); describe ('Transformation', function() { - it ('Basic Test', function () { - let rotation = CreateYRot90Quaternion (); + it ('Basic Test', function () { + let rotation = CreateYRot90Quaternion (); - let coord = new OV.Coord3D (1.0, 2.0, 3.0); + let coord = new OV.Coord3D (1.0, 2.0, 3.0); - let tr = new OV.Transformation (); - assert (tr.IsIdentity ()); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (1.0, 2.0, 3.0))); + let tr = new OV.Transformation (); + assert (tr.IsIdentity ()); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (1.0, 2.0, 3.0))); - tr.AppendMatrix (new OV.Matrix ().CreateScale (3.0, 4.0, 5.0)); - assert (!tr.IsIdentity ()); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (3.0, 8.0, 15.0))); + tr.AppendMatrix (new OV.Matrix ().CreateScale (3.0, 4.0, 5.0)); + assert (!tr.IsIdentity ()); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (3.0, 8.0, 15.0))); - tr.AppendMatrix (new OV.Matrix ().CreateRotation (rotation[0], rotation[1], rotation[2], rotation[3])); - assert (!tr.IsIdentity ()); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (15.0, 8.0, -3.0))); - - tr.AppendMatrix (new OV.Matrix ().CreateTranslation (4.0, 5.0, 6.0)); - assert (!tr.IsIdentity ()); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); + tr.AppendMatrix (new OV.Matrix ().CreateRotation (rotation[0], rotation[1], rotation[2], rotation[3])); + assert (!tr.IsIdentity ()); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (15.0, 8.0, -3.0))); + + tr.AppendMatrix (new OV.Matrix ().CreateTranslation (4.0, 5.0, 6.0)); + assert (!tr.IsIdentity ()); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); - let tr2 = new OV.Transformation (); - tr2.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); - assert (OV.CoordIsEqual3D (tr2.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); - }); + let tr2 = new OV.Transformation (); + tr2.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); + assert (OV.CoordIsEqual3D (tr2.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); + }); - it ('TRS Compose Test', function () { - let rotation = CreateYRot90Quaternion (); - let coord = new OV.Coord3D (1.0, 2.0, 3.0); + it ('TRS Compose Test', function () { + let rotation = CreateYRot90Quaternion (); + let coord = new OV.Coord3D (1.0, 2.0, 3.0); - let tr = new OV.Transformation (); - tr.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); - }); + let tr = new OV.Transformation (); + tr.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); + }); - it ('TRS Compose Test', function () { - let rotation = CreateYRot90Quaternion (); - let coord = new OV.Coord3D (1.0, 2.0, 3.0); + it ('TRS Compose Test', function () { + let rotation = CreateYRot90Quaternion (); + let coord = new OV.Coord3D (1.0, 2.0, 3.0); - let tr = new OV.Transformation (); - tr.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); + let tr = new OV.Transformation (); + tr.SetMatrix (new OV.Matrix ().ComposeTRS ([4.0, 5.0, 6.0], rotation, [3.0, 4.0, 5.0])); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); - let trs = tr.GetMatrix ().DecomposeTRS (); - let tr2 = new OV.Transformation (); - tr2.SetMatrix (new OV.Matrix ().ComposeTRS (trs.translation, trs.rotation, trs.scale)); - assert (OV.CoordIsEqual3D (tr2.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); - }); + let trs = tr.GetMatrix ().DecomposeTRS (); + let tr2 = new OV.Transformation (); + tr2.SetMatrix (new OV.Matrix ().ComposeTRS (trs.translation, trs.rotation, trs.scale)); + assert (OV.CoordIsEqual3D (tr2.TransformCoord3D (coord), new OV.Coord3D (19.0, 13.0, 3.0))); + }); - it ('Default Quaternion Test', function () { - let coord = new OV.Coord3D (1.0, 2.0, 3.0); + it ('Default Quaternion Test', function () { + let coord = new OV.Coord3D (1.0, 2.0, 3.0); - let tr = new OV.Transformation (); - tr.SetMatrix (new OV.Matrix ().CreateRotation (0.0, 0.0, 0.0, 1.0)); - assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), coord)); - }); + let tr = new OV.Transformation (); + tr.SetMatrix (new OV.Matrix ().CreateRotation (0.0, 0.0, 0.0, 1.0)); + assert (OV.CoordIsEqual3D (tr.TransformCoord3D (coord), coord)); + }); }); describe ('Tween', function() { - it ('Linear Tween Function', function () { - assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 0, 10), 0.0)); - assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 1, 10), 1.0)); - assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 5, 10), 5.0)); - assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 9, 10), 9.0)); - assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 10, 10), 10.0)); - }); + it ('Linear Tween Function', function () { + assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 0, 10), 0.0)); + assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 1, 10), 1.0)); + assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 5, 10), 5.0)); + assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 9, 10), 9.0)); + assert (OV.IsEqual (OV.LinearTweenFunction (10.0, 10, 10), 10.0)); + }); - it ('Bezier Tween Function', function () { - assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 0, 10), 0.0)); - assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 1, 10), 0.28)); - assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 5, 10), 5.0)); - assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 9, 10), 9.72)); - assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 10, 10), 10.0)); - }); + it ('Bezier Tween Function', function () { + assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 0, 10), 0.0)); + assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 1, 10), 0.28)); + assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 5, 10), 5.0)); + assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 9, 10), 9.72)); + assert (OV.IsEqual (OV.BezierTweenFunction (10.0, 10, 10), 10.0)); + }); - it ('Parabolic Tween Function', function () { - assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 0, 10), 0.0)); - assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 5, 10), 5.0)); - assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 10, 10), 10.0)); - }); + it ('Parabolic Tween Function', function () { + assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 0, 10), 0.0)); + assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 5, 10), 5.0)); + assert (OV.IsEqual (OV.ParabolicTweenFunction (10.0, 10, 10), 10.0)); + }); - it ('Linear Tween Coordinates', function () { - let beg = new OV.Coord3D (0.0, 0.0, 0.0); - let end = new OV.Coord3D (9.0, 0.0, 0.0); - let segments = OV.TweenCoord3D (beg, end, 10, OV.LinearTweenFunction); - assert.strictEqual (segments.length, 10); - assert (OV.CoordIsEqual3D (segments[0], beg)); - assert (OV.CoordIsEqual3D (segments[1], new OV.Coord3D (1.0, 0.0, 0.0))); - assert (OV.CoordIsEqual3D (segments[5], new OV.Coord3D (5.0, 0.0, 0.0))); - assert (OV.CoordIsEqual3D (segments[segments.length - 1], end)); - }); + it ('Linear Tween Coordinates', function () { + let beg = new OV.Coord3D (0.0, 0.0, 0.0); + let end = new OV.Coord3D (9.0, 0.0, 0.0); + let segments = OV.TweenCoord3D (beg, end, 10, OV.LinearTweenFunction); + assert.strictEqual (segments.length, 10); + assert (OV.CoordIsEqual3D (segments[0], beg)); + assert (OV.CoordIsEqual3D (segments[1], new OV.Coord3D (1.0, 0.0, 0.0))); + assert (OV.CoordIsEqual3D (segments[5], new OV.Coord3D (5.0, 0.0, 0.0))); + assert (OV.CoordIsEqual3D (segments[segments.length - 1], end)); + }); }); diff --git a/test/tests/importer3ds_test.js b/test/tests/importer3ds_test.js index 68b1314..365993d 100644 --- a/test/tests/importer3ds_test.js +++ b/test/tests/importer3ds_test.js @@ -3,159 +3,159 @@ var testFiles = require ('../utils/testfiles.js'); var testUtils = require ('../utils/testutils.js'); describe ('3ds Importer', function() { - it ('cube_with_materials.obj', function () { - var model = testFiles.Import3dsFile ('cube_with_materials.3ds'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'tex' }, - { name : 'red' }, - { name : 'green' }, - { name : 'blue' }, - { name : 'white' } - ], - meshes : [ - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_with_materials.obj', function () { + var model = testFiles.Import3dsFile ('cube_with_materials.3ds'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'tex' }, + { name : 'red' }, + { name : 'green' }, + { name : 'blue' }, + { name : 'white' } + ], + meshes : [ + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_with_texture_transformations.3ds', function () { - var model = testFiles.Import3dsFile ('cube_with_texture_transformations.3ds'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'tex' }, - { name : 'red' }, - { name : 'green' }, - { name : 'blue' }, - { name : 'white' } - ], - meshes : [ - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_with_texture_transformations.3ds', function () { + var model = testFiles.Import3dsFile ('cube_with_texture_transformations.3ds'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'tex' }, + { name : 'red' }, + { name : 'green' }, + { name : 'blue' }, + { name : 'white' } + ], + meshes : [ + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_two_instances.3ds', function () { - var model = testFiles.Import3dsFile ('cube_two_instances.3ds'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'tex' }, - { name : 'red' }, - { name : 'green' }, - { name : 'blue' }, - { name : 'white' } - ], - meshes : [ - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - }, - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [2, 0, 0], - max : [3, 1, 1] - } - } - ] - }); - }); + it ('cube_two_instances.3ds', function () { + var model = testFiles.Import3dsFile ('cube_two_instances.3ds'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'tex' }, + { name : 'red' }, + { name : 'green' }, + { name : 'blue' }, + { name : 'white' } + ], + meshes : [ + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + }, + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [2, 0, 0], + max : [3, 1, 1] + } + } + ] + }); + }); - it ('cube_four_instances.3ds', function () { - var model = testFiles.Import3dsFile ('cube_four_instances.3ds'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'tex' }, - { name : 'red' }, - { name : 'green' }, - { name : 'blue' }, - { name : 'white' } - ], - meshes : [ - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - }, - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [2, 0, 0], - max : [3, 1, 1] - } - }, - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [2, 2, 0], - max : [3, 3, 1] - } - }, - { - name : 'cube', - vertexCount : 8, - normalCount : 12, - uvCount : 8, - triangleCount : 12, - boundingBox : { - min : [0, 2, 0], - max : [1, 3, 1] - } - } - ] - }); - }); + it ('cube_four_instances.3ds', function () { + var model = testFiles.Import3dsFile ('cube_four_instances.3ds'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'tex' }, + { name : 'red' }, + { name : 'green' }, + { name : 'blue' }, + { name : 'white' } + ], + meshes : [ + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + }, + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [2, 0, 0], + max : [3, 1, 1] + } + }, + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [2, 2, 0], + max : [3, 3, 1] + } + }, + { + name : 'cube', + vertexCount : 8, + normalCount : 12, + uvCount : 8, + triangleCount : 12, + boundingBox : { + min : [0, 2, 0], + max : [1, 3, 1] + } + } + ] + }); + }); }); diff --git a/test/tests/importer_test.js b/test/tests/importer_test.js index 395d230..0e375b4 100644 --- a/test/tests/importer_test.js +++ b/test/tests/importer_test.js @@ -22,7 +22,7 @@ function ImportFiles (files, callbacks) } describe ('Importer Test', function () { - it ('Empty File List', function () { + it ('Empty File List', function () { let files = []; ImportFiles (files, { success : function (importer, importResult) { @@ -32,9 +32,9 @@ describe ('Importer Test', function () { assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile); } }); - }); + }); - it ('Not existing file', function () { + it ('Not existing file', function () { let files = [ new FileObject ('obj', 'missing.obj') ]; @@ -46,9 +46,9 @@ describe ('Importer Test', function () { assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile); } }); - }); + }); - it ('Not imprtable file', function () { + it ('Not imprtable file', function () { let files = [ new FileObject ('', 'wrong.ext') ]; @@ -60,9 +60,9 @@ describe ('Importer Test', function () { assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile); } }); - }); + }); - it ('Wrong file', function () { + it ('Wrong file', function () { let files = [ new FileObject ('3ds', 'wrong.3ds') ]; @@ -74,7 +74,7 @@ describe ('Importer Test', function () { assert.strictEqual (importError.code, OV.ImportErrorCode.ImportFailed); } }); - }); + }); it ('Single file', function () { let files = [ @@ -90,7 +90,7 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); it ('Multiple files', function () { let files = [ @@ -110,7 +110,7 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); it ('Missing files', function () { let files = []; @@ -147,7 +147,7 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); it ('Missing texture multiple times', function () { let files = [ @@ -164,7 +164,7 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); it ('Append Missing files', function () { let theImporter = new OV.Importer (); @@ -198,7 +198,7 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); it ('Reuse importer', function () { let files1 = [ @@ -232,5 +232,5 @@ describe ('Importer Test', function () { assert.fail (); } }); - }); + }); }); diff --git a/test/tests/importergltf_test.js b/test/tests/importergltf_test.js index da4fbc2..23eb451 100644 --- a/test/tests/importergltf_test.js +++ b/test/tests/importergltf_test.js @@ -6,7 +6,7 @@ let testUtils = require ('../utils/testutils.js'); //console.log (util.inspect(testUtils.ModelToObjectSimple (model), {showHidden: false, depth: null})) describe ('Gltf Importer', function () { - it ('Triangle', function () { + it ('Triangle', function () { let testFileList = [ ['Triangle/glTF', 'Triangle.gltf'], ['Triangle/glTF-Embedded', 'Triangle.gltf'], @@ -37,9 +37,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('Box', function () { + it ('Box', function () { let testFileList = [ ['Box/glTF', 'Box.gltf'], ['Box/glTF-Embedded', 'Box.gltf'], @@ -69,9 +69,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('BoxInterleaved', function () { + it ('BoxInterleaved', function () { let testFileList = [ ['BoxInterleaved/glTF', 'BoxInterleaved.gltf'], ['BoxInterleaved/glTF-Embedded', 'BoxInterleaved.gltf'], @@ -101,9 +101,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('BoxTextured', function () { + it ('BoxTextured', function () { let testFileList = [ ['BoxTextured/glTF', 'BoxTextured.gltf'], ['BoxTextured/glTF-Embedded', 'BoxTextured.gltf'], @@ -133,7 +133,7 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); it ('SimpleMeshes', function () { let testFileList = [ @@ -175,7 +175,7 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); it ('OrientationTest', function () { let testFileList = [ @@ -345,9 +345,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('MeshPrimitives_4Vertex', function () { + it ('MeshPrimitives_4Vertex', function () { let testFileList = [ ['Mesh_PrimitiveMode', 'Mesh_PrimitiveMode_04.gltf'], ['Mesh_PrimitiveMode', 'Mesh_PrimitiveMode_05.gltf'], @@ -379,9 +379,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('MeshPrimitives_6Vertex', function () { + it ('MeshPrimitives_6Vertex', function () { let testFileList = [ ['Mesh_PrimitiveMode', 'Mesh_PrimitiveMode_06.gltf'] ]; @@ -409,9 +409,9 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); - it ('SimpleSparseAccessor', function () { + it ('SimpleSparseAccessor', function () { let testFileList = [ ['SimpleSparseAccessor/glTF', 'SimpleSparseAccessor.gltf'], ['SimpleSparseAccessor/glTF-Embedded', 'SimpleSparseAccessor.gltf'] @@ -440,5 +440,5 @@ describe ('Gltf Importer', function () { ] }); } - }); + }); }); diff --git a/test/tests/importerobj_test.js b/test/tests/importerobj_test.js index 824be87..c1df2df 100644 --- a/test/tests/importerobj_test.js +++ b/test/tests/importerobj_test.js @@ -3,579 +3,579 @@ var testFiles = require ('../utils/testfiles.js'); var testUtils = require ('../utils/testutils.js'); describe ('Obj Importer', function() { - it ('single_triangle.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles.obj', function () { - var model = testFiles.ImportObjFile ('two_triangles.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_triangles.obj', function () { + var model = testFiles.ImportObjFile ('two_triangles.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_rectangle.obj', function () { - var model = testFiles.ImportObjFile ('single_rectangle.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_rectangle.obj', function () { + var model = testFiles.ImportObjFile ('single_rectangle.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_comments.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle_with_comments.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MyMeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_comments.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle_with_comments.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MyMeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_negative_indices.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle_negative_indices.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_negative_indices.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle_negative_indices.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_normals_and_uvs.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle_with_normals_and_uvs.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [0, 0, 1, 0, 1, 1], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_normals_and_uvs.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle_with_normals_and_uvs.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [0, 0, 1, 0, 1, 1], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_in_mesh.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle_in_mesh.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_in_mesh.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle_in_mesh.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles_in_meshes.obj', function () { - var model = testFiles.ImportObjFile ('two_triangles_in_meshes.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName1', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - }, - { - name : 'MeshName2', - triangles : [ - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_triangles_in_meshes.obj', function () { + var model = testFiles.ImportObjFile ('two_triangles_in_meshes.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName1', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + }, + { + name : 'MeshName2', + triangles : [ + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('empty_meshes.obj', function () { - var model = testFiles.ImportObjFile ('empty_meshes.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName1', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - }, - { - name : 'MeshName2', - triangles : [ - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('empty_meshes.obj', function () { + var model = testFiles.ImportObjFile ('empty_meshes.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName1', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + }, + { + name : 'MeshName2', + triangles : [ + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_material.obj', function () { - var model = testFiles.ImportObjFile ('single_triangle_with_material.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : 'MaterialName1' }, - { name : 'MaterialName2' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_material.obj', function () { + var model = testFiles.ImportObjFile ('single_triangle_with_material.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : 'MaterialName1' }, + { name : 'MaterialName2' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles_with_material.obj', function () { - var model = testFiles.ImportObjFile ('two_triangles_with_material.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : 'MaterialName1' }, - { name : 'MaterialName2' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 1 - } - ] - } - ] - }); - }); + it ('two_triangles_with_material.obj', function () { + var model = testFiles.ImportObjFile ('two_triangles_with_material.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : 'MaterialName1' }, + { name : 'MaterialName2' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 1 + } + ] + } + ] + }); + }); - it ('two_meshes_same_vertices.obj', function () { - var model = testFiles.ImportObjFile ('two_meshes_same_vertices.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName1', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - }, - { - name : 'MeshName2', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 0, 0, 1], - normals : [0, -1, 0, 0, -1, 0, 0, -1, 0], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_meshes_same_vertices.obj', function () { + var model = testFiles.ImportObjFile ('two_meshes_same_vertices.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName1', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + }, + { + name : 'MeshName2', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 0, 0, 1], + normals : [0, -1, 0, 0, -1, 0, 0, -1, 0], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_meshes_with_same_name.obj', function () { - var model = testFiles.ImportObjFile ('two_meshes_with_same_name.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 0, 0, 0, 0, 1], - normals : [0, -1, 0, 0, -1, 0, 0, -1, 0], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_meshes_with_same_name.obj', function () { + var model = testFiles.ImportObjFile ('two_meshes_with_same_name.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 0, 0, 0, 0, 1], + normals : [0, -1, 0, 0, -1, 0, 0, -1, 0], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('rectangle_with_texture.obj', function () { - var model = testFiles.ImportObjFile ('rectangle_with_texture.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : 'Material' } - ], - meshes : [ - { - name : 'Mesh', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [0, 0, 1, 0, 1, 1], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [0, 0, 1, 1, 0, 1], - mat : 0 - } - ] - } - ] - }); - }); + it ('rectangle_with_texture.obj', function () { + var model = testFiles.ImportObjFile ('rectangle_with_texture.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : 'Material' } + ], + meshes : [ + { + name : 'Mesh', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [0, 0, 1, 0, 1, 1], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [0, 0, 1, 1, 0, 1], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_materials_same_texture.obj', function () { - var model = testFiles.ImportObjFile ('two_materials_same_texture.obj'); - assert.strictEqual (model.GetMaterial (0).diffuseMap.url, model.GetMaterial (1).diffuseMap.url); - assert.strictEqual (model.GetMaterial (0).diffuseMap.buffer.byteLength, model.GetMaterial (1).diffuseMap.buffer.byteLength); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : 'Material1' }, - { name : 'Material2' } - ], - meshes : [ - { - name : 'Mesh', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [0, 0, 1, 0, 1, 1], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [0, 0, 1, 1, 0, 1], - mat : 1 - } - ] - } - ] - }); - }); + it ('two_materials_same_texture.obj', function () { + var model = testFiles.ImportObjFile ('two_materials_same_texture.obj'); + assert.strictEqual (model.GetMaterial (0).diffuseMap.url, model.GetMaterial (1).diffuseMap.url); + assert.strictEqual (model.GetMaterial (0).diffuseMap.buffer.byteLength, model.GetMaterial (1).diffuseMap.buffer.byteLength); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : 'Material1' }, + { name : 'Material2' } + ], + meshes : [ + { + name : 'Mesh', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [0, 0, 1, 0, 1, 1], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [0, 0, 1, 1, 0, 1], + mat : 1 + } + ] + } + ] + }); + }); - it ('cube_with_materials.obj', function () { - var model = testFiles.ImportObjFile ('cube_with_materials.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'Red' }, - { name : 'Green' }, - { name : 'Blue' }, - { name : 'White' }, - { name : 'Texture' } - ], - meshes : [ - { - name : 'Cube', - vertexCount : 8, - normalCount : 6, - uvCount : 4, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_with_materials.obj', function () { + var model = testFiles.ImportObjFile ('cube_with_materials.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'Red' }, + { name : 'Green' }, + { name : 'Blue' }, + { name : 'White' }, + { name : 'Texture' } + ], + meshes : [ + { + name : 'Cube', + vertexCount : 8, + normalCount : 6, + uvCount : 4, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_rgb.obj', function () { - var model = testFiles.ImportObjFile ('cube_rgb.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'Red' }, - { name : 'Green' }, - { name : 'Blue' }, - { name : 'White' } - ], - meshes : [ - { - name : 'Cube', - vertexCount : 8, - normalCount : 6, - uvCount : 4, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_rgb.obj', function () { + var model = testFiles.ImportObjFile ('cube_rgb.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'Red' }, + { name : 'Green' }, + { name : 'Blue' }, + { name : 'White' } + ], + meshes : [ + { + name : 'Cube', + vertexCount : 8, + normalCount : 6, + uvCount : 4, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_with_materials_comments.obj', function () { - var model = testFiles.ImportObjFile ('cube_with_materials_comments.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'Red' }, - { name : 'Green' }, - { name : 'Blue' }, - { name : 'White' }, - { name : 'Texture' } - ], - meshes : [ - { - name : 'Cube', - vertexCount : 8, - normalCount : 6, - uvCount : 4, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); - - it ('cube with white spaces.obj', function () { - var model = testFiles.ImportObjFile ('cube with white spaces.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'Red Color' }, - { name : 'Green Color' }, - { name : 'Blue Color' }, - { name : 'White Color' }, - { name : 'Texture Color' } - ], - meshes : [ - { - name : 'Cube Mesh', - vertexCount : 8, - normalCount : 6, - uvCount : 4, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_with_materials_comments.obj', function () { + var model = testFiles.ImportObjFile ('cube_with_materials_comments.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'Red' }, + { name : 'Green' }, + { name : 'Blue' }, + { name : 'White' }, + { name : 'Texture' } + ], + meshes : [ + { + name : 'Cube', + vertexCount : 8, + normalCount : 6, + uvCount : 4, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); + + it ('cube with white spaces.obj', function () { + var model = testFiles.ImportObjFile ('cube with white spaces.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'Red Color' }, + { name : 'Green Color' }, + { name : 'Blue Color' }, + { name : 'White Color' }, + { name : 'Texture Color' } + ], + meshes : [ + { + name : 'Cube Mesh', + vertexCount : 8, + normalCount : 6, + uvCount : 4, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('icosahedron.obj', function () { - var model = testFiles.ImportObjFile ('icosahedron.obj'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : 'Blue' } - ], - meshes : [ - { - name : 'Icosahedron', - vertexCount : 12, - normalCount : 20, - uvCount : 0, - triangleCount : 20, - boundingBox : { - min : [-0.85065080835204, -0.85065080835204, -0.85065080835204], - max : [0.85065080835204, 0.85065080835204, 0.85065080835204] - } - } - ] - }); - }); + it ('icosahedron.obj', function () { + var model = testFiles.ImportObjFile ('icosahedron.obj'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : 'Blue' } + ], + meshes : [ + { + name : 'Icosahedron', + vertexCount : 12, + normalCount : 20, + uvCount : 0, + triangleCount : 20, + boundingBox : { + min : [-0.85065080835204, -0.85065080835204, -0.85065080835204], + max : [0.85065080835204, 0.85065080835204, 0.85065080835204] + } + } + ] + }); + }); - it ('hundred_cubes.obj', function () { - var model = testFiles.ImportObjFile ('hundred_cubes.obj'); - assert (OV.CheckModel (model)); - assert.strictEqual (model.MaterialCount (), 3); - assert.strictEqual (model.MeshCount (), 100); - }); + it ('hundred_cubes.obj', function () { + var model = testFiles.ImportObjFile ('hundred_cubes.obj'); + assert (OV.CheckModel (model)); + assert.strictEqual (model.MaterialCount (), 3); + assert.strictEqual (model.MeshCount (), 100); + }); }); diff --git a/test/tests/importeroff_test.js b/test/tests/importeroff_test.js index 69cb86e..b05be9e 100644 --- a/test/tests/importeroff_test.js +++ b/test/tests/importeroff_test.js @@ -3,135 +3,135 @@ var testFiles = require ('../utils/testfiles.js'); var testUtils = require ('../utils/testutils.js'); describe ('Off Importer', function() { - it ('single_triangle.off', function () { - var model = testFiles.ImportOffFile ('single_triangle.off'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle.off', function () { + var model = testFiles.ImportOffFile ('single_triangle.off'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles.off', function () { - var model = testFiles.ImportOffFile ('two_triangles.off'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_triangles.off', function () { + var model = testFiles.ImportOffFile ('two_triangles.off'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_rectangle.off', function () { - var model = testFiles.ImportOffFile ('single_rectangle.off'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_rectangle.off', function () { + var model = testFiles.ImportOffFile ('single_rectangle.off'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_comments.off', function () { - var model = testFiles.ImportOffFile ('single_triangle_with_comments.off'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_comments.off', function () { + var model = testFiles.ImportOffFile ('single_triangle_with_comments.off'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('cube.off', function () { - var model = testFiles.ImportOffFile ('cube.off'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 8, - normalCount : 12, - uvCount : 0, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube.off', function () { + var model = testFiles.ImportOffFile ('cube.off'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 8, + normalCount : 12, + uvCount : 0, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); }); diff --git a/test/tests/importerply_test.js b/test/tests/importerply_test.js index f16e4ca..c9a8b8e 100644 --- a/test/tests/importerply_test.js +++ b/test/tests/importerply_test.js @@ -3,210 +3,210 @@ var testFiles = require ('../utils/testfiles.js'); var testUtils = require ('../utils/testutils.js'); describe ('Ply Importer', function() { - it ('single_triangle.ply', function () { - var model = testFiles.ImportPlyFile ('single_triangle.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle.ply', function () { + var model = testFiles.ImportPlyFile ('single_triangle.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles.ply', function () { - var model = testFiles.ImportPlyFile ('two_triangles.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_triangles.ply', function () { + var model = testFiles.ImportPlyFile ('two_triangles.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_rectangle.ply', function () { - var model = testFiles.ImportPlyFile ('single_rectangle.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_rectangle.ply', function () { + var model = testFiles.ImportPlyFile ('single_rectangle.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_comments.ply', function () { - var model = testFiles.ImportPlyFile ('single_triangle_with_comments.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_comments.ply', function () { + var model = testFiles.ImportPlyFile ('single_triangle_with_comments.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('cube.ply', function () { - var model = testFiles.ImportPlyFile ('cube.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 8, - normalCount : 12, - uvCount : 0, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); - - it ('cube_meshlab_ascii.ply', function () { - var model = testFiles.ImportPlyFile ('cube_meshlab_ascii.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 8, + it ('cube.ply', function () { + var model = testFiles.ImportPlyFile ('cube.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 8, normalCount : 12, uvCount : 0, triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_meshlab_binary.ply', function () { - var model = testFiles.ImportPlyFile ('cube_meshlab_binary.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 8, + it ('cube_meshlab_ascii.ply', function () { + var model = testFiles.ImportPlyFile ('cube_meshlab_ascii.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 8, normalCount : 12, uvCount : 0, triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_rgb_binary.ply', function () { - var model = testFiles.ImportPlyFile ('cube_rgb_binary.ply'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '#cc0000ff' }, - { name : '#00cc00ff' }, - { name : '#0000ccff' }, - { name : '#cccccc7f' } - ], - meshes : [ - { - name : '', - vertexCount : 8, - normalCount : 12, - uvCount : 0, - triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + it ('cube_meshlab_binary.ply', function () { + var model = testFiles.ImportPlyFile ('cube_meshlab_binary.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 8, + normalCount : 12, + uvCount : 0, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); + + it ('cube_rgb_binary.ply', function () { + var model = testFiles.ImportPlyFile ('cube_rgb_binary.ply'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '#cc0000ff' }, + { name : '#00cc00ff' }, + { name : '#0000ccff' }, + { name : '#cccccc7f' } + ], + meshes : [ + { + name : '', + vertexCount : 8, + normalCount : 12, + uvCount : 0, + triangleCount : 12, + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); }); diff --git a/test/tests/importerstl_test.js b/test/tests/importerstl_test.js index 1416b1f..d7f7d5c 100644 --- a/test/tests/importerstl_test.js +++ b/test/tests/importerstl_test.js @@ -3,202 +3,202 @@ var testFiles = require ('../utils/testfiles.js'); var testUtils = require ('../utils/testutils.js'); describe ('Stl Importer', function() { - it ('single_triangle.stl', function () { - var model = testFiles.ImportStlFile ('single_triangle.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle.stl', function () { + var model = testFiles.ImportStlFile ('single_triangle.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_with_comments.stl', function () { - var model = testFiles.ImportStlFile ('single_triangle_with_comments.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_with_comments.stl', function () { + var model = testFiles.ImportStlFile ('single_triangle_with_comments.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('single_triangle_no_normal.stl', function () { - var model = testFiles.ImportStlFile ('single_triangle_no_normal.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('single_triangle_no_normal.stl', function () { + var model = testFiles.ImportStlFile ('single_triangle_no_normal.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('two_triangles.stl', function () { - var model = testFiles.ImportStlFile ('two_triangles.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'MeshName', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); - }); + it ('two_triangles.stl', function () { + var model = testFiles.ImportStlFile ('two_triangles.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'MeshName', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); + }); - it ('stl_ascii.stl', function () { - var model = testFiles.ImportStlFile ('stl_ascii.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'Untitled-5427e5af', - vertexCount : 1716, + it ('stl_ascii.stl', function () { + var model = testFiles.ImportStlFile ('stl_ascii.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'Untitled-5427e5af', + vertexCount : 1716, normalCount : 572, uvCount : 0, triangleCount : 572, - boundingBox : { - min : [0, -1.10792799192095, 0], - max : [4.94407346265022, 3.31831671830375, 1.2] - } - } - ] - }); - }); + boundingBox : { + min : [0, -1.10792799192095, 0], + max : [4.94407346265022, 3.31831671830375, 1.2] + } + } + ] + }); + }); - it ('stl_binary.stl', function () { - var model = testFiles.ImportStlFile ('stl_binary.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 2184, + it ('stl_binary.stl', function () { + var model = testFiles.ImportStlFile ('stl_binary.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 2184, normalCount : 728, uvCount : 0, triangleCount : 728, - boundingBox : { - min : [0, -1.1079280376434326, 0], - max : [5.70156717300415, 3.318316698074341, 1.2000000476837158] - } - } - ] - }); - }); - + boundingBox : { + min : [0, -1.1079280376434326, 0], + max : [5.70156717300415, 3.318316698074341, 1.2000000476837158] + } + } + ] + }); + }); + - it ('cube_meshlab_ascii.stl', function () { - var model = testFiles.ImportStlFile ('cube_meshlab_ascii.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : 'STL generated by MeshLab', - vertexCount : 36, + it ('cube_meshlab_ascii.stl', function () { + var model = testFiles.ImportStlFile ('cube_meshlab_ascii.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : 'STL generated by MeshLab', + vertexCount : 36, normalCount : 12, uvCount : 0, triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); - it ('cube_meshlab_binary.stl', function () { - var model = testFiles.ImportStlFile ('cube_meshlab_binary.stl'); - assert (OV.CheckModel (model)); - assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - vertexCount : 36, + it ('cube_meshlab_binary.stl', function () { + var model = testFiles.ImportStlFile ('cube_meshlab_binary.stl'); + assert (OV.CheckModel (model)); + assert.deepStrictEqual (testUtils.ModelToObjectSimple (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + vertexCount : 36, normalCount : 12, uvCount : 0, triangleCount : 12, - boundingBox : { - min : [0, 0, 0], - max : [1, 1, 1] - } - } - ] - }); - }); + boundingBox : { + min : [0, 0, 0], + max : [1, 1, 1] + } + } + ] + }); + }); }); diff --git a/test/tests/importerutils_test.js b/test/tests/importerutils_test.js index 2b2b511..b6abda6 100644 --- a/test/tests/importerutils_test.js +++ b/test/tests/importerutils_test.js @@ -1,7 +1,7 @@ var assert = require ('assert'); describe ('Power of Two', function () { - it ('IsPowerOfTwo', function () { + it ('IsPowerOfTwo', function () { assert (OV.IsPowerOfTwo (1)); assert (OV.IsPowerOfTwo (2)); assert (!OV.IsPowerOfTwo (3)); @@ -13,5 +13,5 @@ describe ('Power of Two', function () { assert.strictEqual (OV.NextPowerOfTwo (i - 1), i); assert.strictEqual (OV.NextPowerOfTwo (i + 1), i * 2); } - }); + }); }); diff --git a/test/tests/io_test.js b/test/tests/io_test.js index 4f3591c..cbdd29a 100644 --- a/test/tests/io_test.js +++ b/test/tests/io_test.js @@ -2,7 +2,7 @@ var assert = require ('assert'); var testUtils = require ('../utils/testutils.js'); describe ('IO Test', function () { - it ('Binary Reader', function () { + it ('Binary Reader', function () { let buffer = testUtils.GetArrayBufferFileContent ('bin', 'binary_content.bin'); let reader = new OV.BinaryReader (buffer, true); diff --git a/test/tests/mesh_test.js b/test/tests/mesh_test.js index e00db7a..082d317 100644 --- a/test/tests/mesh_test.js +++ b/test/tests/mesh_test.js @@ -1,109 +1,109 @@ var assert = require ('assert'); describe ('Mesh', function() { - it ('Default Initialization', function () { - var mesh = new OV.Mesh (); - assert.strictEqual (mesh.GetName (), ''); - assert.strictEqual (mesh.VertexCount (), 0); - assert.strictEqual (mesh.NormalCount (), 0); - assert.strictEqual (mesh.TextureUVCount (), 0); - assert.strictEqual (mesh.TriangleCount (), 0); - }); - - it ('Set Name', function () { - var mesh = new OV.Mesh (); - mesh.SetName ('example'); - assert.strictEqual (mesh.GetName (), 'example'); - }); + it ('Default Initialization', function () { + var mesh = new OV.Mesh (); + assert.strictEqual (mesh.GetName (), ''); + assert.strictEqual (mesh.VertexCount (), 0); + assert.strictEqual (mesh.NormalCount (), 0); + assert.strictEqual (mesh.TextureUVCount (), 0); + assert.strictEqual (mesh.TriangleCount (), 0); + }); + + it ('Set Name', function () { + var mesh = new OV.Mesh (); + mesh.SetName ('example'); + assert.strictEqual (mesh.GetName (), 'example'); + }); - it ('Add Vertex', function () { - var mesh = new OV.Mesh (); - var index = mesh.AddVertex (new OV.Coord3D (1.0, 2.0, 3.0)) - assert.strictEqual (index, 0); - assert.strictEqual (mesh.VertexCount (), 1); - var vertex = mesh.GetVertex (index); - assert.strictEqual (vertex.x, 1.0); - assert.strictEqual (vertex.y, 2.0); - assert.strictEqual (vertex.z, 3.0); - }); + it ('Add Vertex', function () { + var mesh = new OV.Mesh (); + var index = mesh.AddVertex (new OV.Coord3D (1.0, 2.0, 3.0)) + assert.strictEqual (index, 0); + assert.strictEqual (mesh.VertexCount (), 1); + var vertex = mesh.GetVertex (index); + assert.strictEqual (vertex.x, 1.0); + assert.strictEqual (vertex.y, 2.0); + assert.strictEqual (vertex.z, 3.0); + }); - it ('Add Normal', function () { - var mesh = new OV.Mesh (); - var index = mesh.AddNormal (new OV.Coord3D (1.0, 2.0, 3.0)) - assert.strictEqual (index, 0); - assert.strictEqual (mesh.NormalCount (), 1); - var normal = mesh.GetNormal (index); - assert.strictEqual (normal.x, 1.0); - assert.strictEqual (normal.y, 2.0); - assert.strictEqual (normal.z, 3.0); - }); - - it ('Add Texture UV', function () { - var mesh = new OV.Mesh (); - var index = mesh.AddTextureUV (new OV.Coord2D (1.0, 2.0)) - assert.strictEqual (index, 0); - assert.strictEqual (mesh.TextureUVCount (), 1); - var uv = mesh.GetTextureUV (index); - assert.strictEqual (uv.x, 1.0); - assert.strictEqual (uv.y, 2.0); - }); - - it ('Add Triangle', function () { - var mesh = new OV.Mesh (); - var triangle = new OV.Triangle (1, 2, 3); - var index = mesh.AddTriangle (triangle); - assert.strictEqual (index, 0); - assert.strictEqual (mesh.TriangleCount (), 1); - var triangle = mesh.GetTriangle (index); - assert.strictEqual (triangle.v0, 1); - assert.strictEqual (triangle.v1, 2); - assert.strictEqual (triangle.v2, 3); - assert (triangle.HasVertices ()); - assert (!triangle.HasNormals ()); - assert (!triangle.HasTextureUVs ()); - assert.strictEqual (triangle.n0, null); - assert.strictEqual (triangle.n1, null); - assert.strictEqual (triangle.n2, null); - assert.strictEqual (triangle.u0, null); - assert.strictEqual (triangle.u1, null); - assert.strictEqual (triangle.u2, null); - assert.strictEqual (triangle.mat, null); - }); + it ('Add Normal', function () { + var mesh = new OV.Mesh (); + var index = mesh.AddNormal (new OV.Coord3D (1.0, 2.0, 3.0)) + assert.strictEqual (index, 0); + assert.strictEqual (mesh.NormalCount (), 1); + var normal = mesh.GetNormal (index); + assert.strictEqual (normal.x, 1.0); + assert.strictEqual (normal.y, 2.0); + assert.strictEqual (normal.z, 3.0); + }); + + it ('Add Texture UV', function () { + var mesh = new OV.Mesh (); + var index = mesh.AddTextureUV (new OV.Coord2D (1.0, 2.0)) + assert.strictEqual (index, 0); + assert.strictEqual (mesh.TextureUVCount (), 1); + var uv = mesh.GetTextureUV (index); + assert.strictEqual (uv.x, 1.0); + assert.strictEqual (uv.y, 2.0); + }); + + it ('Add Triangle', function () { + var mesh = new OV.Mesh (); + var triangle = new OV.Triangle (1, 2, 3); + var index = mesh.AddTriangle (triangle); + assert.strictEqual (index, 0); + assert.strictEqual (mesh.TriangleCount (), 1); + var triangle = mesh.GetTriangle (index); + assert.strictEqual (triangle.v0, 1); + assert.strictEqual (triangle.v1, 2); + assert.strictEqual (triangle.v2, 3); + assert (triangle.HasVertices ()); + assert (!triangle.HasNormals ()); + assert (!triangle.HasTextureUVs ()); + assert.strictEqual (triangle.n0, null); + assert.strictEqual (triangle.n1, null); + assert.strictEqual (triangle.n2, null); + assert.strictEqual (triangle.u0, null); + assert.strictEqual (triangle.u1, null); + assert.strictEqual (triangle.u2, null); + assert.strictEqual (triangle.mat, null); + }); - it ('Transform Mesh', function () { - var mesh = new OV.Mesh (); - mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); - mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); - mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); - var triangle = new OV.Triangle (0, 1, 2); - triangle.SetNormals (0, 0, 0); - triangle.SetTextureUVs (0, 1, 2); - mesh.AddTriangle (triangle); + it ('Transform Mesh', function () { + var mesh = new OV.Mesh (); + mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); + mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); + var triangle = new OV.Triangle (0, 1, 2); + triangle.SetNormals (0, 0, 0); + triangle.SetTextureUVs (0, 1, 2); + mesh.AddTriangle (triangle); - let angle = -Math.PI / 2.0; - let rotX = 0.0; - let rotY = 1.0; - let rotZ = 0.0; + let angle = -Math.PI / 2.0; + let rotX = 0.0; + let rotY = 1.0; + let rotZ = 0.0; - let rotation = [ - Math.sin (angle / 2.0) * rotX, - Math.sin (angle / 2.0) * rotY, - Math.sin (angle / 2.0) * rotZ, - Math.cos (angle / 2.0) - ]; + let rotation = [ + Math.sin (angle / 2.0) * rotX, + Math.sin (angle / 2.0) * rotY, + Math.sin (angle / 2.0) * rotZ, + Math.cos (angle / 2.0) + ]; - let transformation = new OV.Transformation (); - transformation.AppendMatrix (new OV.Matrix ().CreateScale (2.0, 1.0, 1.0)); - transformation.AppendMatrix (new OV.Matrix ().CreateRotation (rotation[0], rotation[1], rotation[2], rotation[3])); - transformation.AppendMatrix (new OV.Matrix ().CreateTranslation (0.0, 0.0, 1.0)); - OV.TransformMesh (mesh, transformation); - assert (OV.CoordIsEqual3D (mesh.GetVertex (0), new OV.Coord3D (0.0, 0.0, 1.0))); - assert (OV.CoordIsEqual3D (mesh.GetVertex (1), new OV.Coord3D (0.0, 0.0, 3.0))); - assert (OV.CoordIsEqual3D (mesh.GetVertex (2), new OV.Coord3D (0.0, 1.0, 3.0))); - assert (OV.CoordIsEqual3D (mesh.GetNormal (0), new OV.Coord3D (-1.0, 0.0, 0.0))); - }); + let transformation = new OV.Transformation (); + transformation.AppendMatrix (new OV.Matrix ().CreateScale (2.0, 1.0, 1.0)); + transformation.AppendMatrix (new OV.Matrix ().CreateRotation (rotation[0], rotation[1], rotation[2], rotation[3])); + transformation.AppendMatrix (new OV.Matrix ().CreateTranslation (0.0, 0.0, 1.0)); + OV.TransformMesh (mesh, transformation); + assert (OV.CoordIsEqual3D (mesh.GetVertex (0), new OV.Coord3D (0.0, 0.0, 1.0))); + assert (OV.CoordIsEqual3D (mesh.GetVertex (1), new OV.Coord3D (0.0, 0.0, 3.0))); + assert (OV.CoordIsEqual3D (mesh.GetVertex (2), new OV.Coord3D (0.0, 1.0, 3.0))); + assert (OV.CoordIsEqual3D (mesh.GetNormal (0), new OV.Coord3D (-1.0, 0.0, 0.0))); + }); }); diff --git a/test/tests/meshbuffer_test.js b/test/tests/meshbuffer_test.js index 0520490..5491cb0 100644 --- a/test/tests/meshbuffer_test.js +++ b/test/tests/meshbuffer_test.js @@ -12,23 +12,23 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); mesh.AddTriangle (new OV.Triangle (0, 1, 2).SetNormals (0, 0, 0).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetMaterial (0)); mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetNormals (0, 0, 0).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetNormals (0, 0, 0).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetNormals (0, 0, 0).SetMaterial (1)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 2); - assert.strictEqual (buffer.primitives[0].indices.length, 6); - assert.strictEqual (buffer.primitives[0].vertices.length, 4 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 4 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - assert.strictEqual (buffer.primitives[1].indices.length, 6); - assert.strictEqual (buffer.primitives[1].vertices.length, 4 * 3); - assert.strictEqual (buffer.primitives[1].normals.length, 4 * 3); - assert.strictEqual (buffer.primitives[1].uvs.length, 0); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 2); + assert.strictEqual (buffer.primitives[0].indices.length, 6); + assert.strictEqual (buffer.primitives[0].vertices.length, 4 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 4 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + assert.strictEqual (buffer.primitives[1].indices.length, 6); + assert.strictEqual (buffer.primitives[1].vertices.length, 4 * 3); + assert.strictEqual (buffer.primitives[1].normals.length, 4 * 3); + assert.strictEqual (buffer.primitives[1].uvs.length, 0); + }); it ('Mesh To Buffer Different Normals', function () { var mesh = new OV.Mesh (); @@ -36,18 +36,18 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, -1.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, -1.0)); mesh.AddTriangle (new OV.Triangle (0, 1, 2).SetNormals (0, 0, 0).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (1, 1, 1).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (1, 1, 1).SetMaterial (0)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 6); - assert.strictEqual (buffer.primitives[0].vertices.length, 6 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 6 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 6); + assert.strictEqual (buffer.primitives[0].vertices.length, 6 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 6 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + }); it ('Mesh To Buffer Different UVs', function () { var mesh = new OV.Mesh (); @@ -55,19 +55,19 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); - mesh.AddTextureUV (new OV.Coord3D (1.0, 1.0)); - mesh.AddTextureUV (new OV.Coord3D (-1.0, -1.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh.AddTextureUV (new OV.Coord3D (1.0, 1.0)); + mesh.AddTextureUV (new OV.Coord3D (-1.0, -1.0)); mesh.AddTriangle (new OV.Triangle (0, 1, 2).SetNormals (0, 0, 0).SetTextureUVs (0, 0, 0).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetTextureUVs (1, 1, 1).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetTextureUVs (1, 1, 1).SetMaterial (0)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 6); - assert.strictEqual (buffer.primitives[0].vertices.length, 6 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 6 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 6 * 2); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 6); + assert.strictEqual (buffer.primitives[0].vertices.length, 6 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 6 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 6 * 2); + }); it ('Mesh To Buffer Same Normals and UVs', function () { var mesh = new OV.Mesh (); @@ -75,21 +75,21 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); - mesh.AddTextureUV (new OV.Coord3D (1.0, 1.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh.AddTextureUV (new OV.Coord3D (1.0, 1.0)); mesh.AddTriangle (new OV.Triangle (0, 1, 2).SetNormals (0, 0, 0).SetTextureUVs (0, 0, 0).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetTextureUVs (0, 0, 0).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (0, 2, 3).SetNormals (0, 0, 0).SetTextureUVs (0, 0, 0).SetMaterial (0)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 6); - assert.strictEqual (buffer.primitives[0].vertices.length, 4 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 4 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 4 * 2); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 6); + assert.strictEqual (buffer.primitives[0].vertices.length, 4 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 4 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 4 * 2); + }); it ('Mesh To Buffer Cube', function () { - var model = new OV.Model (); + var model = new OV.Model (); var mesh = new OV.Mesh (); mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); @@ -101,42 +101,42 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddNormal (new OV.Coord3D (0, -1, 0)); - mesh.AddNormal (new OV.Coord3D (1, 0, 0)); - mesh.AddNormal (new OV.Coord3D (0, 1, 0)); - mesh.AddNormal (new OV.Coord3D (-1, 0, 0)); - mesh.AddNormal (new OV.Coord3D (0, 0, -1)); - mesh.AddNormal (new OV.Coord3D (0, 0, 1)); + mesh.AddNormal (new OV.Coord3D (0, -1, 0)); + mesh.AddNormal (new OV.Coord3D (1, 0, 0)); + mesh.AddNormal (new OV.Coord3D (0, 1, 0)); + mesh.AddNormal (new OV.Coord3D (-1, 0, 0)); + mesh.AddNormal (new OV.Coord3D (0, 0, -1)); + mesh.AddNormal (new OV.Coord3D (0, 0, 1)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetNormals (0, 0, 0)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetNormals (0, 0, 0)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetNormals (1, 1, 1)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetNormals (1, 1, 1)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetNormals (2, 2, 2)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetNormals (2, 2, 2)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetNormals (3, 3, 3)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetNormals (3, 3, 3)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetNormals (4, 4, 4)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetNormals (4, 4, 4)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetNormals (5, 5, 5)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetNormals (5, 5, 5)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetNormals (0, 0, 0)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetNormals (0, 0, 0)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetNormals (1, 1, 1)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetNormals (1, 1, 1)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetNormals (2, 2, 2)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetNormals (2, 2, 2)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetNormals (3, 3, 3)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetNormals (3, 3, 3)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetNormals (4, 4, 4)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetNormals (4, 4, 4)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetNormals (5, 5, 5)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetNormals (5, 5, 5)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 36); - assert.strictEqual (buffer.primitives[0].vertices.length, 24 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 24 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 36); + assert.strictEqual (buffer.primitives[0].vertices.length, 24 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 24 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + }); it ('Mesh To Buffer Cube Auto Normals', function () { - var model = new OV.Model (); + var model = new OV.Model (); var mesh = new OV.Mesh (); mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); @@ -148,37 +148,37 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 36); - assert.strictEqual (buffer.primitives[0].vertices.length, 24 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 24 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); - assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 36); + assert.strictEqual (buffer.primitives[0].vertices.length, 24 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 24 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); + assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); + }); it ('Mesh To Buffer Cube Auto Curve Normals', function () { - var model = new OV.Model (); + var model = new OV.Model (); var mesh = new OV.Mesh (); mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); @@ -190,37 +190,37 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetCurve (1)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetCurve (1)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetCurve (1)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 36); - assert.strictEqual (buffer.primitives[0].vertices.length, 8 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 8 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 36 * 2 + 2 * 8 * 3 * 4); - assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 8 * 3 * 4); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 36); + assert.strictEqual (buffer.primitives[0].vertices.length, 8 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 8 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 36 * 2 + 2 * 8 * 3 * 4); + assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 8 * 3 * 4); + }); it ('Mesh To Buffer Cube Materials', function () { - var model = new OV.Model (); + var model = new OV.Model (); model.AddMaterial (new OV.Material ()); model.AddMaterial (new OV.Material ()); var mesh = new OV.Mesh (); @@ -234,42 +234,42 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetMaterial (0)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetMaterial (1)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetMaterial (0)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetMaterial (1)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetMaterial (1)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 2); - assert.strictEqual (buffer.primitives[0].indices.length, 18); - assert.strictEqual (buffer.primitives[0].vertices.length, 12 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 12 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 0); - assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 18 * 2 + 2 * 12 * 3 * 4); - assert.strictEqual (buffer.primitives[1].indices.length, 18); - assert.strictEqual (buffer.primitives[1].vertices.length, 12 * 3); - assert.strictEqual (buffer.primitives[1].normals.length, 12 * 3); - assert.strictEqual (buffer.primitives[1].uvs.length, 0); - assert.strictEqual (buffer.primitives[1].GetByteLength (2, 4), 18 * 2 + 2 * 12 * 3 * 4); - assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 2); + assert.strictEqual (buffer.primitives[0].indices.length, 18); + assert.strictEqual (buffer.primitives[0].vertices.length, 12 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 12 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 0); + assert.strictEqual (buffer.primitives[0].GetByteLength (2, 4), 18 * 2 + 2 * 12 * 3 * 4); + assert.strictEqual (buffer.primitives[1].indices.length, 18); + assert.strictEqual (buffer.primitives[1].vertices.length, 12 * 3); + assert.strictEqual (buffer.primitives[1].normals.length, 12 * 3); + assert.strictEqual (buffer.primitives[1].uvs.length, 0); + assert.strictEqual (buffer.primitives[1].GetByteLength (2, 4), 18 * 2 + 2 * 12 * 3 * 4); + assert.strictEqual (buffer.GetByteLength (2, 4), 36 * 2 + 2 * 24 * 3 * 4); + }); - it ('Mesh To Buffer Cube One UV', function () { - var model = new OV.Model (); + it ('Mesh To Buffer Cube One UV', function () { + var model = new OV.Model (); var mesh = new OV.Mesh (); mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); @@ -280,39 +280,39 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); + mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 36); - assert.strictEqual (buffer.primitives[0].vertices.length, 25 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 25 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 25 * 2); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 36); + assert.strictEqual (buffer.primitives[0].vertices.length, 25 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 25 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 25 * 2); + }); - it ('Mesh To Buffer Cube All UVs', function () { - var model = new OV.Model (); + it ('Mesh To Buffer Cube All UVs', function () { + var model = new OV.Model (); var mesh = new OV.Mesh (); mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); @@ -323,34 +323,34 @@ describe ('Mesh Buffer', function () { mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0)); mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); mesh.AddVertex (new OV.Coord3D (0.0, 1.0, 1.0)); - mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); + mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (1.0, 1.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetTextureUVs (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 1, 5).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 5, 4).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (1, 2, 6).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (1, 6, 5).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (2, 3, 7).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (2, 7, 6).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (3, 0, 4).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (3, 4, 7).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 3, 2).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 2, 1).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (4, 5, 6).SetTextureUVs (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (4, 6, 7).SetTextureUVs (0, 1, 2)); - model.AddMesh (mesh); - OV.FinalizeModel (model, function () { - return new OV.Material (); - }); - assert (OV.CheckModel (model)); + model.AddMesh (mesh); + OV.FinalizeModel (model, function () { + return new OV.Material (); + }); + assert (OV.CheckModel (model)); - let buffer = OV.ConvertMeshToMeshBuffer (mesh); - assert.strictEqual (buffer.primitives.length, 1); - assert.strictEqual (buffer.primitives[0].indices.length, 36); - assert.strictEqual (buffer.primitives[0].vertices.length, 30 * 3); - assert.strictEqual (buffer.primitives[0].normals.length, 30 * 3); - assert.strictEqual (buffer.primitives[0].uvs.length, 30 * 2); - }); + let buffer = OV.ConvertMeshToMeshBuffer (mesh); + assert.strictEqual (buffer.primitives.length, 1); + assert.strictEqual (buffer.primitives[0].indices.length, 36); + assert.strictEqual (buffer.primitives[0].vertices.length, 30 * 3); + assert.strictEqual (buffer.primitives[0].normals.length, 30 * 3); + assert.strictEqual (buffer.primitives[0].uvs.length, 30 * 2); + }); }); diff --git a/test/tests/model_test.js b/test/tests/model_test.js index 3a617f7..52fbbcc 100644 --- a/test/tests/model_test.js +++ b/test/tests/model_test.js @@ -1,152 +1,152 @@ var assert = require ('assert'); describe ('Model', function() { - it ('Default Initialization', function () { - var model = new OV.Model (); - assert.strictEqual (model.MaterialCount (), 0); - assert.strictEqual (model.MeshCount (), 0); - }); + it ('Default Initialization', function () { + var model = new OV.Model (); + assert.strictEqual (model.MaterialCount (), 0); + assert.strictEqual (model.MeshCount (), 0); + }); - it ('Add Material', function () { - var model = new OV.Model (); - var material = new OV.Material (); - material.name = 'example'; - var index = model.AddMaterial (material); - assert.strictEqual (model.MaterialCount (), 1); - var theMaterial = model.GetMaterial (index); - assert.strictEqual (theMaterial.name, 'example'); - }); + it ('Add Material', function () { + var model = new OV.Model (); + var material = new OV.Material (); + material.name = 'example'; + var index = model.AddMaterial (material); + assert.strictEqual (model.MaterialCount (), 1); + var theMaterial = model.GetMaterial (index); + assert.strictEqual (theMaterial.name, 'example'); + }); - it ('Add Mesh', function () { - var model = new OV.Model (); - var mesh = new OV.Mesh (); - mesh.SetName ('example'); - var index = model.AddMesh (mesh); - assert.strictEqual (model.MeshCount (), 1); - var theMesh = model.GetMesh (index); - assert.strictEqual (theMesh.GetName (), 'example'); - }); + it ('Add Mesh', function () { + var model = new OV.Model (); + var mesh = new OV.Mesh (); + mesh.SetName ('example'); + var index = model.AddMesh (mesh); + assert.strictEqual (model.MeshCount (), 1); + var theMesh = model.GetMesh (index); + assert.strictEqual (theMesh.GetName (), 'example'); + }); - it ('Add Mesh To Index', function () { - var model = new OV.Model (); - var mesh1 = new OV.Mesh (); - var mesh2 = new OV.Mesh (); - var mesh3 = new OV.Mesh (); - var mesh4 = new OV.Mesh (); - mesh1.SetName ('A'); - mesh2.SetName ('B'); - mesh3.SetName ('C'); - mesh4.SetName ('D'); - model.AddMesh (mesh1); - model.AddMesh (mesh2); - model.AddMeshToIndex (mesh3, 1); - model.AddMeshToIndex (mesh4, 3); - assert.strictEqual (model.GetMesh (0).GetName (), 'A'); - assert.strictEqual (model.GetMesh (1).GetName (), 'C'); - assert.strictEqual (model.GetMesh (2).GetName (), 'B'); - assert.strictEqual (model.GetMesh (3).GetName (), 'D'); - }); + it ('Add Mesh To Index', function () { + var model = new OV.Model (); + var mesh1 = new OV.Mesh (); + var mesh2 = new OV.Mesh (); + var mesh3 = new OV.Mesh (); + var mesh4 = new OV.Mesh (); + mesh1.SetName ('A'); + mesh2.SetName ('B'); + mesh3.SetName ('C'); + mesh4.SetName ('D'); + model.AddMesh (mesh1); + model.AddMesh (mesh2); + model.AddMeshToIndex (mesh3, 1); + model.AddMeshToIndex (mesh4, 3); + assert.strictEqual (model.GetMesh (0).GetName (), 'A'); + assert.strictEqual (model.GetMesh (1).GetName (), 'C'); + assert.strictEqual (model.GetMesh (2).GetName (), 'B'); + assert.strictEqual (model.GetMesh (3).GetName (), 'D'); + }); - it ('Counters', function () { - var model = new OV.Model (); - let mesh = new OV.Mesh (); - mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); - mesh.AddTriangle (new OV.Triangle (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 1, 2)); - mesh.AddTriangle (new OV.Triangle (0, 1, 2)); - model.AddMesh (mesh); - assert.strictEqual (model.VertexCount (), 3); - assert.strictEqual (model.NormalCount (), 2); - assert.strictEqual (model.TextureUVCount (), 1); - assert.strictEqual (model.TriangleCount (), 4); - }); + it ('Counters', function () { + var model = new OV.Model (); + let mesh = new OV.Mesh (); + mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddNormal (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh.AddTextureUV (new OV.Coord2D (0.0, 0.0)); + mesh.AddTriangle (new OV.Triangle (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 1, 2)); + mesh.AddTriangle (new OV.Triangle (0, 1, 2)); + model.AddMesh (mesh); + assert.strictEqual (model.VertexCount (), 3); + assert.strictEqual (model.NormalCount (), 2); + assert.strictEqual (model.TextureUVCount (), 1); + assert.strictEqual (model.TriangleCount (), 4); + }); - it ('Remove Mesh', function () { - var model = new OV.Model (); - - let mesh1 = new OV.Mesh (); - mesh1.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - mesh1.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); - mesh1.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); - mesh1.AddTriangle (new OV.Triangle (0, 1, 2)); - model.AddMesh (mesh1); + it ('Remove Mesh', function () { + var model = new OV.Model (); + + let mesh1 = new OV.Mesh (); + mesh1.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + mesh1.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); + mesh1.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); + mesh1.AddTriangle (new OV.Triangle (0, 1, 2)); + model.AddMesh (mesh1); - let mesh2 = new OV.Mesh (); - mesh2.AddVertex (new OV.Coord3D (0.0, 0.0, 1.0)); - mesh2.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0)); - mesh2.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); - mesh2.AddTriangle (new OV.Triangle (0, 1, 2)); - model.AddMesh (mesh2); + let mesh2 = new OV.Mesh (); + mesh2.AddVertex (new OV.Coord3D (0.0, 0.0, 1.0)); + mesh2.AddVertex (new OV.Coord3D (1.0, 0.0, 1.0)); + mesh2.AddVertex (new OV.Coord3D (1.0, 1.0, 1.0)); + mesh2.AddTriangle (new OV.Triangle (0, 1, 2)); + model.AddMesh (mesh2); - assert.strictEqual (model.MeshCount (), 2); - assert.strictEqual (model.VertexCount (), 6); - assert.strictEqual (model.TriangleCount (), 2); + assert.strictEqual (model.MeshCount (), 2); + assert.strictEqual (model.VertexCount (), 6); + assert.strictEqual (model.TriangleCount (), 2); - model.RemoveMesh (0); - assert.strictEqual (model.MeshCount (), 1); - assert.strictEqual (model.VertexCount (), 3); - assert.strictEqual (model.TriangleCount (), 1); + model.RemoveMesh (0); + assert.strictEqual (model.MeshCount (), 1); + assert.strictEqual (model.VertexCount (), 3); + assert.strictEqual (model.TriangleCount (), 1); - model.RemoveMesh (0); - assert.strictEqual (model.MeshCount (), 0); - assert.strictEqual (model.VertexCount (), 0); - assert.strictEqual (model.TriangleCount (), 0); - }); + model.RemoveMesh (0); + assert.strictEqual (model.MeshCount (), 0); + assert.strictEqual (model.VertexCount (), 0); + assert.strictEqual (model.TriangleCount (), 0); + }); }); describe ('Model Finalization', function() { - it ('Calculate Normal', function () { - var mesh = new OV.Mesh (); - var v0 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - var v1 = mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); - var v2 = mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); - var triangleIndex = mesh.AddTriangle (new OV.Triangle (v0, v1, v2)); - var model = new OV.Model (); - var meshIndex = model.AddMesh (mesh); - assert.strictEqual (model.MaterialCount (), 0); - OV.FinalizeModel (model, function () { new OV.Material () }); - assert.strictEqual (model.MaterialCount (), 1); - var theMesh = model.GetMesh (meshIndex); - assert.strictEqual (theMesh.NormalCount (), 1); - var triangle = theMesh.GetTriangle (triangleIndex); - assert.strictEqual (triangle.n0, 0); - assert.strictEqual (triangle.n1, 0); - assert.strictEqual (triangle.n2, 0); - assert.strictEqual (triangle.mat, 0); - }); + it ('Calculate Normal', function () { + var mesh = new OV.Mesh (); + var v0 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + var v1 = mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); + var v2 = mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); + var triangleIndex = mesh.AddTriangle (new OV.Triangle (v0, v1, v2)); + var model = new OV.Model (); + var meshIndex = model.AddMesh (mesh); + assert.strictEqual (model.MaterialCount (), 0); + OV.FinalizeModel (model, function () { new OV.Material () }); + assert.strictEqual (model.MaterialCount (), 1); + var theMesh = model.GetMesh (meshIndex); + assert.strictEqual (theMesh.NormalCount (), 1); + var triangle = theMesh.GetTriangle (triangleIndex); + assert.strictEqual (triangle.n0, 0); + assert.strictEqual (triangle.n1, 0); + assert.strictEqual (triangle.n2, 0); + assert.strictEqual (triangle.mat, 0); + }); - it ('Calculate Curved Normal', function () { - var mesh = new OV.Mesh (); - var v0 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); - var v1 = mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); - var v2 = mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); - var v3 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, -1.0)); + it ('Calculate Curved Normal', function () { + var mesh = new OV.Mesh (); + var v0 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, 0.0)); + var v1 = mesh.AddVertex (new OV.Coord3D (1.0, 0.0, 0.0)); + var v2 = mesh.AddVertex (new OV.Coord3D (1.0, 1.0, 0.0)); + var v3 = mesh.AddVertex (new OV.Coord3D (0.0, 0.0, -1.0)); - var triangle1 = new OV.Triangle (v0, v1, v2); - triangle1.curve = 1; - var triangle2 = new OV.Triangle (v0, v3, v1); - triangle2.curve = 1; + var triangle1 = new OV.Triangle (v0, v1, v2); + triangle1.curve = 1; + var triangle2 = new OV.Triangle (v0, v3, v1); + triangle2.curve = 1; - var triangle1 = mesh.AddTriangle (triangle1); - var triangle1 = mesh.AddTriangle (triangle2); + var triangle1 = mesh.AddTriangle (triangle1); + var triangle1 = mesh.AddTriangle (triangle2); - var model = new OV.Model () - var meshIndex = model.AddMesh (mesh); + var model = new OV.Model () + var meshIndex = model.AddMesh (mesh); - OV.FinalizeModel (model, function () { new OV.Material () }); - - var theMesh = model.GetMesh (meshIndex); - assert.strictEqual (theMesh.NormalCount (), 6); - - var normal = theMesh.GetNormal (0); - assert.strictEqual (normal.x, 0.0); - assert.strictEqual (normal.y, -0.7071067811865475); - assert.strictEqual (normal.z, 0.7071067811865475); - }); + OV.FinalizeModel (model, function () { new OV.Material () }); + + var theMesh = model.GetMesh (meshIndex); + assert.strictEqual (theMesh.NormalCount (), 6); + + var normal = theMesh.GetNormal (0); + assert.strictEqual (normal.x, 0.0); + assert.strictEqual (normal.y, -0.7071067811865475); + assert.strictEqual (normal.z, 0.7071067811865475); + }); }); diff --git a/test/tests/modelutils_test.js b/test/tests/modelutils_test.js index b1bc681..953c622 100644 --- a/test/tests/modelutils_test.js +++ b/test/tests/modelutils_test.js @@ -20,62 +20,62 @@ describe ('Model Utils', function () { model.AddMesh (mesh2); OV.FinalizeModel (model, function () { return new OV.Material (); }); - assert.deepStrictEqual (testUtils.ModelToObject (model), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - }, + assert.deepStrictEqual (testUtils.ModelToObject (model), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ { - name : '', - triangles : [ - { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] - } - ] - }); + name : '', + triangles : [ + { + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + }, + { + name : '', + triangles : [ + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] + } + ] + }); var mergedModel = OV.CreateMergedModel (model); - assert.deepStrictEqual (testUtils.ModelToObject (mergedModel), { - name : '', - materials : [ - { name : '' } - ], - meshes : [ - { - name : '', - triangles : [ - { - vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - }, + assert.deepStrictEqual (testUtils.ModelToObject (mergedModel), { + name : '', + materials : [ + { name : '' } + ], + meshes : [ + { + name : '', + triangles : [ { - vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], - normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], - uvs : [], - mat : 0 - } - ] + vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + }, + { + vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1], + normals : [0, 0, 1, 0, 0, 1, 0, 0, 1], + uvs : [], + mat : 0 + } + ] } - ] - }); - }); + ] + }); + }); }); diff --git a/test/tests/taskrunner_test.js b/test/tests/taskrunner_test.js index 3b70d87..20f2866 100644 --- a/test/tests/taskrunner_test.js +++ b/test/tests/taskrunner_test.js @@ -1,31 +1,31 @@ var assert = require ('assert'); describe ('Task Runner', function () { - it ('Run task zero times', function () { - var tr = new OV.TaskRunner (); - var numbers = []; - tr.Run (0, { - runTask : function (index, ready) { - numbers.push (index); - ready (); - }, - onReady : function () { - assert.deepStrictEqual (numbers, []); - } - }); - }); + it ('Run task zero times', function () { + var tr = new OV.TaskRunner (); + var numbers = []; + tr.Run (0, { + runTask : function (index, ready) { + numbers.push (index); + ready (); + }, + onReady : function () { + assert.deepStrictEqual (numbers, []); + } + }); + }); - it ('Run task three times', function () { - var tr = new OV.TaskRunner (); - var numbers = []; - tr.Run (3, { - runTask : function (index, ready) { - numbers.push (index); - ready (); - }, - onReady : function () { - assert.deepStrictEqual (numbers, [0, 1, 2]); - } - }); - }); + it ('Run task three times', function () { + var tr = new OV.TaskRunner (); + var numbers = []; + tr.Run (3, { + runTask : function (index, ready) { + numbers.push (index); + ready (); + }, + onReady : function () { + assert.deepStrictEqual (numbers, [0, 1, 2]); + } + }); + }); }); diff --git a/test/utils/globals.js b/test/utils/globals.js index 4fecf30..f684c11 100644 --- a/test/utils/globals.js +++ b/test/utils/globals.js @@ -11,10 +11,10 @@ global.Blob = function () { var objectUrlCounter = 0; global.URL = { - createObjectURL : function () { - objectUrlCounter += 1; - return 'ObjectUrl:' + objectUrlCounter.toString (); - }, + createObjectURL : function () { + objectUrlCounter += 1; + return 'ObjectUrl:' + objectUrlCounter.toString (); + }, revokeObjectURL : function () { } diff --git a/test/utils/testfiles.js b/test/utils/testfiles.js index 0201afd..7c9b6c0 100644 --- a/test/utils/testfiles.js +++ b/test/utils/testfiles.js @@ -2,84 +2,84 @@ var testUtils = require ('./testutils.js'); module.exports = { - ImportObjFile : function (fileName) - { - var importer = new OV.ImporterObj (); - return this.ImportFile (importer, OV.FileFormat.Text, 'obj', fileName); - }, + ImportObjFile : function (fileName) + { + var importer = new OV.ImporterObj (); + return this.ImportFile (importer, OV.FileFormat.Text, 'obj', fileName); + }, - ImportStlFile : function (fileName) - { - var importer = new OV.ImporterStl (); - return this.ImportFile (importer, OV.FileFormat.Binary, 'stl', fileName); - }, + ImportStlFile : function (fileName) + { + var importer = new OV.ImporterStl (); + return this.ImportFile (importer, OV.FileFormat.Binary, 'stl', fileName); + }, - ImportOffFile : function (fileName) - { - var importer = new OV.ImporterOff (); - return this.ImportFile (importer, OV.FileFormat.Text, 'off', fileName); - }, + ImportOffFile : function (fileName) + { + var importer = new OV.ImporterOff (); + return this.ImportFile (importer, OV.FileFormat.Text, 'off', fileName); + }, - ImportPlyFile : function (fileName) - { - var importer = new OV.ImporterPly (); - return this.ImportFile (importer, OV.FileFormat.Binary, 'ply', fileName); - }, + ImportPlyFile : function (fileName) + { + var importer = new OV.ImporterPly (); + return this.ImportFile (importer, OV.FileFormat.Binary, 'ply', fileName); + }, - Import3dsFile : function (fileName) - { - var importer = new OV.Importer3ds (); - return this.ImportFile (importer, OV.FileFormat.Binary, '3ds', fileName); - }, + Import3dsFile : function (fileName) + { + var importer = new OV.Importer3ds (); + return this.ImportFile (importer, OV.FileFormat.Binary, '3ds', fileName); + }, - ImportGltfFile : function (folderName, fileName) - { - let extension = OV.GetFileExtension (fileName); - let format = OV.FileFormat.Text; - if (extension == 'glb') { - format = OV.FileFormat.Binary; - } - var importer = new OV.ImporterGltf (); - return this.ImportFile (importer, format, 'gltf/' + folderName, fileName); - }, + ImportGltfFile : function (folderName, fileName) + { + let extension = OV.GetFileExtension (fileName); + let format = OV.FileFormat.Text; + if (extension == 'glb') { + format = OV.FileFormat.Binary; + } + var importer = new OV.ImporterGltf (); + return this.ImportFile (importer, format, 'gltf/' + folderName, fileName); + }, - ImportFile : function (importer, format, folder, fileName) - { - var content = null; - if (format == OV.FileFormat.Text) { - content = testUtils.GetTextFileContent (folder, fileName); - } else if (format == OV.FileFormat.Binary) { - content = testUtils.GetArrayBufferFileContent (folder, fileName); - } - var extension = OV.GetFileExtension (fileName); - let buffers = new OV.ImporterBuffers (function (filePath) { - let extension = OV.GetFileExtension (filePath); - let knownFormats = importer.GetKnownFileFormats (); - let format = OV.FileFormat.Binary; - if (knownFormats[extension] !== undefined) { - format = knownFormats[extension]; - } - let fileContent = null; - if (format == OV.FileFormat.Text) { - fileContent = testUtils.GetTextFileContent (folder, filePath); - } else if (format == OV.FileFormat.Binary) { - fileContent = testUtils.GetArrayBufferFileContent (folder, filePath); - } - return fileContent; - }); - importer.Import (content, extension, { - getDefaultMaterial : function () { - var material = new OV.Material (); - return material; - }, - getFileBuffer : function (filePath) { - return buffers.GetFileBuffer (filePath); - }, - getTextureBuffer : function (filePath) { - return buffers.GetTextureBuffer (filePath); - } - }); - let model = importer.GetModel (); - return model; - } + ImportFile : function (importer, format, folder, fileName) + { + var content = null; + if (format == OV.FileFormat.Text) { + content = testUtils.GetTextFileContent (folder, fileName); + } else if (format == OV.FileFormat.Binary) { + content = testUtils.GetArrayBufferFileContent (folder, fileName); + } + var extension = OV.GetFileExtension (fileName); + let buffers = new OV.ImporterBuffers (function (filePath) { + let extension = OV.GetFileExtension (filePath); + let knownFormats = importer.GetKnownFileFormats (); + let format = OV.FileFormat.Binary; + if (knownFormats[extension] !== undefined) { + format = knownFormats[extension]; + } + let fileContent = null; + if (format == OV.FileFormat.Text) { + fileContent = testUtils.GetTextFileContent (folder, filePath); + } else if (format == OV.FileFormat.Binary) { + fileContent = testUtils.GetArrayBufferFileContent (folder, filePath); + } + return fileContent; + }); + importer.Import (content, extension, { + getDefaultMaterial : function () { + var material = new OV.Material (); + return material; + }, + getFileBuffer : function (filePath) { + return buffers.GetFileBuffer (filePath); + }, + getTextureBuffer : function (filePath) { + return buffers.GetTextureBuffer (filePath); + } + }); + let model = importer.GetModel (); + return model; + } } diff --git a/test/utils/testutils.js b/test/utils/testutils.js index 83f3fb4..77b3ae0 100644 --- a/test/utils/testutils.js +++ b/test/utils/testutils.js @@ -3,137 +3,137 @@ var path = require ('path'); module.exports = { - GetTextFileContent : function (folder, fileName) - { - var testFilePath = path.join ('testfiles', folder, fileName); - if (!fs.existsSync (testFilePath)) { - return null; - } - return fs.readFileSync (testFilePath).toString (); - }, + GetTextFileContent : function (folder, fileName) + { + var testFilePath = path.join ('testfiles', folder, fileName); + if (!fs.existsSync (testFilePath)) { + return null; + } + return fs.readFileSync (testFilePath).toString (); + }, - GetArrayBufferFileContent : function (folder, fileName) - { - var testFilePath = path.join ('testfiles', folder, fileName); - var buffer = fs.readFileSync (testFilePath); - var arrayBuffer = new ArrayBuffer (buffer.length); - var uint8Array = new Uint8Array (arrayBuffer); - var i; - for (i = 0; i < buffer.length; ++i) { - uint8Array[i] = buffer[i]; - } - return arrayBuffer - }, + GetArrayBufferFileContent : function (folder, fileName) + { + var testFilePath = path.join ('testfiles', folder, fileName); + var buffer = fs.readFileSync (testFilePath); + var arrayBuffer = new ArrayBuffer (buffer.length); + var uint8Array = new Uint8Array (arrayBuffer); + var i; + for (i = 0; i < buffer.length; ++i) { + uint8Array[i] = buffer[i]; + } + return arrayBuffer + }, - ModelToObject : function (model) - { - var obj = { - name : model.GetName (), - materials : [], - meshes : [] - }; + ModelToObject : function (model) + { + var obj = { + name : model.GetName (), + materials : [], + meshes : [] + }; - var i, j; + var i, j; - var material; - for (i = 0; i < model.MaterialCount (); i++) { - material = model.GetMaterial (i); - obj.materials.push ({ - name : material.name - }); - } + var material; + for (i = 0; i < model.MaterialCount (); i++) { + material = model.GetMaterial (i); + obj.materials.push ({ + name : material.name + }); + } - var mesh, triangle, meshObj, triangleObj; - for (i = 0; i < model.MeshCount (); i++) { - mesh = model.GetMesh (i); - meshObj = { - name : mesh.GetName (), - triangles : [] - }; - for (j = 0; j < mesh.TriangleCount (); j++) { - triangle = mesh.GetTriangle (j); - triangleObj = { - mat : triangle.mat, - vertices : [], - normals : [], - uvs : [] - }; - triangleObj.vertices.push ( - mesh.GetVertex (triangle.v0).x, - mesh.GetVertex (triangle.v0).y, - mesh.GetVertex (triangle.v0).z, - mesh.GetVertex (triangle.v1).x, - mesh.GetVertex (triangle.v1).y, - mesh.GetVertex (triangle.v1).z, - mesh.GetVertex (triangle.v2).x, - mesh.GetVertex (triangle.v2).y, - mesh.GetVertex (triangle.v2).z - ); - triangleObj.normals.push ( - mesh.GetNormal (triangle.n0).x, - mesh.GetNormal (triangle.n0).y, - mesh.GetNormal (triangle.n0).z, - mesh.GetNormal (triangle.n1).x, - mesh.GetNormal (triangle.n1).y, - mesh.GetNormal (triangle.n1).z, - mesh.GetNormal (triangle.n2).x, - mesh.GetNormal (triangle.n2).y, - mesh.GetNormal (triangle.n2).z - ); - if (triangle.HasTextureUVs ()) { - triangleObj.uvs.push ( - mesh.GetTextureUV (triangle.u0).x, - mesh.GetTextureUV (triangle.u0).y, - mesh.GetTextureUV (triangle.u1).x, - mesh.GetTextureUV (triangle.u1).y, - mesh.GetTextureUV (triangle.u2).x, - mesh.GetTextureUV (triangle.u2).y - ); - } - meshObj.triangles.push (triangleObj); - } - obj.meshes.push (meshObj); - } + var mesh, triangle, meshObj, triangleObj; + for (i = 0; i < model.MeshCount (); i++) { + mesh = model.GetMesh (i); + meshObj = { + name : mesh.GetName (), + triangles : [] + }; + for (j = 0; j < mesh.TriangleCount (); j++) { + triangle = mesh.GetTriangle (j); + triangleObj = { + mat : triangle.mat, + vertices : [], + normals : [], + uvs : [] + }; + triangleObj.vertices.push ( + mesh.GetVertex (triangle.v0).x, + mesh.GetVertex (triangle.v0).y, + mesh.GetVertex (triangle.v0).z, + mesh.GetVertex (triangle.v1).x, + mesh.GetVertex (triangle.v1).y, + mesh.GetVertex (triangle.v1).z, + mesh.GetVertex (triangle.v2).x, + mesh.GetVertex (triangle.v2).y, + mesh.GetVertex (triangle.v2).z + ); + triangleObj.normals.push ( + mesh.GetNormal (triangle.n0).x, + mesh.GetNormal (triangle.n0).y, + mesh.GetNormal (triangle.n0).z, + mesh.GetNormal (triangle.n1).x, + mesh.GetNormal (triangle.n1).y, + mesh.GetNormal (triangle.n1).z, + mesh.GetNormal (triangle.n2).x, + mesh.GetNormal (triangle.n2).y, + mesh.GetNormal (triangle.n2).z + ); + if (triangle.HasTextureUVs ()) { + triangleObj.uvs.push ( + mesh.GetTextureUV (triangle.u0).x, + mesh.GetTextureUV (triangle.u0).y, + mesh.GetTextureUV (triangle.u1).x, + mesh.GetTextureUV (triangle.u1).y, + mesh.GetTextureUV (triangle.u2).x, + mesh.GetTextureUV (triangle.u2).y + ); + } + meshObj.triangles.push (triangleObj); + } + obj.meshes.push (meshObj); + } - return obj; - }, + return obj; + }, - ModelToObjectSimple : function (model) - { - var obj = { - name : model.GetName (), - materials : [], - meshes : [] - }; + ModelToObjectSimple : function (model) + { + var obj = { + name : model.GetName (), + materials : [], + meshes : [] + }; - var i; + var i; - var material; - for (i = 0; i < model.MaterialCount (); i++) { - material = model.GetMaterial (i); - obj.materials.push ({ - name : material.name - }); - } + var material; + for (i = 0; i < model.MaterialCount (); i++) { + material = model.GetMaterial (i); + obj.materials.push ({ + name : material.name + }); + } - var mesh, meshObj, boundingBox; - for (i = 0; i < model.MeshCount (); i++) { - mesh = model.GetMesh (i); - boundingBox = OV.GetMeshBoundingBox (mesh); - meshObj = { - name : mesh.GetName (), - vertexCount : mesh.VertexCount (), - normalCount : mesh.NormalCount (), - uvCount : mesh.TextureUVCount (), - triangleCount : mesh.TriangleCount (), - boundingBox : { - min : [boundingBox[0].x, boundingBox[0].y, boundingBox[0].z], - max : [boundingBox[1].x, boundingBox[1].y, boundingBox[1].z] - } - }; - obj.meshes.push (meshObj); - } + var mesh, meshObj, boundingBox; + for (i = 0; i < model.MeshCount (); i++) { + mesh = model.GetMesh (i); + boundingBox = OV.GetMeshBoundingBox (mesh); + meshObj = { + name : mesh.GetName (), + vertexCount : mesh.VertexCount (), + normalCount : mesh.NormalCount (), + uvCount : mesh.TextureUVCount (), + triangleCount : mesh.TriangleCount (), + boundingBox : { + min : [boundingBox[0].x, boundingBox[0].y, boundingBox[0].z], + max : [boundingBox[1].x, boundingBox[1].y, boundingBox[1].z] + } + }; + obj.meshes.push (meshObj); + } - return obj; - } + return obj; + } } diff --git a/website/o3dv/dialogs.js b/website/o3dv/dialogs.js index f88b9d4..51970f4 100644 --- a/website/o3dv/dialogs.js +++ b/website/o3dv/dialogs.js @@ -273,7 +273,7 @@ OV.ShowExportDialog = function (model) $('').addClass ('ov_dialog_file_link_icon').attr ('src', 'assets/images/dialog/file_download.svg').appendTo (fileLink); $('
').addClass ('ov_dialog_file_link_text').html (file.GetName ()).appendTo (fileLink); } - }); + }); }); dialog.SetCloseHandler (function () { diff --git a/website/o3dv/embed.js b/website/o3dv/embed.js index fa8dfbb..1efcbcc 100644 --- a/website/o3dv/embed.js +++ b/website/o3dv/embed.js @@ -1,69 +1,69 @@ OV.Embed = class { - constructor (parameters) - { + constructor (parameters) + { this.parameters = parameters; this.viewer = new OV.Viewer (); this.hashHandler = new OV.HashHandler (); this.modelLoader = new OV.ThreeModelLoader (); } - Load () - { - let canvas = $('').appendTo (this.parameters.viewerDiv); - this.viewer.Init (canvas.get (0)); - this.InitModelLoader (); + Load () + { + let canvas = $('').appendTo (this.parameters.viewerDiv); + this.viewer.Init (canvas.get (0)); + this.InitModelLoader (); this.Resize (); - if (this.hashHandler.HasHash ()) { - let urls = this.hashHandler.GetModelFilesFromHash (); - if (urls === null) { - return; - } - let camera = this.hashHandler.GetCameraFromHash (); - if (camera !== null) { - this.viewer.SetCamera (camera); - } - this.modelLoader.LoadFromUrlList (urls); - let hashParameters = OV.CreateHashParameters (urls, camera); - let websiteUrl = this.parameters.websiteLinkDiv.attr ('href') + '#' + hashParameters; - this.parameters.websiteLinkDiv.attr ('href', websiteUrl); - } - } + if (this.hashHandler.HasHash ()) { + let urls = this.hashHandler.GetModelFilesFromHash (); + if (urls === null) { + return; + } + let camera = this.hashHandler.GetCameraFromHash (); + if (camera !== null) { + this.viewer.SetCamera (camera); + } + this.modelLoader.LoadFromUrlList (urls); + let hashParameters = OV.CreateHashParameters (urls, camera); + let websiteUrl = this.parameters.websiteLinkDiv.attr ('href') + '#' + hashParameters; + this.parameters.websiteLinkDiv.attr ('href', websiteUrl); + } + } Resize () - { - let windowWidth = $(window).outerWidth (); - let windowHeight = $(window).outerHeight (); - this.viewer.Resize (windowWidth, windowHeight); - } + { + let windowWidth = $(window).outerWidth (); + let windowHeight = $(window).outerHeight (); + this.viewer.Resize (windowWidth, windowHeight); + } - OnModelFinished (importResult, threeMeshes) - { - this.viewer.AddMeshes (threeMeshes); - let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { - return true; - }); - this.viewer.AdjustClippingPlanes (boundingSphere); - this.viewer.FitToWindow (boundingSphere, false); - } + OnModelFinished (importResult, threeMeshes) + { + this.viewer.AddMeshes (threeMeshes); + let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { + return true; + }); + this.viewer.AdjustClippingPlanes (boundingSphere); + this.viewer.FitToWindow (boundingSphere, false); + } - InitModelLoader () - { - let obj = this; - OV.InitModelLoader (this.modelLoader, { - onStart : function () - { - - }, - onFinish : function (importResult, threeMeshes) - { - obj.OnModelFinished (importResult, threeMeshes); - }, - onRender : function () - { - obj.viewer.Render (); - } - }); - } + InitModelLoader () + { + let obj = this; + OV.InitModelLoader (this.modelLoader, { + onStart : function () + { + + }, + onFinish : function (importResult, threeMeshes) + { + obj.OnModelFinished (importResult, threeMeshes); + }, + onRender : function () + { + obj.viewer.Render (); + } + }); + } }; diff --git a/website/o3dv/hashhandler.js b/website/o3dv/hashhandler.js index 4c27b53..4714e6f 100644 --- a/website/o3dv/hashhandler.js +++ b/website/o3dv/hashhandler.js @@ -1,110 +1,110 @@ OV.HashHandler = class { - constructor () - { - this.skipNextEvent = false; - this.eventListener = null; - } + constructor () + { + this.skipNextEvent = false; + this.eventListener = null; + } - SetEventListener (eventListener) - { - this.eventListener = eventListener; - window.onhashchange = this.OnChange.bind (this); - } + SetEventListener (eventListener) + { + this.eventListener = eventListener; + window.onhashchange = this.OnChange.bind (this); + } - SkipNextEventHandler () - { - this.skipNextEvent = true; - } + SkipNextEventHandler () + { + this.skipNextEvent = true; + } - HasHash () - { - let hash = this.GetHash (); - return hash.length > 0; - } + HasHash () + { + let hash = this.GetHash (); + return hash.length > 0; + } - ClearHash () - { - this.SetHash (''); - } + ClearHash () + { + this.SetHash (''); + } - GetCameraFromHash () - { - let parameters = this.GetFromHash ('camera'); - if (parameters === null) { - return null; - } - let splitted = parameters.split (','); - if (splitted.length !== 9) { - return null; - } - let camera = new OV.Camera ( - new OV.Coord3D (parseFloat (splitted[0]), parseFloat (splitted[1]), parseFloat (splitted[2])), - new OV.Coord3D (parseFloat (splitted[3]), parseFloat (splitted[4]), parseFloat (splitted[5])), - new OV.Coord3D (parseFloat (splitted[6]), parseFloat (splitted[7]), parseFloat (splitted[8])) - ); - return camera; - } + GetCameraFromHash () + { + let parameters = this.GetFromHash ('camera'); + if (parameters === null) { + return null; + } + let splitted = parameters.split (','); + if (splitted.length !== 9) { + return null; + } + let camera = new OV.Camera ( + new OV.Coord3D (parseFloat (splitted[0]), parseFloat (splitted[1]), parseFloat (splitted[2])), + new OV.Coord3D (parseFloat (splitted[3]), parseFloat (splitted[4]), parseFloat (splitted[5])), + new OV.Coord3D (parseFloat (splitted[6]), parseFloat (splitted[7]), parseFloat (splitted[8])) + ); + return camera; + } - GetModelFilesFromHash () - { - let hash = this.GetHash (); - if (hash.length === 0) { - return null; - } + GetModelFilesFromHash () + { + let hash = this.GetHash (); + if (hash.length === 0) { + return null; + } - // detect legacy links - let modelKeyword = 'model'; - let keywordToken = modelKeyword + '='; - if (hash.indexOf (keywordToken) === -1) { - return hash.split (','); - } + // detect legacy links + let modelKeyword = 'model'; + let keywordToken = modelKeyword + '='; + if (hash.indexOf (keywordToken) === -1) { + return hash.split (','); + } - let fileList = this.GetFromHash (modelKeyword); - if (fileList === null) { - return null; - } - return fileList.split (','); - } + let fileList = this.GetFromHash (modelKeyword); + if (fileList === null) { + return null; + } + return fileList.split (','); + } - SetModelFilesToHash (files) - { - this.SetHash ('model=' + files.join (',')); - } + SetModelFilesToHash (files) + { + this.SetHash ('model=' + files.join (',')); + } - GetFromHash (keyword) - { - let hash = this.GetHash (); - if (hash.length === 0) { - return null; - } - let keywordToken = keyword + '='; - let hashParts = hash.split ('$'); - for (let i = 0; i < hashParts.length; i++) { - let hashPart = hashParts[i]; - if (hashPart.startsWith (keywordToken)) { - return hashPart.substr (keywordToken.length); - } - } - return null; - } + GetFromHash (keyword) + { + let hash = this.GetHash (); + if (hash.length === 0) { + return null; + } + let keywordToken = keyword + '='; + let hashParts = hash.split ('$'); + for (let i = 0; i < hashParts.length; i++) { + let hashPart = hashParts[i]; + if (hashPart.startsWith (keywordToken)) { + return hashPart.substr (keywordToken.length); + } + } + return null; + } - GetHash () - { - return window.location.hash.substr (1); - } + GetHash () + { + return window.location.hash.substr (1); + } - SetHash (hash) - { - window.location.hash = hash; - } + SetHash (hash) + { + window.location.hash = hash; + } - OnChange () - { - if (this.skipNextEvent) { - this.skipNextEvent = false; - return; - } - this.eventListener (); - } + OnChange () + { + if (this.skipNextEvent) { + this.skipNextEvent = false; + return; + } + this.eventListener (); + } }; diff --git a/website/o3dv/info.js b/website/o3dv/info.js index 7bdd770..b52caaa 100644 --- a/website/o3dv/info.js +++ b/website/o3dv/info.js @@ -4,9 +4,9 @@ OV.InfoPanel = class { this.mainDiv = $('
').addClass ('ov_info_panel_main').appendTo (parentDiv); this.treeView = new OV.TreeView (this.mainDiv); - this.detailsItem = new OV.TreeViewGroupItem ('Details', 'assets/images/tree/details.svg'); + this.detailsItem = new OV.TreeViewGroupItem ('Details', 'assets/images/tree/details.svg'); this.detailsItem.ShowChildren (!OV.IsSmallHeight (), null); - this.treeView.AddItem (this.detailsItem); + this.treeView.AddItem (this.detailsItem); let childrenDiv = this.detailsItem.CreateChildrenDiv (); childrenDiv.addClass ('ov_info_panel_content'); this.popup = null; @@ -146,10 +146,10 @@ OV.InfoPanel = class Clear () { - if (this.popup !== null) { + if (this.popup !== null) { this.popup.Hide (); this.popup = null; - } + } let contentDiv = this.detailsItem.GetChildrenDiv (); contentDiv.empty (); } diff --git a/website/o3dv/menu.js b/website/o3dv/menu.js index d6809ba..d6a7f0c 100644 --- a/website/o3dv/menu.js +++ b/website/o3dv/menu.js @@ -47,22 +47,22 @@ OV.Menu = class } FillTree (importResult) - { + { let obj = this; this.titleDiv.html (importResult.mainFile).attr ('title', importResult.mainFile); - let model = importResult.model; - let usedFiles = importResult.usedFiles; - let missingFiles = importResult.missingFiles; + let model = importResult.model; + let usedFiles = importResult.usedFiles; + let missingFiles = importResult.missingFiles; - let filesItem = new OV.TreeViewGroupItem ('Files', 'assets/images/tree/files.svg'); - this.treeView.AddItem (filesItem); + let filesItem = new OV.TreeViewGroupItem ('Files', 'assets/images/tree/files.svg'); + this.treeView.AddItem (filesItem); for (let i = 0; i < usedFiles.length; i++) { - let file = usedFiles[i]; - let item = new OV.TreeViewSingleItem (file); - filesItem.AddChild (item); - } + let file = usedFiles[i]; + let item = new OV.TreeViewSingleItem (file); + filesItem.AddChild (item); + } if (missingFiles.length > 0) { let missingFilesItem = new OV.TreeViewGroupItem ('Missing Files', 'assets/images/tree/missing_files.svg'); @@ -79,29 +79,29 @@ OV.Menu = class } } - let materialsItem = new OV.TreeViewGroupItem ('Materials', 'assets/images/tree/materials.svg'); - this.treeView.AddItem (materialsItem); + let materialsItem = new OV.TreeViewGroupItem ('Materials', 'assets/images/tree/materials.svg'); + this.treeView.AddItem (materialsItem); for (let i = 0; i < model.MaterialCount (); i++) { - let material = model.GetMaterial (i); + let material = model.GetMaterial (i); let materialName = OV.GetMaterialName (material.name); let materialData = new OV.MaterialData (i); - let materialItem = materialData.CreateMenuItem (materialName, { + let materialItem = materialData.CreateMenuItem (materialName, { onSelected : function (materialIndex) { obj.SetSelection (new OV.Selection (OV.SelectionType.Material, materialIndex)); } }); this.modelData.AddMaterialData (materialData); - materialsItem.AddChild (materialItem); - } + materialsItem.AddChild (materialItem); + } let meshesItem = new OV.TreeViewGroupItem ('Meshes', 'assets/images/tree/meshes.svg'); - this.treeView.AddItem (meshesItem); + this.treeView.AddItem (meshesItem); meshesItem.ShowChildren (true, null); - for (let i = 0; i < model.MeshCount (); i++) { - let mesh = model.GetMesh (i); - let meshData = new OV.MeshData (i); + for (let i = 0; i < model.MeshCount (); i++) { + let mesh = model.GetMesh (i); + let meshData = new OV.MeshData (i); let meshName = OV.GetMeshName (mesh.GetName ()); - let meshItem = meshData.CreateMenuItem (meshName, { + let meshItem = meshData.CreateMenuItem (meshName, { onShowHide : function (meshIndex) { obj.ToggleMeshVisibility (meshIndex); }, @@ -115,13 +115,13 @@ OV.Menu = class obj.SetSelection (new OV.Selection (OV.SelectionType.Mesh, meshIndex)); } }); - this.modelData.AddMeshData (meshData); - meshesItem.AddChild (meshItem); - } + this.modelData.AddMeshData (meshData); + meshesItem.AddChild (meshItem); + } this.UpdateInfoPanel (); this.Resize (); - } + } IsMeshVisible (meshIndex) { @@ -129,8 +129,8 @@ OV.Menu = class return meshData.IsVisible (); } - IsolateMesh (meshIndex) - { + IsolateMesh (meshIndex) + { let isIsolated = true; for (let i = 0; i < this.modelData.MeshCount (); i++) { let meshData = this.modelData.GetMeshData (i); @@ -147,17 +147,17 @@ OV.Menu = class meshData.SetVisible (false); } } - this.callbacks.updateMeshesVisibility (); - } + this.callbacks.updateMeshesVisibility (); + } - ToggleMeshVisibility (meshIndex) - { - let meshData = this.modelData.GetMeshData (meshIndex); - meshData.SetVisible (!meshData.IsVisible ()); - this.callbacks.updateMeshesVisibility (); - } + ToggleMeshVisibility (meshIndex) + { + let meshData = this.modelData.GetMeshData (meshIndex); + meshData.SetVisible (!meshData.IsVisible ()); + this.callbacks.updateMeshesVisibility (); + } - GetSelectedMeshIndex () + GetSelectedMeshIndex () { if (this.tempSelectedMeshIndex !== null) { return this.tempSelectedMeshIndex; @@ -212,9 +212,9 @@ OV.Menu = class } FitMeshToWindow (meshIndex) - { - this.callbacks.fitMeshToWindow (meshIndex); - } + { + this.callbacks.fitMeshToWindow (meshIndex); + } UpdateInfoPanel () { diff --git a/website/o3dv/treeview.js b/website/o3dv/treeview.js index 55bb89b..e5ea419 100644 --- a/website/o3dv/treeview.js +++ b/website/o3dv/treeview.js @@ -45,15 +45,15 @@ OV.TreeViewItem = class this.nameElement = null; } - GetName () - { - return this.name; - } - - SetName (name) - { - this.name = name; - } + GetName () + { + return this.name; + } + + SetName (name) + { + this.name = name; + } CreateMainElement (parentDiv) { @@ -155,15 +155,15 @@ OV.TreeViewGroupItem = class extends OV.TreeViewItem this.openCloseHandler = null; } - GetName () - { - return this.name; - } - - SetName (name) - { - this.name = name; - } + GetName () + { + return this.name; + } + + SetName (name) + { + this.name = name; + } SetAnimated (animated) { diff --git a/website/o3dv/utils.js b/website/o3dv/utils.js index 1482004..e1c3836 100644 --- a/website/o3dv/utils.js +++ b/website/o3dv/utils.js @@ -102,12 +102,12 @@ OV.CopyToClipboard = function (text) OV.CreateIconButton = function (iconName, hoverIconName, title, link) { - let buttonLink = $(''); - buttonLink.attr ('href', link); - buttonLink.attr ('target', '_blank'); + let buttonLink = $(''); + buttonLink.attr ('href', link); + buttonLink.attr ('target', '_blank'); buttonLink.attr ('rel', 'noopener noreferrer'); OV.InstallTooltip (buttonLink, title); - let imgElem = $('').attr ('src', iconName).appendTo (buttonLink); + let imgElem = $('').attr ('src', iconName).appendTo (buttonLink); if (hoverIconName !== null && OV.IsHoverEnabled ()) { buttonLink.hover ( function () { @@ -118,7 +118,7 @@ OV.CreateIconButton = function (iconName, hoverIconName, title, link) } ); } - return buttonLink; + return buttonLink; }; OV.CreateHashParameters = function (urls, camera) diff --git a/website/o3dv/website.js b/website/o3dv/website.js index c7631ef..bbf9cf3 100644 --- a/website/o3dv/website.js +++ b/website/o3dv/website.js @@ -1,448 +1,448 @@ OV.Website = class { - constructor (parameters) - { - this.parameters = parameters; - this.viewer = new OV.Viewer (); - this.hashHandler = new OV.HashHandler (); - this.toolbar = new OV.Toolbar (this.parameters.toolbarDiv); - this.menu = new OV.Menu (this.parameters.menuDiv); - this.modelLoader = new OV.ThreeModelLoader (); - this.highlightMaterial = new THREE.MeshPhongMaterial ({ - color : 0x8ec9f0, - side : THREE.DoubleSide - }); - this.model = null; - this.dialog = null; - } + constructor (parameters) + { + this.parameters = parameters; + this.viewer = new OV.Viewer (); + this.hashHandler = new OV.HashHandler (); + this.toolbar = new OV.Toolbar (this.parameters.toolbarDiv); + this.menu = new OV.Menu (this.parameters.menuDiv); + this.modelLoader = new OV.ThreeModelLoader (); + this.highlightMaterial = new THREE.MeshPhongMaterial ({ + color : 0x8ec9f0, + side : THREE.DoubleSide + }); + this.model = null; + this.dialog = null; + } - Load () - { - let canvas = $('').appendTo (this.parameters.viewerDiv); - this.viewer.Init (canvas.get (0)); - this.ShowViewer (false); - this.hashHandler.SetEventListener (this.OnHashChange.bind (this)); + Load () + { + let canvas = $('').appendTo (this.parameters.viewerDiv); + this.viewer.Init (canvas.get (0)); + this.ShowViewer (false); + this.hashHandler.SetEventListener (this.OnHashChange.bind (this)); - this.InitToolbar (); - this.InitDragAndDrop (); - this.InitModelLoader (); - this.InitMenu (); + this.InitToolbar (); + this.InitDragAndDrop (); + this.InitModelLoader (); + this.InitMenu (); - this.viewer.SetClickHandler (this.OnModelClicked.bind (this)); - this.Resize (); + this.viewer.SetClickHandler (this.OnModelClicked.bind (this)); + this.Resize (); - this.OnHashChange (); - } + this.OnHashChange (); + } - Resize () - { - let windowWidth = $(window).outerWidth (); - let windowHeight = $(window).outerHeight (); - let headerHeight = parseInt (this.parameters.headerDiv.outerHeight (true), 10); + Resize () + { + let windowWidth = $(window).outerWidth (); + let windowHeight = $(window).outerHeight (); + let headerHeight = parseInt (this.parameters.headerDiv.outerHeight (true), 10); - let menuWidth = 0; - let safetyMargin = 0; - if (!OV.IsSmallWidth ()) { - menuWidth = parseInt (this.parameters.menuDiv.outerWidth (true), 10); - safetyMargin = 1; - } - - let contentWidth = windowWidth - menuWidth - safetyMargin; - let contentHeight = windowHeight - headerHeight - safetyMargin; - this.parameters.menuDiv.outerHeight (contentHeight, true); - this.parameters.introDiv.outerHeight (contentHeight, true); + let menuWidth = 0; + let safetyMargin = 0; + if (!OV.IsSmallWidth ()) { + menuWidth = parseInt (this.parameters.menuDiv.outerWidth (true), 10); + safetyMargin = 1; + } + + let contentWidth = windowWidth - menuWidth - safetyMargin; + let contentHeight = windowHeight - headerHeight - safetyMargin; + this.parameters.menuDiv.outerHeight (contentHeight, true); + this.parameters.introDiv.outerHeight (contentHeight, true); - this.menu.Resize (); - this.viewer.Resize (contentWidth, contentHeight); - } + this.menu.Resize (); + this.viewer.Resize (contentWidth, contentHeight); + } - ShowViewer (show) - { - if (show) { - this.parameters.mainDiv.show (); - } else { - this.parameters.mainDiv.hide (); - } - } + ShowViewer (show) + { + if (show) { + this.parameters.mainDiv.show (); + } else { + this.parameters.mainDiv.hide (); + } + } - ClearModel () - { - if (this.dialog !== null) { + ClearModel () + { + if (this.dialog !== null) { this.dialog.Hide (); this.dialog = null; - } - this.model = null; - this.parameters.introDiv.hide (); - this.ShowViewer (false); - this.viewer.Clear (); - this.menu.Clear (); - } - - OnModelFinished (importResult, threeMeshes) - { - this.model = importResult.model; - this.ShowViewer (true); - this.viewer.AddMeshes (threeMeshes); - this.viewer.SetUpVector (importResult.upVector, false); - this.menu.FillTree (importResult); - this.FitModelToWindow (true); - } + } + this.model = null; + this.parameters.introDiv.hide (); + this.ShowViewer (false); + this.viewer.Clear (); + this.menu.Clear (); + } + + OnModelFinished (importResult, threeMeshes) + { + this.model = importResult.model; + this.ShowViewer (true); + this.viewer.AddMeshes (threeMeshes); + this.viewer.SetUpVector (importResult.upVector, false); + this.menu.FillTree (importResult); + this.FitModelToWindow (true); + } - OnModelClicked (button, isCtrlPressed, mouseCoordinates) - { - if (button === 1) { - let meshUserData = this.viewer.GetMeshUnderMouse (mouseCoordinates); - if (meshUserData === null) { - this.menu.SetSelection (null); - } else { - if (isCtrlPressed) { - this.menu.IsolateMesh (meshUserData.originalMeshIndex); - } else { - this.menu.SetSelection (new OV.Selection (OV.SelectionType.Mesh, meshUserData.originalMeshIndex)); - } - } - } - } + OnModelClicked (button, isCtrlPressed, mouseCoordinates) + { + if (button === 1) { + let meshUserData = this.viewer.GetMeshUnderMouse (mouseCoordinates); + if (meshUserData === null) { + this.menu.SetSelection (null); + } else { + if (isCtrlPressed) { + this.menu.IsolateMesh (meshUserData.originalMeshIndex); + } else { + this.menu.SetSelection (new OV.Selection (OV.SelectionType.Mesh, meshUserData.originalMeshIndex)); + } + } + } + } - OpenFileBrowserDialog () - { - this.parameters.fileInput.trigger ('click'); - } + OpenFileBrowserDialog () + { + this.parameters.fileInput.trigger ('click'); + } - FitModelToWindow (onLoad) - { - let obj = this; - let animation = !onLoad; - let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { - return obj.menu.IsMeshVisible (meshUserData.originalMeshIndex); - }); - if (onLoad) { - this.viewer.AdjustClippingPlanes (boundingSphere); - } - this.viewer.FitToWindow (boundingSphere, animation); - } + FitModelToWindow (onLoad) + { + let obj = this; + let animation = !onLoad; + let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { + return obj.menu.IsMeshVisible (meshUserData.originalMeshIndex); + }); + if (onLoad) { + this.viewer.AdjustClippingPlanes (boundingSphere); + } + this.viewer.FitToWindow (boundingSphere, animation); + } - FitMeshToWindow (meshIndex) - { - let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { - return meshUserData.originalMeshIndex === meshIndex; - }); - this.viewer.FitToWindow (boundingSphere, true); - } + FitMeshToWindow (meshIndex) + { + let boundingSphere = this.viewer.GetBoundingSphere (function (meshUserData) { + return meshUserData.originalMeshIndex === meshIndex; + }); + this.viewer.FitToWindow (boundingSphere, true); + } - UpdateMeshesVisibility () - { - let obj = this; - this.viewer.SetMeshesVisibility (function (meshUserData) { - return obj.menu.IsMeshVisible (meshUserData.originalMeshIndex); - }); - } + UpdateMeshesVisibility () + { + let obj = this; + this.viewer.SetMeshesVisibility (function (meshUserData) { + return obj.menu.IsMeshVisible (meshUserData.originalMeshIndex); + }); + } - UpdateMeshesSelection () - { - let selectedMeshIndex = this.menu.GetSelectedMeshIndex (); - this.viewer.SetMeshesHighlight (this.highlightMaterial, function (meshUserData) { - if (meshUserData.originalMeshIndex === selectedMeshIndex) { - return true; - } - return false; - }); - } + UpdateMeshesSelection () + { + let selectedMeshIndex = this.menu.GetSelectedMeshIndex (); + this.viewer.SetMeshesHighlight (this.highlightMaterial, function (meshUserData) { + if (meshUserData.originalMeshIndex === selectedMeshIndex) { + return true; + } + return false; + }); + } - LoadModelFromUrlList (urls) - { - this.modelLoader.LoadFromUrlList (urls); - this.ClearHashIfNotOnlyUrlList (); - } + LoadModelFromUrlList (urls) + { + this.modelLoader.LoadFromUrlList (urls); + this.ClearHashIfNotOnlyUrlList (); + } - LoadModelFromFileList (files) - { - if (files.length === 0) { - return; - } - this.modelLoader.LoadFromFileList (files); - this.ClearHashIfNotOnlyUrlList (); - } + LoadModelFromFileList (files) + { + if (files.length === 0) { + return; + } + this.modelLoader.LoadFromFileList (files); + this.ClearHashIfNotOnlyUrlList (); + } - ClearHashIfNotOnlyUrlList () - { - let importer = this.modelLoader.GetImporter (); - let isOnlyUrl = importer.IsOnlyFileSource (OV.FileSource.Url); - if (!isOnlyUrl && this.hashHandler.HasHash ()) { - this.hashHandler.SkipNextEventHandler (); - this.hashHandler.ClearHash (); - } - } + ClearHashIfNotOnlyUrlList () + { + let importer = this.modelLoader.GetImporter (); + let isOnlyUrl = importer.IsOnlyFileSource (OV.FileSource.Url); + if (!isOnlyUrl && this.hashHandler.HasHash ()) { + this.hashHandler.SkipNextEventHandler (); + this.hashHandler.ClearHash (); + } + } - OnHashChange () - { - if (this.hashHandler.HasHash ()) { - let urls = this.hashHandler.GetModelFilesFromHash (); - if (urls === null) { - return; - } - let camera = this.hashHandler.GetCameraFromHash (); - if (camera !== null) { - this.viewer.SetCamera (camera); - } - this.LoadModelFromUrlList (urls); - } else { - this.ClearModel (); - this.parameters.introDiv.show (); - } - } + OnHashChange () + { + if (this.hashHandler.HasHash ()) { + let urls = this.hashHandler.GetModelFilesFromHash (); + if (urls === null) { + return; + } + let camera = this.hashHandler.GetCameraFromHash (); + if (camera !== null) { + this.viewer.SetCamera (camera); + } + this.LoadModelFromUrlList (urls); + } else { + this.ClearModel (); + this.parameters.introDiv.show (); + } + } - InitToolbar () - { - function AddButton (toolbar, imageName, imageTitle, onlyFullWidth, onClick) - { - let image = 'assets/images/toolbar/' + imageName + '.svg'; - let button = toolbar.AddImageButton (image, imageTitle, onClick); - if (onlyFullWidth) { - button.AddClass ('only_full_width'); - } - } + InitToolbar () + { + function AddButton (toolbar, imageName, imageTitle, onlyFullWidth, onClick) + { + let image = 'assets/images/toolbar/' + imageName + '.svg'; + let button = toolbar.AddImageButton (image, imageTitle, onClick); + if (onlyFullWidth) { + button.AddClass ('only_full_width'); + } + } - function AddRadioButton (toolbar, imageNames, imageTitles, selectedIndex, onlyFullWidth, onClick) - { - let imageData = []; - for (let i = 0; i < imageNames.length; i++) { - let imageName = imageNames[i]; - let imageTitle = imageTitles[i]; - imageData.push ({ - image : 'assets/images/toolbar/' + imageName + '.svg', - title : imageTitle - }); - } - let buttons = toolbar.AddImageRadioButton (imageData, selectedIndex, onClick); - if (onlyFullWidth) { - for (let i = 0; i < buttons.length; i++) { - let button = buttons[i]; - button.AddClass ('only_full_width'); - } - } - } + function AddRadioButton (toolbar, imageNames, imageTitles, selectedIndex, onlyFullWidth, onClick) + { + let imageData = []; + for (let i = 0; i < imageNames.length; i++) { + let imageName = imageNames[i]; + let imageTitle = imageTitles[i]; + imageData.push ({ + image : 'assets/images/toolbar/' + imageName + '.svg', + title : imageTitle + }); + } + let buttons = toolbar.AddImageRadioButton (imageData, selectedIndex, onClick); + if (onlyFullWidth) { + for (let i = 0; i < buttons.length; i++) { + let button = buttons[i]; + button.AddClass ('only_full_width'); + } + } + } - function AddSeparator (toolbar, onlyFullWidth) - { - let separator = toolbar.AddSeparator (); - if (onlyFullWidth) { - separator.addClass ('only_full_width'); - } - } + function AddSeparator (toolbar, onlyFullWidth) + { + let separator = toolbar.AddSeparator (); + if (onlyFullWidth) { + separator.addClass ('only_full_width'); + } + } - let obj = this; - AddButton (this.toolbar, 'open', 'Open model from your device', false, function () { - obj.OpenFileBrowserDialog (); - }); - AddButton (this.toolbar, 'open_url', 'Open model from a url', false, function () { - obj.dialog = OV.ShowOpenUrlDialog (function (urls) { - if (urls.length > 0) { - obj.hashHandler.SetModelFilesToHash (urls); - } - }); - }); - AddSeparator (this.toolbar); - AddButton (this.toolbar, 'fit', 'Fit model to Window', false, function () { - obj.FitModelToWindow (false); - }); - AddButton (this.toolbar, 'up_y', 'Set Y axis as up vector', false, function () { - obj.viewer.SetUpVector (OV.Direction.Y, true); - }); - AddButton (this.toolbar, 'up_z', 'Set Z axis as up vector', false, function () { - obj.viewer.SetUpVector (OV.Direction.Z, true); - }); - AddButton (this.toolbar, 'flip', 'Flip up vector', false, function () { - obj.viewer.FlipUpVector (); - }); - AddSeparator (this.toolbar); - AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, false, function (buttonIndex) { - if (buttonIndex === 0) { - obj.viewer.SetFixUpVector (true); - } else if (buttonIndex === 1) { - obj.viewer.SetFixUpVector (false); - } - }); - AddSeparator (this.toolbar, true); - AddButton (this.toolbar, 'export', 'Export model', true, function () { - obj.dialog = OV.ShowExportDialog (obj.model); - }); - AddButton (this.toolbar, 'embed', 'Get embedding code', true, function () { - obj.dialog = OV.ShowEmbeddingDialog (obj.modelLoader.GetImporter (), obj.viewer.GetCamera ()); - }); + let obj = this; + AddButton (this.toolbar, 'open', 'Open model from your device', false, function () { + obj.OpenFileBrowserDialog (); + }); + AddButton (this.toolbar, 'open_url', 'Open model from a url', false, function () { + obj.dialog = OV.ShowOpenUrlDialog (function (urls) { + if (urls.length > 0) { + obj.hashHandler.SetModelFilesToHash (urls); + } + }); + }); + AddSeparator (this.toolbar); + AddButton (this.toolbar, 'fit', 'Fit model to Window', false, function () { + obj.FitModelToWindow (false); + }); + AddButton (this.toolbar, 'up_y', 'Set Y axis as up vector', false, function () { + obj.viewer.SetUpVector (OV.Direction.Y, true); + }); + AddButton (this.toolbar, 'up_z', 'Set Z axis as up vector', false, function () { + obj.viewer.SetUpVector (OV.Direction.Z, true); + }); + AddButton (this.toolbar, 'flip', 'Flip up vector', false, function () { + obj.viewer.FlipUpVector (); + }); + AddSeparator (this.toolbar); + AddRadioButton (this.toolbar, ['fix_up_on', 'fix_up_off'], ['Fixed up vector', 'Free orbit'], 0, false, function (buttonIndex) { + if (buttonIndex === 0) { + obj.viewer.SetFixUpVector (true); + } else if (buttonIndex === 1) { + obj.viewer.SetFixUpVector (false); + } + }); + AddSeparator (this.toolbar, true); + AddButton (this.toolbar, 'export', 'Export model', true, function () { + obj.dialog = OV.ShowExportDialog (obj.model); + }); + AddButton (this.toolbar, 'embed', 'Get embedding code', true, function () { + obj.dialog = OV.ShowEmbeddingDialog (obj.modelLoader.GetImporter (), obj.viewer.GetCamera ()); + }); - this.parameters.fileInput.on ('change', function (ev) { - obj.LoadModelFromFileList (ev.target.files); - }); - } + this.parameters.fileInput.on ('change', function (ev) { + obj.LoadModelFromFileList (ev.target.files); + }); + } - InitDragAndDrop () - { - window.addEventListener ('dragstart', function (ev) { - ev.preventDefault (); - }, false); + InitDragAndDrop () + { + window.addEventListener ('dragstart', function (ev) { + ev.preventDefault (); + }, false); - window.addEventListener ('dragover', function (ev) { - ev.stopPropagation (); - ev.preventDefault (); - ev.dataTransfer.dropEffect = 'copy'; - }, false); + window.addEventListener ('dragover', function (ev) { + ev.stopPropagation (); + ev.preventDefault (); + ev.dataTransfer.dropEffect = 'copy'; + }, false); - let obj = this; - window.addEventListener ('drop', function (ev) { - ev.stopPropagation (); - ev.preventDefault (); - obj.LoadModelFromFileList (ev.dataTransfer.files); - }, false); - } + let obj = this; + window.addEventListener ('drop', function (ev) { + ev.stopPropagation (); + ev.preventDefault (); + obj.LoadModelFromFileList (ev.dataTransfer.files); + }, false); + } - InitModelLoader () - { - let obj = this; - OV.InitModelLoader (this.modelLoader, { - onStart : function () - { - obj.ClearModel (); - }, - onFinish : function (importResult, threeMeshes) - { - obj.OnModelFinished (importResult, threeMeshes); - }, - onRender : function () - { - obj.viewer.Render (); - } - }); - } + InitModelLoader () + { + let obj = this; + OV.InitModelLoader (this.modelLoader, { + onStart : function () + { + obj.ClearModel (); + }, + onFinish : function (importResult, threeMeshes) + { + obj.OnModelFinished (importResult, threeMeshes); + }, + onRender : function () + { + obj.viewer.Render (); + } + }); + } - InitMenu () - { - function GetMeshUserData (viewer, meshIndex) - { - let userData = null; - viewer.EnumerateMeshesUserData (function (meshUserData) { - if (meshUserData.originalMeshIndex === meshIndex) { - userData = meshUserData; - } - }); - return userData; - } + InitMenu () + { + function GetMeshUserData (viewer, meshIndex) + { + let userData = null; + viewer.EnumerateMeshesUserData (function (meshUserData) { + if (meshUserData.originalMeshIndex === meshIndex) { + userData = meshUserData; + } + }); + return userData; + } - function GetBoundingBoxInfo (boundingBox) - { - if (boundingBox === null) { - return null; - } - return { - min : new OV.Coord3D (boundingBox.min.x, boundingBox.min.y, boundingBox.min.z), - max : new OV.Coord3D (boundingBox.max.x, boundingBox.max.y, boundingBox.max.z) - }; - } + function GetBoundingBoxInfo (boundingBox) + { + if (boundingBox === null) { + return null; + } + return { + min : new OV.Coord3D (boundingBox.min.x, boundingBox.min.y, boundingBox.min.z), + max : new OV.Coord3D (boundingBox.max.x, boundingBox.max.y, boundingBox.max.z) + }; + } - function GetMaterialInfo (viewer, model, materialIndex) - { - function AddTexture (textureNames, type, texture) - { - if (texture === null) { - return; - } - textureNames.push ({ - type : type, - name : OV.GetFileName (texture.name), - path : texture.name - }); - } + function GetMaterialInfo (viewer, model, materialIndex) + { + function AddTexture (textureNames, type, texture) + { + if (texture === null) { + return; + } + textureNames.push ({ + type : type, + name : OV.GetFileName (texture.name), + path : texture.name + }); + } - let material = model.GetMaterial (materialIndex); + let material = model.GetMaterial (materialIndex); let materialInfo = { name : material.name, ambient : material.ambient.Clone (), diffuse : material.diffuse.Clone (), specular : material.specular.Clone (), opacity : material.opacity, - textureNames : [], - usedByMeshes : [] + textureNames : [], + usedByMeshes : [] }; - AddTexture (materialInfo.textureNames, 'Base', material.diffuseMap); - AddTexture (materialInfo.textureNames, 'Specular', material.specularMap); - AddTexture (materialInfo.textureNames, 'Bump', material.bumpMap); - AddTexture (materialInfo.textureNames, 'Normal', material.normalMap); - AddTexture (materialInfo.textureNames, 'Emissive', material.emissiveMap); + AddTexture (materialInfo.textureNames, 'Base', material.diffuseMap); + AddTexture (materialInfo.textureNames, 'Specular', material.specularMap); + AddTexture (materialInfo.textureNames, 'Bump', material.bumpMap); + AddTexture (materialInfo.textureNames, 'Normal', material.normalMap); + AddTexture (materialInfo.textureNames, 'Emissive', material.emissiveMap); - viewer.EnumerateMeshesUserData (function (meshUserData) { - if (meshUserData.originalMaterials.indexOf (materialIndex) !== -1) { - materialInfo.usedByMeshes.push (meshUserData.originalMeshIndex); - } - }); - return materialInfo; - } + viewer.EnumerateMeshesUserData (function (meshUserData) { + if (meshUserData.originalMaterials.indexOf (materialIndex) !== -1) { + materialInfo.usedByMeshes.push (meshUserData.originalMeshIndex); + } + }); + return materialInfo; + } - function GetMeshInfo (viewer, model, meshIndex) - { - let result = { - name : null, - vertexCount : null, - triangleCount : null, - usedMaterials : null, - boundingBox : null - }; - - let mesh = model.GetMesh (meshIndex); - result.name = mesh.GetName (); - result.vertexCount = mesh.VertexCount (); - result.triangleCount = mesh.TriangleCount (); + function GetMeshInfo (viewer, model, meshIndex) + { + let result = { + name : null, + vertexCount : null, + triangleCount : null, + usedMaterials : null, + boundingBox : null + }; + + let mesh = model.GetMesh (meshIndex); + result.name = mesh.GetName (); + result.vertexCount = mesh.VertexCount (); + result.triangleCount = mesh.TriangleCount (); - let userData = GetMeshUserData (viewer, meshIndex); - result.usedMaterials = userData.originalMaterials; - result.usedMaterials.sort (); + let userData = GetMeshUserData (viewer, meshIndex); + result.usedMaterials = userData.originalMaterials; + result.usedMaterials.sort (); - let boundingBox = viewer.GetBoundingBox (function (meshUserData) { - return meshUserData.originalMeshIndex === meshIndex; - }); - result.boundingBox = GetBoundingBoxInfo (boundingBox); - return result; - } - - function GetModelInfo (model, viewer) - { - let result = { - name : null, - vertexCount : model.VertexCount (), - triangleCount : model.TriangleCount (), - usedMaterials : null, - boundingBox : null - }; - let boundingBox = viewer.GetBoundingBox (function (meshUserData) { - return true; - }); - result.boundingBox = GetBoundingBoxInfo (boundingBox); - return result; - } + let boundingBox = viewer.GetBoundingBox (function (meshUserData) { + return meshUserData.originalMeshIndex === meshIndex; + }); + result.boundingBox = GetBoundingBoxInfo (boundingBox); + return result; + } + + function GetModelInfo (model, viewer) + { + let result = { + name : null, + vertexCount : model.VertexCount (), + triangleCount : model.TriangleCount (), + usedMaterials : null, + boundingBox : null + }; + let boundingBox = viewer.GetBoundingBox (function (meshUserData) { + return true; + }); + result.boundingBox = GetBoundingBoxInfo (boundingBox); + return result; + } - let obj = this; - this.menu.Init ({ - openFileBrowserDialog : function () { - obj.OpenFileBrowserDialog (); - }, - updateMeshesVisibility : function () { - obj.UpdateMeshesVisibility (); - }, - updateMeshesSelection : function () { - obj.UpdateMeshesSelection (); - }, - fitMeshToWindow : function (meshIndex) { - obj.FitMeshToWindow (meshIndex); - }, - getMaterialInformation : function (materialIndex) { - return GetMaterialInfo (obj.viewer, obj.model, materialIndex); - }, - getMeshInformation : function (meshIndex) { - return GetMeshInfo (obj.viewer, obj.model, meshIndex); - }, - getModelInformation : function () { - return GetModelInfo (obj.model, obj.viewer); - } - }); - } + let obj = this; + this.menu.Init ({ + openFileBrowserDialog : function () { + obj.OpenFileBrowserDialog (); + }, + updateMeshesVisibility : function () { + obj.UpdateMeshesVisibility (); + }, + updateMeshesSelection : function () { + obj.UpdateMeshesSelection (); + }, + fitMeshToWindow : function (meshIndex) { + obj.FitMeshToWindow (meshIndex); + }, + getMaterialInformation : function (materialIndex) { + return GetMaterialInfo (obj.viewer, obj.model, materialIndex); + }, + getMeshInformation : function (meshIndex) { + return GetMeshInfo (obj.viewer, obj.model, meshIndex); + }, + getModelInformation : function () { + return GetModelInfo (obj.model, obj.viewer); + } + }); + } };