Java3D加载obj文件+mtl文件

Java3d入门学习可以参考这位博主大神——苏若年,关于Java3D学习的文章。下面给出他部分文章的链接:
文1 创建三维几何模型:[ http://www.cnblogs.com/dennisit/archive/2013/05/06/3063042.html ]
文2 加载外部Obj模型:[ http://www.cnblogs.com/dennisit/archive/2013/05/07/3065126.html ]
文3 载入外部3ds模型:[ http://www.cnblogs.com/dennisit/archive/2013/05/07/3065479.html ]

本来按照苏若年大神的文章以及足够将两种模型都用Java3D显示出来了,但文章给出的显现效果是不含纹理的,而项目需要生成含纹理的3D模型。因此,本文的重点主要在载入纹理上,算是对苏若年大神文章的小小补充吧。

加载含纹理的Obj模型,正确的做法是将.obj文件及其相应的.mtl文件和纹理贴图放在同一目录下

上面这段话是来自slheluo 所写的Java3D导入obj和3ds模型整理

但是我按照两位博主所说仍然没有出纹理,我这找到两个问题原因:

一、路径格式不对,根本未找到mtl文件

        因为我之前并没有接触过Java3D,只是有人让我解决加载不出来纹理这个问题我才来看的,所以加载外部obj模型我是完全复制的苏若年大神的文2来写的代码,其中问题点就是他代码中路径

//加载Obj格式的模型文件
objTrans.addChild(new ObjFileReader("F:/guanyu.obj"));

 在我调试看来,Java3D在加载模型时,ObjectFile会根据模型文件的路径获取一个basePath的目录路径,看图中File.separator代表的是\或者\\,如果在路径中使用的是/,当lastIndexof找不到\或\\于是就返回-1,从而取得的路径就不对,因此读取mtl文件时找不到路径,出现异常直接return。归根结底就根本没有读到mtl文件怎么能加载出来纹理图1

 解决办法:将路径中的“/”改为“\\”

二、mtl文件中没有 illum 1
Java3D在描画mtl时,如果mtl文件中没有 illum,则创建对象的时候默认值为0,那么便执行setLightingEnable(false)

 解决办法:每一个mtl下都加上illum,简单粗暴

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值