java如何使用3dmax中的文件_在java3d里面使用3DS格式的文件
在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格式的文件相关推荐
- 怎么用stata打开dta文件_用shell命令打开任意格式的文件
hello,大家好,又来到了每周一期的知识大课堂啦,每期的知识大课堂,我们都会分享一个实用的知识点.本期的知识大课堂为大家带来的是:shell命令的使用方法. 在很多情况下,我们需要在应用程序中直接打 ...
- java代码在jsp中怎么写_在jsp中写java代码
该服务器上的所有的访问者的所有 jsp 页面 D.该服务器上的所有的访问者的所有 jsp 页面和 Java 程序 6.在 JSP 中调用 JavaBean 时不会用到的标记是( )...... jav ...
- pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项
Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...
- c++ 写入文件_利用Python把数据存储在csv文件中
鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...
- java如何向数据库中插入数据_如何控制Java代码向数据库中插入数据
慕哥6287543 Java程序向数据库中插入数据,代码如下:123456789101112131415161718192021222324252627282930313233343536373839 ...
- qt 快速按行读取文件_这是知识点之Linux下分割文件并保留文件头
点击上方"开发者的花花世界",选择"设为星标"技术干货不定时送达! 这是一个知识点 方便快捷的给结构化数据文件分割大小并保留文件的表头,几十个G的结构化文件不仅 ...
- 如何恢复录音删除的录音文件_硬盘分区数据误删除如何恢复?文件删除不用急...
硬盘分区数据误删除如何恢复?相信很多人在安装系统或者重装电脑时,往往也都会对电脑原有数据的卷大小进行调整,以此来满足我们日常使用的需求.然而对于一些新手来说,在操作时也都容易不小心把整个硬盘的分区给删 ...
- java读取doc、docx、ppt、pptx、xls、xlsx格式的文件
前言: 通常我们用apache 的POI库对以上文档进行操作,apache POI官网 apache POI官网 这里推荐到官网下载导入到项目,maven下载的它会缺少几个包. 格式上后缀带x(doc ...
- python操作xls文件_【转】使用Python操作XLS文件
我在网上找了下,发现至少有两种方法,第一种是直接操作excle的com库,当然python自带的lib里面已经给我们封装好了实现,直接使用就可以 了,win32com.client,这种方法甚至可以直 ...
最新文章
- mysql实现心跳表_第29问:MySQL 的复制心跳说它不想跳了
- 概述VB.NET正则表达式简化程序代码
- MySQL 如何查找删除重复行?
- java字符串替换标点符号_替换/忽略字符串java中的标点符号
- Survivor区详解
- 螺旋测微器 flash_使用测微计收集应用程序指标
- dbgrideh 为什么只一行_Mysql性能优化:为什么count(*)这么慢?
- 继承类 基类的赋值_Chapter10:继承与派生(四)
- linux redhat配置yum源为网易(163)源的方法
- AcWing 1960. 闪烁(状态压缩+枚举)
- LINUX查看一个进程用的内存准确数量
- 细说API – 认证、授权和凭证
- 浅谈大学综合能源服务
- 文件服务器phpstudy,使用phpstudy搭建ftp服务器
- 计算机基本信息分别代表什么意思,视频基本信息格式不正确是什么意思
- Java如何生成彩色二维码(利用zxing包)
- 用c语言做个报数游戏和验证码系统
- 从零开始手写VIO 第二章 IMU传感器
- Docker可视化工具Portainer安装
- 做题心得篇12.26
热门文章
- 2021上海站(重温经典)
- 电脑怎么设置定时关机?分享2个简单操作!
- 论文阅读笔记(9):加权稀疏子空间表示——子空间聚类、约束聚类和主动学习的统一框架
- RFID的标签天线应该怎么仿真?--(1)
- 关于整形数据与浮点型数据相加易错点
- 腾讯微博qq说说备份导出工具_微信重要数据怎么保存?微信聊天记录备份可以吗?...
- 网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第0篇)
- Nginx编译安装vts监控模块
- HA(高可用)系统设计原则
- 中科大计算机博士毕业证注明专业吗,中科大一博士点立新规:发篇中文文章才能毕业...