threepipe
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import {
  2. _testFinish,
  3. _testStart,
  4. BaseGroundPlugin,
  5. CanvasSnapshotPlugin,
  6. IObject3D,
  7. LoadingScreenPlugin,
  8. PickingPlugin,
  9. ProgressivePlugin,
  10. ThreeViewer,
  11. TonemapPlugin,
  12. } from 'threepipe'
  13. import {ThreeGpuPathTracerPlugin} from '@threepipe/plugin-path-tracing'
  14. import {TweakpaneUiPlugin} from '@threepipe/plugin-tweakpane'
  15. async function init() {
  16. const viewer = new ThreeViewer({
  17. canvas: document.getElementById('mcanvas') as HTMLCanvasElement,
  18. msaa: false,
  19. debug: true,
  20. renderScale: 'auto',
  21. dropzone: {
  22. allowedExtensions: ['gltf', 'glb', 'hdr', 'bin', 'png', 'jpeg', 'webp', 'jpg', 'exr', 'json'],
  23. addOptions: {
  24. disposeSceneObjects: true,
  25. autoSetEnvironment: true, // when hdr is dropped
  26. autoSetBackground: true,
  27. },
  28. },
  29. plugins: [LoadingScreenPlugin, PickingPlugin, ProgressivePlugin, BaseGroundPlugin, CanvasSnapshotPlugin, ThreeGpuPathTracerPlugin],
  30. })
  31. viewer.getPlugin(ProgressivePlugin)!.maxFrameCount = 500
  32. await viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr', {setBackground: true})
  33. const modelUrl = 'https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf'
  34. const result = await viewer.load<IObject3D>(modelUrl, {
  35. autoCenter: true,
  36. autoScale: true,
  37. })
  38. console.log(result)
  39. const ground = viewer.getPlugin(BaseGroundPlugin)?.material
  40. if (ground) {
  41. // make reflective
  42. ground.roughness = 0.1
  43. ground.metalness = 0.9
  44. ground.color.set(0xffffff)
  45. ground.setDirty()
  46. }
  47. // optional
  48. // const controls = viewer.scene.mainCamera.controls as EnvironmentControls2
  49. // result && controls.setTilesRenderer(result.tilesRenderer)
  50. const ui = viewer.addPluginSync(TweakpaneUiPlugin)
  51. // ui.appendChild(controls.uiConfig)
  52. ui.setupPluginUi(ThreeGpuPathTracerPlugin)
  53. ui.setupPluginUi(ProgressivePlugin)
  54. ui.setupPluginUi(CanvasSnapshotPlugin)
  55. ui.setupPluginUi(TonemapPlugin)
  56. ui.setupPluginUi(BaseGroundPlugin)
  57. ui.setupPluginUi(PickingPlugin)
  58. }
  59. _testStart()
  60. init().finally(_testFinish)