Skip to content
Snippets Groups Projects
Commit 40b7fe7c authored by Alexander Rose's avatar Alexander Rose
Browse files

checkForDuplicateVertices mesh helper method

parent ced7d3be
No related branches found
No related tags found
No related merge requests found
...@@ -103,6 +103,28 @@ export namespace Mesh { ...@@ -103,6 +103,28 @@ export namespace Mesh {
mesh.normalsComputed = true; mesh.normalsComputed = true;
} }
export function checkForDuplicateVertices(mesh: Mesh, fractionDigits = 3) {
const v = mesh.vertexBuffer.ref.value
const map = new Map<string, number>()
const hash = (v: Vec3, d: number) => `${v[0].toFixed(d)}|${v[1].toFixed(d)}|${v[2].toFixed(d)}`
let duplicates = 0
const a = Vec3.zero()
for (let i = 0, il = mesh.vertexCount; i < il; ++i) {
Vec3.fromArray(a, v, i * 3)
const k = hash(a, fractionDigits)
const count = map.get(k)
if (count !== undefined) {
duplicates += 1
map.set(k, count + 1)
} else {
map.set(k, 1)
}
}
return duplicates
}
export function computeNormals(surface: Mesh): Task<Mesh> { export function computeNormals(surface: Mesh): Task<Mesh> {
return Task.create<Mesh>('Surface (Compute Normals)', async ctx => { return Task.create<Mesh>('Surface (Compute Normals)', async ctx => {
if (surface.normalsComputed) return surface; if (surface.normalsComputed) return surface;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment