java3d官方教程1.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:10 大小:192KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

java3d官方教程1.pdf

java3d官方教程1.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Java3DAPI官方教程[翻译一]开始学习Java3DAPI1第一章、入门本章目标:学习了本章之后,你能:•能用一些基本术语解释什么是Java3D•能描述出Java3D程序的基本结构。•能识别出Java3DAPI中的许多类。•能编写出简单的Java3D动画程序。Java3DAPI是一个用于编写显示和交互操作三维图形对象的程序的接口。Java3D也是在Java2Java开发包(JDK)上的标准扩展。这个API提供了用于创建和操纵3D图形的高端构成方法以及渲染该图形的一些数据结构。Java3D提供了创建图片、可视化、动画以及3D交互图形应用程序的函数。1.1什么是Java3DAPI?Javae3DAPI是作为复杂三维图形和声音渲染系统的接口的一系列层次的JAVA类的统称。程序员可以用Java3D开发创建和操纵3D图形对象的高端应用。这个图形对象处于一个被渲染了的虚拟世界(VirtualUniverse)中。这个API就是用设计来用于灵活方便地创建精确的各种大小的虚拟环境,可以大到大空物体,小到比原子还小。除了这些功能之外,API的使用也很直接,API能自动处理渲染的细节,由于利用了Java线程机制的优势,所以Java3D的渲染器的工作是并行进行的。并且渲染器也能自动地优化并提高渲染性能。一个Java3D程序创建了Java3D对象的实际,并将其置之于场景图数据结构中。在这个场景图中,所有3D对象用完全指定了虚拟世界内容和其如何被渲染的树形结构存储,Java3D程序能写成能独立运行的应用程序,或者写成能嵌入在浏览器中运行的Applets,或者二者兼备。1.2Java3DAPI每一个Java3D程序至少部分地集成了来自Java类层次中的对象,这些对象的集合称做虚拟世界(virtualuniverse),这就是将要被渲染的对象。此API在javax.media.j3d包中定义了超过100多个类,这些类我们平常称做Java3D核心类。在Java3DAPI中有数以百计的属性和方法。尽管如此,一个包含动画功能的简单的虚拟世界的构建仅仅需要几个类就行。本章讨论了用尽少的对象集合和交互来渲染一个简单虚拟世界。本章包含了一个简单但是完全的叫HelloJava3D的程序的开发过程,这个程序显示了一个能旋转的立方体,这个示例程序是逐步开发完成的,因此这个程序用了很多版本来展示Java3D编程过程中的每一部分。本教程中的所有程序都可以获得电子的版本。更多的信息请见前言中的"获得本教程"[译者注:http://java.sun.com/products/java-media/3D/collateral/]。除了Java3D核心包之外,Java3D程序设计也会用到其它的包,比如com.sun.j3d.utils,这个包通常称做Java3D工具类,核心类中仅仅包含了在Java3D编程中必段的最底层的类,而工具类是对核心类方便而强大的补充。工具类主要分为四类:内容加载器、场景图构建辅助类、图形类和方便的一些工具类。将来还有一些功能,比如nurbs[non-uniformrationalB-spline,非均匀有理B样条],也会加到工具类,而不是Java3D核心包中。而一些工具类在Java3DAPI将来的版本中也可能会移到核心包中去。利用工具类大大地减少了Java3D程序中的代码行数。除Java3D核心类和工具类包之外,每一个Java3D程序还引用了java.awt包和javax.vecmath包中的类.java.awt包就是AbstractWindowingToolkit(AWT).AWT类用于创建显示和渲染场景和窗口。而javax.vecmath包则定义了对点、矢量、矩阵以及其他数学对象进行数学运算的类。在余下的教程中,词汇可视对象(visualobject)就是场景图中的对象比如一个立方体或者球体。对象(object)则是指一个类的实例。而内容(content)指的是一个场景图中全部的可视对象。1.3构建场景图一个Java3D的虚拟世界创建自一个场景图,而场景图就是由Java3D类的实例构建而成.场景图集成了定义图形、声音、光线、位置、方向以及可视物体和声音对象的表面属性等对象。一个通常的图形定义是一个由结点和弧边组成的数据结构。一个结点是一个数据元素,而边则是数据元素之间的关系。场景图中的结点就是Java3D类的实例,而边展示了这些Java3D实例之间的两种关系。最为通用的关系是就是父子关系(parent-childrelationship),一组结点可以有任意数目的孩子却只能