@combeenation/3d-viewer 3.0.0-rc2 → 4.0.0-alpha6

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.
Files changed (212) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +111 -111
  3. package/dist/lib-cjs/api/classes/animationInterface.d.ts +8 -8
  4. package/dist/lib-cjs/api/classes/animationInterface.js +1 -1
  5. package/dist/lib-cjs/api/classes/animationInterface.js.map +0 -0
  6. package/dist/lib-cjs/api/classes/dottedPath.d.ts +79 -79
  7. package/dist/lib-cjs/api/classes/dottedPath.js +190 -190
  8. package/dist/lib-cjs/api/classes/dottedPath.js.map +0 -0
  9. package/dist/lib-cjs/api/classes/element.d.ts +130 -125
  10. package/dist/lib-cjs/api/classes/element.js +752 -638
  11. package/dist/lib-cjs/api/classes/element.js.map +1 -1
  12. package/dist/lib-cjs/api/classes/elementParameterizable.d.ts +14 -14
  13. package/dist/lib-cjs/api/classes/elementParameterizable.js +134 -134
  14. package/dist/lib-cjs/api/classes/elementParameterizable.js.map +0 -0
  15. package/dist/lib-cjs/api/classes/event.d.ts +326 -312
  16. package/dist/lib-cjs/api/classes/event.js +371 -357
  17. package/dist/lib-cjs/api/classes/event.js.map +1 -1
  18. package/dist/lib-cjs/api/classes/eventBroadcaster.d.ts +26 -26
  19. package/dist/lib-cjs/api/classes/eventBroadcaster.js +53 -53
  20. package/dist/lib-cjs/api/classes/eventBroadcaster.js.map +0 -0
  21. package/dist/lib-cjs/api/classes/parameter.d.ts +259 -161
  22. package/dist/lib-cjs/api/classes/parameter.js +387 -261
  23. package/dist/lib-cjs/api/classes/parameter.js.map +1 -1
  24. package/dist/lib-cjs/api/classes/parameterObservable.d.ts +36 -36
  25. package/dist/lib-cjs/api/classes/parameterObservable.js +101 -126
  26. package/dist/lib-cjs/api/classes/parameterObservable.js.map +1 -1
  27. package/dist/lib-cjs/api/classes/parameterizable.d.ts +15 -0
  28. package/dist/lib-cjs/api/classes/parameterizable.js +150 -0
  29. package/dist/lib-cjs/api/classes/parameterizable.js.map +1 -0
  30. package/dist/lib-cjs/api/classes/placementAnimation.d.ts +38 -38
  31. package/dist/lib-cjs/api/classes/placementAnimation.js +138 -138
  32. package/dist/lib-cjs/api/classes/placementAnimation.js.map +0 -0
  33. package/dist/lib-cjs/api/classes/variant.d.ts +224 -176
  34. package/dist/lib-cjs/api/classes/variant.js +1126 -770
  35. package/dist/lib-cjs/api/classes/variant.js.map +1 -1
  36. package/dist/lib-cjs/api/classes/variantInstance.d.ts +45 -41
  37. package/dist/lib-cjs/api/classes/variantInstance.js +108 -98
  38. package/dist/lib-cjs/api/classes/variantInstance.js.map +1 -1
  39. package/dist/lib-cjs/api/classes/variantParameterizable.d.ts +17 -0
  40. package/dist/lib-cjs/api/classes/variantParameterizable.js +93 -0
  41. package/dist/lib-cjs/api/classes/variantParameterizable.js.map +1 -0
  42. package/dist/lib-cjs/api/classes/viewer.d.ts +127 -128
  43. package/dist/lib-cjs/api/classes/viewer.js +486 -486
  44. package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
  45. package/dist/lib-cjs/api/classes/viewerLight.d.ts +66 -0
  46. package/dist/lib-cjs/api/classes/viewerLight.js +350 -0
  47. package/dist/lib-cjs/api/classes/viewerLight.js.map +1 -0
  48. package/dist/lib-cjs/api/emitter.d.ts +35 -0
  49. package/dist/lib-cjs/api/emitter.js +61 -0
  50. package/dist/lib-cjs/api/emitter.js.map +1 -0
  51. package/dist/lib-cjs/api/internal/debugViewer.d.ts +13 -13
  52. package/dist/lib-cjs/api/internal/debugViewer.js +87 -87
  53. package/dist/lib-cjs/api/internal/debugViewer.js.map +0 -0
  54. package/dist/lib-cjs/api/internal/lensRendering.d.ts +8 -8
  55. package/dist/lib-cjs/api/internal/lensRendering.js +11 -11
  56. package/dist/lib-cjs/api/internal/lensRendering.js.map +0 -0
  57. package/dist/lib-cjs/api/internal/sceneSetup.d.ts +10 -6
  58. package/dist/lib-cjs/api/internal/sceneSetup.js +231 -227
  59. package/dist/lib-cjs/api/internal/sceneSetup.js.map +1 -1
  60. package/dist/lib-cjs/api/manager/animationManager.d.ts +29 -29
  61. package/dist/lib-cjs/api/manager/animationManager.js +121 -121
  62. package/dist/lib-cjs/api/manager/animationManager.js.map +0 -0
  63. package/dist/lib-cjs/api/manager/sceneManager.d.ts +32 -32
  64. package/dist/lib-cjs/api/manager/sceneManager.js +132 -132
  65. package/dist/lib-cjs/api/manager/sceneManager.js.map +0 -0
  66. package/dist/lib-cjs/api/manager/variantInstanceManager.d.ts +90 -90
  67. package/dist/lib-cjs/api/manager/variantInstanceManager.js +321 -321
  68. package/dist/lib-cjs/api/manager/variantInstanceManager.js.map +0 -0
  69. package/dist/lib-cjs/api/store/specStorage.d.ts +24 -24
  70. package/dist/lib-cjs/api/store/specStorage.js +51 -51
  71. package/dist/lib-cjs/api/store/specStorage.js.map +0 -0
  72. package/dist/lib-cjs/api/util/babylonHelper.d.ts +160 -125
  73. package/dist/lib-cjs/api/util/babylonHelper.js +465 -368
  74. package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
  75. package/dist/lib-cjs/api/util/globalTypes.d.ts +321 -275
  76. package/dist/lib-cjs/api/util/globalTypes.js +1 -1
  77. package/dist/lib-cjs/api/util/globalTypes.js.map +0 -0
  78. package/dist/lib-cjs/api/util/resourceHelper.d.ts +26 -30
  79. package/dist/lib-cjs/api/util/resourceHelper.js +237 -247
  80. package/dist/lib-cjs/api/util/resourceHelper.js.map +1 -1
  81. package/dist/lib-cjs/api/util/stringHelper.d.ts +9 -0
  82. package/dist/lib-cjs/api/util/stringHelper.js +26 -0
  83. package/dist/lib-cjs/api/util/stringHelper.js.map +1 -0
  84. package/dist/lib-cjs/buildinfo.json +3 -3
  85. package/dist/lib-cjs/index.d.ts +48 -46
  86. package/dist/lib-cjs/index.js +86 -82
  87. package/dist/lib-cjs/index.js.map +1 -1
  88. package/package.json +83 -83
  89. package/src/api/classes/animationInterface.ts +11 -11
  90. package/src/api/classes/dottedPath.ts +189 -189
  91. package/src/api/classes/element.ts +648 -606
  92. package/src/api/classes/event.ts +370 -355
  93. package/src/api/classes/eventBroadcaster.ts +54 -54
  94. package/src/api/classes/parameter.ts +408 -270
  95. package/src/api/classes/parameterObservable.ts +99 -121
  96. package/src/api/classes/{elementParameterizable.ts → parameterizable.ts} +89 -78
  97. package/src/api/classes/placementAnimation.ts +133 -133
  98. package/src/api/classes/variant.ts +799 -652
  99. package/src/api/classes/variantInstance.ts +88 -81
  100. package/src/api/classes/variantParameterizable.ts +73 -0
  101. package/src/api/classes/viewer.ts +420 -421
  102. package/src/api/classes/viewerLight.ts +295 -0
  103. package/src/api/internal/debugViewer.ts +81 -81
  104. package/src/api/internal/lensRendering.ts +10 -10
  105. package/src/api/internal/sceneSetup.ts +194 -204
  106. package/src/api/manager/animationManager.ts +116 -116
  107. package/src/api/manager/sceneManager.ts +105 -105
  108. package/src/api/manager/variantInstanceManager.ts +236 -236
  109. package/src/api/store/specStorage.ts +53 -53
  110. package/src/api/util/babylonHelper.ts +497 -392
  111. package/src/api/util/globalTypes.ts +369 -314
  112. package/src/api/util/resourceHelper.ts +157 -168
  113. package/src/api/util/stringHelper.ts +26 -0
  114. package/src/buildinfo.json +2 -2
  115. package/src/commonjs.tsconfig.json +13 -13
  116. package/src/declaration.tsconfig.json +10 -10
  117. package/src/dev.ts +45 -60
  118. package/src/es6.tsconfig.json +13 -13
  119. package/src/index.ts +91 -87
  120. package/src/pagesconfig.json +51 -47
  121. package/src/tsconfig.json +43 -43
  122. package/src/tsconfig.types.json +9 -9
  123. package/src/types.d.ts +4 -4
  124. package/src/assets/02_environment.env +0 -0
  125. package/src/assets/02_test_hdri_flipped.hdr +0 -0
  126. package/src/assets/07rDvxP2xTk.glb +0 -0
  127. package/src/assets/08L8DrdZt8y.glb +0 -0
  128. package/src/assets/CB-6250/main.js +0 -427
  129. package/src/assets/CB-6250/models/.gitkeep +0 -1
  130. package/src/assets/CB-6250/models/candle.glb +0 -0
  131. package/src/assets/CB-6250/models/lamp.glb +0 -0
  132. package/src/assets/CB-6250/models/molto-bido.glb +0 -0
  133. package/src/assets/CB-6250/models/mtron.glb +0 -0
  134. package/src/assets/CB-6250/models/mtron_split_geometry.glb +0 -0
  135. package/src/assets/CB-6250/models/mtron_split_material.glb +0 -0
  136. package/src/assets/KTM1290SA/AvatarAdv.glb +0 -0
  137. package/src/assets/KTM1290SA/ktm1290SA.ts +0 -77
  138. package/src/assets/KTM1290SA/scene.json +0 -16
  139. package/src/assets/_draft/main.js +0 -117
  140. package/src/assets/_draft/models/.gitkeep +0 -1
  141. package/src/assets/_draft/models/_demo.glb +0 -0
  142. package/src/assets/_draft/studio.env +0 -0
  143. package/src/assets/bike/CompleteBike_Optim_986K_01.glb +0 -0
  144. package/src/assets/bike/complete.json +0 -19
  145. package/src/assets/bike/index.json +0 -9
  146. package/src/assets/bike/setup.json +0 -11
  147. package/src/assets/ctrls-helper.ts +0 -89
  148. package/src/assets/cube/10 environment.env +0 -0
  149. package/src/assets/cube/bin_svg_logo_test.glb +0 -0
  150. package/src/assets/cube/cube.ts +0 -42
  151. package/src/assets/cube/cube_v2.glb +0 -0
  152. package/src/assets/cube/scene.ts +0 -83
  153. package/src/assets/cube/testCylinderUVs.glb +0 -0
  154. package/src/assets/environment.env +0 -0
  155. package/src/assets/hoferkerzen/hoferkerzen.glb +0 -0
  156. package/src/assets/hoferkerzen/index.json +0 -9
  157. package/src/assets/hoferkerzen/setup.json +0 -11
  158. package/src/assets/hoferkerzen/variant_kgl.json +0 -41
  159. package/src/assets/husqvarna-instanced-meshes/husqvarna.env +0 -0
  160. package/src/assets/husqvarna-instanced-meshes/husqvarna.glb +0 -0
  161. package/src/assets/husqvarna-instanced-meshes/main.ts +0 -108
  162. package/src/assets/index.html +0 -144
  163. package/src/assets/index.json +0 -9
  164. package/src/assets/linkeddups/example_2_instances.glb +0 -0
  165. package/src/assets/linkeddups/spec.ts +0 -32
  166. package/src/assets/molto-mova-multi-instance-shown-bug/main.ts +0 -106
  167. package/src/assets/molto-mova-multi-instance-shown-bug/molto-mova-rc82.glb +0 -0
  168. package/src/assets/molto-mova-multi-instance-shown-bug/molto-mova-volare.glb +0 -0
  169. package/src/assets/molto-mova-multi-instance-shown-bug/studio.env +0 -0
  170. package/src/assets/moltomova/10 environment.env +0 -0
  171. package/src/assets/moltomova/RC65.glb +0 -0
  172. package/src/assets/moltomova/RC82.glb +0 -0
  173. package/src/assets/moltomova/TPH67.glb +0 -0
  174. package/src/assets/moltomova/TPH82.glb +0 -0
  175. package/src/assets/moltomova/Volare.glb +0 -0
  176. package/src/assets/moltomova/moltomova-cl3d-spec-rc65.ts +0 -159
  177. package/src/assets/moltomova/moltomova-cl3d-spec-rc82.ts +0 -118
  178. package/src/assets/moltomova/moltomova-cl3d-spec-scene.ts +0 -57
  179. package/src/assets/moltomova/moltomova-cl3d-spec-tph67.ts +0 -199
  180. package/src/assets/moltomova/moltomova-cl3d-spec-tph82.ts +0 -173
  181. package/src/assets/moltomova/moltomova-cl3d-spec-volare65.ts +0 -173
  182. package/src/assets/moltomova/moltomova.ts +0 -175
  183. package/src/assets/mova.json +0 -18
  184. package/src/assets/mova_3_phase_rail.glb +0 -0
  185. package/src/assets/mova_3_phase_rail.json +0 -86
  186. package/src/assets/mova_recessed_luminaire.glb +0 -0
  187. package/src/assets/mova_recessed_luminaire.json +0 -81
  188. package/src/assets/nessie/gltf-test-no-material.gltf +0 -142
  189. package/src/assets/nessie/gltf-test-no-material_data.bin +0 -0
  190. package/src/assets/nessie/gltf-test-rotation.gltf +0 -142
  191. package/src/assets/nessie/gltf-test-rotation_data.bin +0 -0
  192. package/src/assets/nessie/gltf-test.gltf +0 -178
  193. package/src/assets/nessie/gltf-test_data.bin +0 -0
  194. package/src/assets/nessie/index.json +0 -9
  195. package/src/assets/nessie/nessie_basic.json +0 -24
  196. package/src/assets/nessie/setup.json +0 -12
  197. package/src/assets/scene.json +0 -64
  198. package/src/assets/setup.json +0 -25
  199. package/src/assets/small_cave_1k.hdr +0 -0
  200. package/src/assets/svgTo3D/09aJssVZrjk.env +0 -0
  201. package/src/assets/svgTo3D/09f0zfBQBWK.glb +0 -0
  202. package/src/assets/svgTo3D/9bae062709f8a7803769ba955cde3c4a.jpg +0 -0
  203. package/src/assets/svgTo3D/logo-cyledge.svg +0 -19
  204. package/src/assets/svgTo3D/spec.ts +0 -56
  205. package/src/assets/svgTo3D/svg_assets/09fmVjc59hQ.png +0 -0
  206. package/src/assets/svgTo3D/svg_assets/LDI2apCSOBg7S-QT7pb0EPOreec.woff2 +0 -0
  207. package/src/assets/svgTo3D/svg_assets/unineue_regular.woff2 +0 -0
  208. package/src/assets/svgTo3D/testCube.glb +0 -0
  209. package/src/assets/svgTo3D/testCube001.glb +0 -0
  210. package/src/assets/svgTo3D/testCubeSpec.ts +0 -49
  211. package/src/assets/textures/grass.png +0 -0
  212. package/src/assets/textures/seamless-grunge-scratched-texture.jpg +0 -0
@@ -1,11 +0,0 @@
1
- {
2
- "instances": [
3
- {
4
- "name": "my_complete_bike",
5
- "variant": "complete",
6
- "parameters": {
7
- "visible": true
8
- }
9
- }
10
- ]
11
- }
@@ -1,89 +0,0 @@
1
- /**
2
- * Remove the `#dummy-div` and clear `textContent` or `#ctrls-panel` if it has no childs.
3
- *
4
- * Not sure why we really need this `#dummy-div` in the first place but without it flex box wasn't behaving the way I
5
- * wanted it to 🤷‍♂️
6
- *
7
- * Without clearing `textContent`, the `:empty` rule of the `#ctrls-panel` wouldn't work when no controls were added...
8
- */
9
- export function cleanUpCtrlsPanel() {
10
- const dummyDiv = document.querySelector( '#dummy-div' );
11
- if( dummyDiv && dummyDiv.parentNode ) {
12
- dummyDiv.parentNode.removeChild( dummyDiv );
13
- }
14
- const ctrlsPanel = document.querySelector( '#ctrls-panel' );
15
- if( !ctrlsPanel || !ctrlsPanel.children.length ) {
16
- ctrlsPanel!.textContent = '';
17
- }
18
- }
19
-
20
- /**
21
- * @param name
22
- * @param text
23
- * @param clickListener
24
- */
25
- export function createButton( name: string, text: string, clickListener: CallableFunction ) {
26
- let btn = document.createElement( 'button' );
27
- btn.type = 'button';
28
- btn.id = name;
29
- btn.textContent = text;
30
- btn.onclick = () => clickListener();
31
-
32
- let ctrlsPanel = window.document.querySelector( '#controls' );
33
- if( ctrlsPanel ) {
34
- ctrlsPanel.appendChild( btn );
35
- }
36
- }
37
-
38
- /**
39
- *
40
- * @param name
41
- * @param text
42
- * @param options
43
- * @param changeListener
44
- */
45
- export function createCombobox( name: string, text: string, options: { [name: string]: string }, changeListener: CallableFunction ) {
46
- let label = document.createElement( 'label' );
47
- label.htmlFor = name;
48
- label.textContent = text;
49
- label.className = 'combobox'
50
-
51
- let cbox = document.createElement( 'select' );
52
- cbox.id = name;
53
- cbox.onchange = () => changeListener( cbox.value );
54
-
55
- for( const key in options ) {
56
- cbox.add( new Option( options[key], key ) );
57
- }
58
-
59
- let ctrlsPanel = window.document.querySelector( '#controls' );
60
- if( ctrlsPanel ) {
61
- ctrlsPanel.append( label, cbox );
62
- }
63
- }
64
-
65
- /**
66
- * @param {string} name
67
- * @param {string} text
68
- * @param {boolean} value
69
- * @param {CheckBoxChangeCb} changeListener
70
- */
71
- export function createCheckbox(name: string, text: string, value: any, changeListener: any) {
72
- let container = document.createElement('div');
73
- container.className = 'toggle';
74
-
75
- let label = document.createElement('label');
76
- label.htmlFor = name;
77
- label.textContent = text;
78
-
79
- let cbox = document.createElement('input');
80
- cbox.id = name;
81
- cbox.checked = value;
82
- cbox.type = 'checkbox';
83
- cbox.onchange = () => changeListener(cbox.checked);
84
-
85
- container?.append(cbox, label);
86
-
87
- let ctrlsPanel = window.document.querySelector('#controls');
88
- ctrlsPanel?.append(container);
89
- }
Binary file
@@ -1,42 +0,0 @@
1
- import { scene } from './scene'
2
- import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform';
3
-
4
-
5
- export const spec: StructureJson = {
6
- scene: scene,
7
- setup: {
8
- instances: [
9
- {
10
- name: 'My Cube',
11
- variant: 'My Cube',
12
- parameters: {
13
- visible: true,
14
- rotation: '(-20, 20, -10)',
15
- scaling: '( 1, 1, 2 )',
16
- },
17
- },
18
- ],
19
- },
20
- variants: {
21
- 'My Cube': {
22
- glTF: '/assets/cube/testCylinderUVs.glb',
23
- parameters: {},
24
- elements: {
25
- 'Plotting Board': {
26
- paths: {
27
- include: ['__root__.testCylinder'],
28
- },
29
- paintables: {
30
- 'Board': {
31
- path: '__root__.testCylinder',
32
- textureOptions: 512,
33
- },
34
- },
35
- },
36
- /*
37
- 'Whole Cube': ['__root__.Root.subnet1.box1']
38
- */
39
- },
40
- },
41
- },
42
- };
Binary file
@@ -1,83 +0,0 @@
1
- export const scene: SceneJson = {
2
- meshPicking: true,
3
- parameters: {
4
- environment: '/assets/cube/10%20environment.env',
5
- 'environment.rotation': 180,
6
- },
7
- engine: {
8
- antialiasing: true,
9
- options: {
10
- //preserveDrawingBuffer: true,
11
- //stencil: true,
12
- },
13
- },
14
- scene: {
15
- globals: {
16
- shadows: {
17
- enabled: true,
18
- type: 'contact',
19
- settings: [],
20
- generator: [],
21
- receiver: [],
22
- },
23
- //aa: 'fxaa',
24
- 'tone-mapping': true,
25
- 'camera-settings': {
26
- contrast: 1,
27
- exposure: 1.0,
28
- bloom: {
29
- enabled: false,
30
- },
31
- dof: {
32
- enabled: false,
33
- settings: {
34
- dof_threshold: 1,
35
- dof_gain: 1,
36
- },
37
- },
38
- sharpen: {
39
- enabled: false,
40
- settings: {},
41
- },
42
- },
43
- },
44
- lights: {
45
- default: {
46
- type: 'hemispheric',
47
- },
48
- },
49
- cameras: {
50
- 'first-camera': {
51
- type: 'arc',
52
- active: true,
53
- fov: 45,
54
- target: '(0, 0, 0)',
55
- },
56
- },
57
- },
58
- placements: {
59
- 'my fancy placement': {
60
- //alpha: 2,
61
- //beta: 4,
62
- //radius: 60,
63
- position: '(-0.24968802207216673, -59.99700063013537, 0.5455669732317799)',
64
- },
65
- 'my second placement': {
66
- radius: 160,
67
- beta: 2,
68
- },
69
- 'third': {
70
- target: '(0, 30, 0)',
71
- }
72
- },
73
- animations: {
74
- 'my fancy animation': {
75
- ease: 'power2.inOut',
76
- duration: 3,
77
- },
78
- 'my second animation': {
79
- ease: 'elastic.inOut',
80
- duration: 2,
81
- }
82
- }
83
- };
Binary file
Binary file
@@ -1,9 +0,0 @@
1
- {
2
- "scene": "/assets/scene.json",
3
- "variants": {
4
- "variant_kgl":{
5
- "file": "/assets/hoferkerzen/variant_kgl.json"
6
- }
7
- },
8
- "setup": "/assets/hoferkerzen/setup.json"
9
- }
@@ -1,11 +0,0 @@
1
- {
2
- "instances": [
3
- {
4
- "name": "my_kgl_hoferkerze",
5
- "variant": "variant_kgl",
6
- "parameters": {
7
- "visible": true
8
- }
9
- }
10
- ]
11
- }
@@ -1,41 +0,0 @@
1
- {
2
- "glTF": {
3
- "rootUrl": "assets/hoferkerzen/",
4
- "fileName": "hoferkerzen.glb"
5
- },
6
- "elements": {
7
- "Kappe": {
8
- "paths": {
9
- "include": [
10
- "__root__.RootNode.KGL_capMetal"
11
- ]
12
- }
13
- },
14
- "Docht": {
15
- "paths": {
16
- "include": [
17
- "__root__.RootNode.KGL_docht",
18
- "__root__.RootNode.KGL_docht1"
19
- ]
20
- }
21
- },
22
- "Wachs": {
23
- "paths": {
24
- "include": [
25
- "__root__.RootNode.KGL_wax_sides",
26
- "__root__.RootNode.KGL_wax_top"
27
- ]
28
- },
29
- "paintables": {
30
- "my_paintable": {
31
- "path": "__root__.RootNode.KGL_wax_sides",
32
- "textureOptions": 512
33
- }
34
- }
35
- }
36
- },
37
- "parameters": {
38
- "highlight.enabled": true,
39
- "highlight.color": "(0,255,255)"
40
- }
41
- }
@@ -1,108 +0,0 @@
1
- import { Emitter, Event, Parameter } from 'index';
2
- import { merge, set } from 'lodash-es';
3
- import { createButton, createCombobox } from '../ctrls-helper';
4
-
5
- export function createSpec(): StructureJson {
6
- return {
7
- scene: {
8
- parameters: {
9
- environment: 'assets/husqvarna-instanced-meshes/husqvarna.env',
10
- },
11
- engine: {
12
- antialiasing: true,
13
- options: {
14
- preserveDrawingBuffer: true,
15
- stencil: true,
16
- },
17
- },
18
- scene: {
19
- globals: {},
20
- lights: {},
21
- cameras: {},
22
- },
23
- meshPicking: true,
24
- },
25
- setup: {
26
- instances: [
27
- {
28
- name: 'BikeInstance',
29
- variant: 'Bike',
30
- lazy: false,
31
- parameters: {
32
- visible: true,
33
- // scaling: '( 1, 1, -1 )',
34
- // position: '( 0, 0, 0 )',
35
- // rotation: '( 0, 0, 0 )',
36
- },
37
- },
38
- ],
39
- },
40
- variants: {
41
- Bike: {
42
- glTF: 'assets/husqvarna-instanced-meshes/husqvarna.glb',
43
- parameters: {
44
- [`BackSpoiler.${Parameter.MATERIAL_COLOR}`]: '#FF0000',
45
- [`SidePartsOrig.${Parameter.MATERIAL_COLOR}`]: '#FF0000',
46
- },
47
- elements: {
48
- Base: {
49
- paths: {
50
- include: [
51
- '__root__',
52
- ],
53
- exclude: [
54
- '__root__.Husqvarna.Husqvarna_primitive1',
55
- '__root__.Husqvarna.Husqvarna_primitive2',
56
- '__root__.Husqvarna.Husqvarna_primitive4',
57
- '__root__.Husqvarna.Husqvarna_primitive2_linked',
58
- '__root__.Husqvarna.Husqvarna_primitive4_linked',
59
- ],
60
- },
61
- },
62
- /*
63
- BackSpoiler: ['__root__.Husqvarna.Husqvarna_primitive1'],
64
- SidePartsOrig: [
65
- '__root__.Husqvarna.Husqvarna_primitive2',
66
- '__root__.Husqvarna.Husqvarna_primitive4',
67
- ],
68
- */
69
- SidePartsLinked: [
70
- '__root__.Husqvarna.Husqvarna_primitive2_linked',
71
- '__root__.Husqvarna.Husqvarna_primitive4_linked',
72
- ],
73
- },
74
- },
75
- },
76
- };
77
- }
78
-
79
- export async function createUIelements( viewer: Viewer ) {
80
- const instanceNames = merge(
81
- viewer.variantInstances.all.map( instance => instance.name ),
82
- viewer.variantInstances.allDefinitions.map( definition => definition.name ),
83
- );
84
- const options = {};
85
- for ( const instanceName of instanceNames ) {
86
- set(options, instanceName, instanceName);
87
- }
88
- createCombobox(
89
- 'SelectInstanceCb',
90
- '🔧',
91
- options,
92
- (name: string) => _showInstance(viewer, name)
93
- );
94
- // createButton('demo', '💡 Demo', () => console.info(' --- Button clicked. ---'))
95
- }
96
-
97
- /**
98
- * @param {Viewer} viewer
99
- * @param {String} instance
100
- */
101
- async function _showInstance( viewer: Viewer, instance: string ): Promise<VariantInstance> {
102
- return await viewer.variantInstances.show( instance, true );
103
- }
104
-
105
- Emitter.on(Event.BOOTSTRAP_END, async viewer => {
106
- //viewer.autofocusActiveCamera();
107
- //await viewer.enableDebugLayer();
108
- });
@@ -1,144 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8"/>
5
-
6
- <link rel="shortcut icon" href="favicon.ico" type="image/vnd.microsoft.icon">
7
- <style>
8
- html,
9
- body {
10
- width: 100%;
11
- height: 100%;
12
- padding: 0;
13
- margin: 0;
14
- overflow: hidden;
15
- font-family: monospace;
16
- }
17
-
18
- #controls {
19
- position: absolute;
20
- background: #2A2342;
21
- width: 100%;
22
- height: 30px;
23
- padding: 10px 10px 10px 10px;
24
- display: flex;
25
- z-index: 1000;
26
- }
27
-
28
- #templates {
29
- display: none;
30
- }
31
-
32
- #html-overlay {
33
- position: absolute;
34
- }
35
-
36
- #loading {
37
- position: absolute;
38
- width: 100%;
39
- height: 100%;
40
- background-color: #201936;
41
- color: white;
42
- font-weight: bold;
43
- font-size: 40pt;
44
- }
45
-
46
- #loading div {
47
- position: relative;
48
- top: 50%;
49
- text-align: center;
50
- }
51
-
52
- #display-container {
53
- background: #201936;
54
- padding: 10px;
55
- height: 100%;
56
- }
57
-
58
- #babylon-canvas {
59
- width: 100%;
60
- height: 100%;
61
- }
62
-
63
- #html-overlay {
64
- padding: 5px;
65
- background: #454545;
66
- color: white;
67
- }
68
-
69
- #logo {
70
- position: absolute;
71
- right: 30px;
72
- width: 120px;
73
- height: 40px;
74
- }
75
-
76
- button, select {
77
- float: left;
78
- padding: 3px;
79
- margin: 3px;
80
- cursor: pointer;
81
- background: #fff;
82
- border: none;
83
- box-shadow: none;
84
- }
85
-
86
- /* Checkbox Label Toggles */
87
- .toggle [type=checkbox] {
88
- display: none;
89
- }
90
- .toggle label {
91
- display: inline-block;
92
- margin: .2rem 0 0 .5rem;
93
- padding: .3rem 1rem .3rem;
94
- color: #fff;
95
- }
96
- .toggle [type=checkbox]:checked ~ label {
97
- background-color: green;
98
- }
99
-
100
- label.combobox {
101
- font-size: 1.5rem;
102
- }
103
-
104
- .animate {
105
- transform: rotate(45deg);
106
- animation-duration: 3000ms;
107
- animation-name: move;
108
- animation-iteration-count: infinite;
109
- }
110
-
111
- @keyframes move{
112
- 0% {
113
- transform: rotate(-22deg);
114
- }
115
- 50%{
116
- transform: rotate(22deg);
117
- }
118
- 100% {
119
- transform: rotate(-22deg);
120
- }}
121
- </style>
122
-
123
- </head>
124
- <body>
125
-
126
- <div id="loading">
127
- <div class="animate">⏳</div>
128
- </div>
129
-
130
- <div id="templates">
131
- <pre id="html-overlay">ELEMENT</pre>
132
- </div>
133
-
134
- <div id="controls">
135
- <div id="logo"><img id="logoImg" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160.63 40.18'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23d5d2ca;%7D.cls-2%7Bfill:%23fff;%7D.cls-3%7Bfill:%23e0684b;%7D.cls-4%7Bfill:%23bb464b;%7D.cls-5%7Bfill:%23e0ded8;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3EBabylonIdentity%3C/title%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Page_Elements' data-name='Page Elements'%3E%3Cpath class='cls-1' d='M41.27,10h3.41v7.65c.61-1,1.82-2,4.21-2,3.74,0,5.78,3.08,5.78,7.13s-2.12,7.68-6.16,7.68c-2.15,0-3.17-.72-3.85-1.85a11.47,11.47,0,0,1-.14,1.52H41.24c0-1.55,0-3.11,0-4.68Zm6.63,8.42c-2.47,0-3.38,1.65-3.38,4.68,0,2.59.8,4.59,3.33,4.59,2.14,0,3.33-1.92,3.33-4.84C51.18,20.27,50.13,18.43,47.9,18.43Z'/%3E%3Cpath class='cls-1' d='M68.59,26.66a26.61,26.61,0,0,0,.2,3.47H65.51a7.37,7.37,0,0,1-.22-1.55c-.49.86-1.51,1.88-4.1,1.88-3.38,0-4.81-2.23-4.81-4.41,0-3.19,2.56-4.67,6.71-4.67h2.15v-1c0-1.1-.36-2.25-2.48-2.25-1.87,0-2.26.85-2.45,1.89H57c.19-2.31,1.65-4.43,5.86-4.4,3.68,0,5.69,1.49,5.69,4.79Zm-3.33-3.14H63.42c-2.5,0-3.6.74-3.6,2.34A2,2,0,0,0,62.1,28c2.81,0,3.16-1.92,3.16-4Z'/%3E%3Cpath class='cls-1' d='M71.67,10h3.42v7.65c.6-1,1.81-2,4.21-2,3.74,0,5.77,3.08,5.77,7.13S83,30.46,78.91,30.46c-2.15,0-3.16-.72-3.85-1.85a10,10,0,0,1-.14,1.52H71.65c0-1.55,0-3.11,0-4.68Zm6.64,8.42c-2.48,0-3.39,1.65-3.39,4.68,0,2.59.8,4.59,3.33,4.59,2.15,0,3.33-1.92,3.33-4.84C81.58,20.27,80.53,18.43,78.31,18.43Z'/%3E%3Cpath class='cls-1' d='M89.37,16c1.76,5.53,3,9.66,3.3,11h0c.35-1.49,1.23-4.68,3.13-11h3.41L94.37,30.62c-1.37,4.1-2.47,5.26-5.69,5.26A15.34,15.34,0,0,1,87,35.77V33c.3,0,.71,0,1.07,0,1.54,0,2.25-.57,2.89-2.42L85.71,16Z'/%3E%3Cpath class='cls-1' d='M100.76,30.13V10h3.41V30.13Z'/%3E%3Cpath class='cls-1' d='M120.32,23c0,4.21-2.48,7.43-6.91,7.43s-6.79-3.14-6.79-7.38,2.56-7.43,7-7.43C117.68,15.65,120.32,18.6,120.32,23Zm-10.23,0c0,2.87,1.29,4.68,3.41,4.68s3.33-1.79,3.33-4.65c0-3-1.19-4.7-3.39-4.7S110.09,20,110.09,23.05Z'/%3E%3Cpath class='cls-1' d='M122.8,19.53c0-1.21,0-2.47,0-3.55h3.3a15.77,15.77,0,0,1,.14,2,4.32,4.32,0,0,1,4.21-2.31c2.78,0,4.7,1.82,4.7,5.45v9h-3.41V21.49c0-1.77-.63-3-2.5-3s-3,1.29-3,3.91v7.76H122.8Z'/%3E%3Cpath class='cls-1' d='M138.37,30.13V25.56H142v4.57Z'/%3E%3Cpath class='cls-1' d='M147.67,16.28V30.87c0,3.77-.91,5-3.6,5-.11,0-.66,0-.86,0V34.2c.2,0,.42,0,.58,0,1.84,0,2-1,2-3.08V16.28Zm-1.84-3.57V9.87h1.84v2.84Z'/%3E%3Cpath class='cls-1' d='M151.85,26.25a3.45,3.45,0,0,0,3.69,2.66c2.26,0,3.16-1,3.16-2.44s-.63-2.15-3.52-2.84c-3.77-.91-4.62-2.06-4.62-3.91S152,16,155.32,16s4.81,2,5,3.94h-1.81a3,3,0,0,0-3.28-2.39c-2.2,0-2.83,1.07-2.83,2.09s.61,1.73,3.25,2.36c4,1,4.95,2.31,4.95,4.38,0,2.47-2,4.13-5.15,4.13-3.35,0-5.11-1.74-5.47-4.21Z'/%3E%3Cpolygon class='cls-2' points='17.4 0 0 10.04 0 30.13 17.4 40.18 34.8 30.13 34.8 10.04 17.4 0'/%3E%3Cpolygon class='cls-3' points='34.8 10.04 29.35 6.9 24.11 9.93 29.56 13.07 34.8 10.04'/%3E%3Cpolygon class='cls-3' points='5.24 13.07 22.64 3.02 17.4 0 0 10.04 5.24 13.07'/%3E%3Cpolygon class='cls-3' points='11.95 23.23 17.4 26.38 22.84 23.23 17.4 20.09 11.95 23.23'/%3E%3Cpolygon class='cls-4' points='29.56 13.07 29.56 27.11 17.4 34.13 5.24 27.11 5.24 13.07 0 10.04 0 30.13 17.4 40.18 34.8 30.13 34.8 10.04 29.56 13.07'/%3E%3Cpolygon class='cls-4' points='17.4 13.8 11.95 16.95 11.95 23.23 17.4 20.09 22.84 23.23 22.84 16.95 17.4 13.8'/%3E%3Cpolygon class='cls-5' points='29.56 13.07 22.84 16.95 22.84 23.23 17.4 26.38 17.4 34.13 29.56 27.11 29.56 13.07'/%3E%3Cpolygon class='cls-1' points='5.24 13.07 11.95 16.95 11.95 23.23 17.4 26.38 17.4 34.13 5.24 27.11 5.24 13.07'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"></div>
136
- </div>
137
-
138
- <div id="display-container">
139
- <div id="interaction"></div>
140
- <canvas id="babylon-canvas"></canvas>
141
- </div>
142
-
143
- </body>
144
- </html>
@@ -1,9 +0,0 @@
1
- {
2
- "scene": "/assets/scene.json",
3
- "variants": {
4
- "mova":{
5
- "file": "/assets/mova.json"
6
- }
7
- },
8
- "setup": "/assets/setup.json"
9
- }
@@ -1,32 +0,0 @@
1
- export const spec: StructureJson = {
2
- scene: {
3
- engine: {
4
- antialiasing: true,
5
- },
6
- scene: {
7
- globals: {},
8
- lights: {},
9
- cameras: {},
10
- },
11
- },
12
- setup: {
13
- instances: [
14
- {
15
- name: 'Example Instances',
16
- variant: 'example instances',
17
- lazy: false,
18
- parameters: {
19
- visible: true
20
- },
21
- },
22
- ],
23
- },
24
- variants: {
25
- 'example instances': {
26
- glTF: 'assets/linkeddups/example_2_instances.glb',
27
- elements: {
28
- Root: ['__root__']
29
- },
30
- },
31
- },
32
- };