yusq456 2018-07-08 08:26 采纳率: 40%
浏览 2714
已结题

Java怎么实现导入3D模型并数据web展示?

java springmvc web端展示 读取3D .3ds .dxf等模型,并加入散点式数据展示,采用什么技术、插件来实现?

  • 写回答

1条回答 默认 最新

  • kittyzero 2018-07-08 09:02
    关注

    文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模型及纹理:

    文2中给出的代码实际上是可以保证导入Obj文件同时加载纹理的,只不过对Obj文件有一定的要求。Java3D可以导入的含纹理的Obj模型,其格式为Wavefront obj。(不保证其它格式的文件也可以)这种文件除了有一个模型文件.obj外,还含有纹理文件.mtl以及相应的各种格式的纹理图片。这样的Obj模型可以通过maya生成。

    模型.obj文件除模型本身数据外,还会指定纹理文件.mtl的路径,关键字为mtllib。纹理文件.mtl中也会包含纹理图片的路径,也就是这个路径会误导使用者,使得得到的模型无法载入纹理,其问题的原因在与Java3d加载Obj的类——ObjectFile。

    在加载模型时,ObjectFile会根据模型文件的路径获取一个basedir目录路径,这个目录路径会同时用在解析.obj文件和.mtl文件中,也就是说在解析这两个文件时,文件路径解析的结果是basedir+文件名。这就导致一个问题,当.obj文件、.mtl文件以及纹理贴图不在同一个目录时,是无法加载纹理的。换句话说,这两个文件的路径是失效的,只要文件名有效。有兴趣的朋友可以打开.obj文件和.mtl文件看一下,设置文件的路径,然后在程序中进行调试看看。

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

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器