求助:Three.js中ColladaLoader的parse方法如何正确使用?
Three.js ColladaLoader.parse() 无法加载模型的解决方法
问题出在你用json_encode()处理DAE文件内容的方式上:DAE是XML格式的文本文件,json_encode会对字符串进行JSON转义(比如将双引号转成\"),导致parse()接收到的不是有效的XML内容,自然无法正确解析。
修正后的代码
// 直接输出原始DAE内容,不要用json_encode处理 let fileContents = `<?= $decryptedContent; ?>`; const loader = new ColladaLoader(); loader.parse(fileContents, function (collada) { const avatar = collada.scene; console.log(avatar); avatar.scale.set(1, 1, 1); avatar.position.set(0, 0, 0); scene.add(avatar); });
关键说明
ColladaLoader.parse()要求传入原始的XML字符串,和load()方法从网络加载到的文件内容完全一致- 使用模板字符串
`包裹PHP输出的内容,可以避免XML中的换行、引号等特殊字符破坏JS语法结构 - 确保
$decryptedContent是未经过转义的纯DAE文件原始内容
内容的提问来源于stack exchange,提问作者Andrey Lastovetskiy
相关产品推荐
相关产品推荐

