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文件怎么能加载出来纹理

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

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

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

Java3D加载obj文件+mtl文件相关推荐

  1. threejs加载服务器文件,如何使用Three.js加载obj和mtl文件

    OBJ和MTL是3D模型的几何模型文件和材料文件. 在最新的three.js版本(r78)中,以前的OBJMTLLoader类已废弃. 现在要加载OBJ和MTL文件,需要结合OBJLoader和MTL ...

  2. Three.js加载.obj和.mtl文件(无法加载材质、路径错误问题)

    加载.obj模型文件 本文是Three.js电子书的14.3节 使用三维软件导出.obj模型文件的时候,会同时导出一个材质文件.mtl, .obj和.stl文件包含的信息一样都是几何体顶点相关数据,材 ...

  3. HTML版的使用three.js加载obj和mtl文件并上贴图

    目录 效果图 全部代码 另: [Vue版的](https://blog.csdn.net/weixin_44601948/article/details/108502580) 效果图 全部代码 < ...

  4. VR 效果 前端使用 three.js 加载 Obj,drc文件(三维模型文件)

    VR 效果 前端使用 three.js 加载 Obj(三维模型文件) 前言:我对 three.js 并不熟!只是朋友有这个需求,写了几个 demo 运行,能看~.如果想深入学习,还需要多看看官方文档, ...

  5. vue使用three.js加载obj和mtl

    ①构建三维坐标,代码如下 <!-- --> <template><div id="container"></div> </te ...

  6. three.js加载obj模型和材质

    1.Vue中安装three.js和加载用的包 安装three.js使用npm install three --save 安装加载obj和mtl文件的包npm install three-obj-mtl ...

  7. Panda3D如何加载obj格式的3D模型文件

    ​ 在上文中,讲了如何将max.obj.mb.fbx等主流格式的3D模型文件转换为egg.gltf格式,Panda3D可以加载的格式.在上文末尾,博主临时看到了一种方式,可以让Panda3d直接加载o ...

  8. three、vue中使用three、three怎么加载obj模型和mtl文件、three自定义800*800大小怎么拾取/点击

    以上都是这一个星期碰到的坑,找了很多很多资料,总结归纳一下,希望对你的项目有一点点帮助 先说说需求 1.加载3D模型 2.点击模型的子模型会显示对于子模型名称 3.不全屏展示,还要点击子模型 4.创建 ...

  9. three.js加载三维模型(obj文件mtl文件)

    .obj和.mtl格式详解 obj文件是3D模型文件格式.由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于 ...

最新文章

  1. Android EditText的光标的显示与隐藏
  2. 在cisco路由器上实现DHCP功能实例
  3. django安装初步使用命令整理
  4. 预测2019:数据中心将有哪些变化
  5. python中的字符串是什么,一文秒懂Python中的字符串
  6. 【Vulnhub靶机系列】DC2
  7. Linux 用户和组
  8. 【案例分享】无线唤醒技术在灌溉系统上的应用案例
  9. 作者:​那旭(1990-),女,中国医学科学院医学信息研究所研究实习员。
  10. 字节流读数据 一次读一个字节
  11. linux睡眠进程,linux一个进程如何睡眠
  12. 基于队列的二叉树层次遍历
  13. java日文_怎么用java编写个应用程序,让其输出日文表
  14. 我的偶像Micheal.Jackson (MTV全集):本来是有一套Micheal的经典VCD的,但被朋友拿走再没还回来……...
  15. dg打开软件Android,DG 文件扩展名: 它是什么以及如何打开它?
  16. 基于java的采购管理系统的分析与实现(含源文件)
  17. 泰勒级数+牛顿迭代公式+最简单的C语言求根号的值
  18. 2019 杭电多校 E - Everything Is Generated In Equal Probability HDU 6595 数学
  19. 在apache中运行 cgi程序
  20. 网卡限速工具之WonderShaper

热门文章

  1. [思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具
  2. dataBinding 理解
  3. 独立窗口打开多个Excel
  4. 我的AI之路(54)--使用Pytorch内置的动作识别模型
  5. 麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码,直接复制粘贴!
  6. 部署开源项目记录 - 部署seata时遇到的问题
  7. php访问小程序内容检测接口,关于小程序接入敏感词检测接口的坑
  8. 医院借力泛微:落地高效、合规的数字化内控管理系统
  9. 【b站求职笔记】行路院-王贺 2021年2月笔记
  10. 日本使用ips细胞制作“类器官”的最新进展