我正在尝试加载3d obj文件或3ds文件,它已加载
但遗憾的是我无法加载.mtl文件或任何纹理
任何构思/示例代码如何加载.mtl文件或纹理?
---> 3D模型已加载但为灰色
public void load3dModel()
{
ObjReader CurrentHelixObjReader = new ObjReader();
// Model3DGroup MyModel = CurrentHelixObjReader.Read(@"D:\3DModel\dinosaur_FBX\dinosaur.fbx");
// Model3DGroup MyModel = CurrentHelixObjReader.Read(@"C:\Users\aaa\Downloads\jlb4kmi4xssg-iphone6model\iphone_6_model.FBX");
Model3DGroup model = null;
string path = @"C:\Users\aaa\Downloads\jlb4kmi4xssg-iphone6model\note4.obj";
string ext = System.IO.Path.GetExtension(path).ToLower();
switch (ext)
{
case ".3ds":
{
var r = new StudioReader();
model = r.Read(path);
break;
}
case ".fbx":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.Read(path);
break;
}
case ".lwo":
{
var r = new HelixToolkit.Wpf.LwoReader();
model = r.Read(path);
break;
}
case ".obj":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.Read(path);
//Material matty = (MaterialGroup)((GeometryModel3D)model.Children[0]).Material;
//Material myMaterial = MaterialHelper.CreateImageMaterial(@"C:\Users\aaa\Downloads\jlb4kmi4xssg-iphone6model\sam-scrn.jpg", 1);
// Material anotherMaterial = ((GeometryModel3D)model.Children[0]).Material;
// Newmodel.Children.Add(new GeometryModel3D { Geometry = anotherMaterial, Material = myMaterial });
break;
}
case ".objz":
{
var r = new HelixToolkit.Wpf.ObjReader();
model = r.ReadZ(path);
break;
}
case ".stl":
{
var r = new HelixToolkit.Wpf.StLReader();
model = r.Read(path);
break;
}
case ".off":
{
var r = new HelixToolkit.Wpf.OffReader();
model = r.Read(path);
break;
}
default:
throw new InvalidOperationException("File format not supported.");
}
Newmodel.Content = model;
//MyModel.Children.Add(MyModel);
}
答案 0 :(得分:0)
实际上,helix默认至少为.obj文件执行。 在你的.obj文件中必须有一行像
mtllib File02.mtl
其中File02.mtl是您的材料文件名。 helix调用LoadMaterialLib方法,该方法读取mtllib之后指定的.mtl文件。请确保此.mtl文件存在且其名称未更改。也许您更改了.obj和.mtl文件名,但在.obj文件中,mtllib参数保持不变。