Java3D基本图形功能介绍

合集下载

java3d课程设计

java3d课程设计

java3d课程设计一、课程目标知识目标:1. 理解Java 3D图形渲染的原理,掌握Java 3D基本概念和术语;2. 学会使用Java 3D API创建基本的3D几何体,并能对其进行变换和组合;3. 掌握Java 3D中的光照、纹理映射和材质等视觉效果的实现方法;4. 了解Java 3D的动画和交互功能,能够实现简单的动画和交互效果。

技能目标:1. 能够运用Java 3D API设计和开发简单的3D场景和物体;2. 能够独立解决Java 3D编程过程中遇到的问题,具备一定的调试和优化能力;3. 能够运用所学知识进行团队协作,共同完成一个综合性的Java 3D项目。

情感态度价值观目标:1. 培养学生对3D图形编程的兴趣和热情,激发学生的创新意识;2. 培养学生严谨的编程态度和良好的编程习惯,提高学生的自主学习能力;3. 通过团队合作,培养学生的沟通协调能力和团队精神。

课程性质:本课程为选修课程,适用于对3D图形编程感兴趣的初中学生。

学生特点:学生对计算机编程有一定的基础,具备Java编程能力,对3D图形编程有较高的兴趣。

教学要求:教师应注重理论与实践相结合,引导学生通过实践掌握Java 3D编程技能。

在教学过程中,关注学生的个体差异,鼓励学生提问、思考和讨论,提高学生的参与度和积极性。

同时,注重培养学生的团队协作能力和综合素质。

通过本课程的学习,使学生能够独立设计和开发简单的3D应用,为后续学习奠定基础。

二、教学内容1. Java 3D基本概念与术语:讲解场景图、节点、外观、变换等基本概念,使学生理解Java 3D编程的框架和原理。

- 教材章节:第一章 Java 3D简介2. 创建3D几何体:学习使用Java 3D API创建基本几何体,如立方体、球体、圆柱体等,并进行组合和变换。

- 教材章节:第二章 创建3D几何体3. 光照与材质:介绍Java 3D中的光照模型,学习如何为物体添加光源、材质和纹理映射,实现真实感渲染。

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。

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

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

Java的Graphics类进行绘图的方法详解

Java的Graphics类进行绘图的方法详解

Java的Graphics类进⾏绘图的⽅法详解Graphics类提供基本绘图⽅法,Graphics2D类提供更强⼤的绘图能⼒。

Graphics类提供基本的⼏何图形绘制⽅法,主要有:画线段、画矩形、画圆、画带颜⾊的图形、画椭圆、画圆弧、画多边形等。

1. 画线在窗⼝画⼀条线段,可以使⽤Graphics类的drawLine()⽅法:drawLine(int x1,int y1,int x2,int y2) 例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画⼀个点。

g.drawLine(3,3,50,50);//画⼀条线段g.drawLine(100,100,100,100);//画⼀个点。

2. 画矩形有两种矩形:普通型和圆⾓型。

(1) 画普通矩形有两个⽅法:drawRect(int x,int y,int width,int height):画线框围起来的矩形。

其中参数x和y指定左上⾓的位置,参数width和height是矩形的宽和⾼。

fillRect(int x,int y,int width,int height):是⽤预定的颜⾊填充⼀个矩形,得到⼀个着⾊的矩形块。

以下代码是画矩形的例⼦:g.drawRect(80,100,40,25);//画线框g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着⾊块(2)画圆⾓矩形也有两个⽅法:drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是⽤线围起来的圆⾓矩形。

其中参数x和y指定矩形左上⾓的位置;参数width和heigth是矩形的宽和⾼;arcWidth和arcHeight分别是圆⾓弧的横向直径和圆⾓弧的纵向直径。

fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是⽤预定的颜⾊填充的圆⾓矩形。

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的子类是构建场景图的基石。

3d模型教程

3d模型教程

3d模型教程3D模型教程:基础概念与工具介绍三维建模是指使用计算机软件创建虚拟三维模型的过程。

在这篇教程中,我们将向你介绍基本的3D建模概念与工具。

让我们开始吧!一、概念介绍1. 三维空间:与二维平面不同,三维空间包含了高度、宽度和深度。

在3D建模中,我们可以在这个空间中创建各种形状和结构。

2. 点、线、面:3D模型是由许多点、线和面组成的。

通过连接这些基本元素,我们可以构建出复杂的形状。

3. 多边形:在3D建模中,多边形是最基本的面元素。

常见的多边形包括三角形、四边形和多边形。

多边形的边缘由线连接,形成闭合的面。

4. 顶点:顶点是多边形的角点。

通过移动、旋转和缩放顶点,我们可以改变多边形的形状。

5. 网格:网格是一组连接的多边形,构成了一个3D模型的表面。

二、工具介绍1. 3D建模软件:有许多商业和免费的3D建模软件可供选择。

常见的商业软件包括Maya、3ds Max和Blender等。

2. 视图控制:通过旋转、缩放和移动视图,我们可以在三维空间中观察和编辑模型。

3. 绘制工具:绘制工具包括点、线和面的创建工具。

通过这些工具,我们可以构建出复杂的形状。

4. 变换工具:变换工具包括移动、旋转和缩放工具。

使用这些工具,我们可以对模型的顶点、边和面进行编辑和调整。

5. 材质和纹理:材质和纹理可以给模型添加颜色、纹理和光照效果,使其更加逼真和生动。

这些只是3D建模的基础概念和工具介绍,希望能为你提供一个了解3D建模的起点。

如果你对此感兴趣,可以继续深入学习和探索更多高级技术。

祝你成功!。

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 核心类。

Java中的GUI编程

性能优化:随着硬件和软件的不断发展,Java GUI编程的性能将得到进一步的优化,提高 应用程序的响应速度和用户体验。
集成Web技术:Java GUI编程将与Web技术更加紧密地集成,使得开发者能够更加方便地 开发出功能丰富、界面美观的Web应用程序。
增强安全性:Java GUI编程将更加注重安全性,提供更多的安全特性和工具,帮助开发者 构建更加安全的应用程序。
AWT组件使用示例
组件类型:按钮、标
签、文本框、选择框 等
组件属性:颜色、字 体、大小、位置等
组件事件:点击事件
、键盘事件、鼠标事 件等
组件布局:流式布局 、网格布局、边界布 局等
JavaFX组件库
JavaFX组件库简介
标题
JavaFX组件库是Java中用于构建GUI界面的工具包
标题
提供了丰富的UI控件,如按钮、文本框、列表等
BorderPane:分为 五个区域,可以设置 子节点的位置和比例 ,适合布局复杂的界

GridPane:按照网格 布局,可以设置行、列 、跨度等属性,适合布 局规则、整齐的界面
06
HBox和VBox:分别 按照水平或垂直方向 排列子节点,可以设 置对齐方式、间距等
07
JavaFX布局管理器的 使用方法:通过设置组 件的布局管理器属性, 可以轻松实现界面布局

JavaFX事件处理机制
事件源: JavaFX组件库 中的UI组件
事件类型:包 括鼠标事件、 键盘事件、触 摸事件等
事件处理:通 过注册监听器 来实现事件处 理
监听器类型: 包括事件监听 器、动作监听 器、选择监听 器等
事件传播:事 件从源组件传 播到父组件, 直到到达根节 点

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)直接定义小体素中心点的属性值﹐用该中心点属性值代表该体素的属性。

3d编程基本原理

3d编程基本原理
3D编程基本原理是指在计算机中实现三维图形渲染和动画效果的技术原理。

以下是一些常见的基本原理:
1. 三维坐标系统:在三维空间中,使用三个坐标轴(通常是x、y 和z轴)来确定物体的位置和方向。

2. 三角形绘制:三维图形通常使用三角形作为基本的图元进行绘制。

通过确定三角形的顶点位置和颜色来绘制复杂的三维图形。

3. 光照模型:光照模型用于模拟光照对物体的影响。

常见的光照模型包括环境光、漫反射光和镜面反射光等。

4. 投影变换:在将三维物体渲染到二维屏幕上时,需要进行投影变换。

常见的投影方式包括透视投影和正交投影。

5. 纹理映射:纹理映射用于将二维图像(纹理)贴到三维物体上,以增加细节和真实感。

6. 三维变换:通过平移、旋转和缩放等变换操作,可以改变物体在三维空间中的位置、方向和大小。

7. 可见性检测:在渲染三维场景时,需要确定哪些物体是可见的,哪些是被遮挡的。

常见的可见性检测算法包括深度缓冲和剔除算法等。

8. 动画效果:通过改变物体的属性(如位置、颜色等)来实现动画效果。

常见的动画技术包括关键帧动画、骨骼动画和物理模拟等。

以上是一些常见的基本原理,实际的3D编程还涉及到更多的细节和技术,如着色器编程、阴影算法、碰撞检测等。

3D基础知识介绍PPT课件


2021/3/9
20 20
放映结束 感谢各位的批评指导!
谢 谢!
让我们共同进步
2021/3/9
21
优点:分辨率、透光率方面能保证,不会影响既有的设计架构,3D显示效果出色 缺点:技术尚在开发,产品不成熟
2021/3/9
16
3
主动快门式3D技术介绍
2021/3/9
17
主动快门式3D技术介绍
常见问题
CROSSTALK(鬼影):由于受液晶响应速度的影响,如左眼在观看左眼图像时, 会同时看到上一场残留的部分右眼图像,导致左右眼图像重叠,形成重影, 叫crosstalk,任何基于液晶显示的快门式3D电视都存在crosstalk现象。
2021/3/9
5
实现3D显像的技术概述
三、全息技术:
•全息技术是利用光波的干涉和衍射原理记录并再现物体的真实感的一种成像技术。 •全息技术再现的图像立体感强,具有真实的视觉效应。除用光波产生全息图外, 现在已发展到可用计算机产生全息图,然而需要的计算量极其巨大。 •全息术应该是3D显示的终极解决方案,但目前还有很多技术问题有待解决,短期 内难有成熟产品量产。
优点:与既有的LCD液晶工艺兼容,因此在量产性和成本上较具优势 缺点:画面亮度低,分辨率会随着显示器在同一时间播出影像的增加呈反比降低
2021/3/9
14
裸眼式3D技术
柱状透镜(Lenticular Lens)技术
柱状透镜(Lenticular Lens)技术也被称为双凸透镜或微柱透镜3D技术,其最大 的优势便是其亮度不会受到影响。柱状透镜3D技术的原理是在液晶显示屏的前面加 上一层柱状透镜,使液晶屏的像平面位于透镜的焦平面上,这样在每个柱透镜下面 的图像的像素被分成几个子像素,这样透镜就能以不同的方向投影每个子像素。于 是双眼从不同的角度观看显示屏,就看到不同的子像素。不过像素间的间隙也会被 放大,因此不能简单地叠加子像素。让柱透镜与像素列不是平行的,而是成一定的 角度。这样就可以使每一组子像素重复投射视区,而不是只投射一组视差图像。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1Java3D的虚拟场景空间设计Java3D是一种面向对象的API。

通过场景图来管理场景中的各种图形元素。

场景图是一个树状结构,在该树状结构的各级节点表示该场景中的各种图形元素。

将由各种图形元素形成的一个场景的整体称为一个虚拟空间。

在这个虚拟空间中的图形元素包括:几何体的定义数据,几何显示时的颜色、材质、透明度等属性,背景颜色,光线类型,场景的作用范围,视点、投影面及投影类型,对几何体的坐标变换等。

Java3D与Java一样对各种功能的组织同样采用父类、子类、对象实例的方式。

Java3D中规定了在一个虚拟场景空间中各种图形元素的表示符号及虚拟场景空间的组织结构。

在一个虚拟空间中可以包含多个Local节点。

一个Local节点表示一个子场景的根节点。

多个Local节点表示在该虚拟场景中有多个场景的根节点。

但是在实际应用中最常使用的是在一个虚拟空间中只包含一个子场景,也就是只包含一个Local节点。

在一个Local节点之下,可以包含一个到多个BranchGroup节点。

每个BranchGroup 节点表示一种图形元素的集合。

这种图形元素的集合主要有两种:(1)定义几何体的数据与定义该几何体的颜色、材质、透明度等外观的属性;(2)定义该几何体在显示的时候在该场景中的其他元素,如背景颜色、光源类型、视点位置与观察方向、投影平面的位置、坐标变换等。

在实际应用中,最常用的是一个Local 节点下只含有一个BranchGroup节点。

在一个Local节点下只含有一个BranchGroup节点情况下,必须定义一个Shape3D对象,在该对象中定义几何体的数据与几何体的颜色、材质、透明度等外观显示特性,该Shape3D对象一般加入在一个TransformGroup类的节点中。

在一个BranchGroup 节点之下,可以包含多个TransformGroup节点。

每个TransformGroup节点可以包含以各种或多种几何体的定义。

也可以不包含几何体的定义信息。

但是一个TransformGroup节点必须包含一个或多个Transform3D对象,表示对TransformGroup 节点中定义的几何体所进行的坐标变换。

一个Transform3D对象表示对几何体进行平移、旋转、变比等坐标变换中的一种,多个Transform3D对象的组合形成一个总的坐标变换矩阵,这个总的坐标变换矩阵就属于包含这些Transform3D对象的TransformGroup节点。

如果该TransformGroup节点中没有定义几何体,则这种坐标变换是针对于第一次定义的几何体。

如果在一个TransformGroup节点中没有定义任何的坐标变换,则该TransformGroup节点拥有默认的坐标变换矩阵,但该矩阵为单位矩阵,表示对几何体不进行任何变换。

对于坐标变换的具体方法与内容将会在后面章节中详细介绍。

View的功能主要是实现在虚拟场景中设置视点与观察方向。

Canvas3D主要用来定义一种能够显示三位物体投影的画布。

Screen3D主要将画布上三位物体的投影显示在显示器上。

Alpha节点元素对象提供了一种将一个时间值转换成Alpha值的公用方法。

当采样时,Alpha对象实际上就是一个生成0-1数的与时间有关的函数。

Alpha对象最基本的应用就是为插值的行为提供Alpha值。

Alpha对象的特征由用户定义的参数决定。

Alpha类主要用在动画设计中,对于Alpha类的使用可参考Alpha 类的说明。

Java3D所采用的坐标系:在Java3D中,几何体定义也采用该坐标系,所有的坐标变换也是针对该坐标系进行的,坐标原点在显示器的正中间。

Z轴指向屏幕之外。

X轴的正向沿水平方向向右,Y轴的正向沿垂直方向向上。

下面用生成一个圆锥体的程序实例来说明Java3D程序的基本结构。

该程序用来生成一个简单的椎体。

(见例1.1创建与显示一个圆锥体)该程序中各场景元素的关系结构如下创建简单虚拟空间SimpleUniverse:·创建BranchGroup节点对象,并将该对象加入虚拟空间中1.定义虚拟空间中的球形范围BoundingSphere2.定义虚拟空间中的背景颜色3.定义虚拟空间中的光源类型、颜色4.定义鼠标对物体的平移、旋转、放大功能定义虚拟空间的坐标变换节点TransformGroup,并设置TransformGroup的读写属性1)定义三维物体的几何数据2)定义三维物体的颜色、材质等外观属性·设置系统自动选取该虚拟空间的视点位置u.getViewingPlatform().setNominalViewingTransform(),并在投影面上对三维物体进行透视投影·将投影平面上的三维物体的透视投影显示在画布Canvas3D 上Java3D低级的图形功能集成了如Direct3D、OpenGL、QuickDraw3D、XGL中的低级图形功能。

Java3D的高级图形功能包括通过场景图方式来组织整个场景中的图形元素,并且在场景中包含了声音的功能。

一个场景图中定义了该场景中各图形元素及其相互关系。

一个场景也称为一个虚拟空间。

1.2Java3D主要包、类、子类、接口之间的关系参见文档1.3Java3D的点、线、面绘制Java3D有关点、线、面都是以数组的方式组织,这是Java3D 的一大特点Shape3D类定义所有的几何体。

它包含了几何体与该几何体的外观属性。

几何体部分定义了三维空间体的几何形状,外观属性部分定义颜色、材质等属性。

Shape3D类通过setGeometry()方法将一种几何的定义数据加入到一个Shape3D类对象index=0处。

1.3.1GeometryArray类Java3D最优秀的特点就是通过数组方式对各种几何元素进行定义,并且通过类的方式对各种几何图形元素进行定义与管理,这是面向对象的设计思想的体现。

GeometryArray类称为几何数组类。

public abstract class GeometryArray类是一个抽象类。

定义点线面、三角四边面的数组类PointArray、LineArray、TriangleArray、QuadArray等都是该类的子类。

GeometryArray包含有位置坐标数组、颜色数组、法向量数组、纹理坐标数组、顶点属性数组。

所有的颜色必须在0.0-1.0,所有的法向量都必须是单位向亮public GeometryArray(int vertexCount,int vertexFormat)构造函数:通过给定的顶点数与顶点格式创建一个空的GeometryArray 类对象。

vertexCount:在GeometryArray中表示几何体所包含的顶点数。

VertexFormat:表示这些顶点的格式,是一个多选项:其中COORDINATES:表示在该GeometryArray数组中包含顶点的坐标,并且该项是一个必选项;NORMALES:表示包含每个顶点的法向量;COLOR_3或COLOR_4:表示每个顶点的颜色,前者没有表示Alpha信息,也就是指顶点数组包括没有透明度的颜色;后者表示有Alpha的信息。

当不指定顶点格式颜色时,GeometryArray对象中的每个顶点的默认颜色都是白色;当指定了顶点格式颜色,则GeometryArray对象中的每个顶点的默认颜色都是黑色;TEXTURE_COORDINATE_2,TEXTURE_COORDINATE_3或TEXTURE_COORDINATE_4分别表示每个顶点的2D、3D或4D 纹理坐标。

GeometryArray类中定义了多种方法,这些方法用来向GeometryArray类的对象中添加几何元素。

1、setCoordinate(int index,float[] coordinate)方法:改变一个点的三个坐标值,index为点的编号。

Float[] coordinate是一个一维数组,分别表示一个点的x、y、z坐标。

setCoordinate(int index,Point3f coordinate)方法:该方法是通过Point3f的格式设置一个点的三个坐标setCoordinates(int index,float[] coordinates)方法:从index指定序号开始设置点的坐标值,index一般都取0。

其他重载方法参看文档2、用setColor、setColors方法向GeometryArray类的对象中添加颜色值。

public Color3f(float x,float y,float z)方法是Color3f类的一个构造函数,该构造函数通过设置RGB三个分量的值表示一种颜色。

三个分量的值都必须在0.0-1.0之间。

setColor(int index,Color3f color)方法:设置在index处点的颜色值,Color3f与Point3f类似,用三个浮点数表示一种颜色组合。

其他方法参看文档3.用setNormal、setNormals方法向GeometryArray类的对象中定义的点添加法向量值。

使用方法参看文档1.3.2点的生成任何复杂的形体都是由点线面组成的,体面线点之间是通过某种数据结构建立关系。

在CAD设计中,最常用的数据结构就是半边数据结构。

点是任何体定义最基本的数据单元。

1、PointArray类PointArray类的第一个构造函数:public PointArray(int vertexCount,int vertexFormat)。

PointArray类是GeometryArray 类的子类,因此,它继承了GeometryArray类中定义的方法与变量。

2、PointArributes类PointArributes类的对象用来定义点的各种属性。

点的属性包括:Size定义点的大小,以Pixel像素大小为单位。

默认时点的大小是一个像素单位。

Antialiasing英文含义是反走样,当设置一个点的大小大于一个像素单位时,为了使点在显示时接近于一个圆形,则需要设置该参数。

如果该参数没有被设置,也就是默认,则显示该点时,则通过有多个像素围成的正方形来显示该点。

3、PointAttributes类的方法setPointSize(float pointSize):以像素为单位设置点的大小setPointAnitialiasingEnable(boolean state):打开或关闭反走样开关(例1.2不同颜色点的显示程序)4、IndexedPointArray类从已经定义好的所有点的坐标与颜色数组中选择一部分点。

该类是一个很有用的类:IndexedPointArray(int vertexCount,int vertexFormat,intindexCount)1.3.3线的生成1.LineArray类LineArray(int vertexCount,int vertexFormat)构造函数第一个参数表示生成多段直线的点的总数。

相关文档
最新文档