使用three.js加载.obj以字符串形式存储

时间:2016-02-15 11:51:08

标签: javascript three.js

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

parse函数在加载完成后调用var myObj = THREE.OBJLoader.parse(text); 函数。您应该能够自己发送通常位于.obj文件中的文本来调用此函数。

{{1}}

可以看到来源here

答案 1 :(得分:0)

我通过覆盖加载功能来绕过网址检查,如下所示:

        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 );
        });