ARCameraLib.jslib 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. mergeInto(LibraryManager.library, {
  2. SetWebGLARCameraSettings: function(settings)
  3. {
  4. window.arCamera.setARCameraSettings(UTF8ToString(settings));
  5. },
  6. WebGLStartCamera: function()
  7. {
  8. window.StartWebcam();
  9. },
  10. WebGLShowWx: function(url)
  11. {
  12. window.ShowWx(UTF8ToString(url));
  13. },
  14. WebGLIsCameraStarted: function()
  15. {
  16. if(!window.arCamera){
  17. console.error('%carCamera not found! Please make sure to use the correct WebGLTemplate in your ProjectSettings','font-size: 32px; font-weight: bold');
  18. throw new Error("arCamera not found! Please make sure to use the correct WebGLTemplate in your ProjectSettings");
  19. return;
  20. }
  21. return arCamera.isCameraStarted;
  22. },
  23. WebGLGetCameraFov: function()
  24. {
  25. return window.arCamera.FOV;
  26. },
  27. WebGLUnpauseCamera: function()
  28. {
  29. window.arCamera.unpauseCamera();
  30. },
  31. WebGLPauseCamera: function()
  32. {
  33. window.arCamera.pauseCamera();
  34. },
  35. WebGLFlipCamera: function(){
  36. window.FlipCam();
  37. },
  38. WebGLIsCameraFlipped: function(){
  39. return window.arCamera.videoCanvas.style.transform == "scaleX(-1)";
  40. },
  41. WebGLGetVideoDims: function()
  42. {
  43. var data = window.arCamera.getVideoDims();
  44. var bufferSize = lengthBytesUTF8(data) + 1;
  45. var buffer = unityInstance.Module._malloc(bufferSize);
  46. stringToUTF8(data, buffer, bufferSize);
  47. return buffer;
  48. },
  49. WebGLSubscribeVideoTexturePtr: function(textureId){
  50. arCamera.updateUnityVideoTextureCallback = ()=>{
  51. var videoCanvas = window.arCamera.VIDEO//videoCapture;
  52. textureObj = GL.textures[textureId];
  53. if (videoCanvas == null || textureObj == null) return;
  54. GLctx.bindTexture(GLctx.TEXTURE_2D, textureObj);
  55. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_S, GLctx.CLAMP_TO_EDGE);
  56. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_T, GLctx.CLAMP_TO_EDGE);
  57. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_MIN_FILTER, GLctx.LINEAR);
  58. GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, true);
  59. GLctx.texSubImage2D(GLctx.TEXTURE_2D, 0, 0, 0, GLctx.RGBA, GLctx.UNSIGNED_BYTE, videoCanvas);
  60. GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, false);
  61. //console.log("updateUnityVideoTextureCallback - webcam texture updated " + textureId);
  62. }
  63. },
  64. WebGLGetCameraTexture: function(textureId){
  65. var videoCanvas = window.arCamera.VIDEO;
  66. textureObj = GL.textures[textureId];
  67. if (canvas == null || textureObj == null) return;
  68. GLctx.bindTexture(GLctx.TEXTURE_2D, textureObj);
  69. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_S, GLctx.CLAMP_TO_EDGE);
  70. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_T, GLctx.CLAMP_TO_EDGE);
  71. GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_MIN_FILTER, GLctx.LINEAR);
  72. GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, true);
  73. GLctx.texSubImage2D(GLctx.TEXTURE_2D, 0, 0, 0, GLctx.RGBA, GLctx.UNSIGNED_BYTE, videoCanvas);
  74. GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, false);
  75. console.log("WebGLGetCameraTexture " + textureId, videoCanvas);
  76. },
  77. IsWebcamPermissionGranted: function()
  78. {
  79. return (window.webcamStream != null);
  80. },
  81. });