使用三个.js加载字符串中的 .obj 存储

Loading .obj storing in string using three.js

本文关键字:字符串 加载 存储 obj js 三个      更新时间:2023-09-26

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

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

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

谢谢。

我通过覆盖加载函数来绕过 url 检查,如下所示:

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

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

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

来源可以在这里看到