threepipe
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

11 месяцев назад
11 месяцев назад
11 месяцев назад
11 месяцев назад
11 месяцев назад
11 месяцев назад
11 месяцев назад
11 месяцев назад
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>