threepipe
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.html 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Dispose and Reimport Test</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <!-- Import maps polyfill -->
  8. <!-- Remove this when import maps will be widely supported -->
  9. <script async src="https://unpkg.com/es-module-shims@1.6.3/dist/es-module-shims.js"></script>
  10. <script type="importmap">
  11. {
  12. "imports": {
  13. "threepipe": "./../../dist/index.mjs"
  14. }
  15. }
  16. </script>
  17. <style id="example-style">
  18. html, body, #canvas-container, #mcanvas {
  19. width: 100%;
  20. height: 100%;
  21. margin: 0;
  22. overflow: hidden;
  23. }
  24. </style>
  25. <script type="module" src="../examples-utils/global-loading.mjs"></script>
  26. <script type="module" src="../examples-utils/simple-code-preview.mjs"></script>
  27. <script id="example-script" type="module">
  28. import {_testFinish, _testStart, ThreeViewer, timeout} from 'threepipe'
  29. const viewer = new ThreeViewer({canvas: document.getElementById('mcanvas')})
  30. async function init(loadAsFile = true) {
  31. const url = 'https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf'
  32. let file
  33. if(loadAsFile){
  34. file = new File([await (await fetch(url)).blob()], url)
  35. }
  36. const load = async ()=> {
  37. return viewer.load(file ?? url, {
  38. autoCenter: true,
  39. autoScale: true,
  40. })
  41. }
  42. await viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr')
  43. viewer.scene.background = viewer.scene.environment
  44. const model = await load()
  45. console.log(model.uuid)
  46. await timeout(500)
  47. viewer.scene.clearSceneModels(false)
  48. await timeout(500)
  49. const model2 = await load()
  50. console.log(model2.uuid)
  51. if(model !== model2) throw new Error('Error in Test - Models should be the same after clearing scene models');
  52. await timeout(500)
  53. viewer.scene.disposeSceneModels()
  54. await timeout(500)
  55. const model3 = await load()
  56. console.log(model3.uuid)
  57. if(model2 === model3) throw new Error('Error in Test - Models should not be the same after disposing scene models');
  58. await timeout(500)
  59. viewer.scene.disposeSceneModels()
  60. await timeout(500)
  61. viewer.scene.addObject(model.translateX(-0.5)) // add back cleared model
  62. viewer.scene.addObject(model2.translateX(-0.5)) // again, shouldn't change anything
  63. viewer.scene.addObject(model3.translateX(1)) // add back disposed model
  64. await timeout(1000)
  65. viewer.scene.disposeSceneModels()
  66. }
  67. _testStart()
  68. init(false).then(()=>init(true)).finally(_testFinish)
  69. </script>
  70. </head>
  71. <body>
  72. <div id="canvas-container">
  73. <canvas id="mcanvas"></canvas>
  74. </div>
  75. </body>