在SUN的J3D里面并没有提供对3DS格式的文件的导入。但是3DS格式的文件又很常见。为此,我们需要借用第三方的工具,来把3DS里面的模型导入到程序中。

我们用的是Loader3ds这个工具

我们还是看一个简单的例子吧

/*

* Test2.java

*

* Created on 2007-10-4, 15:28:14

*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package test1;

import com.microcrowd.loader.java3d.max3ds.Loader3DS;

import com.sun.j3d.loaders.Scene;

import com.sun.j3d.utils.behaviors.mouse.MouseRotate;

import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;

import com.sun.j3d.utils.behaviors.mouse.MouseWheelZoom;

import com.sun.j3d.utils.universe.SimpleUniverse;

import java.awt.Color;

import java.io.FileNotFoundException;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.media.j3d.Alpha;

import javax.media.j3d.BoundingSphere;

import javax.media.j3d.BranchGroup;

import javax.media.j3d.DirectionalLight;

import javax.media.j3d.Transform3D;

import javax.media.j3d.TransformGroup;

import javax.vecmath.Color3f;

import javax.vecmath.Point3d;

import javax.vecmath.Vector3f;

/**

*

* @author hadeslee

*/

public class Test2 {

public Test2() {

build();

}

private void build() {

try {

BranchGroup bg = loadBranchGroup();

SimpleUniverse u = new SimpleUniverse();

u.getViewingPlatform().setNominalViewingTransform();

u.addBranchGraph(bg);

} catch (FileNotFoundException ex) {

Logger.getLogger(Test2.class.getName()).log(Level.SEVERE, null, ex);

}

}

private BranchGroup loadBranchGroup() throws FileNotFoundException {

Loader3DS dd = new Loader3DS();

Scene scene = dd.load("01.3DS");

System.out.println("scene=" + scene);

if (scene != null) {

BranchGroup bjRoot = new BranchGroup();

BranchGroup bg = scene.getSceneGroup();

TransformGroup bjTrans = new TransformGroup();

Transform3D trans=new Transform3D();

trans.setScale(0.3f);

objTrans.setTransform(trans);

objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

objTrans.addChild(bg);

objRoot.addChild(objTrans);

BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

MouseRotate behavior. = new MouseRotate();

behavior.setTransformGroup(objTrans);

objTrans.addChild(behavior);

behavior.setSchedulingBounds(bounds);

MouseTranslate tr = new MouseTranslate();

tr.setTransformGroup(objTrans);

objTrans.addChild(tr);

tr.setSchedulingBounds(bounds);

MouseWheelZoom tr1 = new MouseWheelZoom();

tr1.setTransformGroup(objTrans);

objTrans.addChild(tr1);

tr1.setSchedulingBounds(bounds);

Color3f light1Color = new Color3f(Color.RED);

Vector3f light1Direction = new Vector3f(0f, 0f, -10f);

DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);

light1.setInfluencingBounds(bounds);

objRoot.addChild(light1);

return objRoot;

}

return null;

}

public static void main(String[] args) {

new Test2();

}

}

我们从一个3DS文件里面导出了一个场景 ,当然也可以导出更多其它的东西。01.3ds大家可以替换成自己的文件,还有一点要注意的就是,因为3Ds MAX的一些设置和J3D里面不一定一样,所以你导入进来以后,可能会什么都看不到,所以最好是设置为鼠标可以控制大小和位置的,这样就可以自己去找到我们导入的模型,然后根据我们找到的位置,在程序里面再给它定好位。

还有可以导入其它格式的第三方的库,大家都可以去研究一下,以丰富J3D的素材。

java如何使用3dmax中的文件_在java3d里面使用3DS格式的文件相关推荐

  1. 怎么用stata打开dta文件_用shell命令打开任意格式的文件

    hello,大家好,又来到了每周一期的知识大课堂啦,每期的知识大课堂,我们都会分享一个实用的知识点.本期的知识大课堂为大家带来的是:shell命令的使用方法. 在很多情况下,我们需要在应用程序中直接打 ...

  2. java代码在jsp中怎么写_在jsp中写java代码

    该服务器上的所有的访问者的所有 jsp 页面 D.该服务器上的所有的访问者的所有 jsp 页面和 Java 程序 6.在 JSP 中调用 JavaBean 时不会用到的标记是( )...... jav ...

  3. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项

    Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...

  4. c++ 写入文件_利用Python把数据存储在csv文件中

    鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...

  5. java如何向数据库中插入数据_如何控制Java代码向数据库中插入数据

    慕哥6287543 Java程序向数据库中插入数据,代码如下:123456789101112131415161718192021222324252627282930313233343536373839 ...

  6. qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头

    点击上方"开发者的花花世界",选择"设为星标"技术干货不定时送达! 这是一个知识点 方便快捷的给结构化数据文件分割大小并保留文件的表头,几十个G的结构化文件不仅 ...

  7. 如何恢复录音删除的录音文件_硬盘分区数据误删除如何恢复?文件删除不用急...

    硬盘分区数据误删除如何恢复?相信很多人在安装系统或者重装电脑时,往往也都会对电脑原有数据的卷大小进行调整,以此来满足我们日常使用的需求.然而对于一些新手来说,在操作时也都容易不小心把整个硬盘的分区给删 ...

  8. java读取doc、docx、ppt、pptx、xls、xlsx格式的文件

    前言: 通常我们用apache 的POI库对以上文档进行操作,apache POI官网 apache POI官网 这里推荐到官网下载导入到项目,maven下载的它会缺少几个包. 格式上后缀带x(doc ...

  9. python操作xls文件_【转】使用Python操作XLS文件

    我在网上找了下,发现至少有两种方法,第一种是直接操作excle的com库,当然python自带的lib里面已经给我们封装好了实现,直接使用就可以 了,win32com.client,这种方法甚至可以直 ...

最新文章

  1. mysql实现心跳表_第29问:MySQL 的复制心跳说它不想跳了
  2. 概述VB.NET正则表达式简化程序代码
  3. MySQL 如何查找删除重复行?
  4. java字符串替换标点符号_替换/忽略字符串java中的标点符号
  5. Survivor区详解
  6. 螺旋测微器 flash_使用测微计收集应用程序指标
  7. dbgrideh 为什么只一行_Mysql性能优化:为什么count(*)这么慢?
  8. 继承类 基类的赋值_Chapter10:继承与派生(四)
  9. linux redhat配置yum源为网易(163)源的方法
  10. AcWing 1960. 闪烁(状态压缩+枚举)
  11. LINUX查看一个进程用的内存准确数量
  12. 细说API – 认证、授权和凭证
  13. 浅谈大学综合能源服务
  14. 文件服务器phpstudy,使用phpstudy搭建ftp服务器
  15. 计算机基本信息分别代表什么意思,视频基本信息格式不正确是什么意思
  16. Java如何生成彩色二维码(利用zxing包)
  17. 用c语言做个报数游戏和验证码系统
  18. 从零开始手写VIO 第二章 IMU传感器
  19. Docker可视化工具Portainer安装
  20. 做题心得篇12.26

热门文章

  1. 2021上海站(重温经典)
  2. 电脑怎么设置定时关机?分享2个简单操作!
  3. 论文阅读笔记(9):加权稀疏子空间表示——子空间聚类、约束聚类和主动学习的统一框架
  4. RFID的标签天线应该怎么仿真?--(1)
  5. 关于整形数据与浮点型数据相加易错点
  6. 腾讯微博qq说说备份导出工具_微信重要数据怎么保存?微信聊天记录备份可以吗?...
  7. 网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第0篇)
  8. Nginx编译安装vts监控模块
  9. HA(高可用)系统设计原则
  10. 中科大计算机博士毕业证注明专业吗,中科大一博士点立新规:发篇中文文章才能毕业...