Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

demo.js 2.0KB

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