我的程序在运行时生成.obj(存储为字符串),现在我想在three.js(OBJLoader)中使用load()函数加载它。
在load()内部,它使用HTTP请求来检索已存在于服务器目录中的.obj文件。
有没有其他方法我不需要在服务器目录中生成新的.obj文件并再次加载?
如果不可能,如何自动在服务器目录中生成.obj文件?
谢谢。
答案 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 );
});