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,这种方法甚至可以直 ...
最新文章
- 【JS】JS中数值型字符串相加变成拼接字符串的解决方法
- python scipy卷积 图像卷积
- SpringBoot常见功能特性分析
- eclipse工程 'cocostudio/CocoStudio.h' file not found
- leetcode-876. 链表的中间结点解法
- 一入前端深似海,从此红尘是路人系列第七弹之孤独的剑客-单例模式
- python 中间件
- mybatis热加载的实现
- OpenMP对于嵌套循环应该添加多少个parallel for
- vim 配置文件留存
- 阿里开源框架Jarslink1.6.1新特性
- Power Tools for TFS 11 Beta
- 101.对称二叉树(力扣leetcode) 博主可答疑该问题
- Android 动态壁纸
- MyBatis的插件
- vue 开发app处理手机返回键问题
- UIWebView加载本地HTML文件
- 【FPGA 学习笔记】sof文件和jic文件的区别,程序固化(将sof文件装换位jic文件)
- python条形图一直长_Python MatPlotlib条形图调整宽度
- 小程序日期(日历)时间 选择器组件
热门文章
- 超声波测距系统的设计实现(基于STM32 )-软件部分
- 改进多目标粒子群储能选址定容matlab 采用matlab编程得到33节点系统改进多目标储能选址定容方案,采用基于信息熵的序数偏好法(TOPSIS)求解储能的最优接入方案
- Exchange信箱迁移(只适用于DC和exh不在同一服务器上
- 计算机网络(山东联盟)滨州学院,知到_信号与系统(滨州学院-山东联盟)_期末答案2020年_计算机网络基础及应用_中国大学MOOC_测试答案...
- 【进阶版】机器学习之特征降维、超参数调优及检验方法(04)
- 新闻稿发布效果的关键点,如何发软文 品牌营销推广怎么做
- js发送https请求问题处理总结
- 钢铁企业无组织废气排放管控势在必行-管控治一体化平台
- 一款仿电商平台的培训课程app ------ 悦乐学
- 编辑图片,简单的去除图片水印方法