ARCameraLib.jslib 3.3 KB

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