threepipe
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

script.ts 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import {
  2. _testFinish,
  3. BaseGroundPlugin,
  4. DirectionalLight2,
  5. GBufferPlugin,
  6. IObject3D, LoadingScreenPlugin,
  7. PCFSoftShadowMap,
  8. PickingPlugin,
  9. RenderTargetPreviewPlugin,
  10. SSAAPlugin,
  11. ThreeViewer,
  12. } from 'threepipe'
  13. import {TweakpaneUiPlugin} from '@threepipe/plugin-tweakpane'
  14. // @ts-expect-error todo fix
  15. import {SSContactShadowsPlugin} from '@threepipe/webgi-plugins'
  16. async function init() {
  17. const viewer = new ThreeViewer({
  18. canvas: document.getElementById('mcanvas') as HTMLCanvasElement,
  19. msaa: true,
  20. rgbm: false,
  21. dropzone: {
  22. addOptions: {
  23. disposeSceneObjects: true,
  24. },
  25. },
  26. plugins: [LoadingScreenPlugin, GBufferPlugin, BaseGroundPlugin, SSAAPlugin],
  27. // rgbm: false,
  28. })
  29. viewer.renderManager.stableNoise = true
  30. const sscs = viewer.addPluginSync(SSContactShadowsPlugin)
  31. viewer.addPluginSync(PickingPlugin)
  32. console.log(sscs)
  33. const ui = viewer.addPluginSync(new TweakpaneUiPlugin(true))
  34. // await viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr', {
  35. // setBackground: true,
  36. // })
  37. await viewer.load<IObject3D>('https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf', {
  38. autoCenter: true,
  39. autoScale: true,
  40. })
  41. // const model = result?.getObjectByName('node_damagedHelmet_-6514')
  42. // const materials = (model?.materials || []) as PhysicalMaterial[]
  43. ui.setupPluginUi(sscs)
  44. ui.setupPluginUi(BaseGroundPlugin)
  45. ui.setupPluginUi(PickingPlugin)
  46. const light = viewer.scene.addObject(new DirectionalLight2(0xffffff, 4))
  47. light.position.set(2, 2, 2)
  48. light.lookAt(0, 0, 0)
  49. light.castShadow = true
  50. light.shadow.mapSize.setScalar(1024)
  51. light.shadow.camera.near = 0.1
  52. light.shadow.camera.far = 10
  53. light.shadow.camera.top = 2
  54. light.shadow.camera.bottom = -2
  55. light.shadow.camera.left = -2
  56. light.shadow.camera.right = 2
  57. viewer.renderManager.renderer.shadowMap.type = PCFSoftShadowMap
  58. const rt = viewer.addPluginSync(RenderTargetPreviewPlugin)
  59. rt.addTarget(()=>light.shadow.map || undefined, 'shadow', true, true, true)
  60. // const gb = viewer.getPlugin(GBufferPlugin)
  61. // rt.addTarget(()=>({texture: gb!.normalDepthTexture}), 'shadow2')
  62. ui.appendChild(light.uiConfig, {expanded: true})
  63. // for (const material of materials) {
  64. // ui.appendChild(material.uiConfig)
  65. // }
  66. }
  67. init().then(_testFinish)