Java 3d 三维图形库使用
前言
Java 3D是Java语言在三维图形领域的扩展,是一组应用编程接口(API)。利用Java 3D提供的API,可以编写出基于网页的三维动画、各种计算机辅助教学软件和三维游戏。如果对java语言比较熟悉使用Java 3D开发三维图形是很适合的。
java3d下载安装
下载:
oracle官网:Java 3D 1.5.1
csdn下载:java 3d(window-64位)1.5.1下载
jDK依赖导入:
复制java 3d dll文件到java.exe的bin目录:
需复制如下dll文件:
复制到jdk的bin目录:
idea导入java 3d依赖:
maven项目在在依赖下右击,选择以下选项:
然后点击+添加java 3d的如下3个依赖:
java3d简单使用
代码示例:
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Material;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;public class Lantern extends Applet {public BranchGroup createBranchGroup(){//定义BranchGroupBranchGroup BranchGroupRoot = new BranchGroup ();//创建球心在坐标系原点球形范围BoundingSphere bounds = new BoundingSphere(new Point3d( 0.0,0.0,0.0),100.0);//定义背景颜色Color3f bgColor=new Color3f(.0f,.0f,.0f);Background bg=new Background(bgColor);bg.setApplicationBounds(bounds);BranchGroupRoot.addChild(bg);//定义平行光、颜色、照射方向与作用范围Color3f directionColor=new Color3f(1.f,1.f,1.f);Vector3f vec=new Vector3f(1.0f,-1.0f,-1.0f);DirectionalLight directionalLight= new DirectionalLight(directionColor,vec);directionalLight.setInfluencingBounds(bounds);BranchGroupRoot.addChild(directionalLight);//定义总的TransformGroup:transformgroupTransformGroup transformgroup=new TransformGroup();//设置对该TransformGroup的读写能力transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);//将该TransformGroup加入到BranchGroupRoot中BranchGroupRoot.addChild(transformgroup);//定义鼠标对场景的旋转、平移与放大功能MouseRotate mouserotate=new MouseRotate();mouserotate.setTransformGroup(transformgroup);BranchGroupRoot.addChild(mouserotate);mouserotate.setSchedulingBounds(bounds);MouseZoom mousezoom=new MouseZoom();mousezoom.setSchedulingBounds(bounds);BranchGroupRoot.addChild(mousezoom);mousezoom.setSchedulingBounds(bounds);MouseTranslate mousetranslate=new MouseTranslate();mousetranslate.setTransformGroup(transformgroup);BranchGroupRoot.addChild(mousetranslate);mousetranslate.setSchedulingBounds(bounds);//定义两个三维型体的外观Appearance app1=new Appearance();Material material1=new Material();material1.setDiffuseColor(new Color3f(0.7f,0.3f,0.0f));app1.setMaterial(material1);Appearance app2=new Appearance();Material material2=new Material();material2.setDiffuseColor(new Color3f(0.0f,1.0f,0.0f));app2.setMaterial(material2);//定义一个球体于一个长方体的大小、外观属性与坐标变换,并定义相应的TransformGroup:ta1、ta2TransformGroup tg1=new TransformGroup();tg1.addChild(new Sphere(0.3f,app1));Transform3D t=new Transform3D();t.setTranslation(new Vector3f(0.f,-0.425f,0.f));TransformGroup tg2=new TransformGroup(t);tg2.addChild(new Box(0.5f,0.05f,0.5f,app2));//将定义好的两个TransformGroup(tg1、tg2)加入到总的transformgrouptransformgroup.addChild(tg1);transformgroup.addChild(tg2);//对BranchGroupRoot预编译BranchGroupRoot.compile();//通过方法名返回BranchGroupRootreturn BranchGroupRoot;}public Lantern(){//设置显示界面的相关参数setLayout(new BorderLayout());//创建投影平面Canvas3DGraphicsConfiguration gc= SimpleUniverse.getPreferredConfiguration();Canvas3D c=new Canvas3D(gc);//将投影平面上的图像显示在显示平面的中间add("Center",c);//设置SimpleUniverse,由系统选择视点在z轴的正向,观察方向沿z轴反向BranchGroup BranchGroupScene=createBranchGroup();SimpleUniverse u=new SimpleUniverse(c);u.getViewingPlatform().setNominalViewingTransform();//将BranchGroup:BranchGroupScene加入到SimpleUniverse:u中u.addBranchGraph(BranchGroupScene);}public static void main(String[] args){//通过MainFrame显示图像new MainFrame(new Lantern(),300,300);}}
运行效果·:
Java 3d 三维图形库使用相关推荐
- java 3D 第二章 java 3D基本概念
java 3D 第二章 java 3D基本概念 java 3D基本概念 java 3D的包及其功能 java 3D 高分辨率大尺度坐标 Java 3D场景图(Scene Graph) VirtualU ...
- Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]
评论 # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2006-08-24 23:41 gy # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2007-03-2 ...
- java 3d 配置_Java 3D简介及安装运行
简介 Java 3D是对Java的一个用来显示三维图形的扩展.用Java 3D编写的程序可以运行在很多不同类型的计算机或互联网上. Java 3D类库提供了比其它多数图形库更简单的接口,但仍有足够的能 ...
- 游戏开发--开源软件7--xith3D(java 3D引擎)
2019独角兽企业重金招聘Python工程师标准>>> Xith3D是高性能的Java 3D引擎,主要面向3D游戏,数据可视化,三维场景原型等. 最突出的特点是基于scenegrap ...
- java 3D学习笔记
Java3D 运行及开发环境的安装运行Java 3D for Windows (OpenGL Version) SDK for the JDK (includes Runtime) (java3d-1 ...
- Java 3D 开发
OPENGL.VRML.DIRECT3D.JAVA3D的比较 Java3D建立在JAVA基础之上,JAVA语言的简单性使JAVA3D的推广有了可能.它实现了以下三维显示能够用到的功能: 生成简单或复杂 ...
- 【宋飞】 java 3D学习笔记
Java3D 运行及开发环境的安装运行Java 3D for Windows (OpenGL Version) SDK for the JDK (includes Runtime) (java3d-1 ...
- java 3d 配置_Java3D的环境配置
下面以Windows系统为例: 安装步骤: 1.下载Java JDK,并安装它.目前的最新版是1_5_0_07,文件名为jdk-1_5_0_07-windows-i586-p.exe,文件大小约为34 ...
- 3D三维向量的单位化、正规化、标准化推导及代码实现
3D三维向量的单位化.正规化.标准化推导及代码实现 可以用来法向量等向量的单位化
最新文章
- 测序数据学习笔记:bcl2fastq 安装
- OUTER在mysql_MySQL不支持OUTER APPLY
- 漏洞检测,流量和性能监控
- 16年寒假随笔(4)
- 十大python开发软件-7款公认比较出色的Python IDE,你值得拥有!
- Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin
- (网络编程)URL下载网络资源
- 2021最新报告:一文洞察智慧金融发展现状
- 快速体验 Sentinel 集群限流功能,只需简单几步
- [图]运动鞋用“囧”字做图案卖断货
- 查看oracle小补丁号,oracle 补丁号查询
- 系统调用----sandir
- 牛客多校第五场 G subsequence 1 最长公共子序列/组合数
- git revert 之后怎么撤销_git撤销操作
- Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
- 【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览
- mysql mrgmyisam_mysql MRG_MyISAM 引擎报错解决
- 运行maven生成的jar包显示class “XXX“ not found
- 端点科技春招笔试回忆(Java方向)
- 区块链版《绝地求生》游戏—Blast Royale攻略
热门文章
- element 日期选择器 只能选择今天之前或选择今天之后的日期
- 【计算机网络学习笔记】(汇总目录)
- 20170622《指导生活的算法》
- Horizon8基础环境准备02——ADDNSDHCP
- C++开发工程师学习路线
- 全国程序员薪酬大曝光!看完我酸了,33% 程序员月薪达到.....
- Android 仿大众点评团购购买条浮动效果
- lua和php那个好,phpor
- python简单的加法问题_Python实现20以内加减法练习
- 多线程并发在电商系统下的追本溯源-电商实战