Java3D加载obj文件+mtl文件

article/2025/10/25 3:56:40

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,简单粗暴

 


http://chatgpt.dhexx.cn/article/kN5NZ6ll.shtml

相关文章

[OpenGL]导入obj文件

通常来说我们构建一个模型是比较复杂的工作,那么我们还有什么途径获得模型呢。其中一种方法就是导入obj模型,不要被这个名词给吓到了,其实就是把一个制作好的模型保存到一个文件中,我们称为obj文件。 先上图片: 下面说…

vue 加载3D .obj文件

VUE项目 vue-cli 加载obj obj文件存放位置 public/static vue 引入obj 控件&#xff1a;Vue-3D-Model 安装&#xff1a;npm install vue-3d-model <!-- ThreeDCity.vue文件 --> <template><div class"ThreeJSCity"><model-obj class"…

glb转obj文件及构建简单obj文件

目录 一、转换二、构建1三、构建2 一、转换 提供几个转换的网址&#xff1a; https://anyconv.com/glb-to-obj-converter/ https://products.aspose.app/3d/conversion/glb-to-obj https://miconv.com/convert-glb-to-obj/ 二、构建1 自己构建简单obj&#xff1a; 新建文本文…

obj文件(1):obj文件用txt打开并且了解v,f,vn,vt的含义

obj文件:obj文件用txt打开并且了解v,f,vn,vt的含义 笔记obj文件的格式介绍**下载 Blender 软件** 来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;介绍obj文件以txt文本形式打开后的标签v,f,vn,vt&a…

什么是obj文件

此文来源&#xff1a;https://www.cnblogs.com/ShadowHanlder/p/4410213.html 百度百科&#xff1a; 程序编译时生成的中间代码文件。目标文件&#xff0c;一般是程序编译后的二进制文件&#xff0c;再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的…

Unity导出模型为Obj文件

Unity导出模型为Obj文件 资源链接下载导入 代码纪要使用方式参考链接 资源链接 原插件代码中只有MeshFilter的Obj导出代码&#xff1b;由于项目需求&#xff0c;需要将SkinnedMeshRenderer导出为Obj文件&#xff0c;故在原代码的基础上&#xff0c;扩展出了SkinnedMeshRendere…

SolidWorks2021导出带材质的OBJ文件

SolidWorks2021导出带材质的OBJ文件 注意SW中所有零件都要使用英文命名&#xff0c;装配体模式下再次新建宏按钮即可 1. 首先下载并安装工具宏 1.1 下载免费工具宏 到Github下载免费的Free-Solidworks-OBJ-Exporter&#xff0c;并解压到自己想要的保存的位置。 1.2 在Soli…

C++/OpenGL 入门(18):读取obj文件并贴图

来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;程序6.3 Simple (Limited) OBJ Loader 简单的obj文件读取器&#xff0c;书P152页&#xff0c;PDF171/403 结果 生成&#xff1a; 读取&#xff1a;…

unity动态加载obj文件

unity2018.4.2f1 vs2017 最近项目需求&#xff0c;需要实现动态读物外部obj模型&#xff0c;并加载到场景中&#xff0c;研究了好几天&#xff0c;终于实现了&#xff0c;在此做个记录。 1、首先随便找个.obj模型&#xff0c;带贴图&#xff0c;我的资源截图如下&#xff1a…

obj文件(3): 如何用matlab 打开obj文件

obj文件:如何用 matlab 打开 obj 文件 第一步&#xff1a;检查obj文本格式第二步&#xff1a;用 Blender 软件重新导出obj文件第三步&#xff1a;用excel 打开这个obj 文件第四步&#xff1a;复制excel中的数据&#xff0c;传给matlab第五步&#xff1a; 用matlab 打开3D模型 第…

三维模型obj文件解析

目录 obj文件简介文件结构顶点数据(Vertex data)&#xff1a;自由形态曲线(Free-form curve)/表面属性(surface attributes):元素(Elements):自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):自由形态表面之间的连接(Connectivity between free-form sur…

linux类动态库,Linux动态库(一)

起因 博主在以Linux下做开发。在软件需求中&#xff0c;需要动态库带来的灵活性。 比如说博主主导的智能主机的开发。它需要支持很多种类的设备控制&#xff0c;如普通的开关灯、RGB灯、窗帘、百叶窗等等。我们将这些设备抽象成Device类&#xff0c;具体的设备就从这个类上派生…

OpenFlow Switch

The picture of OpenFlow Switch openflow 架构分为2层&#xff0c;一个是控制器层&#xff0c;一个是switch 层。中间是由openflow protocal进行连接的&#xff0c;负责传输指令与数据。switch分为3大块&#xff0c;第一是openflow channe&#xff0c;他是负责向控制器传输数据…

【博客450】OpenFlow学习

OpenFlow OpenFlow协议规范定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。 OpenFlow是第一个开放的南向接口协议&#xff0c;也是目前最流行的南向协议。它提出了控制与转发分离的架构&#xff0c;规定了SDN转发设备的基本组件和功能要求&#xff0c;以及与控…

OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

目录 写在前面的话OpenFlow交换机基本思想与工作原理专用OpenFlow交换机&#xff08;Dedicated OpenFlow switches&#xff09; 启用OpenFlow的交换机&#xff08;OpenFlow-enabled switches&#xff09;其他功能&#xff08;Additional features&#xff09;控制器&#xff08…

关于ns-3中安装openflow的问题,解决openflow not found

官网 官网里面并没有明确的描述&#xff0c;这里结合自己的安装过程讲解一下 首先下载源码&#xff0c;记住这一步最好在ns-3目录下&#xff0c;就是运行waf命名的目录 $ hg clone http://code.nsnam.org/jpelkey3/openflow $ cd openflow进行编译&#xff0c;会提示缺少文件…

OpenFlow基础入门知识

本文进行讨论的是OpenFlow 1.0和OpenFlow 1.3的基本知识 Overview&#xff1a; Openflow 1.0&#xff1a; 安全通道单张流表ipv4 Openflow 1.3&#xff1a; 安全通道多级流表&#xff08;流水线pipeline&#xff09;组表测量表ipv6..... 流&#xff08;flow&#xff09; …

Openflow流表学习

Openflow流表学习 OpenFlow是一种新型的网络协议&#xff0c;它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后&#xff0c;OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程&#xff0c;目前使用和支持最多的是1.0和1.3版本。 OpenFlow1.3在1.0版的基础上进…

SDN与OPENFLOW 简介

本文对Openflow的发展、规范、应用和SDN的提出及相关应用做出较为客观全面的介绍。笔者希望通过本文对OpenFlow/SDN做一个初步介绍&#xff0c;以期帮助大家能够进一步深入了解和学习OpenFlow/SDN。 序言&#xff1a;从网络虚拟化说起 云计算的发展&#xff0c;是以虚拟化技术…

OpenFlow协议分析

实验环境&#xff1a;CentOS OpenDayLight-Carbon mininet WireShark 本实验通过wireshark抓包分析openflow1.3协议的各种报文与字段。 抓包 首先安装好实验所需的软件&#xff0c;这里不多赘述&#xff0c;需要的可以点击查看&#xff1a;mininet多方法安装&#xff0c;控制…