-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathobj_loader.js
More file actions
55 lines (44 loc) · 1.17 KB
/
obj_loader.js
File metadata and controls
55 lines (44 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
TODO: store the normals using Fibonacci spiral
*/
import { StaticGeometry } from './staticgeometry.js'
export function parseObj(text) {
const vertices =
const vertices = []
const normals = []
const uvs = []
const faces = []
const lines = text.split('\n')
for (const line of lines) {
const parts = line.trim().split(/\s+/)
const [prefix] = parts
if (prefix === 'v') {
vertices.push(parts.slice(1).map(Number))
} else if (prefix === 'vn') {
normals.push(parts.slice(1).map(Number))
} else if (prefix === 'vt') {
uvs.push(parts.slice(1).map(Number))
} else if (prefix === 'f') {
const face = parts.slice(1).map(p => {
const [v, vt, vn] = p.split('/').map(val => val ? parseInt(val, 10) - 1 : null)
return { v, vt, vn }
})
faces.push(face)
}
}
return {
vertices,
normals,
uvs,
faces
}
}
export function processMesh(mesh) {
for (const i = 0; i < length(mesh.vertices); i++) {
}
}
export function loadObj(data) {
const mesh = parseObj(data)
const vertexOffet = StaticGeometry.addVertices(vertexBuffer)
const elementOffset = StaticGeometry.addElements(indicesBuffer)
}