threepipe
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import {_testFinish, _testStart, LoadingScreenPlugin, ThreeViewer} from 'threepipe'
  2. // @ts-expect-error no need react here
  3. import React from 'react'
  4. // @ts-expect-error no need react-dom here
  5. import ReactDOM from 'react-dom'
  6. function ThreeViewerComponent({src, env}: {src: string, env: string}) {
  7. const canvasRef = React.useRef(null)
  8. React.useEffect(() => {
  9. const viewer = new ThreeViewer({canvas: canvasRef.current,
  10. plugins: [LoadingScreenPlugin],
  11. })
  12. // Load an environment map
  13. const envPromise = viewer.setEnvironmentMap(env)
  14. const modelPromise = viewer.load(src, {
  15. autoCenter: true,
  16. autoScale: true,
  17. })
  18. Promise.all([envPromise, modelPromise]).then(([env, model])=>{
  19. console.log('Loaded', model, env, viewer)
  20. })
  21. return () => {
  22. viewer.dispose()
  23. }
  24. }, [])
  25. return (
  26. // @ts-expect-error react ts error
  27. <canvas id="three-canvas" style={{width: 800, height: 600}} ref={canvasRef} />
  28. )
  29. }
  30. async function init() {
  31. ReactDOM.render(
  32. <ThreeViewerComponent
  33. src={'https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf'}
  34. env={'https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr'}
  35. />,
  36. document.getElementById('root')
  37. )
  38. }
  39. _testStart()
  40. init().finally(_testFinish)