@jscad/obj-serializer 2.1.21 → 2.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -93
- package/index.js +6 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,198 +3,110 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [2.1.
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @jscad/obj-serializer
|
|
6
|
+
## [2.1.22](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.21...@jscad/obj-serializer@2.1.22) (2026-02-11)
|
|
9
7
|
|
|
8
|
+
### Performance Improvements
|
|
10
9
|
|
|
10
|
+
* **obj-serializer:** improved performance by using Map for unique vertices ([93d5df5](https://github.com/jscad/OpenJSCAD.org/commit/93d5df5d8515797f4a3117195bd3e9d1970abf84))
|
|
11
11
|
|
|
12
|
+
## [2.1.21](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.20...@jscad/obj-serializer@2.1.21) (2025-09-20)
|
|
12
13
|
|
|
14
|
+
**Note:** Version bump only for package @jscad/obj-serializer
|
|
13
15
|
|
|
14
16
|
## [2.1.20](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.19...@jscad/obj-serializer@2.1.20) (2024-12-29)
|
|
15
17
|
|
|
16
18
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
20
|
## [2.1.19](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.18...@jscad/obj-serializer@2.1.19) (2024-11-10)
|
|
23
21
|
|
|
24
22
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
24
|
## [2.1.18](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.17...@jscad/obj-serializer@2.1.18) (2024-10-06)
|
|
31
25
|
|
|
32
26
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
33
27
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
28
|
## [2.1.17](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.16...@jscad/obj-serializer@2.1.17) (2024-06-02)
|
|
39
29
|
|
|
40
30
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
41
31
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
32
|
## [2.1.16](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.15...@jscad/obj-serializer@2.1.16) (2024-02-18)
|
|
47
33
|
|
|
48
34
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
49
35
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
36
|
## [2.1.15](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.14...@jscad/obj-serializer@2.1.15) (2023-06-27)
|
|
55
37
|
|
|
56
38
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
57
39
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
40
|
## [2.1.14](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.13...@jscad/obj-serializer@2.1.14) (2023-04-30)
|
|
63
41
|
|
|
64
42
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
65
43
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
44
|
## [2.1.13](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.12...@jscad/obj-serializer@2.1.13) (2022-11-26)
|
|
71
45
|
|
|
72
46
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
73
47
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
48
|
## [2.1.12](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.11...@jscad/obj-serializer@2.1.12) (2022-08-21)
|
|
79
49
|
|
|
80
50
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
81
51
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
52
|
## [2.1.11](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.10...@jscad/obj-serializer@2.1.11) (2022-07-17)
|
|
87
53
|
|
|
88
54
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
89
55
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
56
|
## [2.1.10](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.9...@jscad/obj-serializer@2.1.10) (2022-06-12)
|
|
95
57
|
|
|
96
58
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
97
59
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
60
|
## [2.1.9](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.8...@jscad/obj-serializer@2.1.9) (2022-05-15)
|
|
103
61
|
|
|
104
62
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
105
63
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
64
|
## [2.1.8](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.7...@jscad/obj-serializer@2.1.8) (2022-04-24)
|
|
111
65
|
|
|
112
66
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
113
67
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
68
|
## [2.1.7](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.6...@jscad/obj-serializer@2.1.7) (2022-04-03)
|
|
119
69
|
|
|
120
70
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
121
71
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
72
|
## [2.1.6](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.5...@jscad/obj-serializer@2.1.6) (2022-04-03)
|
|
127
73
|
|
|
128
74
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
129
75
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
76
|
## [2.1.5](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.4...@jscad/obj-serializer@2.1.5) (2022-03-13)
|
|
135
77
|
|
|
136
78
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
137
79
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
80
|
## [2.1.4](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.3...@jscad/obj-serializer@2.1.4) (2022-03-06)
|
|
143
81
|
|
|
144
82
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
145
83
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
84
|
## [2.1.3](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.2...@jscad/obj-serializer@2.1.3) (2022-02-19)
|
|
151
85
|
|
|
152
86
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
153
87
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
88
|
## [2.1.2](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.1...@jscad/obj-serializer@2.1.2) (2021-12-26)
|
|
159
89
|
|
|
160
90
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
161
91
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
92
|
## [2.1.1](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/obj-serializer@2.1.0...@jscad/obj-serializer@2.1.1) (2021-12-11)
|
|
167
93
|
|
|
168
94
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
169
95
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
96
|
# 2.1.0 (2021-11-07)
|
|
175
97
|
|
|
176
|
-
|
|
177
98
|
### Bug Fixes
|
|
178
99
|
|
|
179
100
|
* **obj-serializer:** added default material when serializing objects without colors ([#947](https://github.com/jscad/OpenJSCAD.org/issues/947)) ([843865b](https://github.com/jscad/OpenJSCAD.org/commit/843865b94f4d348ea67523b6d442f9c562bef021))
|
|
180
101
|
|
|
181
|
-
|
|
182
102
|
### Features
|
|
183
103
|
|
|
184
104
|
* **io:** new serializer for OBJ ([#942](https://github.com/jscad/OpenJSCAD.org/issues/942)) ([baaae18](https://github.com/jscad/OpenJSCAD.org/commit/baaae18ad55252ec71b074bd85dea7d137a22eb8))
|
|
185
105
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
106
|
# 2.0.0 (2021-10-25)
|
|
191
107
|
|
|
192
108
|
### Features
|
|
193
109
|
|
|
194
110
|
* **obj-serializer:** create OBJ serializer (#515)
|
|
195
111
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
112
|
**Note:** Version bump only for package @jscad/obj-serializer
|
package/index.js
CHANGED
|
@@ -69,8 +69,8 @@ const serialize = (options, ...objects) => {
|
|
|
69
69
|
// construct the contents of the OBJ file
|
|
70
70
|
let body = '# Wavefront OBJ file generated by JSCAD\n'
|
|
71
71
|
|
|
72
|
-
// find unique vertices
|
|
73
|
-
const
|
|
72
|
+
// find unique vertices - use Map for O(1) lookup instead of O(n) indexOf
|
|
73
|
+
const vertexMap = new Map() // vertex string -> index (1-based)
|
|
74
74
|
|
|
75
75
|
// convert objects
|
|
76
76
|
// TODO: group objects together
|
|
@@ -86,9 +86,10 @@ const serialize = (options, ...objects) => {
|
|
|
86
86
|
polygons.forEach((polygon) => {
|
|
87
87
|
polygon.vertices.forEach((vertex) => {
|
|
88
88
|
const vertexString = convertVertex(vertex)
|
|
89
|
-
if (
|
|
89
|
+
if (!vertexMap.has(vertexString)) {
|
|
90
90
|
// add unique vertices
|
|
91
|
-
|
|
91
|
+
const index = vertexMap.size + 1 // OBJ uses 1-based indexing
|
|
92
|
+
vertexMap.set(vertexString, index)
|
|
92
93
|
body += `${vertexString}\n`
|
|
93
94
|
}
|
|
94
95
|
})
|
|
@@ -99,7 +100,7 @@ const serialize = (options, ...objects) => {
|
|
|
99
100
|
polygons.forEach((polygon) => {
|
|
100
101
|
// convert vertices to indices
|
|
101
102
|
const indices = polygon.vertices
|
|
102
|
-
.map((v) =>
|
|
103
|
+
.map((v) => vertexMap.get(convertVertex(v)))
|
|
103
104
|
// set face color
|
|
104
105
|
const color = getColorName(polygon) || objectColor || 'default'
|
|
105
106
|
if (color !== previousColor) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jscad/obj-serializer",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.22",
|
|
4
4
|
"description": "OBJ Serializer for JSCAD",
|
|
5
5
|
"homepage": "https://openjscad.xyz/",
|
|
6
6
|
"repository": "https://github.com/jscad/OpenJSCAD.org",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@jscad/array-utils": "2.1.4",
|
|
31
|
-
"@jscad/modeling": "2.12.
|
|
31
|
+
"@jscad/modeling": "2.12.7"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"ava": "3.15.0",
|
|
35
35
|
"nyc": "15.1.0"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "138ee568542545f27629166bd93fff653cc3c26d"
|
|
38
38
|
}
|