Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

demo.js 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * @file MARTINS.js WebAR demo with A-Frame
  3. * @author Alexandre Martins (https://github.com/alemart)
  4. * @license LGPL-3.0-or-later
  5. */
  6. async function startARSession(canvas)
  7. {
  8. if(!Martins.isSupported()) {
  9. throw new Error(
  10. 'This device is not compatible with this AR experience.\n\n' +
  11. 'User agent: ' + navigator.userAgent
  12. );
  13. }
  14. if(!(canvas instanceof HTMLCanvasElement))
  15. throw new Error(`startARSession expects a <canvas>`);
  16. //Martins.Settings.powerPreference = 'low-power';
  17. const tracker = Martins.Tracker.ImageTracker();
  18. await tracker.database.add([{
  19. name: 'my-reference-image',
  20. image: document.getElementById('my-reference-image')
  21. }]);
  22. const viewport = Martins.Viewport({
  23. canvas: canvas,
  24. container: document.getElementById('ar-viewport'),
  25. hudContainer: document.getElementById('ar-hud')
  26. });
  27. const video = document.getElementById('my-video');
  28. const useWebcam = (video === null);
  29. const source = useWebcam ?
  30. Martins.Source.Camera({ resolution: 'md' }) :
  31. Martins.Source.Video(video);
  32. const session = await Martins.startSession({
  33. mode: 'immersive',
  34. viewport: viewport,
  35. trackers: [ tracker ],
  36. sources: [ source ],
  37. stats: true,
  38. gizmos: true,
  39. });
  40. const scan = document.getElementById('scan');
  41. tracker.addEventListener('targetfound', event => {
  42. session.gizmos.visible = false;
  43. if(scan)
  44. scan.hidden = true;
  45. });
  46. tracker.addEventListener('targetlost', event => {
  47. session.gizmos.visible = true;
  48. if(scan)
  49. scan.hidden = false;
  50. });
  51. return session;
  52. }