前言

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 三维图形库使用相关推荐

  1. java 3D 第二章 java 3D基本概念

    java 3D 第二章 java 3D基本概念 java 3D基本概念 java 3D的包及其功能 java 3D 高分辨率大尺度坐标 Java 3D场景图(Scene Graph) VirtualU ...

  2. Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]

    评论 # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2006-08-24 23:41 gy # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2007-03-2 ...

  3. java 3d 配置_Java 3D简介及安装运行

    简介 Java 3D是对Java的一个用来显示三维图形的扩展.用Java 3D编写的程序可以运行在很多不同类型的计算机或互联网上. Java 3D类库提供了比其它多数图形库更简单的接口,但仍有足够的能 ...

  4. 游戏开发--开源软件7--xith3D(java 3D引擎)

    2019独角兽企业重金招聘Python工程师标准>>> Xith3D是高性能的Java 3D引擎,主要面向3D游戏,数据可视化,三维场景原型等. 最突出的特点是基于scenegrap ...

  5. java 3D学习笔记

    Java3D 运行及开发环境的安装运行Java 3D for Windows (OpenGL Version) SDK for the JDK (includes Runtime) (java3d-1 ...

  6. Java 3D 开发

    OPENGL.VRML.DIRECT3D.JAVA3D的比较 Java3D建立在JAVA基础之上,JAVA语言的简单性使JAVA3D的推广有了可能.它实现了以下三维显示能够用到的功能: 生成简单或复杂 ...

  7. 【宋飞】 java 3D学习笔记

    Java3D 运行及开发环境的安装运行Java 3D for Windows (OpenGL Version) SDK for the JDK (includes Runtime) (java3d-1 ...

  8. java 3d 配置_Java3D的环境配置

    下面以Windows系统为例: 安装步骤: 1.下载Java JDK,并安装它.目前的最新版是1_5_0_07,文件名为jdk-1_5_0_07-windows-i586-p.exe,文件大小约为34 ...

  9. 3D三维向量的单位化、正规化、标准化推导及代码实现

    3D三维向量的单位化.正规化.标准化推导及代码实现 可以用来法向量等向量的单位化

最新文章

  1. 测序数据学习笔记:bcl2fastq 安装
  2. OUTER在mysql_MySQL不支持OUTER APPLY
  3. 漏洞检测,流量和性能监控
  4. 16年寒假随笔(4)
  5. 十大python开发软件-7款公认比较出色的Python IDE,你值得拥有!
  6. Linux基本C编程fork、signal、time以及用printf在终端打印一个GUI窗口 - 使用cygwin
  7. (网络编程)URL下载网络资源
  8. 2021最新报告:一文洞察智慧金融发展现状
  9. 快速体验 Sentinel 集群限流功能,只需简单几步
  10. [图]运动鞋用“囧”字做图案卖断货
  11. 查看oracle小补丁号,oracle 补丁号查询
  12. 系统调用----sandir
  13. 牛客多校第五场 G subsequence 1 最长公共子序列/组合数
  14. git revert 之后怎么撤销_git撤销操作
  15. Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
  16. 【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览
  17. mysql mrgmyisam_mysql MRG_MyISAM 引擎报错解决
  18. 运行maven生成的jar包显示class “XXX“ not found
  19. 端点科技春招笔试回忆(Java方向)
  20. 区块链版《绝地求生》游戏—Blast Royale攻略

热门文章

  1. element 日期选择器 只能选择今天之前或选择今天之后的日期
  2. 【计算机网络学习笔记】(汇总目录)
  3. 20170622《指导生活的算法》
  4. Horizon8基础环境准备02——ADDNSDHCP
  5. C++开发工程师学习路线
  6. 全国程序员薪酬大曝光!看完我酸了,33% 程序员月薪达到.....
  7. Android 仿大众点评团购购买条浮动效果
  8. lua和php那个好,phpor
  9. python简单的加法问题_Python实现20以内加减法练习
  10. 多线程并发在电商系统下的追本溯源-电商实战