Add node to mesh instance instead of transformation.
This commit is contained in:
parent
92eac095e1
commit
af5a0fef13
@ -32,16 +32,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -32,16 +32,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -31,16 +31,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -32,16 +32,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -32,16 +32,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -31,16 +31,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -31,16 +31,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -1,10 +1,29 @@
|
||||
OV.MeshInstanceId = class
|
||||
{
|
||||
constructor (nodeId, meshIndex)
|
||||
{
|
||||
this.nodeId = nodeId;
|
||||
this.meshIndex = meshIndex;
|
||||
}
|
||||
|
||||
IsEqual (rhs)
|
||||
{
|
||||
return this.nodeId === rhs.nodeId && this.meshIndex === rhs.meshIndex;
|
||||
}
|
||||
|
||||
GetKey ()
|
||||
{
|
||||
return this.nodeId.toString () + ':' + this.meshIndex.toString ();
|
||||
}
|
||||
};
|
||||
|
||||
OV.MeshInstance = class extends OV.Object3D
|
||||
{
|
||||
constructor (mesh, transformation)
|
||||
constructor (node, mesh)
|
||||
{
|
||||
super ();
|
||||
this.node = node;
|
||||
this.mesh = mesh;
|
||||
this.transformation = transformation;
|
||||
}
|
||||
|
||||
VertexCount ()
|
||||
@ -29,11 +48,12 @@ OV.MeshInstance = class extends OV.Object3D
|
||||
|
||||
EnumerateVertices (onVertex)
|
||||
{
|
||||
if (this.transformation.IsIdentity ()) {
|
||||
let transformation = this.node.GetWorldTransformation ();
|
||||
if (transformation.IsIdentity ()) {
|
||||
this.mesh.EnumerateVertices (onVertex);
|
||||
} else {
|
||||
this.mesh.EnumerateVertices ((vertex) => {
|
||||
const transformed = this.transformation.TransformCoord3D (vertex);
|
||||
const transformed = transformation.TransformCoord3D (vertex);
|
||||
onVertex (transformed);
|
||||
});
|
||||
}
|
||||
@ -46,15 +66,24 @@ OV.MeshInstance = class extends OV.Object3D
|
||||
|
||||
EnumerateTriangleVertices (onTriangleVertices)
|
||||
{
|
||||
if (this.transformation.IsIdentity ()) {
|
||||
let transformation = this.node.GetWorldTransformation ();
|
||||
if (transformation.IsIdentity ()) {
|
||||
this.mesh.EnumerateTriangleVertices (onTriangleVertices);
|
||||
} else {
|
||||
this.mesh.EnumerateTriangleVertices ((v0, v1, v2) => {
|
||||
const v0Transformed = this.transformation.TransformCoord3D (v0);
|
||||
const v1Transformed = this.transformation.TransformCoord3D (v1);
|
||||
const v2Transformed = this.transformation.TransformCoord3D (v2);
|
||||
const v0Transformed = transformation.TransformCoord3D (v0);
|
||||
const v1Transformed = transformation.TransformCoord3D (v1);
|
||||
const v2Transformed = transformation.TransformCoord3D (v2);
|
||||
onTriangleVertices (v0Transformed, v1Transformed, v2Transformed);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
GetTransformedMesh ()
|
||||
{
|
||||
let transformation = this.node.GetWorldTransformation ();
|
||||
const transformed = OV.CloneMesh (this.mesh);
|
||||
OV.TransformMesh (transformed, transformation);
|
||||
return transformed;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,18 +0,0 @@
|
||||
OV.MeshInstanceId = class
|
||||
{
|
||||
constructor (nodeId, meshIndex)
|
||||
{
|
||||
this.nodeId = nodeId;
|
||||
this.meshIndex = meshIndex;
|
||||
}
|
||||
|
||||
IsEqual (rhs)
|
||||
{
|
||||
return this.nodeId === rhs.nodeId && this.meshIndex === rhs.meshIndex;
|
||||
}
|
||||
|
||||
GetKey ()
|
||||
{
|
||||
return this.nodeId.toString () + ':' + this.meshIndex.toString ();
|
||||
}
|
||||
};
|
||||
@ -118,32 +118,20 @@ OV.Model = class extends OV.ModelObject3D
|
||||
|
||||
EnumerateMeshInstances (onMeshInstance)
|
||||
{
|
||||
function EnumerateNodeMeshInstances (model, node, transformation, onMeshInstance)
|
||||
{
|
||||
let nodeTransformation = node.GetTransformation ().Clone ();
|
||||
nodeTransformation.Append (transformation);
|
||||
|
||||
for (let childNode of node.GetChildNodes ()) {
|
||||
EnumerateNodeMeshInstances (model, childNode, nodeTransformation, onMeshInstance);
|
||||
}
|
||||
|
||||
this.root.Enumerate ((node) => {
|
||||
for (let meshIndex of node.GetMeshIndices ()) {
|
||||
let mesh = model.GetMesh (meshIndex);
|
||||
let meshInstance = new OV.MeshInstance (mesh, nodeTransformation);
|
||||
let mesh = this.GetMesh (meshIndex);
|
||||
let meshInstance = new OV.MeshInstance (node, mesh);
|
||||
onMeshInstance (meshInstance);
|
||||
}
|
||||
}
|
||||
|
||||
let transformation = new OV.Transformation ();
|
||||
EnumerateNodeMeshInstances (this, this.root, transformation, onMeshInstance);
|
||||
});
|
||||
}
|
||||
|
||||
EnumerateTransformedMeshInstances (onMesh)
|
||||
{
|
||||
this.EnumerateMeshInstances ((meshInstance) => {
|
||||
const mesh = OV.CloneMesh (meshInstance.mesh);
|
||||
OV.TransformMesh (mesh, meshInstance.transformation);
|
||||
onMesh (mesh);
|
||||
const transformed = meshInstance.GetTransformedMesh ();
|
||||
onMesh (transformed);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -68,8 +68,7 @@ OV.Node = class
|
||||
let transformation = this.transformation.Clone ();
|
||||
let parent = this.parent;
|
||||
while (parent !== null) {
|
||||
const parentTransformation = parent.transformation.Clone ();
|
||||
transformation = parentTransformation.Append (transformation);
|
||||
transformation.Append (parent.transformation);
|
||||
parent = parent.parent;
|
||||
}
|
||||
return transformation;
|
||||
|
||||
@ -309,7 +309,7 @@ function CreateTranslatedRotatedCubesModel ()
|
||||
rotatedNode.SetName ('Rotated');
|
||||
|
||||
let rotation = OV.QuaternionFromAxisAngle (new OV.Coord3D (0.0, 0.0, 1.0), Math.PI / 2.0);
|
||||
rotatedNode.SetTransformation (new OV.Transformation (new OV.Matrix ().CreateRotation (rotation.x, rotation.y, rotation.z, rotation.w)));
|
||||
rotatedNode.SetTransformation (new OV.Transformation (new OV.Matrix ().CreateRotation (0.0, 0.0, 0.7071067811865475, 0.7071067811865476)));
|
||||
|
||||
let translatedRotatedNode = new OV.Node ();
|
||||
translatedRotatedNode.SetName ('Translated and Rotated');
|
||||
@ -484,14 +484,14 @@ describe ('Node Hierarchy', function () {
|
||||
let boundingBox2 = OV.GetBoundingBox (meshInstances[1]);
|
||||
let boundingBox3 = OV.GetBoundingBox (meshInstances[2]);
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.min, new OV.Coord3D (2.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.max, new OV.Coord3D (3.0, 1.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.min, new OV.Coord3D (0.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.max, new OV.Coord3D (1.0, 1.0, 1.0)));
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.min, new OV.Coord3D (-1.0, 2.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.max, new OV.Coord3D (0.0, 3.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.min, new OV.Coord3D (2.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.max, new OV.Coord3D (3.0, 1.0, 1.0)));
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.min, new OV.Coord3D (0.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.max, new OV.Coord3D (1.0, 1.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.min, new OV.Coord3D (-1.0, 2.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.max, new OV.Coord3D (0.0, 3.0, 1.0)));
|
||||
});
|
||||
|
||||
it ('Enumerate transformed mesh instances', function () {
|
||||
@ -531,13 +531,13 @@ describe ('Node Hierarchy', function () {
|
||||
let boundingBox2 = OV.GetBoundingBox (meshes[1]);
|
||||
let boundingBox3 = OV.GetBoundingBox (meshes[2]);
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.min, new OV.Coord3D (2.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.max, new OV.Coord3D (3.0, 1.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.min, new OV.Coord3D (0.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox1.max, new OV.Coord3D (1.0, 1.0, 1.0)));
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.min, new OV.Coord3D (-1.0, 2.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.max, new OV.Coord3D (0.0, 3.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.min, new OV.Coord3D (2.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox2.max, new OV.Coord3D (3.0, 1.0, 1.0)));
|
||||
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.min, new OV.Coord3D (0.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.max, new OV.Coord3D (1.0, 1.0, 1.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.min, new OV.Coord3D (-1.0, 2.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (boundingBox3.max, new OV.Coord3D (0.0, 3.0, 1.0)));
|
||||
});
|
||||
});
|
||||
|
||||
@ -4,7 +4,7 @@ var testUtils = require ('../utils/testutils.js');
|
||||
describe ('Model Utils', function () {
|
||||
it ('Create Merged Model', function () {
|
||||
var model = new OV.Model ();
|
||||
|
||||
|
||||
var 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));
|
||||
@ -72,11 +72,11 @@ describe ('Model Utils', function () {
|
||||
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
|
||||
uvs : [],
|
||||
mat : 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it ('Mesh Bounding Box', function () {
|
||||
@ -89,15 +89,17 @@ describe ('Model Utils', function () {
|
||||
it ('Mesh Instance Bounding Box', function () {
|
||||
let cube = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
|
||||
let transformation = new OV.Transformation (new OV.Matrix ().CreateTranslation (2.0, 0.0, 0.0));
|
||||
let cubeInstance = new OV.MeshInstance (cube, transformation);
|
||||
let node = new OV.Node ();
|
||||
node.SetTransformation (transformation);
|
||||
let cubeInstance = new OV.MeshInstance (node, cube);
|
||||
let cubeInstanceBounds = OV.GetBoundingBox (cubeInstance);
|
||||
assert (OV.CoordIsEqual3D (cubeInstanceBounds.min, new OV.Coord3D (2.0, 0.0, 0.0)));
|
||||
assert (OV.CoordIsEqual3D (cubeInstanceBounds.max, new OV.Coord3D (3.0, 1.0, 1.0)));
|
||||
});
|
||||
});
|
||||
|
||||
it ('Model Bounding Box', function () {
|
||||
var model = new OV.Model ();
|
||||
|
||||
|
||||
var 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));
|
||||
@ -138,7 +140,7 @@ describe ('Model Utils', function () {
|
||||
for (let i = 0; i < topology.edges.length; i++) {
|
||||
assert.strictEqual (topology.edges[i].triangles.length, 2);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it ('Cube Topology Calculation', function () {
|
||||
let cube = testUtils.GetModelWithOneMesh (OV.GenerateCuboid (null, 1.0, 1.0, 1.0));
|
||||
@ -181,7 +183,7 @@ describe ('Model Utils', function () {
|
||||
let topology = OV.GetTopology (model);
|
||||
assert.strictEqual (topology.vertices.length, 15);
|
||||
assert (OV.IsSolid (model));
|
||||
});
|
||||
});
|
||||
|
||||
it ('Two Cubes Connecting in One Edge Topology Calculation', function () {
|
||||
const model = testUtils.GetTwoCubesConnectingInOneEdgeModel ();
|
||||
@ -195,5 +197,5 @@ describe ('Model Utils', function () {
|
||||
let topology = OV.GetTopology (model);
|
||||
assert.strictEqual (topology.vertices.length, 12);
|
||||
assert (OV.IsSolid (model));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -118,7 +118,7 @@ describe ('Node', function() {
|
||||
let tr2 = new OV.Transformation (new OV.Matrix ().CreateRotation (rotation.x, rotation.y, rotation.z, rotation.w));
|
||||
let tr3 = new OV.Transformation (new OV.Matrix ().CreateTranslation (0.0, 0.0, 2.0));
|
||||
|
||||
let refTr = new OV.Transformation ().Append (tr1).Append (tr2).Append (tr3);
|
||||
let refTr = new OV.Transformation ().Append (tr3).Append (tr2).Append (tr1);
|
||||
|
||||
let node1 = new OV.Node ();
|
||||
node1.SetTransformation (tr1);
|
||||
|
||||
@ -18,7 +18,7 @@ describe ('Quantities', function () {
|
||||
it ('Two Cubes Connecting in One Vertex Volume Calculation', function () {
|
||||
const model = testUtils.GetTwoCubesConnectingInOneVertexModel ();
|
||||
assert (OV.IsEqual (OV.CalculateVolume (model), 2.0));
|
||||
});
|
||||
});
|
||||
|
||||
it ('Two Cubes Connecting in One Edge Volume Calculation', function () {
|
||||
const model = testUtils.GetTwoCubesConnectingInOneEdgeModel ();
|
||||
@ -28,7 +28,7 @@ describe ('Quantities', function () {
|
||||
it ('Two Cubes Connecting in One Face Volume Calculation', function () {
|
||||
const model = testUtils.GetTwoCubesConnectingInOneFaceModel ();
|
||||
assert (OV.IsEqual (OV.CalculateVolume (model), 2.0));
|
||||
});
|
||||
});
|
||||
|
||||
it ('Cube with Wrongly Oriented Triangle Volume Calculation', function () {
|
||||
var mesh = new OV.Mesh ();
|
||||
@ -90,8 +90,10 @@ describe ('Quantities', function () {
|
||||
it ('Cube Scaled Volume and Area Calculation', function () {
|
||||
const mesh = OV.GenerateCuboid (null, 1.0, 1.0, 1.0);
|
||||
const transformation = new OV.Transformation (new OV.Matrix ().CreateScale (2.0, 2.0, 2.0));
|
||||
const meshInstance = new OV.MeshInstance (mesh, transformation);
|
||||
let node = new OV.Node ();
|
||||
node.SetTransformation (transformation);
|
||||
const meshInstance = new OV.MeshInstance (node, mesh);
|
||||
assert (OV.IsEqual (OV.CalculateVolume (meshInstance), 8.0));
|
||||
assert (OV.IsEqual (OV.CalculateSurfaceArea (meshInstance), 24.0));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -28,16 +28,15 @@
|
||||
"source/model/property.js",
|
||||
"source/model/object.js",
|
||||
"source/model/mesh.js",
|
||||
"source/model/meshinstance.js",
|
||||
"source/model/meshbuffer.js",
|
||||
"source/model/node.js",
|
||||
"source/model/meshinstance.js",
|
||||
"source/model/model.js",
|
||||
"source/model/topology.js",
|
||||
"source/model/modelutils.js",
|
||||
"source/model/modelfinalization.js",
|
||||
"source/model/quantities.js",
|
||||
"source/model/generator.js",
|
||||
"source/model/meshinstanceid.js",
|
||||
"source/import/importerutils.js",
|
||||
"source/import/importerbase.js",
|
||||
"source/import/importerobj.js",
|
||||
|
||||
@ -41,16 +41,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
@ -41,16 +41,15 @@
|
||||
<script type="text/javascript" src="../source/model/property.js"></script>
|
||||
<script type="text/javascript" src="../source/model/object.js"></script>
|
||||
<script type="text/javascript" src="../source/model/mesh.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshbuffer.js"></script>
|
||||
<script type="text/javascript" src="../source/model/node.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstance.js"></script>
|
||||
<script type="text/javascript" src="../source/model/model.js"></script>
|
||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelutils.js"></script>
|
||||
<script type="text/javascript" src="../source/model/modelfinalization.js"></script>
|
||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||
<script type="text/javascript" src="../source/model/generator.js"></script>
|
||||
<script type="text/javascript" src="../source/model/meshinstanceid.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerutils.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerbase.js"></script>
|
||||
<script type="text/javascript" src="../source/import/importerobj.js"></script>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user