@jscad/regl-renderer 2.1.2 → 2.4.0
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 +41 -0
- package/demo-cli.js +4 -3
- package/demo-web.js +5 -4
- package/demo.html +90 -7
- package/dist/jscad-regl-renderer.min.js +17 -11
- package/package.json +6 -4
- package/src/geometry-utils-V2/entitiesFromSolids.js +1 -1
- package/src/geometry-utils-V2/entitiesFromSolids.test.js +4 -4
- package/src/geometry-utils-V2/path2ToGeometries.js +1 -1
- package/src/index.js +2 -1
- package/src/rendering/commands/{drawAxis.js → drawAxis/index.js} +0 -0
- package/src/rendering/commands/drawLines/colorOnlyShaders.js +9 -0
- package/src/rendering/commands/drawLines/index.js +44 -0
- package/src/rendering/commands/drawLines/meshShaders.js +54 -0
- package/src/rendering/commands/drawMesh/index.js +19 -28
- package/src/rendering/commands/drawMesh/vColorShaders.js +2 -2
- package/types/bound-utils/boundingBox.d.ts +2 -0
- package/types/bound-utils/boundingSphere.d.ts +2 -0
- package/types/bound-utils/computeBounds.d.ts +10 -0
- package/types/cameras/camera.d.ts +4 -0
- package/types/cameras/index.d.ts +3 -0
- package/types/cameras/orthographicCamera.d.ts +18 -0
- package/types/cameras/perspectiveCamera.d.ts +19 -0
- package/types/controls/orbitControls.d.ts +125 -0
- package/types/geometry-utils-V2/entitiesFromSolids.d.ts +13 -0
- package/types/geometry-utils-V2/geom2ToGeometries.d.ts +4 -0
- package/types/geometry-utils-V2/geom3ToGeometries.d.ts +4 -0
- package/types/geometry-utils-V2/path2ToGeometries.d.ts +4 -0
- package/types/index.d.ts +16 -0
- package/types/rendering/commands/drawAxis/index.d.ts +4 -0
- package/types/rendering/commands/drawExps/drawConnector/arcGeo.d.ts +6 -0
- package/types/rendering/commands/drawExps/drawConnector/index.d.ts +2 -0
- package/types/rendering/commands/drawExps/drawMesh.d.ts +2 -0
- package/types/rendering/commands/drawExps/drawMeshNoNormals.d.ts +2 -0
- package/types/rendering/commands/drawExps/drawNormals.d.ts +2 -0
- package/types/rendering/commands/drawExps/drawNormals2.d.ts +2 -0
- package/types/rendering/commands/drawGrid/index.d.ts +4 -0
- package/types/rendering/commands/drawGrid/multi.d.ts +2 -0
- package/types/rendering/commands/drawLines/index.d.ts +4 -0
- package/types/rendering/commands/drawMesh/index.d.ts +4 -0
- package/types/rendering/render.d.ts +4 -0
- package/types/rendering/renderContext.d.ts +7 -0
- package/types/rendering/renderDefaults.d.ts +9 -0
- package/types/utils.d.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,47 @@
|
|
|
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.4.0](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/regl-renderer@2.3.0...@jscad/regl-renderer@2.4.0) (2021-09-27)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **regl-renderer:** enhanced rendering to use the matrix as provided with the geometry ([#871](https://github.com/jscad/OpenJSCAD.org/issues/871)) ([40802af](https://github.com/jscad/OpenJSCAD.org/commit/40802afeb9a2a45cf3eb4f1b9dc774b8670d8259))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [2.3.0](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/regl-renderer@2.2.0...@jscad/regl-renderer@2.3.0) (2021-09-09)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **regl-renderer:** typescript definitions and generator. ([#801](https://github.com/jscad/OpenJSCAD.org/issues/801)) ([1616876](https://github.com/jscad/OpenJSCAD.org/commit/16168761c53bbb6ffb604aa69c9c80dcc13eaad3))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# [2.2.0](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/regl-renderer@2.1.3...@jscad/regl-renderer@2.2.0) (2021-06-20)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* **regl-renderer:** added new command drawLines, and adjusted demos ([#863](https://github.com/jscad/OpenJSCAD.org/issues/863)) ([02b5247](https://github.com/jscad/OpenJSCAD.org/commit/02b524775165f743b1f0bcecce92a0f7784bb89b))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## [2.1.3](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/regl-renderer@2.1.2...@jscad/regl-renderer@2.1.3) (2021-06-11)
|
|
40
|
+
|
|
41
|
+
**Note:** Version bump only for package @jscad/regl-renderer
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
6
47
|
## [2.1.2](https://github.com/jscad/OpenJSCAD.org/compare/@jscad/regl-renderer@2.1.1...@jscad/regl-renderer@2.1.2) (2021-06-01)
|
|
7
48
|
|
|
8
49
|
**Note:** Version bump only for package @jscad/regl-renderer
|
package/demo-cli.js
CHANGED
|
@@ -50,9 +50,10 @@ const options = {
|
|
|
50
50
|
camera,
|
|
51
51
|
drawCommands: {
|
|
52
52
|
// draw commands bootstrap themselves the first time they are run
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
drawAxis: drawCommands.drawAxis,
|
|
54
|
+
drawGrid: drawCommands.drawGrid,
|
|
55
|
+
drawLines: drawCommands.drawLines,
|
|
56
|
+
drawMesh: drawCommands.drawMesh
|
|
56
57
|
},
|
|
57
58
|
rendering: {
|
|
58
59
|
background: [1, 1, 1, 1],
|
package/demo-web.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const { prepareRender, drawCommands, cameras, entitiesFromSolids } = require('./src')
|
|
1
|
+
const { prepareRender, drawCommands, cameras, entitiesFromSolids } = require('./src')
|
|
2
2
|
|
|
3
3
|
// setup demo solids data
|
|
4
4
|
const demoSolids = (parameters) => {
|
|
@@ -41,9 +41,10 @@ const options = {
|
|
|
41
41
|
camera,
|
|
42
42
|
drawCommands: {
|
|
43
43
|
// draw commands bootstrap themselves the first time they are run
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
drawAxis: drawCommands.drawAxis,
|
|
45
|
+
drawGrid: drawCommands.drawGrid,
|
|
46
|
+
drawLines: drawCommands.drawLines,
|
|
47
|
+
drawMesh: drawCommands.drawMesh
|
|
47
48
|
},
|
|
48
49
|
// data
|
|
49
50
|
entities: [
|
package/demo.html
CHANGED
|
@@ -56,8 +56,6 @@ const { prepareRender, drawCommands, cameras, controls, entitiesFromSolids } = j
|
|
|
56
56
|
const perspectiveCamera = cameras.perspective
|
|
57
57
|
const orbitControls = controls.orbit
|
|
58
58
|
|
|
59
|
-
const renderRate = 10 // number of renders per second
|
|
60
|
-
|
|
61
59
|
const containerElement = document.getElementById("jscad")
|
|
62
60
|
|
|
63
61
|
const width = containerElement.clientWidth
|
|
@@ -108,8 +106,9 @@ const entities = entitiesFromSolids({}, demo({ scale: 1 }))
|
|
|
108
106
|
const renderOptions = {
|
|
109
107
|
camera: state.camera,
|
|
110
108
|
drawCommands: {
|
|
111
|
-
drawGrid: drawCommands.drawGrid,
|
|
112
109
|
drawAxis: drawCommands.drawAxis,
|
|
110
|
+
drawGrid: drawCommands.drawGrid,
|
|
111
|
+
drawLines: drawCommands.drawLines,
|
|
113
112
|
drawMesh: drawCommands.drawMesh
|
|
114
113
|
},
|
|
115
114
|
// define the visual content
|
|
@@ -121,14 +120,42 @@ const renderOptions = {
|
|
|
121
120
|
}
|
|
122
121
|
|
|
123
122
|
// the heart of rendering, as themes, controls, etc change
|
|
124
|
-
|
|
123
|
+
let updateView = true
|
|
124
|
+
|
|
125
|
+
const doRotatePanZoom = () => {
|
|
126
|
+
|
|
127
|
+
if (rotateDelta[0] || rotateDelta[1]) {
|
|
128
|
+
const updated = orbitControls.rotate({ controls: state.controls, camera: state.camera, speed: rotateSpeed }, rotateDelta)
|
|
129
|
+
state.controls = { ...state.controls, ...updated.controls }
|
|
130
|
+
updateView = true
|
|
131
|
+
rotateDelta = [0, 0]
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (panDelta[0] || panDelta[1]) {
|
|
135
|
+
const updated = orbitControls.pan({ controls:state.controls, camera:state.camera, speed: panSpeed }, panDelta)
|
|
136
|
+
state.controls = { ...state.controls, ...updated.controls }
|
|
137
|
+
panDelta = [0, 0]
|
|
138
|
+
state.camera.position = updated.camera.position
|
|
139
|
+
state.camera.target = updated.camera.target
|
|
140
|
+
updateView = true
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (zoomDelta) {
|
|
144
|
+
const updated = orbitControls.zoom({ controls:state.controls, camera:state.camera, speed: zoomSpeed }, zoomDelta)
|
|
145
|
+
state.controls = { ...state.controls, ...updated.controls }
|
|
146
|
+
zoomDelta = 0
|
|
147
|
+
updateView = true
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
125
151
|
const updateAndRender = (timestamp) => {
|
|
126
|
-
|
|
127
|
-
if (elaspe > (1000 / renderRate)) {
|
|
128
|
-
prevTimestamp = timestamp
|
|
152
|
+
doRotatePanZoom()
|
|
129
153
|
|
|
154
|
+
if (updateView) {
|
|
130
155
|
const updates = orbitControls.update({ controls: state.controls, camera: state.camera })
|
|
131
156
|
state.controls = { ...state.controls, ...updates.controls }
|
|
157
|
+
updateView = state.controls.changed // for elasticity in rotate / zoom
|
|
158
|
+
|
|
132
159
|
state.camera.position = updates.camera.position
|
|
133
160
|
perspectiveCamera.update(state.camera)
|
|
134
161
|
|
|
@@ -137,6 +164,62 @@ const updateAndRender = (timestamp) => {
|
|
|
137
164
|
window.requestAnimationFrame(updateAndRender)
|
|
138
165
|
}
|
|
139
166
|
window.requestAnimationFrame(updateAndRender)
|
|
167
|
+
|
|
168
|
+
// convert HTML events (mouse movement) to viewer changes
|
|
169
|
+
let lastX = 0
|
|
170
|
+
let lastY = 0
|
|
171
|
+
|
|
172
|
+
const rotateSpeed = 0.002
|
|
173
|
+
const panSpeed = 1
|
|
174
|
+
const zoomSpeed = 0.08
|
|
175
|
+
let rotateDelta = [0, 0]
|
|
176
|
+
let panDelta = [0, 0]
|
|
177
|
+
let zoomDelta = 0
|
|
178
|
+
let pointerDown = false
|
|
179
|
+
|
|
180
|
+
const moveHandler = (ev) => {
|
|
181
|
+
if(!pointerDown) return
|
|
182
|
+
const dx = lastX - ev.pageX
|
|
183
|
+
const dy = ev.pageY - lastY
|
|
184
|
+
|
|
185
|
+
const shiftKey = (ev.shiftKey === true) || (ev.touches && ev.touches.length > 2)
|
|
186
|
+
if (shiftKey) {
|
|
187
|
+
panDelta[0] += dx
|
|
188
|
+
panDelta[1] += dy
|
|
189
|
+
} else {
|
|
190
|
+
rotateDelta[0] -= dx
|
|
191
|
+
rotateDelta[1] -= dy
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
lastX = ev.pageX
|
|
195
|
+
lastY = ev.pageY
|
|
196
|
+
|
|
197
|
+
ev.preventDefault()
|
|
198
|
+
}
|
|
199
|
+
const downHandler = (ev) => {
|
|
200
|
+
pointerDown = true
|
|
201
|
+
lastX = ev.pageX
|
|
202
|
+
lastY = ev.pageY
|
|
203
|
+
containerElement.setPointerCapture(ev.pointerId)
|
|
204
|
+
ev.preventDefault()
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
const upHandler = (ev) => {
|
|
208
|
+
pointerDown = false
|
|
209
|
+
containerElement.releasePointerCapture(ev.pointerId)
|
|
210
|
+
ev.preventDefault()
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const wheelHandler = (ev) => {
|
|
214
|
+
zoomDelta += ev.deltaY
|
|
215
|
+
ev.preventDefault()
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
containerElement.onpointermove = moveHandler
|
|
219
|
+
containerElement.onpointerdown = downHandler
|
|
220
|
+
containerElement.onpointerup = upHandler
|
|
221
|
+
containerElement.onwheel = wheelHandler
|
|
222
|
+
|
|
140
223
|
</script>
|
|
141
224
|
</body>
|
|
142
225
|
</html>
|