Java3D教程系列五:将Java3D与Java平台技术的

合集下载

Java3D文档信息的可视化

Java3D文档信息的可视化

Jv 3 文档信 息 的 可视 化 aa D
王 非 ,赵强 ,唐 定 勇
( 西南 科 技大 学 计 算 机科 学学 院 , 四川 绵 阳 6 1 1) 2 0 0 摘要 : 利用 Jv3 进 行 文档信 息三 维可视 化 ,其 场景 图可 含 多个 场 所 节点 。每 个 节点拥 有 一 到 多个 分 支节 点 , a aD 在 其下 面建 立一 个基 准 坐标 系 ,便 可相 对 谊 坐标 系摆放 所 需 形体 或其 他转 换 节点 ,构 造 出复 的 物体 。构 造三 维 场景
文档信息可视化将 文档数据信息和 知识 转化 为 视觉形式 ,从而可发现 隐藏 在信息 内部 的特 征和规 律…。典型的文档信息可视化模 型如 图 1 。
3 Jv 3 实现 三维 可 视 化 aaD
31 a a D 特 点 .Jv 3
Jv 3 a aD把 O e G pn L和 D rc i t e X底层 技术包装在 Jv a a接 口中。使 3 技术 变得不 再繁琐且可加入 到 D
Jv3 aaD应用程序须先创建一个虚拟空间对象并且至少把一个场所对 象附加之 上,再构建 出所需场景 图像 。 关键词:文档信息;三维可视化;Jv 3 ;虚拟 空间 aaD 中 圈分类 号 :T 32 T 372 文 献标 识码 #A P 1 ; P 1.
Viu l ai n o x c me t n o m ai n o a a D s a i to fTe t z Do u n sI f r to n J v 3
维普资讯
^ 工 ●. 化 I .
软件技m
S fwa eT c nq e o t r e h iu
O. . t ma i n I Au o to 2 0 。 o . 5 No 4 0 6 V 12 , .

Java3D类简单说明

Java3D类简单说明

Java3D类简单说明很长时间没有听到关于Java3D的消息了,好像Sun已经放弃了Java3D一样,不过Java3D 作为一门纯正的面向对象的3D技术,还是很值得我们学习和使用的。

不过话说回来Java3D 开发的真是比较粗糙。

下面介绍些Java3D常用的类吧。

Canvas3D 类Canvas3D 类继承自Abstract Windowing Toolkit (AWT)类的Canvas类.在场景图的视图分支图中,至少要引用一个 Canvas3D对象(注:有可能存在多个Canvas3D对象,为了使演示简单,在使用SimpleUniverse类时,在程序中仅有 Canvas3D类的一个实例)。

关于Canvas 类更多的信息,请参考AWT。

附录B中提供了一系列参考。

Canvas3D 类的构造函数Canvas3D(GraphicsConfiguration graphicsconfiguration) 构造并初始化一个新的Canvas3D对象,Java 3D可以在给定的GraphicsConfiguration对象条件下渲染这个对象。

这是 AWT Canvas类的扩展的类。

关于GraphicsConfiguration 对象的更多信息请参考Java 2D规范。

这也是JDK 1.2 AWT的一部分。

Transform3D 类Transform3D 对象用于进行3D几何形变比于平移和旋转。

这些对象一般仅仅用于创建一个TransformGroup对象。

首先, Transform3D对象可能基于一些Transform3D对象的组合而创建,然後就用这个Transform3D来构建一个] TransformGroup对象。

Transform3D默认的构造函数一个通常的变换对象就表示为一个4x4双精度浮点矩阵。

这种数学表示是以行为主的。

一个Transform3D对象不是在场景图中用到的,而是用于指定TransformGroup对象的图形变换的。

Java3D总结

Java3D总结

Java3D介绍Java3d是适应与internet 环境下开发的三维图形开发包,它针对底层库openGL 和DirectX 的封装。

这样使得他们摆脱了单机三维束缚,面向与网络方向。

OpenGL :图形编程库。

(如坐标的变化,基本形体,关照效果等)DirectX :微软公司三维库传统下的Internet 图形处理,数据不是从本地硬盘中读取,运行环境也不是事先安装好的,如果用OpenGL 等传统的可视手段,只能在Web服务器端生成图像,在发到客户端显示。

但是当前的网络传输能力是不可能满足的。

(但是java3的是传输的不是图像本生,而是三维图像生成的程序和数据)当前下的Java3d是这样的:java3d是基于OpenGL或DirectX底层的API。

他和java 一样需要安装,jre(java虚拟机)一次编程,跨平台运行。

所以说他很好的运用了pc机的硬件加速器。

(当前我们现在用的是WebStart来下载java3d程序,他保证了如果服务器端没有升级变化时,只需要下载一次,以后就可以直接运行)。

Java3d 本质是一个交互式三维图形应用编程接口(api),他可以和java2d,swing,awt 结合。

其目标是:让用户在浏览器中观看或操作三维动画图形。

一次编程,到处运行。

适应不同的软件平台。

适应各种显示环境和输入设备。

Java3d的编程思想Java3d编程的空间采用场景图结构,是一种有向无环图。

如图:locale下有一到多个branchgroup节点,在他下有一个基准坐标系transformgroup,就可以相对此坐标系摆放所需的形体(shape3d)也可以给出形体的外观appearance及geometry。

所以:他就是将许多对象安放在这个虚拟空间的过程,在设置各个方面的属性,如:形状,位置,外观,贴图,透明效果等;再在三维环境下设置灯光,雾,背景,声音等。

最后定义我们自己的观察角度,最终达到效果。

java3D

java3D

Java3d整理Java3d基础环境配置1.1安装JDK1.2安装官网下载最新版本简单实例2.1新建java项目2.2导入基本jar包,jar包下载2.3编写代码package measoft.java3d.base;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.TransformGroup;import javax.vecmath.Color3f;import javax.vecmath.Point3d;import javax.vecmath.Vector3f;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.geometry.Cone;import com.sun.j3d.utils.universe.SimpleUniverse; /*** 使用了SimpleUniverse对象,使得基本步骤比较简单:* 1.创建一个Canvas3D对象。

* 2.创建并定制一个SimpleUniverse对象,该对象引用前一步创建的Canvas3D对象* 3.构建内容子图* 4.编译内容子图* 5.将内容子图插入SimpleUniverse的Locale中*** @author J_nan**/publicclass MyCone extends Applet {public BranchGroupcreateSceneGroup(){/*** 一、 1.创建一个包含对象的数据结构2.生成坐标系3.将坐标系添加到跟节点上4.设置场景的有效范围*/BranchGroupobjRoot = new BranchGroup();TransformGroupobjTrans = new TransformGroup();objRoot.addChild(objTrans);BoundingSphere bounds = new BoundingSphere(newPoint3d(0.0,0.0,0.0),100.0);/*** 二、1. 创建背景颜色 2.设置背景边界 3.添加背景到场景中*/Color3f bgColor = new Color3f(0.0f,0.0f,0.0f);Background bg = new Background(bgColor);bg.setApplicationBounds(bounds);objRoot.addChild(bg);/*** 三、1. 添加平行光 2.给指定的bounds设定光的范围界限*/Color3f directionalLightColor = new Color3f(1.f,1.f,1.f);Vector3f vec = new Vector3f(0.f,0.f,-1.0f);DirectionalLightdirectionalLight =new DirectionalLight(directionalLightColor,vec);directionalLight.setInfluencingBounds(bounds);objRoot.addChild(directionalLight);/*** 四、1.设置外观 2.设置材料 3.生成基本圆锥*/Appearance app = new Appearance();Material material = new Material();material.setDiffuseColor(new Color3f(10.f,1.0f,0.0f));app.setMaterial(material);Cone cone = new Cone(.5f,1.0f,1,app);objRoot.addChild(cone);/*** 五、返回objRoot*/return objRoot;}public MyCone(){setLayout(new BorderLayout());GraphicsConfigurationconfig =SimpleUniverse.getPreferredConfiguration();/*** 第一步:Canvas3D类提供了一个3D渲染绘图画布,构造并初始化一个新的Canvas3D对象*/Canvas3D c = new Canvas3D(config);/*** 第二步:创建虚拟空间*/SimpleUniverse u = new SimpleUniverse(c);/*** 第三步:构建内容子图*/BranchGroup scene = createSceneGroup();/*** 第四步:编译内容子图*/pile();/*** 第五步:将内容子图插入SimpleUniverse的Locale中*/u.addBranchGraph(scene);add("Center",c);//安放观察点u.getViewingPlatform().setNominalViewingTransform();}publicstaticvoid main(String[] args) {new MainFrame(new MyCone(),400,300);}}运行效果如图:编写JAVA3D程序的一般步骤:A.SceneGraphObject的子类是构建场景图的基石。

JAVA3D学习系列——面的生成(上)

JAVA3D学习系列——面的生成(上)

JA V A3D学习系列(9)----- 面的生成(上)汕头大学机电系张杰(jzhang@)一. 生成平面的对象及其定义JA V A3D可通过编程显示出面来,面有两种:三角形和四边形,相应的对象为Triangle和Quad。

JA V A3D用于生成平面的对象有:1. TriangleArrayTriangleArray (int vertexCount, int vertexFormat )2. QuadArrayQuadArray (int vertexCount, int vertexFormat )3. TriangleStripArrayTriangleStripArray ( int vertexCount , int vertexFormat,int[] stripV ertexCounts )4. TriangleFanArrayTriangleFanArray ( int vertexCount ,int vetexFormat,int[] stripV ertexCounts )5. IndexedTriangleArrayIndexedTriangleArray (int vertexCount , int vertexFormat,int indexCount)6. IndexedQuadArrayIndexedQuadArray (int vertexCount , int vertexFormat,int indexCount )7. IndexedTriangleStripArrayIndexedTriangleStripArray( int vertexCount, int vertexFormat,int indexCount, int stripIndexCounts[])8. IndexedTriangleFanArrayIndexedTriangleFanArray ( int vertexCount, int vertexFormat,int indexCount, int stripIndexCounts[])二. TriangleArray生成的面TriangleArray来生成,利用它可以生成三角片面我们先看一下TriangleArray的定义:TriangleArray (int vertexCount, int vertexFormat )这里:vertexCount表示顶点的个数(必须为三的倍数)vertexFormat表示顶点的格式(第七讲有介绍)下面我们看一个利用TriangleArray的例子,例子里有九个点。

Java编程详解(微课版)-习题答案.docx

Java编程详解(微课版)-习题答案.docx

【1】第一章一、选择题1.D2.A3.B二、简答题(1)c是面向过程的,java是面向对象的。

(2)Java可以跨平台,在windows 和unix 等系统上都可以很好的运行。

(3)JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c语言中指针操作失误,如野指针所造成的系统崩溃。

但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。

这有利于Java程序的安全。

(4)在java中引入了package的概念,使面向对象和面向组件开发更加方便,而在c 语言中没有package概念,需要其他方式来实现。

(5)Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。

(6)Java程序中所有的对象都是用new操作符建立在内存堆栈上,Java自动进行无需内存回收操作,不需要程序员进行删除。

(7)Java没有函数,作为一个比c语言更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。

【2】第二章一、选择题BBDDB二、简答题1、类是对象的概括,对象是类的具体体现。

1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

对象具有状态,一个对象用数据值来描述它的状态。

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

2)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。

因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

2、构造器是Java学习中很重要的一个概念,构造器可以提供许多特殊的方法,构造器作为一种方法,负责类中成员变量(域)的初始化。

java程序设计实训教程参考答案

java程序设计实训教程参考答案
public static void main(String[] args){
Graduate student1 = new Graduate();
student1.setName("zhang3");
student1.setScore(0, 78);
student1.setScore(1, 92);
(4)初始化、终止以及迭代部分都可以为空语句(分号不能省),三者均为空的时候,相当于一个无限循环,如果循环体中不包括break等语句,也没有可捕获的异常,那么将成为一个死循环,这在一般的程序设计中是应该能避免的。
(5)可以在for语句的初始化部分声明一个变量,它的作用域为整个for语句。
(6)在初始化部分和迭代部分可以使用逗号语句来进行多个操作。逗号语句是用逗号分隔的语句序列。
5.×6.×7.×8.√
二、选择题
1. A、B2. B、C、D
3. A、B4. D
5. C6. C
7. A8. A
三、填空题
1.顺序结构、选择结构、循环结构
2. for语句、while语句和do-while语句
3. if语句、switch语句

1.任何复杂的程序均可由三种控制结构表示,这三种结构是:顺序结构、选择结构和循环结构。
System.exit(0);
}
Vector sum = new Vector(A.getDimension());
for (int i = 0; i < A.getDimension(); i ++){
sum.element[i] = A.element[i] + B.element[i];
}
return sum;

java3d官方教程

java3d官方教程

Java 3D API官方教程[翻译一]开始学习Java3D API1第一章、入门本章目标:学习了本章之后,你能:•能用一些基本术语解释什么是Java3D•能描述出Java3D程序的基本结构。

•能识别出Java3D API中的许多类。

•能编写出简单的Java3D动画程序。

Java 3D API是一个用于编写显示和交互操作三维图形对象的程序的接口。

Java 3D也是在Java2 Java开发包(JDK)上的标准扩展。

这个API提供了用于创建和操纵3D图形的高端构成方法以及渲染该图形的一些数据结构。

Java3D 提供了创建图片、可视化、动画以及3D交互图形应用程序的函数。

1.1 什么是Java 3D API?Javae 3D API是作为复杂三维图形和声音渲染系统的接口的一系列层次的JAVA类的统称。

程序员可以用Java3D开发创建和操纵3D图形对象的高端应用。

这个图形对象处于一个被渲染了的虚拟世界(Virtual Universe)中。

这个API就是用设计来用于灵活方便地创建精确的各种大小的虚拟环境,可以大到大空物体,小到比原子还小。

除了这些功能之外,API的使用也很直接,API能自动处理渲染的细节,由于利用了Java线程机制的优势,所以Java3D的渲染器的工作是并行进行的。

并且渲染器也能自动地优化并提高渲染性能。

一个Java3D程序创建了Java3D对象的实际,并将其置之于场景图数据结构中。

在这个场景图中,所有3D对象用完全指定了虚拟世界内容和其如何被渲染的树形结构存储,Java3D程序能写成能独立运行的应用程序,或者写成能嵌入在浏览器中运行的Applets,或者二者兼备。

1.2 Java 3D API每一个Java3D程序至少部分地集成了来自Java类层次中的对象,这些对象的集合称做虚拟世界(virtual universe),这就是将要被渲染的对象。

此API在javax.media.j3d包中定义了超过100多个类,这些类我们平常称做Java3D 核心类。

计算机毕业设计99基于java3D的模型动作引擎

计算机毕业设计99基于java3D的模型动作引擎

基于java3D的模型动作引擎学院:学生姓名:孙宏宇指导教师:[中文摘要]本工程着重对既有三维模型的复用,和对模型动画的制作。

现在业界很少有基于java3D的动画引擎,本工程也是对java3d在动画方面的创新。

工程围绕对3D Max文件格式的解析,动画帧的设计,动画文件的存储,动画的驱动,以及用户界面的设计做了详尽的说明,并提供了可运行的范例代码。

在工程的尾声部分,着重说明了代码的重构过程和调试方式。

使代码更加精简,易读。

[英文摘要]This project, to already having the replying and using of a threedimensional model emphatically, and the making of the model animation. Seldom there is a engine of animation based on java3D in the industry now, this project is innovation in animation to java3d too. The project centres on the analysis of 3D Max file layout, the design of the animation frame, the memory of the animation file correctly, drive of animation, and design , user of interface make exhaustive explanation, have offered the example code that can be operated. In some of coda of the project , have stated constructing the course and debugging the way again of the code emphatically. Make the code simplified further, legible.[关键词]Java3D、GUI、Swing、GUI、重构1、概述1.1需求分析在3D愈来愈普及的情况下,了解并掌握相关知识已经成为从业者的当务之急。

java3D与计算机图形学期末复习

java3D与计算机图形学期末复习

java3D与计算机图形学期末复习第一章绪论图片与定义摘自《Java 3D 与计算机三维动态图形网络编程设计》重点复习:1、线架模型英文:Wire Frame以线段、圆弧和一些简单的曲面来表示一个三维模型。

2、Brep英文:Boundary Representation中文含义:边界面表示将一个封闭的几何体模型所使用的多边形面称为该几何体的Brep边界面。

所有的多面体模型都是一种Brep边界面模型。

最常用的数据结构是翼边结构与半边结构3、NURBS曲面英文:Non Uniform Rational B-Spline中文含义:非均匀有理B样条曲面4、Solid实体Solid实体几何模型主要通过组成该几何体的边界面所形成的半空间来表示一个物体。

平面或曲面的半空间是指一个空间平面或曲面将空间分为两部分,如果一部分位于物体的内部则另一部分位于物体的外部。

5、CSG方法英文:Constructive Solid Geometry中文含义:构造实体几何实体造型(Solid Modeling)就是通过各种实体之间的并、交、差、布尔运算生成一个封闭实体的过程。

通过简单实体(如立方体﹑圆柱体、球体﹑圆锥体、扫描表示法产生的体等)之间的正则布尔运算生成比较复杂的体。

其中运用了二叉树来记录构造过程,这种表示也被称为实体的隐式模型(Unevaluted Model)或过程模型(Procedure Model)。

6、VOXEL(体素)含义:三维图形显示的最小单元规则体素空间是将一个立方体分别沿x、y、z轴进行等间距均匀分割所形成的,每一个体素都是一个小立方体。

其中每一个小体素所具有属性的定义分两种情况。

(1)用小体素8个角点的不同属性来定义,通过三次线性插值,可求出该体素内任一点的属性值,也可求出体素中心点的属性值,该中心点属性值,在体素足够小的情况下可用来代表整个体素的属性。

(2)直接定义小体素中心点的属性值﹐用该中心点属性值代表该体素的属性。

JAVA实用教程(第三版)课后习题及答案

JAVA实用教程(第三版)课后习题及答案
{returna;}}public classB
{
void g()
{
A a=new A(); a.weight=23f; a.f(3,4);
}}
答:a.weight=23f;错
1.编写一个类,该类创建的对象可以计算等差数列的和。解:classDengCha{
int start,d; DengCha(){
Case 4: System.out.printf(“%c”,’d’); Break;
}
}
输出:a,b, b,c,d,d
9.下列System.out.printf语句输出的结果是什么?
Char a[]={‘a’,’b’,’c’,’d’,’e’}; For(i=0; i<=a.length/2; i++)
答:不,只加载本程序用到的类到内存中,因为java程序是动态加载, 字节码类文件。
16.有哪几种访问权限修饰符?说出一种的作用。答:访问权限修饰符有public,private,protected.
Private作用是只允许本类的对象访问。
17.怎样反编译一个类?
答:使用SDK提供的反编译器javap.exe文件可以实现将字节码文件反编译为源码文件。可查看源码中public方法和public成员变量的名字。如加入参数-private则可列出其全部的成员方法和成员变量。
9.请阐述为什么类方法不能调用实例方法?
答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道一个方法从何处开始执
行,当然不能调用。
10.请阐述,为什么类方法中不能操作实例成员变量?

Java经典入门教程pdf完整版-潭州软件学院

Java经典入门教程pdf完整版-潭州软件学院

1:Java标准版: JSE(Java Standard Edition) JSE(JavaStandardEdition)是Sun公司针对桌面开发以及低端商务计算解决方案而开 发的版本,例如:我们平常熟悉的Application桌面应用程序。这个版本是个基础,它也是 我们平常开发和使用最多的技术,Java的主要的技术将在这个版本中体现。本书主要讲的 就是 JSE。 2:Java微缩版:JME(Java Micro Edition) JME(Java,Micro Edition)是对标准版 JSE进行功能缩减后的版本,于1999年6月 由Sun Microsystems第一次推向Java团体。它是一项能更好满足Java开发人员不同需求 的广泛倡议的一部分。Sun Microsystems将 JME定义为“一种以广泛的消费性产品为目标 的高度优化的Java运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导 航系统。” JME是致力于消费产品和嵌入式设备的开发人员的最佳选择。尽管早期人们对它看好而 且 Java开发人员团体中的热衷人士也不少,然而,JME最近才开始从其影响更大的同属产 品JEE和JSE的阴影中走出其不成熟期。 JME在开发面向内存有限的移动终端(例如寻呼机、移动电话)的应用时,显得尤其实用。 因为它是建立在操作系统之上的,使得应用的开发无须考虑太多特殊的硬件配置类型或操作 系统。因此,开发商也无须为不同的终端建立特殊的应用,制造商也只需要简单地使它们的 操作平台可以支持JME便可。 3:Java企业版:JEE(Java Enterprise Edition)
JEE(Java Enterprise Edition)是一种利用Java平台来简化企业解决方案的开发、部 署和管理相关的复杂问题的体系结构。JEE技术的基础就是核心Java平台或Java平台的标 准版,JEE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存 取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等, 同时还提供了对EJB(EnterpriseJavaBeans)、JavaServletsAPI、JSP(JavaServerPages) 以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时 间的体系结构。 JEE体系结构提供中间层集成框架来满足无需太多费用而又需要高可用性、高可靠性以 及可扩展性的应用的需求。通过提供统一的开发平台,JEE降低了开发多层应用的费用和复 杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise Java Beans,有良 好的向导支持打包和部署应用,添加了目录支持,增强了安全机制,提高了性能。 JEE是对标准版进行功能扩展,提供一系列功能,用来解决进行企业应用开发中所面临 的复杂的问题。具体的我们会放到后面 JEE的课程去讲。 4:三个版本之间的关系 JEE几乎完全包含 JSE的功能,然后在 JSE的基础上添加了很多新的功能。 JME主要是 JSE的功能子集,然后再加上一部分额外添加的功能。

JAVA3D的网络三维技术的设计与实现论文

JAVA3D的网络三维技术的设计与实现论文

基于Java3D的网络三维技术的设计与实现摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。

3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用到各个领域。

然而互联网的出现,却使3D图形技术发生了和正在发生着微妙而深刻的变化。

Web3D 协会(前身是VRML协会)最先使用Web3D术语,这一术语的出现反映了这种变化的全貌,没有人能严格定义Web3D,在这里我们把Web3D理解为:互联网上的3D图形技术,互联网代表了未来的新技术,很明显,3D图形和动画将在互联网上占有重要的地位。

Java3D API是Sun定义的用于实现3D显示的接口。

使用Java 的重要理由之一是它的平台无关性。

Java3D提供了基于Java的上层接口。

Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。

这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性本文以Java3D为开发平台,利用Java语言强大的网络功能,实现了在网页上对3D动画进行显示和操作。

关键字:Java3D、Web3D、三维Abstract: The Internet appearance and the rapid development caused each domain to IT industry have the deep transformation, it initiated some new technical inevitably the appearance. The 3D graph technology is not a new topic, in the graph workstation down to on PC machine already more or day matured, and has applied to each domain. However the Internet appearance, caused the 3D graph technology to occur actually and is occurring is being subtle but the deep transformation. The Web3D association (predecessor is the VRML association) uses the Web3D terminology first, this terminology appearance had reflected this kind of change complete picture, nobody can strictly define Web3D, in here we do the Web3D understanding is: On the Internet 3D graph technology, the Internet has represented the future new technology, is very obvious, the 3D graph and the animation will hold the important status on the Internet.Java3D API is the Sun definition uses in realizing the 3D demonstration connection. Uses one of Java important reasons is its platform irrelevant. Java3D has provided based on the Java upper formation connection. Java3D OpenGL and DirectX these first floor technology packing in Java connection. This kind of brand-new design causes the 3D technology to change no longer tediously and may join to J2SE, the J2EE entire wrap overhead construction, these characteristics have guaranteed the Java3D technology formidableextension.This article develops the platform take Java3D, uses the Java language formidable network function nf, realized has carried on the demonstration and the operation on the homepage to the 3D animation.Key word: Java3D, Web3D,3D目录基于JA V A3D的网络三维技术的设计与实现 (1)摘要: (1)ABSTRACT: (1)第一章绪论 (5)§1.1引言 (5)§1.2互联网3D图形技术的应用 (5)§1.3JA VA3D在W EB中的成功 (6)第二章JA V A3D技术的简介 (7)§2.1J A V A3D概述 (7)2.1.1 Java3D简介 (7)2.1.2 Java3D与其他三维技术的比较 (7)§2.2J A V A3D的场景图结构 (9)2.2.1 虚拟宇宙(Virtual Universe) (10)2.2.2 Java3D的坐标系统 (10)2.2.3 场景(Locale) (12)§2.3实现三维世界 (13)2.3.1 Java3D的观察模式 (13)2.3.2 Java3D中用来定义观察的对象 (14)2.3.3 在三维世界中建立、移动观察点 (16)2.3.4 Java3D的网络基础 (17)第三章实现JA V A3D结构体系的方法 (18)§3.1总体设计 (18)§3.2基本形体的生成 (18)3.2.1平板的生成 (18)3.2.2 立方体的生成 (18)3.2.3 圆锥的生成 (19)3.2.4 球体的生成 (19)3.2.5.圆柱体的生成 (19)§3.3点、线、面的生成 (20)3.3.1点的生成 (20)3.3.2直线的生成 (21)3.3.3面的生成 (21)§3.4外部复杂形体的调用 (21)§3.5背景变换的实现方法 (22)3.5.1 灯光 (22)3.5.2 纹理贴图 (23)3.5.3 雾 (24)§3.6动画的生成 (24)第四章JA V A3D场景的实现 (24)§4.1J A V A3D的实现流程 (24)§4.2JA VA3D的建模 (25)4.2.1 生成场景: (25)4.2.2 Temple的圆柱体的构建 (26)4.2.3 Tower的构建 (27)§4.3动画的实现 (29)4.3.1 调用galleon.obj文件 (29)4.3.2 物体转动 (29)4.3.3场景的移动 (30)§4.4背景变换 (31)4.4.1 创建灯光 (31)4.4.2 创建背景图片 (34)4.4.3 指数雾 (35)4.4.4 背景音乐 (36)§4.5在网页上显示3D图形 (37)第五章实践和展望 (39)§5.1W EB3D技术发展前景 (39)§5.2论文总结 (40)参考文献 (40)第一章绪论§1.1 引言互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。

Java3D

Java3D
二. 如何编写 JAVA3D 源程序 用文本编辑工具编辑源程序,和其它 JAVA 程序一样,程序后缀为 JAVA。
三. 如何运行 JAVA3D 源程序 用 JAVAC 编译源程序,生成 class 文件。根据文件的类型,选择用 JAVA 或 APPLETVIEWER 运行程序。JAVA3D 程序可以为 APPLICATION 程序,也可以为 APPLET 程序,因而 JAVA3D 程序也可以摆放在网页上,当然这时候我们必须在浏览器上 做一些设置工作(以后再介绍)。
在运行 applet 程序时,我们需要编写一个 HTML 文件: 先用 javac 将 JAVA3D 源程序编译成 class 文件,再用 appletviewer 运行 HTML 文件。虽然程序是 applet 程序,但我们也可以将其变成 application 程序,这 时我们只需将程序头尾的四个注释行的注释符号去掉即可,这时我们可以用 java 来运行它: java SimpleCone
二。OPENGL、VRML、DIRECT3D、JAVA3D 的比较 由于 OPENGL 的跨平台特性,许多人利用 OPENGL 编写三维应用程序,不过对于一 个非计算专业的人员来说,利用 OPENGL 编写出复杂的三维应用程序是比较困难 的,且不说 C(C++)语言的掌握需要花费大量时间精力,当我们需要处理复杂 问题的时候,我们不得不自己完成大量非常繁琐的工作。当然,对于编程高手来 说,OPENGL 是他们发挥才能的非常好的工具。
PDF 文件使用 "pdfFactory Pro" 试用版本创建
Virtual Universe | |----------------------------------| || Locale Locale | | ----------------+----------------|||| |||| BG BG BG BG (BG--BranchGroup) |||| | | | | (S---Shape) S TG TG TG (TG--| ||||| A G S S View Platform || | | (A---Appearance) ----+---- ----+---- (G---Geometry) |||| |||| AGAG

-Java编程技术基础(微课版)-习题答案课后习题答案1-14章全书章节练习题答案

-Java编程技术基础(微课版)-习题答案课后习题答案1-14章全书章节练习题答案

1.首先开发者编写的源程序是.java格式的,.java代码经过编译器的首次编译,生成字节码文件(.class文件),字节码文件是无法直接被计算机识别的,这一点与C语言不同。

字节码文件可以随平台进行移植,但无论在何种平台上运行都要经过JVM的解释,也就是将中间的字节码文件解释成计算机能够识别的机器语言,从而在各种环境下运行起来。

2.详见本章1.7.3节1.使用固定的编码格式对于编程而言有什么意义?编码是用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。

为保证编码的正确性,编码要规范化、标准化,即需有标准的编码格式。

2.如果没有关键字或者在程序中随意命名,可能会引发什么后果?代码混乱,自定义的变量等名称与已有功能无法分辨。

3. 常量与变量的区别以及各自的引用场合。

常量一旦定义了就不允许被修改。

往大的说,定义常量,是不想让某些固定的属性或方法被调用后改变了值,或者被继承后重写。

变量相对使用灵活,无论是创建还是销毁等。

4. 列举一些常见的数据,分析使用Java中什么数据类型表示更合适。

byte 年龄、short 年份、int 端口号、long 身份证号、boolean 是否为男性、char 字母表中的每个字母、float 汽车排量、double 圆周率。

5. 思考数组的优点与缺点,提出一些能使其更加方便的使用提议。

优点:使用简单缺点:长度不可变建议:可以自己写一个动态数组类,可动态控制其长度和元素顺序。

1.表达式中的运算符应该尽可能的简练吗?不应该,过于简练的代码会影响其阅读性。

2.循环语句与条件语句嵌套使用的弊端是什么,如何在开发中进行取舍?嵌套使用的弊端在于增加代码层次,影响其阅读性,在开发中应该在不影响功能和性能的前提下尽量的减少嵌套的使用。

3.break、continue、return有何异同点?相同点:都会改变程序本省的执行流程。

不同点:作用的力度不同。

1.创建一个包,编写一个学生类并提供适当的属性与行为。

如何搭建java3d环境 (图)

如何搭建java3d环境 (图)

Netbeans下如何搭建java3D环境(图)摘要在Netbeans IDE 工具下搭建java3D的开发环境主要有三步:一是安装java3d需要的包,二是在netbeans导入java3d需要的包,三是运行java3d的测试程序;最终Netbeans能够运行显示出“Java ”的3D效果图像,如下图1所示:图1 Java 的3D效果图像1.搭建步骤:1.1下载java3d-1_5_1-windows-i586.exe安装包并安装到电脑;1)、下载地址:/file/c2k157vw#java3d-1-5-1-windows-i586.exe。

2)、安装java3d-1_5_1-windows-i586.exe,默认路径为:C:\ProgramFiles\Java\Java3D\1.5.1。

图2 java3d-1_5_1-windows-i586.exe默认安装路径1.2 新建工程,导入java3d的3个包j3dcore.jar、j3dutils.jar、vecmath.jar 1)、选择文件>新建项目>Java>Java 应用程序,如下图3填写项目名称“Java3D”,点击完成。

图3 新建Java 3 工程2)、导入java3d 的3个文件操作:如图4鼠标右击库>添加JAR/文件夹,如图5添加3个jar文件包图4图53)、如图6、图7,鼠标右击“java3d>新建>Java类”填写“Java3dTest”新建java 测试类Java3dTest.java,并将Java3dTest类中的源码全部替换为以下源码:图 6图7package java3d;/**** @author Administrator*/import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.utils.universe.*;public class Java3dTest {public static void main(String[] args) {Java3dTest t = new Java3dTest();t.setUp();}public void setUp() {JFrame jf = new JFrame("Welcome");// kill the window on closejf.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent winEvent) { System.exit(0);}});JPanel panel = new JPanel();panel.setLayout(new GridLayout(1, 1, 2, 2));GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();Canvas3D canvas3D = new Canvas3D(config);canvas3D.setSize(360, 160);SimpleUniverse universe = new SimpleUniverse(canvas3D);BranchGroup group = new BranchGroup();addObjects(group);addLights(group);universe.getViewingPlatform().setNominalViewingTransform();universe.addBranchGraph(group);panel.add(canvas3D);jf.getContentPane().add(panel, BorderLayout.CENTER);jf.pack();jf.setVisible(true);}public void addLights(BranchGroup group) {BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),1000.0);Color3f light1Color = new Color3f(1.0f, 1.0f, 1.0f);Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);light1.setInfluencingBounds(bounds);group.addChild(light1);// Set up the ambient lightColor3f ambientColor = new Color3f(.1f, .1f, .1f);AmbientLight ambientLightNode = newAmbientLight(ambientColor);ambientLightNode.setInfluencingBounds(bounds);group.addChild(ambientLightNode);}private void addObjects(BranchGroup group) {Font3D f3d = new Font3D(new Font("TestFont", Font.PLAIN, 2), new FontExtrusion());Text3D text = new Text3D(f3d, new String(""), new Point3f(-3.5f, -.5f, -4.5f));text.setString("");Color3f white = new Color3f(1.0f, 1.0f, 1.0f);Color3f blue = new Color3f(.2f, 0.2f, 0.6f);Appearance a = new Appearance();Material m = new Material(blue, blue, blue, white, 80.0f);m.setLightingEnable(true);a.setMaterial(m);Shape3D sh = new Shape3D();sh.setGeometry(text);sh.setAppearance(a);TransformGroup tg = new TransformGroup();Transform3D t3d = new Transform3D();Transform3D tDown = new Transform3D();Transform3D rot = new Transform3D();Vector3f v3f = new Vector3f(-1.6f, -1.35f, -6.5f);t3d.setTranslation(v3f);rot.rotX(Math.PI / 5);t3d.mul(rot);v3f = new Vector3f(0, -1.4f, 0f);tDown.setTranslation(v3f);t3d.mul(tDown);tg.setTransform(t3d);tg.addChild(sh);group.addChild(tg);}}4)运行Java3dTest.java 文件,将会显示如下错误(注意以下黄色背景的文字,说在java的library路径中缺少了j3dcore-d3d 文件):2012-6-10 21:42:31 javax.media.j3d.NativePipeline getSupportedOglVendor严重: ng.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.library.path Exception in thread "main" ng.UnsatisfiedLinkError: no j3dcore-d3d in java.library.pathat ng.ClassLoader.loadLibrary(ClassLoader.java:1734)at ng.Runtime.loadLibrary0(Runtime.java:823)at ng.System.loadLibrary(System.java:1028)at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)at java.security.AccessController.doPrivileged(Native Method)at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)at java3d.Java3dTest.setUp(Java3dTest.java:36)at java3d.Java3dTest.main(Java3dTest.java:22)Java Result: 1成功生成(总时间:1 秒)解决方案:复制java3d-1_5_1-windows-i586.exe安装路径下的4个文件j3dcore-d3d.dll、j3dcore-ogl.dll、j3dcore-ogl-cg.dll和j3dcore-ogl-chk.dll到Netbeans默认的安装路径下,再运行程序即可,如图8图9、图10、图11红色圈的1,2,3,4步骤:图8图9 Netbeans默认的JDK路径图10 复制4个dll文件图11 把4个文件粘贴到Netbeans默认JDK路径下1.3 运行例子,测试java3D环境图12 运行文件解决方案参考:/blog/1153584小结:在Netbeans搭建java3D的前提是:可以在Netbeans运行一般的程序,此配置关键在于在Netbeans中添加3个包j3dcore.jar、j3dutils.jar、vecmath.jar 和在Netbeans下使用的默认JDK路径下添加4个库文件j3dcore-d3d.dll、j3dcore-ogl.dll、j3dcore-ogl-cg.dll和j3dcore-ogl-chk.dll,而这一共7个文件包在安装java3d-1_5_1-windows-i586.exe即可获得。

java3D安装使用教程

java3D安装使用教程

在Eclipse中运行Java3D的程序此页解释了如何在Eclipse中使用Java3D的库运行程序。

1. 下载Java3D的。

访问此网页下载为您的系统Java3D的库。

2. 下载用于Windows包含一个安装程序。

我发现最简单的安装在我的Java文件夹,包含在我的情况同一个标准的Java, jdk1.6.0_18 下载Java3D的文件和目录。

在运行安装程序:3. 启动Eclipse 。

你可以创建一个Java3D 的代码为您的新项目,或 使用一个已经存在的项目。

我将创建一个新的名为3DExamples 项目4. 下载HelloUniverse.java 和添加项目,从第3步。

HelloUniverse.java 有很多语法错误,因为它是指一些Java3D 的非 标准类。

我们需要告诉到哪里寻找这些类的项目。

File 忑庆 Sourtu Refactor Navigate Search'Package Explorer .一 _A6-Jjz?- SDExamples_package)4戲 Helloliniverse,iava+ 妙 JR.E System Library [lavaSEL J ' MOHistogronns「i A4M^stBrMindO MWator川卜5. 在Eclipse 菜单,选择’项目”- > 属性Java - 3D£xamplesAielloUnivtrse Java - Eclrpse SDKFile Edt bounce Fiefactor Navigate Searchijfiftn ProiectClose Project6. 在弹出窗口中 选择Java Build Path,然后单击Add Library ...揆 钮。

也 Properties fx>r 3DFsamplesProject References R^actwing Historv Run/Dsbug SettingsAdd E^terrd Class FolR,un Window Help S Package Explorer 23!A 塔[A:hl+BjavcL*J_A6 - :V SDExamples」-*了 (default package)* HelloLlmv&rse.javci由■ JRE System Library pavaSE 匚j'AlOHistograms} "r i4MA^h=rWinrlBurti Project Build WcrkJng Sst Clean..,Build Adtorndticalty「. Generate Javadoc.■・Pt aperties .at¥ DTt redCtype Fite i t*xtJava Build PathResource BaanWb Path BuldersJava 5uild Path + + +J谢& Code 鱼 Java Compilei <Java EditorJavadoc Loeitiori| tS Sou 心 | ® Projatts ] ■ Libraries JARs .^nd Foldfers an the buld path :i+ 戛 JR.E Syetem Library [JavaSE-1. E]丈 j Order andi ExportAdd JAR.S... Ptdd Eiterrial JWR5Add Variabfon ..Add Library.... Add Class Felder,7.在下一个窗口中,选择用户库,点击’下一步”按钮。

利用Java3D构建虚拟校园场景的方法

利用Java3D构建虚拟校园场景的方法

浅谈利用Java3D构建虚拟校园场景的方法摘要:本文指出了java3d技术特点,并对通过java3d如何构建虚拟校园场景的方法进行了一番论述。

关键词:java3d 虚拟校园场景构建随着互联网技术的迅猛发展,极大地促进了虚拟现实技术的普遍应用,比如,科学计算可视化、教育与训练、医学、娱乐等诸多方面。

而随着计算机网络和虚拟现实等各项技术的全面发展,实现了建立基于web的虚拟校园目标,用户只需要利用互联网就能够观察到校园的景观、诸多的设施以及服务等,彷如自己就身处在校园之中。

通过虚拟校园的构建,为广大的用户提供了良好的对校园信息访问的平台,很好地推动了校园建设步伐以及远程教学的发展步伐。

1 java3d技术特点实际使用最多的3d技术有opcncl、direct3d、vrml、java3d;从网络应用模式的角度上来看,opcncl和direct3d以开发c/s模式为主,vrml和java3d以开发b/s模式为主。

opcncl独立于硬件和窗口系统,其移植性较强,但其运行环境无法得到浏览器的支持。

direct3d主要是由microsoft公司研发的专业的3d程序接口,其具有较强的功能,但仅仅限制于在win平台上运行。

vrml是一种被普遍应用的web3d技术,其属于静态场景的描述性语言,存在着动态交互接口,但必须借助于其他编程语言方可实现。

java3d主要是java语言在三维图形领域中的拓展,可融入至j2se、j2ee的整体架构中,具有很好的拓展性及平台无关性,与此同时,由浏览器nctscape与ie提供了对jvm的支持,只需要在操作平台上进行jvm 的安装就能够有效运行applet小程序,如此一来,java3d构建的虚拟场景就完全能在浏览器上进行绘制。

java3d的应用编程接口很好地为我们提供了三维场景的构建体系,具有可产生出简单或者复杂的几何形体;支持形体变动与移动;有着较好的键盘、鼠标、定时等诸多行为的判断力;可实施动态建模等各项功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java3D教程系列五:将Java3D与Java平台技术的Java3D教程系列五:将Java3D与
Java平台技术的
Java3D可以很容易的与Java平台的其他技术相结合,如Applet、JSP、Serverlet、JDBC、EJB等。

100%的纯Java实现是Java3D可以与如此多的Java平台技术结合的根本原因:
同是Java平台保证Java3D可以在Applet中实现;
Applet使Java3D可以轻易的在网页中显示;
JSP、Serverlet技术保证将动态网页技术用于Java3D显示;
Serverlet本身就是J2EE平台的核心技术,这使得Java3D可以搭建于J2EE平台。

更可以使用所有J2EE的其他技术:JDBC、EJB、JMS…
在网页上显示3D图形
Java3D一个最大的特性是可以使用Applet作为显示容器,例3和例4的代码分别显示了如何在Applet中显示3D图形和在网页文件中(HTML)嵌入该Applet。

Public class HelloUniverse extends Applet {
private SimpleUniverse u = null; 例3 Applet实现Java3D
,HTML,
public BranchGroup createSceneGraph() {
,HEAD, 例4 在网页嵌入显示3D Applet
BranchGroup objRoot = new BranchGroup();
,TITLE,Hello, Universe!,/TITLE, 动态网页技术与Java3D
….
,/HEAD, 通过Jsp和Serverlet,可以使Java3D在网页中"动"起来。

虽然
return objRoot;
Java3D本身就有三维动画的功能,但是这里的"动"指得是赋予了程序编写人员,BODY BGCOLOR="#000000",
}
,applet align=middle code="HelloUniverse.class"
public void init() { width=256 height=256,
Canvas3D c = new Canvas3D(config); ,/applet,
对Java3D动态的控制能力。

改造上面的HelloUniverse,例5 的jsp代码可以实现控制旋转的正方体大小的功能。

通过每次Random对象生成的随机数,立方体的大小也是随即改变,这段程执行的效果,如图6、7所示。

,%@ page contentType="text/html; charset=GBK" %,
,HTML, 例5实现可以动态调整三位物体大小的jsp代码
,HEAD,
,TITLE,Hello, Universe!,/TITLE, 图6 Jsp显示效果1
,/HEAD,
,BODY BGCOLOR="#000000",
图6 Jsp显示效果2
,%int i=300;%,
J2EE平台对Java3D的支持
,%float j=i*(new java.util.Random()).nextFloat();%
, 上面的例子只是通过动态设定Applet大小来控制Java3D的显示,实际上可应通过更多的方法实现Jsp、Serverlet对Java3D显示效果的控制,甚至可以将,applet align=middle code="HelloUniverse.class"
Java3D置于J2EE平台的显示层,实现对EJB、JDBC的调用。

width=,%=j%, height=,%=j%,,
,/applet, 实现Java3D利用J2EE平台资源的方法很多,甚至可以直接在Java3D的实现类中直接调用EJB。

但是从J2EE平台的设计模式出发,把对EJB调用放到Jsp,/BODY,
中,而将返回的结果作为参数传入实现Java3D的Applet类中是一个更好的模式。

,/HTML, 具体代码见例6。

,%@ page contentType="text/html; charset=GBK" %,
,%@ page import="javax.ejb.*" %,
,%@ page import="java.rmi.*"%,
,%@ page import="javax.rmi.PortableRemoteObject"%,
,%@ page import="javax.naming.*"%,
,%@ page import="java.util.Properties"%,
,HTML,
,HEAD,
,TITLE,Hello, Universe!,/TITLE,
,/HEAD,
,BODY BGCOLOR="#000000",
,% try{
Properties properties = null;
Context context = new InitialContext(properties);
Object ref = context.lookup("Customer"); EJBHome home=
(EJBHome)PortableRemoteObject.narrow(ref,CustomerHome.class);
CustomerHome home=(CustomerHome)home; Customer customer=
home.findByPrimaryKey("1000000");
String data = customer.getData(); }
catch(Exception e){e.printStackTrace();} %,
,applet align=middle code="HelloUniverse.class" width=200 height=200, ,param name="Data" value=,%=data%,,
,/applet,
,/BODY,
,/HTML,
例6调用EJB作为Java3D参数代码
上面的代码首先访问JNDI名为"Customer"的EJB,然后将返回值作为参数传入
实现Java3D的Applet。

Java3D与J2EE是相互支持的关系:Java3D丰富、强化了J2EE的显示模式,使
略显枯燥的J2EE客户端光鲜多彩;J2EE平台为Java3D提供了支持,功能强大的Server端处理能力为三维显示所需的复杂计算和大数据量提供了有力的支持。

我们可以想象下面的两幅场景:
通讯卫星将全国所有道路、建筑信息录入大型数据库;EJB实现应用逻辑并将之
部署到AppServer上;所有支持JVM的手机、PDA、车载GPS可以通过调用EJB显示
与真实世界一模一样的周围环境。

地震局根据实际勘测到的地表等高线信息绘制二维矢量图,存为FDX文件;将
二维图像转为三维实现的复杂算法放到EJB中实现;Jsp页面调用EJB后可以在
Appet上实现三维GIS的显示。

有了Java3D和Java,这一切都不只是梦想。

相关文档
最新文档