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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Threepipe React/JS Sample</title>
  6. <style>
  7. html, body{
  8. width: 100%;
  9. height: 100%;
  10. margin: 0;
  11. overflow: hidden;
  12. }
  13. </style>
  14. <script type="module" src="../examples-utils/simple-code-preview.mjs"></script>
  15. </head>
  16. <body>
  17. <div id="root"></div>
  18. <script id="example-script" type="module" data-scripts="./index.html">
  19. // import {ThreeViewer, LoadingScreenPlugin} from 'https://unpkg.com/threepipe@latest/dist/index.mjs'
  20. import {ThreeViewer, LoadingScreenPlugin} from './../../dist/index.mjs'
  21. import React from 'https://esm.sh/react@18'
  22. import ReactDOM from 'https://esm.sh/react-dom@18'
  23. function ThreeViewerComponent({ src }) {
  24. const canvasRef = React.useRef(null);
  25. React.useEffect(() => {
  26. const viewer = new ThreeViewer({
  27. canvas: canvasRef.current,
  28. plugins: [LoadingScreenPlugin],
  29. })
  30. // Load an environment map
  31. const envPromise = viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr')
  32. const modelPromise = viewer.load('https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf', {
  33. autoCenter: true,
  34. autoScale: true,
  35. })
  36. Promise.all([envPromise, modelPromise]).then(([env, model])=>{
  37. console.log('Loaded', model, env, viewer)
  38. })
  39. return () => {
  40. viewer.dispose()
  41. }
  42. }, []);
  43. return React.createElement(
  44. 'canvas',
  45. {id: 'three-canvas', style: {width: 800, height: 600}, ref: canvasRef},
  46. )
  47. }
  48. ReactDOM.render(
  49. React.createElement(ThreeViewerComponent),
  50. document.getElementById('root')
  51. )
  52. </script>
  53. </body>
  54. </html>