Move mesh utils to a separate file.
This commit is contained in:
parent
3b6e784081
commit
2d8acfe7da
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
80
source/model/meshutils.js
Normal file
80
source/model/meshutils.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
OV.CalculateTriangleNormal = function (v0, v1, v2)
|
||||||
|
{
|
||||||
|
let v = OV.SubCoord3D (v1, v0);
|
||||||
|
let w = OV.SubCoord3D (v2, v0);
|
||||||
|
let normal = OV.CrossVector3D (v, w);
|
||||||
|
normal.Normalize ();
|
||||||
|
return normal;
|
||||||
|
};
|
||||||
|
|
||||||
|
OV.TransformMesh = function (mesh, transformation)
|
||||||
|
{
|
||||||
|
if (transformation.IsIdentity ()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.VertexCount (); i++) {
|
||||||
|
let vertex = mesh.GetVertex (i);
|
||||||
|
let transformed = transformation.TransformCoord3D (vertex);
|
||||||
|
vertex.x = transformed.x;
|
||||||
|
vertex.y = transformed.y;
|
||||||
|
vertex.z = transformed.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mesh.NormalCount () > 0) {
|
||||||
|
let trs = transformation.GetMatrix ().DecomposeTRS ();
|
||||||
|
let normalMatrix = new OV.Matrix ().ComposeTRS (new OV.Coord3D (0.0, 0.0, 0.0), trs.rotation, new OV.Coord3D (1.0, 1.0, 1.0));
|
||||||
|
let normalTransformation = new OV.Transformation (normalMatrix);
|
||||||
|
for (let i = 0; i < mesh.NormalCount (); i++) {
|
||||||
|
let normal = mesh.GetNormal (i);
|
||||||
|
let transformed = normalTransformation.TransformCoord3D (normal);
|
||||||
|
normal.x = transformed.x;
|
||||||
|
normal.y = transformed.y;
|
||||||
|
normal.z = transformed.z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
OV.FlipMeshTrianglesOrientation = function (mesh)
|
||||||
|
{
|
||||||
|
for (let i = 0; i < mesh.TriangleCount (); i++) {
|
||||||
|
let triangle = mesh.GetTriangle (i);
|
||||||
|
let tmp = triangle.v1;
|
||||||
|
triangle.v1 = triangle.v2;
|
||||||
|
triangle.v2 = tmp;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
OV.CloneMesh = function (mesh)
|
||||||
|
{
|
||||||
|
let cloned = new OV.Mesh ();
|
||||||
|
|
||||||
|
cloned.SetName (mesh.GetName ());
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.VertexCount (); i++) {
|
||||||
|
let vertex = mesh.GetVertex (i);
|
||||||
|
cloned.AddVertex (vertex.Clone ());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.VertexColorCount (); i++) {
|
||||||
|
let color = mesh.GetVertexColor (i);
|
||||||
|
cloned.AddVertexColor (color.Clone ());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.NormalCount (); i++) {
|
||||||
|
let normal = mesh.GetNormal (i);
|
||||||
|
cloned.AddNormal (normal.Clone ());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.TextureUVCount (); i++) {
|
||||||
|
let uv = mesh.GetTextureUV (i);
|
||||||
|
cloned.AddTextureUV (uv.Clone ());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < mesh.TriangleCount (); i++) {
|
||||||
|
let triangle = mesh.GetTriangle (i);
|
||||||
|
cloned.AddTriangle (triangle.Clone ());
|
||||||
|
}
|
||||||
|
|
||||||
|
return cloned;
|
||||||
|
};
|
||||||
@ -1,50 +1,3 @@
|
|||||||
OV.CalculateTriangleNormal = function (v0, v1, v2)
|
|
||||||
{
|
|
||||||
let v = OV.SubCoord3D (v1, v0);
|
|
||||||
let w = OV.SubCoord3D (v2, v0);
|
|
||||||
let normal = OV.CrossVector3D (v, w);
|
|
||||||
normal.Normalize ();
|
|
||||||
return normal;
|
|
||||||
};
|
|
||||||
|
|
||||||
OV.TransformMesh = function (mesh, transformation)
|
|
||||||
{
|
|
||||||
if (transformation.IsIdentity ()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.VertexCount (); i++) {
|
|
||||||
let vertex = mesh.GetVertex (i);
|
|
||||||
let transformed = transformation.TransformCoord3D (vertex);
|
|
||||||
vertex.x = transformed.x;
|
|
||||||
vertex.y = transformed.y;
|
|
||||||
vertex.z = transformed.z;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mesh.NormalCount () > 0) {
|
|
||||||
let trs = transformation.GetMatrix ().DecomposeTRS ();
|
|
||||||
let normalMatrix = new OV.Matrix ().ComposeTRS (new OV.Coord3D (0.0, 0.0, 0.0), trs.rotation, new OV.Coord3D (1.0, 1.0, 1.0));
|
|
||||||
let normalTransformation = new OV.Transformation (normalMatrix);
|
|
||||||
for (let i = 0; i < mesh.NormalCount (); i++) {
|
|
||||||
let normal = mesh.GetNormal (i);
|
|
||||||
let transformed = normalTransformation.TransformCoord3D (normal);
|
|
||||||
normal.x = transformed.x;
|
|
||||||
normal.y = transformed.y;
|
|
||||||
normal.z = transformed.z;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
OV.FlipMeshTrianglesOrientation = function (mesh)
|
|
||||||
{
|
|
||||||
for (let i = 0; i < mesh.TriangleCount (); i++) {
|
|
||||||
let triangle = mesh.GetTriangle (i);
|
|
||||||
let tmp = triangle.v1;
|
|
||||||
triangle.v1 = triangle.v2;
|
|
||||||
triangle.v2 = tmp;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
OV.IsModelEmpty = function (model)
|
OV.IsModelEmpty = function (model)
|
||||||
{
|
{
|
||||||
let isEmpty = true;
|
let isEmpty = true;
|
||||||
@ -56,40 +9,6 @@ OV.IsModelEmpty = function (model)
|
|||||||
return isEmpty;
|
return isEmpty;
|
||||||
};
|
};
|
||||||
|
|
||||||
OV.CloneMesh = function (mesh)
|
|
||||||
{
|
|
||||||
let cloned = new OV.Mesh ();
|
|
||||||
|
|
||||||
cloned.SetName (mesh.GetName ());
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.VertexCount (); i++) {
|
|
||||||
let vertex = mesh.GetVertex (i);
|
|
||||||
cloned.AddVertex (vertex.Clone ());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.VertexColorCount (); i++) {
|
|
||||||
let color = mesh.GetVertexColor (i);
|
|
||||||
cloned.AddVertexColor (color.Clone ());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.NormalCount (); i++) {
|
|
||||||
let normal = mesh.GetNormal (i);
|
|
||||||
cloned.AddNormal (normal.Clone ());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.TextureUVCount (); i++) {
|
|
||||||
let uv = mesh.GetTextureUV (i);
|
|
||||||
cloned.AddTextureUV (uv.Clone ());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < mesh.TriangleCount (); i++) {
|
|
||||||
let triangle = mesh.GetTriangle (i);
|
|
||||||
cloned.AddTriangle (triangle.Clone ());
|
|
||||||
}
|
|
||||||
|
|
||||||
return cloned;
|
|
||||||
};
|
|
||||||
|
|
||||||
OV.GetBoundingBox = function (object3D)
|
OV.GetBoundingBox = function (object3D)
|
||||||
{
|
{
|
||||||
let calculator = new OV.BoundingBoxCalculator3D ();
|
let calculator = new OV.BoundingBoxCalculator3D ();
|
||||||
|
|||||||
@ -28,6 +28,7 @@
|
|||||||
"source/model/meshinstance.js",
|
"source/model/meshinstance.js",
|
||||||
"source/model/model.js",
|
"source/model/model.js",
|
||||||
"source/model/topology.js",
|
"source/model/topology.js",
|
||||||
|
"source/model/meshutils.js",
|
||||||
"source/model/modelutils.js",
|
"source/model/modelutils.js",
|
||||||
"source/model/modelfinalization.js",
|
"source/model/modelfinalization.js",
|
||||||
"source/model/quantities.js",
|
"source/model/quantities.js",
|
||||||
|
|||||||
@ -44,6 +44,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
@ -46,6 +46,7 @@
|
|||||||
<script type="text/javascript" src="../source/model/meshinstance.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/model.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/topology.js"></script>
|
<script type="text/javascript" src="../source/model/topology.js"></script>
|
||||||
|
<script type="text/javascript" src="../source/model/meshutils.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/modelutils.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/modelfinalization.js"></script>
|
||||||
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
<script type="text/javascript" src="../source/model/quantities.js"></script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user