Flutter中3D模型渲染丢失纹理,Windows 3D查看器显示正常
Flutter中flutter_cube加载3D模型无纹理显示问题解决
问题描述
使用flutter_cube包开发虚拟空间时,加载的3D模型在Flutter应用中仅显示无纹理的黑色模型,但该模型在Windows 3D查看器中可正常显示纹理。
相关代码
// Dart Program to add 3D objects to your project // importing material.dart import 'package:flutter/material.dart'; // importing flutter cube package import 'package:flutter_cube/flutter_cube.dart'; // creating class of stateful widget class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { // adding necessary objects late Object floor; @override void initState() { // assigning name to the objects and providing the // object's file path (obj file) floor = Object(fileName: "assets/floor/cartoon_wooden_floor_obj.obj"); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( extendBodyBehindAppBar: true, // creating appbar appBar: AppBar( centerTitle: true, title: Text( "3D Objects in Flutter", style: TextStyle( color: Colors.greenAccent, fontWeight: FontWeight.bold, fontSize: 25), ), backgroundColor: Colors.transparent, elevation: 0.0, ), body: Container( child: Cube( onSceneCreated: (Scene scene) { scene.world.add(floor); scene.camera.zoom = 10; }, ), )); } }
解决步骤
- 检查模型文件完整性:OBJ模型通常依赖MTL材质文件和纹理图片,确保
cartoon_wooden_floor_obj.obj同目录下存在对应的MTL文件,且MTL文件中map_Kd字段指向的纹理图片路径正确,所有文件(OBJ、MTL、纹理图)都已放入assets/floor/目录。 - 显式指定纹理路径:如果flutter_cube未能自动识别材质文件,可在初始化
Object时直接指定纹理:floor = Object( fileName: "assets/floor/cartoon_wooden_floor_obj.obj", texture: "assets/floor/[你的纹理图片文件名].png", ); - 验证pubspec.yaml资源配置:确保已在pubspec.yaml中正确声明assets目录,避免资源未被打包:
flutter: assets: - assets/floor/ - 注意文件名大小写:Flutter对资源文件名大小写敏感,确保代码中引用的文件名和实际文件完全一致(比如
Texture.png和texture.png会被视为不同文件)。
内容的提问来源于stack exchange,提问作者pritamk47
相关产品推荐
相关产品推荐

