threepipe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

script.ts 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {_testFinish, _testStart, DropzonePlugin, getUrlQueryParam, HemisphereLight} from 'threepipe'
  2. import {TransfrSharePlugin} from '@threepipe/plugin-network'
  3. import {ThreeEditor} from './ThreeEditor.js'
  4. async function init() {
  5. const viewer = new ThreeEditor({
  6. canvas: document.getElementById('mcanvas') as HTMLCanvasElement,
  7. renderScale: 'auto',
  8. msaa: checkQuery('msaa', true),
  9. rgbm: checkQuery('rgbm', true),
  10. debug: checkQuery('debug', false),
  11. assetManager: {
  12. storage: checkQuery('cache', true),
  13. },
  14. // set it to true if you only have opaque objects in the scene to get better performance.
  15. zPrepass: checkQuery('depthPrepass', checkQuery('zPrepass', false)),
  16. modelRootScale: parseFloat(getUrlQueryParam('modelRootScale', '1')),
  17. dropzone: {
  18. autoImport: true,
  19. autoAdd: true,
  20. addOptions: {
  21. autoScale: checkQuery('autoScale', true),
  22. autoCenter: checkQuery('autoCenter', true),
  23. autoScaleRadius: parseFloat(getUrlQueryParam('autoScaleRadius', '2')),
  24. clearSceneObjects: checkQuery('clearSceneObjectsOnDrop', false), // clear the scene before adding new objects on drop.
  25. license: getUrlQueryParam('licenseText') ?? undefined, // Any license to set on imported objects
  26. },
  27. },
  28. })
  29. await viewer.init()
  30. const hemiLight = viewer.scene.addObject(new HemisphereLight(0xffffff, 0x444444, 5), {addToRoot: true})
  31. hemiLight.name = 'Hemisphere Light'
  32. await viewer.setEnvironmentMap(getUrlQueryParam('env') ?? 'https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr')
  33. const transfr = viewer.getPlugin(TransfrSharePlugin)
  34. transfr && (transfr.queryParam = 'm')
  35. const model = getUrlQueryParam('m') || getUrlQueryParam('model')
  36. if (model) {
  37. const ext = getUrlQueryParam('ext') || getUrlQueryParam('model-extension')
  38. const loader = viewer.getPlugin(DropzonePlugin) ?? viewer
  39. const obj = await loader.load(model, {fileExtension: ext})
  40. console.log(obj)
  41. }
  42. }
  43. _testStart()
  44. init().finally(_testFinish)
  45. function checkQuery(key: string, def = true) {
  46. return !['false', 'no', 'f', '0'].includes(getUrlQueryParam(key, def ? 'yes' : 'no').toLowerCase())
  47. }