@jscad/obj-serializer 2.1.21 → 2.1.23
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 +7 -91
- package/index.js +6 -5
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,198 +3,114 @@
|
|
|
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.
|
|
6
|
+
## [2.1.23](https://github.com/jscad/OpenJSCAD/compare/@jscad/obj-serializer@2.1.22...@jscad/obj-serializer@2.1.23) (2026-02-22)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
9
9
|
|
|
10
|
+
## [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)
|
|
10
11
|
|
|
12
|
+
### Performance Improvements
|
|
11
13
|
|
|
14
|
+
* **obj-serializer:** improved performance by using Map for unique vertices ([93d5df5](https://github.com/jscad/OpenJSCAD.org/commit/93d5df5d8515797f4a3117195bd3e9d1970abf84))
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
## [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)
|
|
16
|
+
## [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)
|
|
15
17
|
|
|
16
18
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
17
19
|
|
|
20
|
+
## [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)
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
**Note:** Version bump only for package @jscad/obj-serializer
|
|
21
23
|
|
|
22
24
|
## [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
25
|
|
|
24
26
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
28
|
## [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
29
|
|
|
32
30
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
32
|
## [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
33
|
|
|
40
34
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
41
35
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
36
|
## [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
37
|
|
|
48
38
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
40
|
## [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
41
|
|
|
56
42
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
57
43
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
44
|
## [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
45
|
|
|
64
46
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
65
47
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
48
|
## [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
49
|
|
|
72
50
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
73
51
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
52
|
## [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
53
|
|
|
80
54
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
81
55
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
56
|
## [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
57
|
|
|
88
58
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
89
59
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
60
|
## [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
61
|
|
|
96
62
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
97
63
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
64
|
## [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
65
|
|
|
104
66
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
105
67
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
68
|
## [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
69
|
|
|
112
70
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
113
71
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
72
|
## [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
73
|
|
|
120
74
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
121
75
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
76
|
## [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
77
|
|
|
128
78
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
129
79
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
80
|
## [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
81
|
|
|
136
82
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
137
83
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
84
|
## [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
85
|
|
|
144
86
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
145
87
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
88
|
## [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
89
|
|
|
152
90
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
153
91
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
92
|
## [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
93
|
|
|
160
94
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
161
95
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
96
|
## [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
97
|
|
|
168
98
|
**Note:** Version bump only for package @jscad/obj-serializer
|
|
169
99
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
100
|
# 2.1.0 (2021-11-07)
|
|
175
101
|
|
|
176
|
-
|
|
177
102
|
### Bug Fixes
|
|
178
103
|
|
|
179
104
|
* **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
105
|
|
|
181
|
-
|
|
182
106
|
### Features
|
|
183
107
|
|
|
184
108
|
* **io:** new serializer for OBJ ([#942](https://github.com/jscad/OpenJSCAD.org/issues/942)) ([baaae18](https://github.com/jscad/OpenJSCAD.org/commit/baaae18ad55252ec71b074bd85dea7d137a22eb8))
|
|
185
109
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
110
|
# 2.0.0 (2021-10-25)
|
|
191
111
|
|
|
192
112
|
### Features
|
|
193
113
|
|
|
194
114
|
* **obj-serializer:** create OBJ serializer (#515)
|
|
195
115
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
116
|
**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.23",
|
|
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.
|
|
31
|
+
"@jscad/modeling": "2.13.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"ava": "3.15.0",
|
|
35
35
|
"nyc": "15.1.0"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "602bb2a3a2c2c7c21315e2801804dd1ec0cbd3f8"
|
|
38
38
|
}
|