threepipe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 3.2KB

11 miesięcy temu
11 miesięcy temu
11 miesięcy temu
11 miesięcy temu
11 miesięcy temu
11 miesięcy temu
11 miesięcy temu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. // readd model2 which is disposed
  56. viewer.addSceneObject(model2)
  57. await timeout(500)
  58. viewer.scene.disposeSceneModels()
  59. await timeout(500)
  60. const model3 = await load()
  61. console.log(model3.uuid)
  62. if(model2 === model3) throw new Error('Error in Test - Models should not be the same after disposing scene models');
  63. await timeout(500)
  64. viewer.scene.disposeSceneModels()
  65. await timeout(500)
  66. viewer.scene.addObject(model.translateX(-0.5)) // add back cleared model
  67. viewer.scene.addObject(model2.translateX(-0.5)) // again, shouldn't change anything
  68. viewer.scene.addObject(model3.translateX(1)) // add back disposed model
  69. await timeout(1000)
  70. viewer.scene.disposeSceneModels()
  71. }
  72. _testStart()
  73. init(false).then(()=>init(true)).finally(_testFinish)
  74. </script>
  75. </head>
  76. <body>
  77. <div id="canvas-container">
  78. <canvas id="mcanvas"></canvas>
  79. </div>
  80. </body>