@jscad/x3d-deserializer 3.0.0-alpha.0 → 3.0.1-alpha.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 +14 -0
- package/LICENSE +1 -1
- package/dist/jscad-x3d-deserializer.es.js +5 -5
- package/dist/jscad-x3d-deserializer.min.js +5 -6
- package/package.json +5 -4
- package/rollup.config.js +1 -1
- package/src/index.js +2 -0
- package/src/objects.js +45 -38
- package/src/parse.js +17 -19
- package/tests/IndexedTriangleSets_CommaMF.x3d +82 -0
- package/tests/TriangleSets_CommaMF.x3d +54 -0
- package/tests/instantiate.test.js +28 -0
- package/tests/translate.test.js +24 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jscad/x3d-deserializer",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1-alpha.0",
|
|
4
4
|
"description": "X3D Deserializer for JSCAD",
|
|
5
5
|
"homepage": "https://openjscad.xyz/",
|
|
6
6
|
"repository": "https://github.com/jscad/OpenJSCAD.org/",
|
|
@@ -32,8 +32,9 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@jscad/array-utils": "3.0.
|
|
36
|
-
"@jscad/
|
|
35
|
+
"@jscad/array-utils": "3.0.1-alpha.0",
|
|
36
|
+
"@jscad/io-utils": "3.0.1-alpha.0",
|
|
37
|
+
"@jscad/modeling": "3.0.1-alpha.0",
|
|
37
38
|
"saxes": "^6.0.0"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
@@ -46,5 +47,5 @@
|
|
|
46
47
|
"rollup-plugin-banner": "^0.2.1",
|
|
47
48
|
"rollup-plugin-version-injector": "^1.3.3"
|
|
48
49
|
},
|
|
49
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "0660b5c1f1a5faf54d4cfae1cb85bb94182a8d32"
|
|
50
51
|
}
|
package/rollup.config.js
CHANGED
|
@@ -24,6 +24,6 @@ export default {
|
|
|
24
24
|
nodeResolve(),
|
|
25
25
|
banner('<%= pkg.description %>\n@module <%= pkg.name %>\n@version <%= pkg.version %>\n@license <%= pkg.license %>'),
|
|
26
26
|
versionInjector({ injectInComments: { fileRegexp: /\.(html)$/ }, logLevel: 'warn' }),
|
|
27
|
-
terser({ compress: { module: true }, mangle: false, format: { comments: 'some'} })
|
|
27
|
+
terser({ compress: { module: true }, mangle: false, format: { comments: 'some' } })
|
|
28
28
|
]
|
|
29
29
|
}
|
package/src/index.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* @example
|
|
13
13
|
* const { deserializer, extension } = require('@jscad/x3d-deserializer')
|
|
14
14
|
*/
|
|
15
|
+
import { ensureString } from '@jscad/io-utils'
|
|
15
16
|
|
|
16
17
|
import { translate } from './translate.js'
|
|
17
18
|
import { instantiate } from './instantiate.js'
|
|
@@ -41,6 +42,7 @@ const deserialize = (options, input) => {
|
|
|
41
42
|
}
|
|
42
43
|
options = Object.assign({}, defaults, options)
|
|
43
44
|
|
|
45
|
+
input = ensureString(input)
|
|
44
46
|
return options.output === 'script' ? translate(options, input) : instantiate(options, input)
|
|
45
47
|
}
|
|
46
48
|
|
package/src/objects.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { area } from '@jscad/modeling'
|
|
2
2
|
|
|
3
3
|
export const x3dTypes = {
|
|
4
4
|
X3D: 0,
|
|
@@ -89,31 +89,31 @@ export const x3dTransform = (element) => {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
if (element.center) {
|
|
92
|
-
const values = element.center
|
|
92
|
+
const values = parseNumbers(element.center)
|
|
93
93
|
if (values.length > 2) {
|
|
94
94
|
obj.center = values
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
if (element.rotation) {
|
|
98
|
-
const values = element.rotation
|
|
98
|
+
const values = parseNumbers(element.rotation)
|
|
99
99
|
if (values.length > 3) {
|
|
100
100
|
obj.rotation = values
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
if (element.scale) {
|
|
104
|
-
const values = element.scale
|
|
104
|
+
const values = parseNumbers(element.scale)
|
|
105
105
|
if (values.length > 2) {
|
|
106
106
|
obj.scale = values
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
if (element.scaleorientation) {
|
|
110
|
-
const values = element.scaleorientation
|
|
110
|
+
const values = parseNumbers(element.scaleorientation)
|
|
111
111
|
if (values.length > 3) {
|
|
112
112
|
obj.scaleOrientation = values
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
if (element.translation) {
|
|
116
|
-
const values = element.translation
|
|
116
|
+
const values = parseNumbers(element.translation)
|
|
117
117
|
if (values.length > 2) {
|
|
118
118
|
obj.translation = values
|
|
119
119
|
}
|
|
@@ -138,7 +138,7 @@ export const x3dBox = (element) => {
|
|
|
138
138
|
const obj = { definition: x3dTypes.BOX, size: [2, 2, 2] }
|
|
139
139
|
|
|
140
140
|
if (element.size) {
|
|
141
|
-
const values = element.size
|
|
141
|
+
const values = parseNumbers(element.size)
|
|
142
142
|
if (values.length > 2) {
|
|
143
143
|
obj.size = values
|
|
144
144
|
}
|
|
@@ -187,7 +187,7 @@ export const x3dSphere = (element) => {
|
|
|
187
187
|
obj.radius = parseFloat(element.radius)
|
|
188
188
|
}
|
|
189
189
|
if (element.subdivision) {
|
|
190
|
-
const values = element.subdivision
|
|
190
|
+
const values = parseNumbers(element.subdivision)
|
|
191
191
|
if (values.length > 1) {
|
|
192
192
|
obj.subdivision = Math.max(...values)
|
|
193
193
|
}
|
|
@@ -217,18 +217,18 @@ export const x3dExtrusion = (element) => {
|
|
|
217
217
|
obj.endCap = element.endCap.includes('TRUE') || element.endCap.includes('true')
|
|
218
218
|
}
|
|
219
219
|
if (element.crossSection) {
|
|
220
|
-
const values = element.crossSection
|
|
220
|
+
const values = parseNumbers(element.crossSection)
|
|
221
221
|
const numpoints = Math.trunc(values.length / 2)
|
|
222
222
|
const points = []
|
|
223
223
|
for (let i = 0; i < numpoints; i++) {
|
|
224
224
|
const vi = i * 2
|
|
225
225
|
points.push([values[vi], values[vi + 1]])
|
|
226
226
|
}
|
|
227
|
-
obj.ccw = (
|
|
227
|
+
obj.ccw = (area(points) < 0) // WHAT!!!! X3D IS SICK!!!
|
|
228
228
|
obj.crossSection = points
|
|
229
229
|
}
|
|
230
230
|
if (element.orientation) {
|
|
231
|
-
const values = element.orientation
|
|
231
|
+
const values = parseNumbers(element.orientation)
|
|
232
232
|
const numpoints = Math.trunc(values.length / 4)
|
|
233
233
|
const points = []
|
|
234
234
|
for (let i = 0; i < numpoints; i++) {
|
|
@@ -238,7 +238,7 @@ export const x3dExtrusion = (element) => {
|
|
|
238
238
|
obj.orientations = points
|
|
239
239
|
}
|
|
240
240
|
if (element.scale) {
|
|
241
|
-
const values = element.scale
|
|
241
|
+
const values = parseNumbers(element.scale)
|
|
242
242
|
const numpoints = Math.trunc(values.length / 2)
|
|
243
243
|
const points = []
|
|
244
244
|
for (let i = 0; i < numpoints; i++) {
|
|
@@ -251,7 +251,7 @@ export const x3dExtrusion = (element) => {
|
|
|
251
251
|
obj.scales = points
|
|
252
252
|
}
|
|
253
253
|
if (element.spine) {
|
|
254
|
-
const values = element.spine
|
|
254
|
+
const values = parseNumbers(element.spine)
|
|
255
255
|
const numpoints = Math.trunc(values.length / 3)
|
|
256
256
|
const points = []
|
|
257
257
|
for (let i = 0; i < numpoints; i++) {
|
|
@@ -337,7 +337,7 @@ export const x3dPolyline2D = (element) => {
|
|
|
337
337
|
const obj = { definition: x3dTypes.POLYLINE2D, lineSegments: [] }
|
|
338
338
|
|
|
339
339
|
if (element.lineSegments) {
|
|
340
|
-
const values = element.lineSegments
|
|
340
|
+
const values = parseNumbers(element.lineSegments)
|
|
341
341
|
for (let i = 0; i < values.length; i = i + 2) {
|
|
342
342
|
const point = [values[i], values[i + 1]]
|
|
343
343
|
obj.lineSegments.push(point)
|
|
@@ -350,7 +350,7 @@ export const x3dRectangle2D = (element) => {
|
|
|
350
350
|
const obj = { definition: x3dTypes.RECTANGLE2D, size: [2, 2] }
|
|
351
351
|
|
|
352
352
|
if (element.size) {
|
|
353
|
-
const values = element.size
|
|
353
|
+
const values = parseNumbers(element.size)
|
|
354
354
|
if (values.length > 1) {
|
|
355
355
|
obj.size = values
|
|
356
356
|
}
|
|
@@ -362,7 +362,7 @@ export const x3dTriangleSet2D = (element) => {
|
|
|
362
362
|
const obj = { definition: x3dTypes.TRIANGLESET2D, vertices: [] }
|
|
363
363
|
|
|
364
364
|
if (element.vertices) {
|
|
365
|
-
const values = element.vertices
|
|
365
|
+
const values = parseNumbers(element.vertices)
|
|
366
366
|
for (let i = 0; i < values.length; i = i + 2) {
|
|
367
367
|
const point = [values[i], values[i + 1]]
|
|
368
368
|
obj.vertices.push(point)
|
|
@@ -379,7 +379,7 @@ export const x3dLineSet = (element) => {
|
|
|
379
379
|
const obj = { definition: x3dTypes.LINESET, vertexCount: [], colorPerVertex: true }
|
|
380
380
|
|
|
381
381
|
if (element.vertexCount) {
|
|
382
|
-
obj.vertexCount = element.vertexCount
|
|
382
|
+
obj.vertexCount = parseNumbers(element.vertexCount)
|
|
383
383
|
}
|
|
384
384
|
// color attributes
|
|
385
385
|
if (element.colorPerVertex) {
|
|
@@ -393,9 +393,8 @@ export const x3dIndexedLineSet = (element) => {
|
|
|
393
393
|
const obj = { definition: x3dTypes.INDEXEDLINESET, indexes: [], colorPerVertex: true }
|
|
394
394
|
|
|
395
395
|
if (element.coordIndex) {
|
|
396
|
-
const indexes = element.coordIndex
|
|
397
|
-
obj.indexes = indexes.
|
|
398
|
-
obj.indexes = obj.indexes.filter((index) => index.length > 1)
|
|
396
|
+
const indexes = parseIndices(element.coordIndex)
|
|
397
|
+
obj.indexes = indexes.filter((index) => index.length > 1)
|
|
399
398
|
}
|
|
400
399
|
// color attributes
|
|
401
400
|
if (element.colorPerVertex) {
|
|
@@ -413,7 +412,7 @@ export const x3dColor = (element) => {
|
|
|
413
412
|
const obj = { definition: x3dTypes.COLOR, colors: [] }
|
|
414
413
|
|
|
415
414
|
if (element.color) {
|
|
416
|
-
const values = element.color
|
|
415
|
+
const values = parseNumbers(element.color)
|
|
417
416
|
const numvalues = values.length
|
|
418
417
|
const numcolors = Math.trunc(numvalues / 3)
|
|
419
418
|
for (let i = 0; i < numcolors; i++) {
|
|
@@ -428,7 +427,7 @@ export const x3dCoordinate = (element) => {
|
|
|
428
427
|
const obj = { definition: x3dTypes.COORDINATE, points: [] }
|
|
429
428
|
|
|
430
429
|
if (element.point) {
|
|
431
|
-
const values = element.point
|
|
430
|
+
const values = parseNumbers(element.point)
|
|
432
431
|
const numvalues = values.length
|
|
433
432
|
const numpoints = Math.trunc(numvalues / 3)
|
|
434
433
|
for (let i = 0; i < numpoints; i++) {
|
|
@@ -456,7 +455,7 @@ export const x3dTriangleFanSet = (element) => {
|
|
|
456
455
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
457
456
|
}
|
|
458
457
|
if (element.fanCount) {
|
|
459
|
-
obj.fanCount = element.fanCount
|
|
458
|
+
obj.fanCount = parseNumbers(element.fanCount)
|
|
460
459
|
}
|
|
461
460
|
obj.objects = []
|
|
462
461
|
return obj
|
|
@@ -469,7 +468,7 @@ export const x3dTriangleStripSet = (element) => {
|
|
|
469
468
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
470
469
|
}
|
|
471
470
|
if (element.stripCount) {
|
|
472
|
-
obj.stripCount = element.stripCount
|
|
471
|
+
obj.stripCount = parseNumbers(element.stripCount)
|
|
473
472
|
}
|
|
474
473
|
obj.objects = []
|
|
475
474
|
return obj
|
|
@@ -492,7 +491,7 @@ export const x3dIndexedTriangleSet = (element) => {
|
|
|
492
491
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
493
492
|
}
|
|
494
493
|
if (element.index) {
|
|
495
|
-
obj.index = element.index
|
|
494
|
+
obj.index = parseNumbers(element.index)
|
|
496
495
|
}
|
|
497
496
|
obj.objects = []
|
|
498
497
|
return obj
|
|
@@ -505,8 +504,8 @@ export const x3dIndexedTriangleFanSet = (element) => {
|
|
|
505
504
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
506
505
|
}
|
|
507
506
|
if (element.index) {
|
|
508
|
-
const indexes = element.index
|
|
509
|
-
obj.fans = indexes.
|
|
507
|
+
const indexes = parseIndices(element.index)
|
|
508
|
+
obj.fans = indexes.filter((index) => index.length > 2)
|
|
510
509
|
}
|
|
511
510
|
obj.objects = []
|
|
512
511
|
return obj
|
|
@@ -520,8 +519,8 @@ export const x3dIndexedTriangleStripSet = (element) => {
|
|
|
520
519
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
521
520
|
}
|
|
522
521
|
if (element.index) {
|
|
523
|
-
const indexes = element.index
|
|
524
|
-
obj.strips = indexes.
|
|
522
|
+
const indexes = parseIndices(element.index)
|
|
523
|
+
obj.strips = indexes.filter((index) => index.length > 2)
|
|
525
524
|
}
|
|
526
525
|
return obj
|
|
527
526
|
}
|
|
@@ -533,7 +532,7 @@ export const x3dIndexedQuadSet = (element) => {
|
|
|
533
532
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
534
533
|
}
|
|
535
534
|
if (element.index) {
|
|
536
|
-
obj.index = element.index
|
|
535
|
+
obj.index = parseNumbers(element.index)
|
|
537
536
|
}
|
|
538
537
|
obj.objects = []
|
|
539
538
|
return obj
|
|
@@ -549,8 +548,8 @@ export const x3dIndexedFaceSet = (element) => {
|
|
|
549
548
|
obj.convex = element.convex.includes('TRUE') || element.convex.includes('true')
|
|
550
549
|
}
|
|
551
550
|
if (element.coordIndex) {
|
|
552
|
-
const indexes = element.coordIndex
|
|
553
|
-
obj.faces = indexes.
|
|
551
|
+
const indexes = parseIndices(element.coordIndex)
|
|
552
|
+
obj.faces = indexes.filter((index) => index.length > 2)
|
|
554
553
|
}
|
|
555
554
|
// color attributes
|
|
556
555
|
if (element.colorPerVertex) {
|
|
@@ -559,11 +558,11 @@ export const x3dIndexedFaceSet = (element) => {
|
|
|
559
558
|
if (element.colorIndex) {
|
|
560
559
|
if (obj.colorPerVertex) {
|
|
561
560
|
// indexes are provided for each VERTEX
|
|
562
|
-
const indexes = element.colorIndex
|
|
563
|
-
obj.colorIndex = indexes.
|
|
561
|
+
const indexes = parseIndices(element.colorIndex)
|
|
562
|
+
obj.colorIndex = indexes.filter((index) => index.length > 2)
|
|
564
563
|
} else {
|
|
565
564
|
// indexes are provided for each FACE
|
|
566
|
-
obj.colorIndex = element.colorIndex
|
|
565
|
+
obj.colorIndex = parseNumbers(element.colorIndex)
|
|
567
566
|
}
|
|
568
567
|
} else {
|
|
569
568
|
// reuse the indexes for the FACES
|
|
@@ -589,7 +588,7 @@ export const x3dElevationGrid = (element) => {
|
|
|
589
588
|
obj.zSpacing = parseFloat(element.zSpacing)
|
|
590
589
|
}
|
|
591
590
|
if (element.height) {
|
|
592
|
-
obj.height = element.height
|
|
591
|
+
obj.height = parseNumbers(element.height)
|
|
593
592
|
}
|
|
594
593
|
if (element.ccw) {
|
|
595
594
|
obj.ccw = element.ccw.includes('TRUE') || element.ccw.includes('true')
|
|
@@ -632,14 +631,14 @@ export const x3dMaterial = (element) => {
|
|
|
632
631
|
alpha = 1.0 - element.transparency
|
|
633
632
|
}
|
|
634
633
|
if (element.diffuseColor) {
|
|
635
|
-
const values = element.diffuseColor
|
|
634
|
+
const values = parseNumbers(element.diffuseColor)
|
|
636
635
|
if (values.length > 2) {
|
|
637
636
|
if (values.length < 4) values.push(alpha)
|
|
638
637
|
obj.color = values
|
|
639
638
|
}
|
|
640
639
|
}
|
|
641
640
|
if (element.emissiveColor) {
|
|
642
|
-
const values = element.emissiveColor
|
|
641
|
+
const values = parseNumbers(element.emissiveColor)
|
|
643
642
|
if (values.length > 2) {
|
|
644
643
|
if (values.length < 4) values.push(alpha)
|
|
645
644
|
obj.color = values
|
|
@@ -656,3 +655,11 @@ export const x3dGroup = (element) => {
|
|
|
656
655
|
obj.objects = []
|
|
657
656
|
return obj
|
|
658
657
|
}
|
|
658
|
+
|
|
659
|
+
export const parseNumbers = (attribute) =>
|
|
660
|
+
attribute.trim().replace(/,/g, ' ').split(/ +/).map((v) => parseFloat(v))
|
|
661
|
+
|
|
662
|
+
export const parseIndices = (attribute) => {
|
|
663
|
+
const indexes = attribute.replace(/,/g, ' ').trim().split(/ -1/)
|
|
664
|
+
return indexes.map((index) => parseNumbers(index))
|
|
665
|
+
}
|
package/src/parse.js
CHANGED
|
@@ -45,21 +45,6 @@ import {
|
|
|
45
45
|
x3dMaterial
|
|
46
46
|
} from './objects.js'
|
|
47
47
|
|
|
48
|
-
let x3dLast = null // last object found
|
|
49
|
-
let x3dDefinition = x3dTypes.X3D // what kind of object being created
|
|
50
|
-
|
|
51
|
-
// high level elements / definitions
|
|
52
|
-
const x3dObjects = [] // list of objects
|
|
53
|
-
const x3dDefs = new Map() // list of named objects
|
|
54
|
-
|
|
55
|
-
const x3dMaterials = [] // list of materials
|
|
56
|
-
const x3dTextures = [] // list of textures
|
|
57
|
-
|
|
58
|
-
const x3dLength = { factor: 1.0, name: 'meters' }
|
|
59
|
-
const x3dAngle = { factor: 1.0, name: 'radians' }
|
|
60
|
-
|
|
61
|
-
let x3dObj = null // x3d in object form
|
|
62
|
-
|
|
63
48
|
const nodeToObjectMap = {
|
|
64
49
|
X3D: x3dX3D,
|
|
65
50
|
UNIT: x3dUnit,
|
|
@@ -107,10 +92,25 @@ const nodeToObjectMap = {
|
|
|
107
92
|
let objectId = 1
|
|
108
93
|
const getObjectId = () => ('0000' + objectId++).slice(-4)
|
|
109
94
|
|
|
110
|
-
const
|
|
95
|
+
export const parse = (src) => {
|
|
111
96
|
// create a parser for the XML
|
|
112
97
|
const parser = new saxes.SaxesParser()
|
|
113
98
|
|
|
99
|
+
// high level elements / definitions
|
|
100
|
+
let x3dLast = null // last object found
|
|
101
|
+
let x3dDefinition = x3dTypes.X3D // what kind of object being created
|
|
102
|
+
|
|
103
|
+
const x3dObjects = [] // list of objects
|
|
104
|
+
const x3dDefs = new Map() // list of named objects
|
|
105
|
+
|
|
106
|
+
const x3dMaterials = [] // list of materials
|
|
107
|
+
const x3dTextures = [] // list of textures
|
|
108
|
+
|
|
109
|
+
const x3dLength = { factor: 1.0, name: 'meters' }
|
|
110
|
+
const x3dAngle = { factor: 1.0, name: 'radians' }
|
|
111
|
+
|
|
112
|
+
let x3dObj = null // x3d in object form
|
|
113
|
+
|
|
114
114
|
parser.on('error', (e) => {
|
|
115
115
|
console.log(`error: line ${e.line}, column ${e.column}, bad character [${e.c}]`)
|
|
116
116
|
})
|
|
@@ -331,10 +331,8 @@ const createX3DParser = (src) => {
|
|
|
331
331
|
|
|
332
332
|
// start the parser
|
|
333
333
|
parser.write(src).close()
|
|
334
|
-
}
|
|
335
334
|
|
|
336
|
-
|
|
337
|
-
createX3DParser(src)
|
|
335
|
+
// return the results
|
|
338
336
|
// console.log(JSON.stringify(x3dObj))
|
|
339
337
|
return { x3dObj, x3dMaterials, x3dTextures }
|
|
340
338
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
|
|
3
|
+
<X3D profile='Interchange' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance'>
|
|
4
|
+
<head>
|
|
5
|
+
<component level='2' name='TriangleSets'/>
|
|
6
|
+
<unit category='length' conversionFactor='0.001' name='millimeters'/>
|
|
7
|
+
<meta content='TriangleSets.x3d' name='title'/>
|
|
8
|
+
</head>
|
|
9
|
+
<!-- ==================== -->
|
|
10
|
+
<!-- Examples from https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter13GeometryTrianglesQuadrilaterals/ -->
|
|
11
|
+
<!-- ==================== -->
|
|
12
|
+
<Scene>
|
|
13
|
+
<!-- Default Shapes -->
|
|
14
|
+
<Group>
|
|
15
|
+
|
|
16
|
+
<Shape>
|
|
17
|
+
<IndexedTriangleFanSet/>
|
|
18
|
+
</Shape>
|
|
19
|
+
|
|
20
|
+
<Shape>
|
|
21
|
+
<IndexedTriangleSet/>
|
|
22
|
+
</Shape>
|
|
23
|
+
|
|
24
|
+
<Shape>
|
|
25
|
+
<IndexedTriangleStripSet/>
|
|
26
|
+
</Shape>
|
|
27
|
+
|
|
28
|
+
<Shape>
|
|
29
|
+
<IndexedFaceSet/>
|
|
30
|
+
</Shape>
|
|
31
|
+
|
|
32
|
+
</Group>
|
|
33
|
+
<Group>
|
|
34
|
+
|
|
35
|
+
<Shape>
|
|
36
|
+
<IndexedTriangleFanSet ccw='true' colorPerVertex='true' index='18,19,20,21,22,23,24,25,26,-1,27,28,29,30,31,32,-1' normalPerVertex='true' solid='false'>
|
|
37
|
+
<Coordinate point='-4 1 3 -2 2 1.5 -3 4 0.5 -2 3 1.5 0 4 0.0 2 3 1.5 5 5 -2.5 4 3 1.5 6 4 2.0 -4 1 3 -2 2 1.0 -3 4 0.0 -2 3 1.0 0 4 0.0 2 3 1.0 5 5 -2.0 4 3 1.5 6 4 2.0 0 -2 4 1 -3 3.5 1.5 -1.5 3 0 -1 2 -.5 0 2.5 -1.5 1 3 -2 0 3.5 -3 -2 2 -3 -4 3 2 -4 -2 0 -3 -.5 1.3 -1.5 -1 4 -2 -1.5 4.2 -4.2 -1 3 -6 -.5'/>
|
|
38
|
+
<Color color='0 .8 0 0 1 1 1 0 0 1 .5 0 .8 0 1 1 1 0 .6 .3 .1 1 0 .5 0 1 .5 1 0 0 .8 0 1 1 1 0 0 1 1 1 .5 0 .6 .3 .1 1 0 .5 0 .8 0 0 1 .5 0 .8 0 0 1 1 1 0 0 1 .5 0 .8 0 1 1 1 0 .6 .3 .1 1 0 .5 0 1 .5 1 0 0 .8 0 1 1 1 0 0 1 1 1 .5 0 .6 .3 .1 1 0 .5 0 .8 0 0 1 .5'/>
|
|
39
|
+
</IndexedTriangleFanSet>
|
|
40
|
+
</Shape>
|
|
41
|
+
|
|
42
|
+
<Shape>
|
|
43
|
+
<IndexedTriangleSet ccw='true' colorPerVertex='true' index='0,1,2,3,4,5,6,7,8' normalPerVertex='true' solid='false'>
|
|
44
|
+
<Coordinate point='-4 1 3 -2 2 1.5 -3 4 0.5 -2 3 1.5 0 4 0 2 3 1.5 5 5 -2.5 4 3 1.5 6 4 2'/>
|
|
45
|
+
<Color color='0 0.8 0 0 1 1 1 0 0 1 0.5 0 0.8 0 1 1 1 0 0.6 0.3 0.1 1 0 0.5 0 1 0.5'/>
|
|
46
|
+
</IndexedTriangleSet>
|
|
47
|
+
</Shape>
|
|
48
|
+
|
|
49
|
+
<Shape>
|
|
50
|
+
<IndexedTriangleStripSet ccw='true' colorPerVertex='true' index='9,10,11,12,13,-1,14,15,16,17,-1' normalPerVertex='true' solid='false'>
|
|
51
|
+
<Coordinate point='-4 1 3 -2 2 1.5 -3 4 0.5 -2 3 1.5 0 4 0.0 2 3 1.5 5 5 -2.5 4 3 1.5 6 4 2.0 -4 1 3 -2 2 1.0 -3 4 0.0 -2 3 1.0 0 4 0.0 2 3 1.0 5 5 -2.0 4 3 1.5 6 4 2.0 0 -2 4 1 -3 3.5 1.5 -1.5 3 0 -1 2 -.5 0 2.5 -1.5 1 3 -2 0 3.5 -3 -2 2 -3 -4 3 2 -4 -2 0 -3 -.5 1.3 -1.5 -1 4 -2 -1.5 4.2 -4.2 -1 3 -6 -.5'/>
|
|
52
|
+
<Color color='0 .8 0 0 1 1 1 0 0 1 .5 0 .8 0 1 1 1 0 .6 .3 .1 1 0 .5 0 1 .5 1 0 0 .8 0 1 1 1 0 0 1 1 1 .5 0 .6 .3 .1 1 0 .5 0 .8 0 0 1 .5'/>
|
|
53
|
+
</IndexedTriangleStripSet>
|
|
54
|
+
</Shape>
|
|
55
|
+
|
|
56
|
+
<Shape>
|
|
57
|
+
<IndexedQuadSet ccw='true' colorPerVertex='true' index='0,1,2,3,4,5,6,7' normalPerVertex='true' solid='false'>
|
|
58
|
+
<Coordinate point='-6 -2 0 -1 -2 0 -1 2 0 -6 2 0 1 -2 0 6 -2 0 6 2 0 1 2 0'/>
|
|
59
|
+
<Color color='0.2 0.2 0.2 1 0.058824 0.227451 0.4 1 0.121569 0 0.007843 0.960784 0.6 0.235294 0 0.94902 1 0.380392 0.239216 1 0.886275 1 0.121569 0.964706'/>
|
|
60
|
+
</IndexedQuadSet>
|
|
61
|
+
</Shape>
|
|
62
|
+
|
|
63
|
+
<Shape>
|
|
64
|
+
<Appearance>
|
|
65
|
+
<Material ambientIntensity='0.0534211' diffuseColor='0.756863 0.729412 0.537255' emissiveColor='0.18 0.17 0.13' shininess='0.19' specularColor='0.38 0.38 0.27'/>
|
|
66
|
+
</Appearance>
|
|
67
|
+
<IndexedFaceSet colorIndex='0,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,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,2,1,3,224,225' colorPerVertex='false' convex='false' coordIndex='0,1,2,-1,12,13,14,-1,15,16,17,-1,18,19,20,-1,21,22,23,-1,24,25,26,-1,27,28,29,-1,30,31,32,-1,33,34,35,-1,36,37,38,-1,39,40,41,-1,42,43,44,-1,45,46,47,-1,48,49,50,-1,51,52,53,-1,54,55,56,-1,57,58,59,-1,60,61,62,-1,63,64,65,-1,66,67,68,-1,69,70,71,-1,72,73,74,-1,75,76,77,-1,78,79,80,-1,81,82,83,-1,84,85,86,-1,87,88,89,-1,90,91,92,-1,93,94,95,-1,96,97,98,-1,99,100,101,-1,102,103,104,-1,105,106,107,-1,108,109,110,-1,111,112,113,-1,114,115,116,-1,117,118,119,-1,120,121,122,-1,123,124,125,-1,126,127,128,-1,129,130,131,-1,132,133,134,-1,135,136,137,-1,138,139,140,-1,141,142,143,-1,144,145,146,-1,147,148,149,-1,150,151,152,-1,153,154,155,-1,156,157,158,-1,159,160,161,-1,162,163,164,-1,165,166,167,-1,168,169,170,-1,171,172,173,-1,174,175,176,-1,177,178,179,-1,180,181,182,-1,183,184,185,-1,186,187,188,-1,189,190,191,-1,192,193,194,-1,195,196,197,-1,198,199,200,-1,201,202,203,-1,204,205,206,-1,207,208,209,-1,210,211,212,-1,213,214,215,-1,216,217,218,-1,219,220,221,-1,222,223,224,-1,225,226,227,-1,228,229,230,-1,231,232,233,-1,234,235,236,-1,237,238,239,-1,240,241,242,-1,243,244,245,-1,246,247,248,-1,249,250,251,-1,252,253,254,-1,255,256,257,-1,258,259,260,-1,261,262,263,-1,264,265,266,-1,267,268,269,-1,270,271,272,-1,273,274,275,-1,276,277,278,-1,279,280,281,-1,282,283,284,-1,285,286,287,-1,288,289,290,-1,291,292,293,-1,294,295,296,-1,297,298,299,-1,300,301,302,-1,303,304,305,-1,306,307,308,-1,309,310,311,-1,312,313,314,-1,315,316,317,-1,318,319,320,-1,321,322,323,-1,324,325,326,-1,327,328,329,-1,330,331,332,-1,333,334,335,-1,336,337,338,-1,339,340,341,-1,342,343,344,-1,345,346,347,-1,348,349,350,-1,351,352,353,-1,354,355,356,-1,357,358,359,-1,360,361,362,-1,363,364,365,-1,366,367,368,-1,369,370,371,-1,372,373,374,-1,375,376,377,-1,378,379,380,-1,381,382,383,-1,384,385,386,-1,387,388,389,-1,390,391,392,-1,393,394,395,-1,396,397,398,-1,399,400,401,-1,402,403,404,-1,405,406,407,-1,408,409,410,-1,411,412,413,-1,414,415,416,-1,417,418,419,-1,420,421,422,-1,423,424,425,-1,426,427,428,-1,429,430,431,-1,432,433,434,-1,435,436,437,-1,438,439,440,-1,441,442,443,-1,444,445,446,-1,447,448,449,-1,450,451,452,-1,453,454,455,-1,456,457,458,-1,459,460,461,-1,462,463,464,-1,465,466,467,-1,468,469,470,-1,471,472,473,-1,474,475,476,-1,477,478,479,-1,480,481,482,-1,483,484,485,-1,486,487,488,-1,489,490,491,-1,492,493,494,-1,495,496,497,-1,498,499,500,-1,501,502,503,-1,504,505,506,-1,507,508,509,-1,510,511,512,-1,513,514,515,-1,516,517,518,-1,519,520,521,-1,522,523,524,-1,525,526,527,-1,528,529,530,-1,531,532,533,-1,534,535,536,-1,537,538,539,-1,540,541,542,-1,543,544,545,-1,546,547,548,-1,549,550,551,-1,552,553,554,-1,555,556,557,-1,558,559,560,-1,561,562,563,-1,564,565,566,-1,567,568,569,-1,570,571,572,-1,573,574,575,-1,576,577,578,-1,579,580,581,-1,582,583,584,-1,585,586,587,-1,588,589,590,-1,591,592,593,-1,594,595,596,-1,597,598,599,-1,600,601,602,-1,603,604,605,-1,606,607,608,-1,609,610,611,-1,612,613,614,-1,615,616,617,-1,618,619,620,-1,621,622,623,-1,624,625,626,-1,627,628,629,-1,630,631,632,-1,633,634,635,-1,636,637,638,-1,639,640,641,-1,642,643,644,-1,645,646,647,-1,648,649,650,-1,651,652,653,-1,654,655,656,-1,657,658,659,-1,660,661,662,-1,663,664,665,-1,666,667,668,-1,669,670,671,-1,6,7,8,-1,3,4,5,-1,9,10,11,-1,672,673,674,-1,675,676,677,-1' creaseAngle='3.14159' normalIndex='0,1,2,-1,10,10,10,-1,11,11,11,-1,12,12,12,-1,13,13,13,-1,14,14,14,-1,15,16,17,-1,18,19,20,-1,21,22,23,-1,24,25,26,-1,27,27,27,-1,28,28,28,-1,29,29,29,-1,30,31,32,-1,33,34,35,-1,36,37,38,-1,39,40,41,-1,42,43,44,-1,45,46,47,-1,48,49,50,-1,51,51,51,-1,52,53,54,-1,55,56,57,-1,58,59,60,-1,61,62,63,-1,64,65,66,-1,67,67,67,-1,68,69,70,-1,71,72,73,-1,74,74,74,-1,75,75,75,-1,76,76,76,-1,77,78,79,-1,80,80,80,-1,81,82,83,-1,84,84,84,-1,85,85,85,-1,86,86,86,-1,87,87,87,-1,88,88,88,-1,89,89,89,-1,90,91,92,-1,93,94,95,-1,96,96,96,-1,97,98,99,-1,100,101,102,-1,103,104,105,-1,106,107,108,-1,109,110,111,-1,112,113,114,-1,115,115,115,-1,116,117,118,-1,119,119,119,-1,120,121,122,-1,123,124,125,-1,126,127,128,-1,129,129,129,-1,130,131,132,-1,133,134,135,-1,136,136,136,-1,137,138,139,-1,140,141,142,-1,143,143,143,-1,144,145,146,-1,147,148,149,-1,150,151,152,-1,153,154,155,-1,156,156,156,-1,157,157,157,-1,158,159,160,-1,161,162,163,-1,164,164,164,-1,165,165,165,-1,166,167,168,-1,169,170,171,-1,172,173,174,-1,175,176,177,-1,178,178,178,-1,179,179,179,-1,180,181,182,-1,183,184,185,-1,186,187,188,-1,189,189,189,-1,190,190,190,-1,191,192,193,-1,194,195,196,-1,197,197,197,-1,198,198,198,-1,199,199,199,-1,200,201,202,-1,203,204,205,-1,206,206,206,-1,207,208,209,-1,210,210,210,-1,211,211,211,-1,212,212,212,-1,213,213,213,-1,214,215,216,-1,217,218,219,-1,220,220,220,-1,221,221,221,-1,222,222,222,-1,223,224,225,-1,226,227,228,-1,229,229,229,-1,230,231,232,-1,233,234,235,-1,236,237,238,-1,239,240,241,-1,242,243,244,-1,245,246,247,-1,248,248,248,-1,249,249,249,-1,250,251,252,-1,253,254,255,-1,256,257,258,-1,259,260,261,-1,262,263,264,-1,265,265,265,-1,266,266,266,-1,267,267,267,-1,268,269,270,-1,271,272,273,-1,274,275,276,-1,277,278,279,-1,280,281,282,-1,283,284,285,-1,286,287,288,-1,289,289,289,-1,290,291,292,-1,293,294,295,-1,296,297,298,-1,299,300,301,-1,302,303,304,-1,305,305,305,-1,306,307,308,-1,309,310,311,-1,312,312,312,-1,313,313,313,-1,314,314,314,-1,315,316,317,-1,318,318,318,-1,319,320,321,-1,322,322,322,-1,323,323,323,-1,324,324,324,-1,325,325,325,-1,326,326,326,-1,327,327,327,-1,328,329,330,-1,331,332,333,-1,334,334,334,-1,335,336,337,-1,338,339,340,-1,341,342,343,-1,344,345,346,-1,347,348,349,-1,350,351,352,-1,353,353,353,-1,354,355,356,-1,357,357,357,-1,358,359,360,-1,361,362,363,-1,364,365,366,-1,367,367,367,-1,368,369,370,-1,371,372,373,-1,374,374,374,-1,375,376,377,-1,378,379,380,-1,381,381,381,-1,382,383,384,-1,385,386,387,-1,388,389,390,-1,391,392,393,-1,394,394,394,-1,395,395,395,-1,396,397,398,-1,399,400,401,-1,402,402,402,-1,403,403,403,-1,404,405,406,-1,407,408,409,-1,410,411,412,-1,413,414,415,-1,416,416,416,-1,417,417,417,-1,418,419,420,-1,421,422,423,-1,424,425,426,-1,427,427,427,-1,428,428,428,-1,429,430,431,-1,432,433,434,-1,435,435,435,-1,436,436,436,-1,437,437,437,-1,438,439,440,-1,441,442,443,-1,444,444,444,-1,445,446,447,-1,448,448,448,-1,449,449,449,-1,450,450,450,-1,451,451,451,-1,452,453,454,-1,455,456,457,-1,458,458,458,-1,459,459,459,-1,460,460,460,-1,461,462,463,-1,464,465,466,-1,467,467,467,-1,468,469,470,-1,471,472,473,-1,474,475,476,-1,477,478,479,-1,480,481,482,-1,483,484,485,-1,486,486,486,-1,487,487,487,-1,4,5,6,-1,3,3,3,-1,7,8,9,-1,488,488,488,-1,489,490,491,-1' solid='false'>
|
|
68
|
+
<Coordinate point='-0.0902426 0.707736 -0.361894 -0.126242 0.7163 -0.510588 -0.0821966 0.717949 -0.490936 1.05985e-006 0.934617 0.0504887 -0.00664806 0.898872 -0.0277972 0 0.901021 0.122661 1.05985e-006 0.934617 0.0504887 0 0.901021 0.122661 -2.03005e-006 0.90317 0.277591 1.06986e-006 1.0793 3.47475e-007 1.05985e-006 0.934617 0.0504887 -2.03005e-006 0.90317 0.277591 -0.114758 0.901562 -0.463227 -0.118379 0.85895 -0.478181 -0.098076 0.874364 -0.394307 -0.118483 0.948969 -0.478612 -0.114758 0.901562 -0.463227 -0.098076 0.874364 -0.394307 -0.148198 0.693025 -0.60134 -0.153978 0.652374 -0.625216 -0.140082 0.684348 -0.567816 -0.126187 0.716322 -0.510419 -0.148198 0.693025 -0.60134 -0.140082 0.684348 -0.567816 -0.151929 0.723428 -0.61675 -0.148198 0.693025 -0.60134 -0.126187 0.716322 -0.510419 -0.123346 0.739931 -0.0712886 -0.147796 0.734624 -0.210758 -0.142964 0.693107 -0.139234 -0.147796 0.734624 -0.210758 -0.154642 0.690461 -0.206715 -0.142964 0.693107 -0.139234 -0.142964 0.693107 -0.139234 -0.154642 0.690461 -0.206715 -0.170992 0.648327 -0.242015 -0.118464 0.756954 0.588829 -0.134253 0.756954 0.279345 -0.302092 0.706351 0.270908 -0.171744 0.724864 -0.680752 -0.227054 0.740499 -0.761237 -0.221648 0.65237 -0.934256 -0.227054 0.740499 -0.761237 -0.171744 0.724864 -0.680752 -0.156404 0.717949 -0.47297 -0.227054 0.740499 -0.761237 -0.156404 0.717949 -0.47297 -0.193516 0.738534 -0.463984 -0.193516 0.738534 -0.463984 -0.156404 0.717949 -0.47297 -0.10699 0.717949 -0.106569 -0.156404 0.717949 -0.47297 -0.0902276 0.707736 -0.361897 -0.0580738 0.70326 -0.0822888 -0.0902276 0.707736 -0.361897 -0.00919576 0.699209 -0.0271805 -0.0580738 0.70326 -0.0822888 -0.156404 0.717949 -0.47297 -0.0580737 0.70326 -0.0822888 -0.10699 0.717949 -0.106569 -0.10699 0.717949 -0.106569 -0.0580738 0.70326 -0.0822888 -0.0766211 0.707736 0.27759 -0.113414 0.724864 0.27759 -0.10699 0.717949 -0.106569 -0.0766211 0.707736 0.27759 -0.0580738 0.70326 -0.0822888 -0.00919576 0.699209 -0.0271805 -0.0352099 0.699209 0.27759 -0.00919576 0.699209 -0.0271805 -0.0030355 0.697365 0.277591 -0.0352099 0.699209 0.27759 -0.0580738 0.70326 -0.0822888 -0.0352099 0.699209 0.27759 -0.0766211 0.707736 0.27759 -0.00303552 0.697365 0.277591 -0.00303664 0.699209 0.4528 -0.0352099 0.699209 0.27759 -0.131733 0.744141 0.27759 -0.113414 0.724864 0.27759 -0.123031 0.740499 0.495402 -0.123031 0.740499 0.495402 -0.113414 0.724864 0.27759 -0.091476 0.717949 0.518391 -0.113414 0.724864 0.27759 -0.0766211 0.707736 0.27759 -0.091476 0.717949 0.518391 -0.00303936 0.724864 0.878668 -0.047258 0.717949 0.759194 -0.00303808 0.707736 0.678309 -0.0766211 0.707736 0.27759 -0.0430349 0.70326 0.495403 -0.091476 0.717949 0.518391 -0.0352099 0.699209 0.27759 -0.0430349 0.70326 0.495403 -0.0766211 0.707736 0.27759 -0.0430349 0.70326 0.495403 -0.047258 0.717949 0.759194 -0.091476 0.717949 0.518391 -0.00303808 0.707736 0.678309 -0.047258 0.717949 0.759194 -0.0430349 0.70326 0.495403 -0.00303664 0.699209 0.4528 -0.00303808 0.707736 0.678309 -0.0430349 0.70326 0.495403 -0.0352099 0.699209 0.27759 -0.00303664 0.699209 0.4528 -0.0430349 0.70326 0.495403 -0.00303936 0.724864 0.878668 -0.0430376 0.740499 0.931031 -0.047258 0.717949 0.759194 -0.0352143 0.759118 0.978427 -0.076625 0.759118 0.878668 -0.0430376 0.740499 0.931031 -0.0914776 0.738534 0.759194 -0.113416 0.759118 0.678308 -0.123031 0.740499 0.495402 -0.0914776 0.738534 0.759194 -0.123031 0.740499 0.495402 -0.091476 0.717949 0.518391 -0.076625 0.759118 0.878668 -0.113416 0.759118 0.678308 -0.0914776 0.738534 0.759194 -0.0430376 0.740499 0.931031 -0.076625 0.759118 0.878668 -0.0914776 0.738534 0.759194 -0.0430376 0.740499 0.931031 -0.0914776 0.738534 0.759194 -0.047258 0.717949 0.759194 -0.047258 0.717949 0.759194 -0.0914776 0.738534 0.759194 -0.091476 0.717949 0.518391 -0.113416 0.759118 0.678308 -0.131734 0.759118 0.452799 -0.123031 0.740499 0.495402 -0.131734 0.759118 0.452799 -0.131733 0.744141 0.27759 -0.123031 0.740499 0.495402 -0.135694 0.759118 0.27759 -0.131733 0.744141 0.27759 -0.131734 0.759118 0.452799 -0.125212 0.740499 -0.0660358 -0.193516 0.738534 -0.463984 -0.159365 0.739516 -0.265011 -0.182866 0.759118 -0.339472 -0.193516 0.738534 -0.463984 -0.125212 0.740499 -0.0660358 -0.182866 0.759118 -0.339472 -0.125212 0.740499 -0.0660358 -0.135326 0.759118 -0.00108072 -0.125212 0.740499 -0.0660358 -0.10699 0.717949 -0.106569 -0.113414 0.724864 0.27759 -0.135326 0.759118 -0.00108072 -0.125212 0.740499 -0.0660358 -0.131733 0.744141 0.27759 -0.131733 0.744141 0.27759 -0.125212 0.740499 -0.0660358 -0.113414 0.724864 0.27759 -0.135694 0.759118 0.27759 -0.135326 0.759118 -0.00108072 -0.131733 0.744141 0.27759 -0.182866 0.759118 -0.339472 -0.241643 0.759118 -0.666992 -0.193516 0.738534 -0.463984 -0.241643 0.759118 -0.666992 -0.227054 0.740499 -0.761237 -0.193516 0.738534 -0.463984 -0.235296 0.759118 -0.842319 -0.227054 0.740499 -0.761237 -0.241643 0.759118 -0.666992 -0.235296 0.759118 -0.842319 -0.221648 0.65237 -0.934256 -0.227054 0.740499 -0.761237 -0.235296 0.759118 -0.842319 -0.211867 0.759118 -0.884567 -0.221648 0.65237 -0.934256 -0.00304013 0.759118 0.999996 -0.0352143 0.759118 0.978427 -0.00304 0.744141 0.978427 -0.00304 0.744141 0.978427 -0.0430376 0.740499 0.931031 -0.00303936 0.724864 0.878668 -0.00304 0.744141 0.978427 -0.0352143 0.759118 0.978427 -0.0430376 0.740499 0.931031 -0.131733 0.794038 0.27759 -0.135326 0.759118 -0.00108072 -0.135694 0.759118 0.27759 -0.125212 0.80253 -0.0660358 -0.135326 0.759118 -0.00108072 -0.131733 0.794038 0.27759 -0.125212 0.80253 -0.0660358 -0.182866 0.759118 -0.339472 -0.135326 0.759118 -0.00108072 -0.193516 0.807112 -0.463984 -0.182866 0.759118 -0.339472 -0.125212 0.80253 -0.0660358 -0.193516 0.807112 -0.463984 -0.241643 0.759118 -0.666992 -0.182866 0.759118 -0.339472 -0.193516 0.807112 -0.463984 -0.227054 0.80253 -0.761237 -0.241643 0.759118 -0.666992 -0.246206 1.14936 -1.059 -0.227054 0.80253 -0.761237 -0.171744 0.838984 -0.680752 -0.227054 0.80253 -0.761237 -0.235296 0.759118 -0.842323 -0.241643 0.759118 -0.666992 -0.246206 1.14936 -1.059 -0.235296 0.759118 -0.842323 -0.227054 0.80253 -0.761237 -0.246206 1.14936 -1.059 -0.211867 0.759118 -0.884567 -0.235296 0.759118 -0.842323 -0.113414 0.838984 0.27759 -0.125212 0.80253 -0.0660358 -0.131733 0.794038 0.27759 -0.10699 0.855105 -0.106569 -0.125212 0.80253 -0.0660358 -0.113414 0.838984 0.27759 -0.10699 0.855105 -0.106569 -0.193516 0.807112 -0.463984 -0.125212 0.80253 -0.0660358 -0.156404 0.855105 -0.47297 -0.193516 0.807112 -0.463984 -0.10699 0.855105 -0.106569 -0.156404 0.855105 -0.47297 -0.227054 0.80253 -0.761237 -0.193516 0.807112 -0.463984 -0.156404 0.855105 -0.47297 -0.171744 0.838984 -0.680752 -0.227054 0.80253 -0.761237 -0.076621 0.878917 0.27759 -0.10699 0.855105 -0.106569 -0.113414 0.838984 0.27759 -0.0580738 0.889352 -0.0822888 -0.10699 0.855105 -0.106569 -0.076621 0.878917 0.27759 -0.0580738 0.889352 -0.0822888 -0.156404 0.855105 -0.47297 -0.10699 0.855105 -0.106569 -0.0580738 0.889352 -0.0822888 -0.0902276 0.878917 -0.361897 -0.156404 0.855105 -0.47297 -0.00919576 0.898799 -0.0271805 -0.0902276 0.878917 -0.361897 -0.0580738 0.889352 -0.0822888 -0.0352099 0.898799 0.27759 -0.0580738 0.889352 -0.0822888 -0.076621 0.878917 0.27759 -0.00919576 0.898799 -0.0271805 -0.0580738 0.889352 -0.0822888 -0.0352099 0.898799 0.27759 -0.00919576 0.898799 -0.0271805 -0.0352099 0.898799 0.27759 -0.0030355 0.903097 0.277591 -0.00303999 0.794038 0.978427 -0.0352143 0.759118 0.978427 -0.00304013 0.759118 0.999996 -0.00303999 0.794038 0.978427 -0.0430376 0.80253 0.931031 -0.0352143 0.759118 0.978427 -0.0352143 0.759118 0.978427 -0.0430376 0.80253 0.931031 -0.076625 0.759118 0.878668 -0.0430376 0.80253 0.931031 -0.0914776 0.807112 0.759194 -0.076625 0.759118 0.878668 -0.076625 0.759118 0.878668 -0.0914776 0.807112 0.759194 -0.113416 0.759118 0.678308 -0.0914776 0.807112 0.759194 -0.123031 0.80253 0.495402 -0.113416 0.759118 0.678308 -0.123031 0.80253 0.495402 -0.131734 0.759118 0.452799 -0.113416 0.759118 0.678308 -0.123031 0.80253 0.495402 -0.131733 0.794038 0.27759 -0.131734 0.759118 0.452799 -0.131733 0.794038 0.27759 -0.135694 0.759118 0.27759 -0.131734 0.759118 0.452799 -0.00303999 0.794038 0.978427 -0.00303936 0.838984 0.878668 -0.0430376 0.80253 0.931031 -0.00303936 0.838984 0.878668 -0.047258 0.855105 0.759194 -0.0430376 0.80253 0.931031 -0.0430376 0.80253 0.931031 -0.047258 0.855105 0.759194 -0.0914776 0.807112 0.759194 -0.047258 0.855105 0.759194 -0.091476 0.855105 0.518391 -0.0914776 0.807112 0.759194 -0.091476 0.855105 0.518391 -0.123031 0.80253 0.495402 -0.0914776 0.807112 0.759194 -0.091476 0.855105 0.518391 -0.113414 0.838984 0.27759 -0.123031 0.80253 0.495402 -0.113414 0.838984 0.27759 -0.131733 0.794038 0.27759 -0.123031 0.80253 0.495402 -0.00303808 0.878917 0.678309 -0.047258 0.855105 0.759194 -0.00303936 0.838984 0.878668 -0.00303808 0.878917 0.678309 -0.0430349 0.889352 0.495403 -0.047258 0.855105 0.759194 -0.0430349 0.889352 0.495403 -0.091476 0.855105 0.518391 -0.047258 0.855105 0.759194 -0.0430349 0.889352 0.495403 -0.076621 0.878917 0.27759 -0.091476 0.855105 0.518391 -0.076621 0.878917 0.27759 -0.113414 0.838984 0.27759 -0.091476 0.855105 0.518391 -0.00303808 0.878917 0.678309 -0.00303664 0.898799 0.4528 -0.0430349 0.889352 0.495403 -0.00303664 0.898799 0.4528 -0.0352099 0.898799 0.27759 -0.0430349 0.889352 0.495403 -0.0352099 0.898799 0.27759 -0.076621 0.878917 0.27759 -0.0430349 0.889352 0.495403 -0.00303551 0.903097 0.277591 -0.0352099 0.898799 0.27759 -0.00303664 0.898799 0.4528 -0.126225 0.85895 -0.510592 -0.171744 0.838984 -0.680752 -0.156404 0.855105 -0.47297 -0.0902276 0.878917 -0.361897 -0.126225 0.85895 -0.510592 -0.156404 0.855105 -0.47297 -0.159365 0.739516 -0.265011 -0.193516 0.738534 -0.463984 -0.10699 0.717949 -0.106569 -0.125212 0.740499 -0.0660358 -0.159365 0.739516 -0.265011 -0.10699 0.717949 -0.106569 -0.171744 0.724864 -0.680752 -0.126225 0.7163 -0.510592 -0.156404 0.717949 -0.47297 -0.156404 0.717949 -0.47297 -0.126225 0.7163 -0.510592 -0.0902276 0.707736 -0.361897 0.0584968 0.693107 -0.188007 0.0300801 0.734624 -0.253822 0.0721283 0.739931 -0.118612 0.0584968 0.693107 -0.188007 0.0380172 0.690461 -0.253357 0.0300801 0.734624 -0.253822 0.036411 0.648327 -0.292226 0.0380172 0.690461 -0.253357 0.0584968 0.693107 -0.188007 0.296012 0.706351 0.270908 0.128173 0.756954 0.279345 0.112384 0.756954 0.588829 -0.221672 0.65237 -0.934251 -0.151089 0.740499 -0.776192 -0.171766 0.724864 -0.680748 -0.0821966 0.717949 -0.490936 -0.171766 0.724864 -0.680748 -0.151089 0.740499 -0.776192 -0.0450844 0.738534 -0.49992 -0.0821966 0.717949 -0.490936 -0.151089 0.740499 -0.776192 0.0414473 0.717949 -0.142505 -0.0821966 0.717949 -0.490936 -0.0450844 0.738534 -0.49992 0.00905313 0.70326 -0.0985401 -0.0902426 0.707736 -0.361894 -0.0821966 0.717949 -0.490936 0.00905313 0.70326 -0.0985401 -0.00920661 0.699209 -0.0271778 -0.0902426 0.707736 -0.361894 0.0414473 0.717949 -0.142505 0.00905313 0.70326 -0.0985401 -0.0821966 0.717949 -0.490936 0.0705411 0.707736 0.27759 0.00905313 0.70326 -0.0985401 0.0414473 0.717949 -0.142505 0.0705411 0.707736 0.27759 0.0414473 0.717949 -0.142505 0.107334 0.724864 0.27759 0.0291299 0.699209 0.27759 -0.00920661 0.699209 -0.0271778 0.00905313 0.70326 -0.0985401 0.0291299 0.699209 0.27759 -0.00304449 0.697365 0.277591 -0.00920661 0.699209 -0.0271778 0.0705411 0.707736 0.27759 0.0291299 0.699209 0.27759 0.00905313 0.70326 -0.0985401 0.0291299 0.699209 0.27759 -0.00304335 0.699209 0.4528 -0.00304447 0.697365 0.277591 0.116951 0.740499 0.495402 0.107334 0.724864 0.27759 0.125653 0.744141 0.27759 0.085396 0.717949 0.518391 0.107334 0.724864 0.27759 0.116951 0.740499 0.495402 0.085396 0.717949 0.518391 0.0705411 0.707736 0.27759 0.107334 0.724864 0.27759 -0.00304191 0.707736 0.678309 0.041178 0.717949 0.759194 -0.00304063 0.724864 0.878668 0.085396 0.717949 0.518391 0.0369549 0.70326 0.495403 0.0705411 0.707736 0.27759 0.0705411 0.707736 0.27759 0.0369549 0.70326 0.495403 0.0291299 0.699209 0.27759 0.085396 0.717949 0.518391 0.041178 0.717949 0.759194 0.0369549 0.70326 0.495403 0.0369549 0.70326 0.495403 0.041178 0.717949 0.759194 -0.00304191 0.707736 0.678309 0.0369549 0.70326 0.495403 -0.00304191 0.707736 0.678309 -0.00304335 0.699209 0.4528 0.0369549 0.70326 0.495403 -0.00304335 0.699209 0.4528 0.0291299 0.699209 0.27759 0.041178 0.717949 0.759194 0.0369577 0.740499 0.931031 -0.00304063 0.724864 0.878668 0.0369577 0.740499 0.931031 0.070545 0.759118 0.878668 0.0291344 0.759118 0.978427 0.116951 0.740499 0.495402 0.107336 0.759118 0.678308 0.0853976 0.738534 0.759194 0.085396 0.717949 0.518391 0.116951 0.740499 0.495402 0.0853976 0.738534 0.759194 0.0853976 0.738534 0.759194 0.107336 0.759118 0.678308 0.070545 0.759118 0.878668 0.0853976 0.738534 0.759194 0.070545 0.759118 0.878668 0.0369577 0.740499 0.931031 0.041178 0.717949 0.759194 0.0853976 0.738534 0.759194 0.0369577 0.740499 0.931031 0.085396 0.717949 0.518391 0.0853976 0.738534 0.759194 0.041178 0.717949 0.759194 0.116951 0.740499 0.495402 0.125654 0.759118 0.452799 0.107336 0.759118 0.678308 0.116951 0.740499 0.495402 0.125653 0.744141 0.27759 0.125654 0.759118 0.452799 0.125654 0.759118 0.452799 0.125653 0.744141 0.27759 0.129614 0.759118 0.27759 0.0155534 0.739516 -0.307358 -0.0450844 0.738534 -0.49992 0.0761915 0.740499 -0.114795 0.0761915 0.740499 -0.114795 -0.0450844 0.738534 -0.49992 0.00239428 0.759118 -0.384322 0.0988058 0.759118 -0.053328 0.0761915 0.740499 -0.114795 0.00239428 0.759118 -0.384322 0.107334 0.724864 0.27759 0.0414473 0.717949 -0.142505 0.0761915 0.740499 -0.114795 0.125653 0.744141 0.27759 0.0761915 0.740499 -0.114795 0.0988058 0.759118 -0.053328 0.107334 0.724864 0.27759 0.0761915 0.740499 -0.114795 0.125653 0.744141 0.27759 0.125653 0.744141 0.27759 0.0988058 0.759118 -0.053328 0.129614 0.759118 0.27759 -0.0450844 0.738534 -0.49992 -0.101867 0.759118 -0.694509 0.00239428 0.759118 -0.384322 -0.0450844 0.738534 -0.49992 -0.151089 0.740499 -0.776192 -0.101867 0.759118 -0.694509 -0.101867 0.759118 -0.694509 -0.151089 0.740499 -0.776192 -0.174195 0.759118 -0.854348 -0.151089 0.740499 -0.776192 -0.221672 0.65237 -0.934251 -0.174195 0.759118 -0.854348 -0.221672 0.65237 -0.934251 -0.21189 0.759118 -0.884562 -0.174195 0.759118 -0.854348 -0.00303999 0.744141 0.978427 0.0291344 0.759118 0.978427 -0.00303985 0.759118 0.999996 -0.00304063 0.724864 0.878668 0.0369577 0.740499 0.931031 -0.00303999 0.744141 0.978427 0.0369577 0.740499 0.931031 0.0291344 0.759118 0.978427 -0.00303999 0.744141 0.978427 0.129614 0.759118 0.27759 0.0988058 0.759118 -0.053328 0.125653 0.794038 0.27759 0.125653 0.794038 0.27759 0.0988058 0.759118 -0.053328 0.0761915 0.80253 -0.114795 0.0988058 0.759118 -0.053328 0.00239428 0.759118 -0.384322 0.0761915 0.80253 -0.114795 0.0761915 0.80253 -0.114795 0.00239428 0.759118 -0.384322 -0.0450844 0.807112 -0.49992 0.00239428 0.759118 -0.384322 -0.101867 0.759118 -0.694509 -0.0450844 0.807112 -0.49992 -0.101867 0.759118 -0.694509 -0.151089 0.80253 -0.776192 -0.0450844 0.807112 -0.49992 -0.171766 0.838984 -0.680748 -0.151089 0.80253 -0.776192 -0.246233 1.14936 -1.05901 -0.101867 0.759118 -0.694509 -0.174196 0.759118 -0.854351 -0.151089 0.80253 -0.776192 -0.151089 0.80253 -0.776192 -0.174196 0.759118 -0.854351 -0.246233 1.14936 -1.05901 -0.174196 0.759118 -0.854351 -0.21189 0.759118 -0.884562 -0.246233 1.14936 -1.05901 0.125653 0.794038 0.27759 0.0761915 0.80253 -0.114795 0.107334 0.838984 0.27759 0.107334 0.838984 0.27759 0.0761915 0.80253 -0.114795 0.0414473 0.855105 -0.142505 0.0761915 0.80253 -0.114795 -0.0450844 0.807112 -0.49992 0.0414473 0.855105 -0.142505 0.0414473 0.855105 -0.142505 -0.0450844 0.807112 -0.49992 -0.0821966 0.855105 -0.490936 -0.0450844 0.807112 -0.49992 -0.151089 0.80253 -0.776192 -0.0821966 0.855105 -0.490936 -0.151089 0.80253 -0.776192 -0.171766 0.838984 -0.680748 -0.0821966 0.855105 -0.490936 0.107334 0.838984 0.27759 0.0414473 0.855105 -0.142505 0.070541 0.878917 0.27759 0.070541 0.878917 0.27759 0.0414473 0.855105 -0.142505 0.00905313 0.889352 -0.0985401 0.0414473 0.855105 -0.142505 -0.0821966 0.855105 -0.490936 0.00905313 0.889352 -0.0985401 -0.0821966 0.855105 -0.490936 -0.0902426 0.878917 -0.361894 0.00905313 0.889352 -0.0985401 0.00905313 0.889352 -0.0985401 -0.0902426 0.878917 -0.361894 -0.00920661 0.898799 -0.0271778 0.070541 0.878917 0.27759 0.00905313 0.889352 -0.0985401 0.0291299 0.898799 0.27759 0.0291299 0.898799 0.27759 0.00905313 0.889352 -0.0985401 -0.00920661 0.898799 -0.0271778 -0.00304449 0.903097 0.277591 0.0291299 0.898799 0.27759 -0.00920661 0.898799 -0.0271778 -0.00303986 0.759118 0.999996 0.0291344 0.759118 0.978427 -0.00303999 0.794038 0.978427 0.0291344 0.759118 0.978427 0.0369577 0.80253 0.931031 -0.00303999 0.794038 0.978427 0.070545 0.759118 0.878668 0.0369577 0.80253 0.931031 0.0291344 0.759118 0.978427 0.070545 0.759118 0.878668 0.0853976 0.807112 0.759194 0.0369577 0.80253 0.931031 0.107336 0.759118 0.678308 0.0853976 0.807112 0.759194 0.070545 0.759118 0.878668 0.107336 0.759118 0.678308 0.116951 0.80253 0.495402 0.0853976 0.807112 0.759194 0.107336 0.759118 0.678308 0.125654 0.759118 0.452799 0.116951 0.80253 0.495402 0.125654 0.759118 0.452799 0.125653 0.794038 0.27759 0.116951 0.80253 0.495402 0.125654 0.759118 0.452799 0.129614 0.759118 0.27759 0.125653 0.794038 0.27759 0.0369577 0.80253 0.931031 -0.00304063 0.838984 0.878668 -0.00303999 0.794038 0.978427 0.0369577 0.80253 0.931031 0.041178 0.855105 0.759194 -0.00304063 0.838984 0.878668 0.0853976 0.807112 0.759194 0.041178 0.855105 0.759194 0.0369577 0.80253 0.931031 0.0853976 0.807112 0.759194 0.085396 0.855105 0.518391 0.041178 0.855105 0.759194 0.0853976 0.807112 0.759194 0.116951 0.80253 0.495402 0.085396 0.855105 0.518391 0.116951 0.80253 0.495402 0.107334 0.838984 0.27759 0.085396 0.855105 0.518391 0.116951 0.80253 0.495402 0.125653 0.794038 0.27759 0.107334 0.838984 0.27759 -0.00304063 0.838984 0.878668 0.041178 0.855105 0.759194 -0.00304191 0.878917 0.678309 0.041178 0.855105 0.759194 0.0369549 0.889352 0.495403 -0.00304191 0.878917 0.678309 0.041178 0.855105 0.759194 0.085396 0.855105 0.518391 0.0369549 0.889352 0.495403 0.085396 0.855105 0.518391 0.070541 0.878917 0.27759 0.0369549 0.889352 0.495403 0.085396 0.855105 0.518391 0.107334 0.838984 0.27759 0.070541 0.878917 0.27759 0.0369549 0.889352 0.495403 -0.00304335 0.898799 0.4528 -0.00304191 0.878917 0.678309 0.0369549 0.889352 0.495403 0.0291299 0.898799 0.27759 -0.00304335 0.898799 0.4528 0.0369549 0.889352 0.495403 0.070541 0.878917 0.27759 0.0291299 0.898799 0.27759 -0.00304335 0.898799 0.4528 0.0291299 0.898799 0.27759 -0.00304448 0.903097 0.277591 -0.0821966 0.855105 -0.490936 -0.171766 0.838984 -0.680748 -0.126242 0.85895 -0.510588 -0.0821966 0.855105 -0.490936 -0.126242 0.85895 -0.510588 -0.0902426 0.878917 -0.361894 0.0414473 0.717949 -0.142505 -0.0450844 0.738534 -0.49992 0.0155534 0.739516 -0.307358 0.0414473 0.717949 -0.142505 0.0155534 0.739516 -0.307358 0.0761915 0.740499 -0.114795 -0.0821966 0.717949 -0.490936 -0.126242 0.7163 -0.510588 -0.171766 0.724864 -0.680748 -0.00303241 0.934544 0.0504887 -0.0026253 0.898799 -0.0279467 -0.00303347 0.900948 0.122661 -0.00303241 0.934544 0.0504887 -0.00303347 0.900948 0.122661 -0.0030355 0.903097 0.277591'/>
|
|
69
|
+
<Color color='0.756863 0.729412 0.537255 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.936863 0.899412 0.667255 0.697647 0.487647 0.377059 0.697647 0.487647 0.377059'/>
|
|
70
|
+
</IndexedFaceSet>
|
|
71
|
+
</Shape>
|
|
72
|
+
|
|
73
|
+
<Shape>
|
|
74
|
+
<IndexedFaceSet coordIndex='0, 1, 2, 3' solid='false' texCoordIndex='0, 1, 2, 3'>
|
|
75
|
+
<TextureCoordinate point='0.0 0.0 1.0 0.0 1.0 1.0 0.0 1.0'/>
|
|
76
|
+
<Coordinate point='-1.5 0.0 0.0 1.5 0.0 0.0 1.5 3.0 0.0 -1.5 3.0 0.0'/>
|
|
77
|
+
</IndexedFaceSet>
|
|
78
|
+
</Shape>
|
|
79
|
+
|
|
80
|
+
</Group>
|
|
81
|
+
</Scene>
|
|
82
|
+
</X3D>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
|
|
3
|
+
<X3D profile='Interchange' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance'>
|
|
4
|
+
<head>
|
|
5
|
+
<component level='2' name='TriangleSets'/>
|
|
6
|
+
<unit category='length' conversionFactor='0.001' name='millimeters'/>
|
|
7
|
+
<meta content='TriangleSets.x3d' name='title'/>
|
|
8
|
+
</head>
|
|
9
|
+
<!-- ==================== -->
|
|
10
|
+
<Scene>
|
|
11
|
+
<!-- Default Shapes -->
|
|
12
|
+
<Group>
|
|
13
|
+
<Shape>
|
|
14
|
+
<TriangleFanSet/>
|
|
15
|
+
</Shape>
|
|
16
|
+
<Shape>
|
|
17
|
+
<TriangleSet/>
|
|
18
|
+
</Shape>
|
|
19
|
+
<Shape>
|
|
20
|
+
<TriangleStripSet/>
|
|
21
|
+
</Shape>
|
|
22
|
+
</Group>
|
|
23
|
+
<Group>
|
|
24
|
+
<Shape containerField='shape'>
|
|
25
|
+
<Appearance>
|
|
26
|
+
<Material emissiveColor='0.0 1.0 0.0'/>
|
|
27
|
+
</Appearance>
|
|
28
|
+
<TriangleSet ccw='true' colorPerVertex='true' normalPerVertex='true' solid='true'>
|
|
29
|
+
<Coordinate point='-10.0 0.0 10.0, 10.0 0.0 10.0, 10.0 0.0 -10.0, -10.0 0.0 10.0, 10.0 0.0 -10.0, -10.0 0.0 -10.0'/>
|
|
30
|
+
</TriangleSet>
|
|
31
|
+
</Shape>
|
|
32
|
+
<Shape>
|
|
33
|
+
<TriangleFanSet ccw='true' colorPerVertex='false' fanCount='6 6' normalPerVertex='true' solid='false'>
|
|
34
|
+
<Coordinate point='0 0 0, -.5 -2 .5, -1.5 -2 1, -2.5 -1.5 0.5, -2.5 -.5 0, -2.5 1 .5, 0 0 0, -2.5 1 .5, .5 2 0, 1.5 1.5 .5, 2.5 .5 0, -.5 -2 .5'/>
|
|
35
|
+
<Color color='0.5 0.1 0.5, 0.8 0.3 0.8'/>
|
|
36
|
+
</TriangleFanSet>
|
|
37
|
+
</Shape>
|
|
38
|
+
<Shape>
|
|
39
|
+
<TriangleStripSet ccw='true' colorPerVertex='true' normalPerVertex='true' solid='false' stripCount='13'>
|
|
40
|
+
<Coordinate point='-4.0 -1.0 -.5, -4.5 -2.0 -.5, -3.0 -.5 0, -2.5 -1.5 -.5, -2.0 -.5 -1, -1.5 -1.5 -.5, -.5 .5 -.5, 0 0 0, 1 .5 -.5, 1.5 -2.0 -1, 2.5 -2.0 -.5, 2.5 -2.5 -.5, 3.5 -2.0 -1.0,'/>
|
|
41
|
+
</TriangleStripSet>
|
|
42
|
+
<Appearance>
|
|
43
|
+
<Material diffuseColor='0.5 0.5 0.5'/>
|
|
44
|
+
</Appearance>
|
|
45
|
+
</Shape>
|
|
46
|
+
<Shape>
|
|
47
|
+
<QuadSet ccw='true' colorPerVertex='true' normalPerVertex='true' solid='false'>
|
|
48
|
+
<Coordinate point='-6 -2 0, -1 -2 0, -1 2 0, -6 2 0, 1 -2 0, 6 -2 0, 6 2 0, 1 2 0'/>
|
|
49
|
+
<Color color='0.2 0.2 0.2, 1 0.058824 0.227451, 0.4 1 0.121569, 0 0.007843 0.960784, 0.6 0.235294 0, 0.94902 1 0.380392, 0.239216 1 0.886275, 1 0.121569 0.964706'/>
|
|
50
|
+
</QuadSet>
|
|
51
|
+
</Shape>
|
|
52
|
+
</Group>
|
|
53
|
+
</Scene>
|
|
54
|
+
</X3D>
|
|
@@ -91,6 +91,19 @@ test('deserialize X3D 3D triangle sets to JSCAD geometry', (t) => {
|
|
|
91
91
|
t.true(geom3.isA(observed[3]))
|
|
92
92
|
})
|
|
93
93
|
|
|
94
|
+
test('deserialize X3D 3D triangle sets with comma delimiters to JSCAD geometry', (t) => {
|
|
95
|
+
const inputPath = path.resolve(samplesPath, 'tests/TriangleSets_CommaMF.x3d')
|
|
96
|
+
const inputFile = fs.readFileSync(inputPath)
|
|
97
|
+
|
|
98
|
+
const observed = deserialize({ output: 'geometry', addMetaData: false }, inputFile)
|
|
99
|
+
t.true(Array.isArray(observed))
|
|
100
|
+
t.is(observed.length, 4)
|
|
101
|
+
t.true(geom3.isA(observed[0]))
|
|
102
|
+
t.true(geom3.isA(observed[1]))
|
|
103
|
+
t.true(geom3.isA(observed[2]))
|
|
104
|
+
t.true(geom3.isA(observed[3]))
|
|
105
|
+
})
|
|
106
|
+
|
|
94
107
|
test('deserialize X3D 3D transforms to JSCAD geometry', (t) => {
|
|
95
108
|
const inputPath = path.resolve(samplesPath, 'tests/Transforms.x3d')
|
|
96
109
|
const inputFile = fs.readFileSync(inputPath)
|
|
@@ -119,6 +132,21 @@ test('deserialize X3D 3D indexed triangle sets to JSCAD geometry', (t) => {
|
|
|
119
132
|
t.true(geom3.isA(observed[5]))
|
|
120
133
|
})
|
|
121
134
|
|
|
135
|
+
test('deserialize X3D 3D indexed triangle sets with comma delimiters to JSCAD geometry', (t) => {
|
|
136
|
+
const inputPath = path.resolve(samplesPath, 'tests/IndexedTriangleSets_CommaMF.x3d')
|
|
137
|
+
const inputFile = fs.readFileSync(inputPath)
|
|
138
|
+
|
|
139
|
+
const observed = deserialize({ output: 'geometry', addMetaData: false }, inputFile)
|
|
140
|
+
t.true(Array.isArray(observed))
|
|
141
|
+
t.is(observed.length, 6)
|
|
142
|
+
t.true(geom3.isA(observed[0]))
|
|
143
|
+
t.true(geom3.isA(observed[1]))
|
|
144
|
+
t.true(geom3.isA(observed[2]))
|
|
145
|
+
t.true(geom3.isA(observed[3]))
|
|
146
|
+
t.true(geom3.isA(observed[4]))
|
|
147
|
+
t.true(geom3.isA(observed[5]))
|
|
148
|
+
})
|
|
149
|
+
|
|
122
150
|
test('deserialize X3D 3D groups to JSCAD geometry', (t) => {
|
|
123
151
|
const inputPath = path.resolve(samplesPath, 'tests/Groups.x3d')
|
|
124
152
|
const inputFile = fs.readFileSync(inputPath)
|