一体式德拉科网状解码器

问题描述

im使用draco编码和解码我的网格物体。但是draco不支持webgl(https://github.com/google/draco/issues/436)。 但是,Draco支持javascript。 并且有可能在统一体内运行Draco javascript解码器吗? 那是资产/插件下的我的.jslib文件

mergeInto(LibraryManager.library,{
     
      DecodeMesh: function (byteArray) {
      <script src="https://rawgit.com/google/draco/master/javascript/draco_decoder.js"></script>
      'use strict';
      
      let dracoDecoderType = {};
      const dracoModule = DracoModule(dracoDecoderType); 
      const decoder = new dracoModule.WebIDLWrapper();

      
      const buffer = new dracoModule.DecoderBuffer();
      buffer.Init(byteArray,byteArray.length);

      
      let outputGeometry = decoder.DecodeMeshFromBuffer(buffer);

      alert('Num points = ' + outputGeometry.num_points());

      
      dracoModule.destroy(outputGeometry);
      dracoModule.destroy(decoder);
      dracoModule.destroy(buffer);
    },}); 

和我的脚本:

public class caller : MonoBehavIoUr
{
    [DllImport("__Internal")]
    private static extern void DecodeMesh(byte[] array);

    void Start()
    {
        array1= "array to decoded"
        decodeMesh(array1);
    }
}

当我尝试为webGL构建时,出现以下错误

Failed running "C:/Program Files/Unity/Hub/Editor/2019.3.10f1/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten_Win\python\2.7.5.3_64bit\python.exe" -E "C:/Program Files/Unity/Hub/Editor/2019.3.10f1/Editor/Data/PlaybackEngines/WebGLSupport\BuildTools\Emscripten\emcc" @"C:\Users\alitokur\Desktop\js\Assets\..\Temp\emcc_arguments.resp"

stdout:
stderr:JS optimizer error:Unexpected token: name (dracoDecoderType) (line: 2099,col: 12,pos: 86653)================================      GLctx.bindTexture(GLctx.TEXTURE_2D,GL.textures[texture]);    }  function _DecodeMesh(byteArray) {        // Create the Draco decoder.        let dracoDecoderType = {};            ^================================C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:282        throw new JS_Parse_Error(message,line,col,pos);        ^Error    at new JS_Parse_Error (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:260:22)    at js_error (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:282:15)    at croak (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:752:17)    at token_error (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:760:17)    at unexpected (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:766:17)    at Object.semicolon (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:786:51)    at prog1 (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:1325:29)    at simple_statement (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:917:35)    at C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:827:35    at block_ (C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\eliminator\node_modules\uglify-js\lib\parse-js.js:1010:32)ERROR:root:'C:/Program Files/Unity/Hub/Editor/2019.3.10f1/Editor/Data\Tools\nodejs\node.exe --stack_size=8192 --max-old-space-size=4096 C:\Program Files\Unity\Hub\Editor\2019.3.10f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\tools\js-optimizer.js C:\Users\alitokur\AppData\Local\Temp\tmpiqi8rq\build.bc.o.js.pp.js.mem.js noprintMetadata AJSDCE minifyWhitespace' Failed
UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr)

Exception: Failed building WebGL Player.
UnityEditor.WebGL.ProgramUtils.StartProgramChecked (System.Diagnostics.processstartinfo p) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:48)
UnityEditor.WebGL.WebGlBuildPostprocessor.EmscriptenLink (UnityEditor.Modules.BuildPostProcessArgs args,System.Boolean wasmBuild,System.String sourceFiles,System.String sourceFilesHash) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:445)
UnityEditor.WebGL.WebGlBuildPostprocessor.LinkBuild (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:495)
UnityEditor.WebGL.WebGlBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:930)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args,UnityEditor.BuildProperties& outProperties) (at <17b72532ee2c4da1b6f632d3f1705fe0>:0)
UnityEditor.PostprocessBuildplayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup,UnityEditor.BuildTarget target,System.String installPath,System.String companyName,System.String productName,system.int32 width,system.int32 height,UnityEditor.BuildOptions options,UnityEditor.RuntimeClassRegistry usedClassRegistry,UnityEditor.Build.Reporting.buildreport report) (at <17b72532ee2c4da1b6f632d3f1705fe0>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr)

Build completed with a result of 'Failed' in 109 seconds (109038 ms)
UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr)

解决方法

不幸的是,Draco也无法使Unity也在浏览器中加载Draco插件。 This fork也许可以帮助您。