threepipe
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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>