【问题标题】:Loading .obj storing in string using three.js使用three.js加载存储在字符串中的.obj
【发布时间】:2016-07-16 00:03:30
【问题描述】:

我的程序在运行时生成 .obj(存储为字符串),现在我想使用 three.js (OBJLoader) 中的 load() 函数来加载它。
在 load() 内部,它使用 HTTP 请求来检索已经存在于服务器目录中的 .obj 文件。

有没有其他方法我不需要在服务器目录中生成一个新的 .obj 文件并再次加载它?

如果不可能,如何在服务器目录中自动生成 .obj 文件?

谢谢。

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    我通过重写加载函数来绕过网址检查,如下所示:

            var objstring: string = "...." // This is your obj file 
            var loader = new THREE.OBJLoader();
    
            // Add a localtext parameter and an if check if url == ""
            loader.load =   function load( url, localtext, onLoad, onProgress, onError ) {
                var scope = this;
                var loader = new THREE.XHRLoader( scope.manager );
                loader.setPath( this.path );
                loader.load( url, function ( text ) {
                    if (url==""){
                        text = localtext;
                    }
                    onLoad( scope.parse( text ) );
                }, onProgress, onError );
            },
    
            // Now you can use either url or directly string input.
            loader.load( '', objstring, function ( object ) {
                object.traverse( function ( child ) {
                    if ( child instanceof THREE.Mesh ) {
                        child.material = new THREE.MeshBasicMaterial();
                    }
                } );
                scene.add( object );
            });
    

    【讨论】:

      【解决方案2】:

      加载完成后,OBJLoader.load 函数调用parse 函数,您应该能够自己调用此函数,发送通常在 .obj 文件中的文本。

      var myObj = THREE.OBJLoader.parse(text);
      

      源码可见here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        相关资源
        最近更新 更多