FIMO导出HTML时纹理贴图默认不自动保留原始文件,但可勾选“Embed textures”以Base64内联;否则需一并拷贝textures/目录,且须通过本地服务器而非file://协议访问以防CORS错误。
不会自动保留原始纹理贴图文件,但支持将纹理以Base64内联方式嵌入HTML中——前提是导出时勾选了“Embed textures”或等效选项。默认情况下,FIMO(v2.0+)导出的HTML引用的是相对路径下的textures/子目录,若该目录未一并拷贝,页面打开后模型将显示为纯色或缺失材质。
导出行为取决于所选模板和设置:
threejs_template且未勾选“Embed textures”:纹理作为独立PNG/JPG文件写入output_dir/textures/,HTML中通过new THREE.Texture
Loader().load("textures/xxx.png")加载texture.image.src = "data:image/png;base64,iVBOR..."
babylonjs_template:默认走Base64内联,不生成外部纹理文件打开导出的HTML后模型无纹理,先检查以下几处:
404错误,路径指向textures/xxx.png?→ 说明缺少textures/文件夹或路径不匹配data:image/,有无大量Base64字符串?→ 没有则确认导出时未启用内联纹理file://协议直接双击打开HTML?→ Chrome等浏览器会因CORS禁止加载本地textures/子目录,必须用本地服务器(如python3 -m http.server)访问\或绝对路径?→ FIMO可能无法正确解析,建议预处理为Unix风格相对路径最稳妥的做法不是依赖默认行为,而是主动控制输出结构:
Embed textures(优先用于演示、分享单文件场景)index.html + models/ + textures/)整体部署,不要只传HTML.mtl文件中map_Kd行路径是否为纯文件名(如wood.jpg),而非./textures/wood.jpg——FIMO通常会自动归一化,但旧版或自定义MTL可能出错gzip或brotli)纹理是否可见,关键不在FIMO“能不能”,而在于导出选项与后续部署方式是否匹配。最容易被忽略的是本地双击打开HTML导致的CORS静默失败——这点没有报错提示,但贴图就是不出现。