基于JAVA的3D图形开发技术 文档DOC.docx
《基于JAVA的3D图形开发技术 文档DOC.docx》由会员分享,可在线阅读,更多相关《基于JAVA的3D图形开发技术 文档DOC.docx(36页珍藏版)》请在冰豆网上搜索。
![基于JAVA的3D图形开发技术 文档DOC.docx](https://file1.bdocx.com/fileroot1/2023-2/7/0b0d7a63-922f-4a35-a10f-bb421cd0d9e6/0b0d7a63-922f-4a35-a10f-bb421cd0d9e61.gif)
基于JAVA的3D图形开发技术文档DOC
基于Java的3D图形开发技术
龚建成张佑生
(合肥工业大学,安徽合肥)安徽工程科技学院,安徽芜湖)
·安徽工程科技学院学报
!
"
·
#""$
年
%&’(%%)*+,,-./0,1%&’23+4567
89:
公司提供了一个
;3<0=>
的
?
%+,@3
,在
A+B+$C
程序中利用它,可方便地调用
;3<0=>
图形
*;3<0
图形的调用和
%&’
图形的调用基本相同,将调用
;3<0
图形文件的部分单独作为一个文件,进而可将主
程序的重点放在对形体的动画处理等方面
*
此外
CDE
等图形文件也都有相应的
?
%+,@3
将其应用到
A+B+$C
中
*
#FGA+B+$C
的形体组合
A+B+$C
应用程序中,一般都有多个三维形体,只有对其进行合理的组合,才能对指定的形体进行几
何变换,进行某种操作,生成所需要的交互式三维应用程序或三维动画
*A+B+$C
为此提供了多个用于形
体组合的对象,它们是
E3%HI
及其子孙类
*A+B+$C
场景图的底部为
;/3)H+094/B@35@
,每一个场景图只能
有一个
;/3)H+094/B@35@
,
;/3)H+094/B@35@
上面为
?
%J+0@*E3%HI
类型的对象只能有一个父类,对于
K3+4J.L
E3%HI
对象来说是
?
%J+0@*
而其他
E3%HI
类型的对象,可以将其他
E3%HI
类型的对象作为父类
*
如
23+45M%3对象可以将
E3%HI
对象作为父类,也可以将另一个
23+45M%3对象作为父类
*
1N6K3+4J.E3%HI
对象
*K3+4J.E3%HI
是
A+B+$C
场景图中一个重要节点,它能够附在一个
?
%J+0@
节点
上,作为一个单元进行编译
*
将一个
K3+4J.E3%HI
放在一个
?
%J+0@
上形成
?
%J+0@
的一个分支,使其组合
的内容激活,一旦形体、灯光等被激活,它们就可以根据自身的
J+I+&/0/)O
的设定,产生相应的变化
*
1#623+45M%3和
23+45M%3<$C
对象
*23+45M%3定义一个通过设置,可以移动、旋转、放大
缩小的局部坐标系
*
它有两个
M0+P5
:
Q?
?
RDS2(Q:
8TR(US(VQC7Q?
?
RDS2(Q:
8TR(USD(W2V*
这两
个
M0+P5
通过设定,可以控制坐标系在程序运行过程中的运行方式,如果设置不当,程序可能无法运
行
*23+45M%3<$C
用来表示一个
GXG
的双精度浮点数矩阵,进而表示所指定的坐标的坐标变换,如旋转、
放大缩小、平移等
*
#FYA+B+$C
的交互作用
ZG[
A+B+$C
借助
A+B+
语言强大的事件处理功能,可用来编写复杂交互式的虚拟场景
*A+B+$C
的事件处
理方法使用的是
A+B+N*#
版本的事件处理模型
*A+B+N*#
事件程序中,在类定义时,用
/说明
该类实现的一个或多个监听器,如
IH&0/JJ0+55P+<@@\)@4,5QII0@)//5)@4@3
,
QJ)/%4?
/5)@4@3
,
W)@
/5)@4@3
,
-.@J^&%\U@4H?
/5)@4@3_‘
但这种方法主要用于特定显示界面的设计及一些状态的变化处理方面
*
如果要编写更复杂的交互式三
维应用程序,则需要用到
A+B+$C
的
K@.+B/%3
对象
*K@.+B/%3
有
K/00&%+3,
、
?
%,
、
W4)@3I%0+)%35
等子类
*
编写复杂的交互式三维对象时,经常会感到计算机速度不够
*
可以有多种方法解决速度慢的问
题
*A+B+$C
编程可通过灵活应用
?
RC
对象,提高计算机的运行速度
*
其他三维图形技术也用到了
?
RC
技术,如
;(U?
语言就用到了
?
RC
技术,
;(U?
语言就有
?
RC
节点
*A+B+$C
的
?
RC
对象通过设定,可
以使计算机根据三维场景图的需要,在程序运行时,有效处理复杂形体:
当复杂物体离观察点很远时,就
用一个简单的形体替代,当复杂形体离观察点不远不近时,就用一个近似的形体替代,当复杂物体离观
察点很近时,就显示复杂形体自身,这样可以有效提高计算机的运行速度
*K/00&%+3,
是
K@.+B/%3
的子类,
利用
K/00&%+3,
可生成一个局部坐标系,此坐标系的
ab
轴方向一直指向观察者的眼镜
*
这表示在三维
空间移动位置及方向时,
K/00&%+3,
所在的局部坐标系中的形体将一直面向着我们,也即自动绕着局部坐
标系的
c
轴旋转
*
A+B+$C
提供的
K@.+B/%3
方面的
9)/0/)O
一共有四组:
/4)@3I%0+)%3
(用于生成形体的曲线运动)
7^@O&%+3,
(用于处理键盘输入的内容)
7<%H5@
(用于处理鼠标对坐标变化的控制)
7I/J^/4P
(用于处理对象的点击拾
取)
7W4)@3I%0+)%35
可用于建立三维空间中形体绕着样条曲线运动的轨迹,只要输入形体及多个关键点的
数据,就可控制形体绕着这几个关键点做空间的曲线运动,同时可控制形体的比例变化及旋转
*W4)@3I%0+)%35
在程序中的具体应用是生成一个
2-Kd@OT3+<@
对象
*d@O&%+3,
可用于监听键盘输入的内容,通过判断第
!
期·
"#
龚建成,等:
基于·
$%&%
的
’(
图形开发技术
类如
)*+,-
、
./012
、
3456+7/012
、
8,49:
’2
、
%99:
47415:
、
;:
<-07:
及其属性等内容,还有
&*:
=>?
4-@/7A
、
.:
18/7
、
3:
4B*/7
、
C/79,
、
)*16
等,类似于
&DC)
语言的相应节点,是
$%&%’(
场景图的重要组成部分
E
FGHI/2:
J/A9/1:
1-
类
E
用于表示
I/2:
的属性,它不是
$4B4’(
场景图的组成部分,而是被场景图所
引用,用来修饰某些
):
4@
对象,如某个颜色可以被多个形体引用
E3/0128
及其子类、
;7418@/7A’(
并不是
I/2:
J/A9/1:
1-
的子类,但它们同样作用于
):
4@
对象,因而也是
I/2:
J/A9/1:
1-
类型的对象
E
G
利用
$4B4’(%>K
进行编程的要点分析
GL!
$4B4
中点、线、面的生成
编写
$4B4’(
的点、线、面时,需要给出顶点坐标数组、顶点坐标对应的颜色数组等内容,输入这些内
容需要用到
M:
/A:
-7N%774N
提供的多个方法,所有的点、线、面类都是
M:
/A:
-7N%774N
的子类或孙类,因而
都继承了它所有的方法
E
具体内容可查看相关
%>KE
GLG.,49:
’(
对象、
%99:
47415:
对象及
3/0128
对象
F!
H.,49:
’(
对象
E
点、线、面的各种对象,均为
M:
A/-70%774N
的子孙类,它们只是几何对象,不能单
独放置在三维场景图中
E
真正的三维形体对象应当既具有几何特征,同时也应具有材质特征,
.,49:
’(
就是用来定义三维形体对象的对象
E
它有下面一些
@?
4+8
:
%))OPQMROCR;DSQDR%(T%)U
)OPQMROCR;DSQPDK;RT%))OPQ%>>R%D%IJRQDR%(T%))OPQ%>>R%D%IJRQPDK;RT%)U
)OPQJO))K.KOIQ3OVI(.QDR%(T%))OPQJO))K.KOIQ3OVI(.QPDK;RE
这些
@?
4+8
可以通过
8:
-J494U
W*?
*-N
设定,使形体具有某种特征,从而使程序能在运行过程中产生相应的变化效果
E
FGH%99:
47415:
对象
E.,49:
’(
对象给出了三维空间里的形体,形体除了有几何属性外,还应有外
观属性,如颜色、纹理等,形体的外观属性由
%99:
47415:
对象提供
E%99:
47415:
是
I/2:
J/A9/1:
1-
的子
类,每一个
%99:
47415:
对象均可以被多个
.,49:
’(
对象所用
E
F’H3/0128
对象
E$4B4’(
程序里,经常需要设置一些灯光、声音、行为等对象,这些对象在使用时,必
须给出它们的作用范围,需要用到
3/012*1+.9,:
7:
对象
E
GL’
常用三维图形文件的调入
复杂形体很难直接通过编程实现
E
这时可通过调用其他格式的三维图形文件获得复杂形体,如直
接调用
&7A?
GEX
格式、
O3$
格式的三维图形文件,通过处理,间接调用
(PM
、
(YZ
、
’(.
格式的三维图形
文件
E
这些格式的三维形体可以非常方便地应用在
$4B4’(
程序中,进而提高
$4B4’(
程序地编程效率
E
在调用
O3$
文件时,可以编两个程序,一个是主程序,一个是专门用来调用
O3$
文件的
/WU
[?
/42E[4B4E
在主程序的
57:
4-:
.5:
1:
M749,
()方法里,在定义背景、声音、灯光等分支后,再定义一个
OWU
[:
5-Z*?
:
兑现
/W[
和一个
8
对象,并用
OW[:
5-Z*?
:
的
?
/42
方法调用
/W[
文件,调用成功后将调入的结果放入
/W[
对象里面
E
…
37415,M7/09/W[D//-\1:
=37415,M7/09FH]W\10?
?
T
W\1:
=OW[)/42F94-,14A:
HT
/W[;7418E422J,*?
2FWHT
…
调入的
/W[
文件所定义的三维形体有大有小,这时可在程序中定义一个改变了比例的坐标系,这样
即使很大的
/W[
形体也可显示在屏幕上
E
通过下面几个语句,使坐标系发生了比例变换,成为原来大小
的
XE"
倍:
;7418@/7AM7/09/W[;7418\1:
=;7418@/7AM7/09FHT
;7418@/7A’(-’2\1:
=;7418@/7A’(FHT
-’2E8:
-.54?
:
FXE"HT
/W[;7418E8:
-;7418@/7AF-’2HT·安徽工程科技学院学报
!
"
·
#$$%
年
在
&’()*+,’-.’,/0
节点之上的
1
图
2
给出了
3(4(%5
应用程序的场景图
678
1
29#3(4(%5:
;<
中的类
3(4(%5
核心包包括
=(4(>1-?
@A(1=%@
和
=(4(>14?
B-(CD
,其结构层次
678
如下
E
3(4(>1-?
@A(1=%@
FA’C/(GH)A4?
’*?
I,B(G?
FA?
J
;DK*AB(GL,@K
;DK*AB(GM)4A’,-?
)C
NB’B?
)%5
O()4/*%5
NB?
)?
.’(0DPL=?
BC
Q,@?
.’,/0
I?
(+
Q,@?
O,-0,)?
)C
&’()*+,’-%5
=(4(>14?
B-(CD
R(C’A>OG(**?
*
其中,
=(4(>1-?
@A(1=%@
提供了
2$$
多个类及接口,是
3(4(%5
的核心部分;
=(4(>14?
B-(CD
则包括了一
些矩阵和数组运算的类
13(4(%5
还提供了一个重要的有助于快速编程的应用类型的包,即
B,-1*/)1=%@1/CAG*
包(
HCAGACK
)
SHCAGACK
不是
3(4(%5
编译环境的核心组成部分,可以不用它,但使用它会
大大提高程序的编写效率
1
一些基本形体如立方体、圆柱等,可由
HCAGACK
方便地生成;对复杂形体的生
成,则需对基本形体进行一系列的几何坐标变换来实现
1
29%3(4(%5:
;<
中类的关系
6#8
3(4(%5
所提供的类
S
根据其作用主要有两种类型:
Q,@?
,
Q,@?
O,-0,)?
)C1
T2UQ,@?
类
1
含有
.’,/0
及
I?
(+
两个子类
1.’,/0
类用于将形体等按一定的方式组合在一起
1I?
(+
图
23(4(%5
应用程序的场景图摘要:
343
语言具有结构中立性、网络分布性等优点,它的
*/
图形
-56
在开发
6789:
798
及
;;;
上的图形网络
应用程序时有极大优势
0
因而得到了迅速地推广和应用
1
介绍
343*/-56
的特点,总结了
343*/-56
的组成,
对
343*/
数据结构、应用程序的编程要点作了重点评述,对如何利用
343*/-56
进行应用程序开发作了初步
研究
1
关键词:
343
语言;
343*/
;
6789:
798
;场景图
中图分类号:
<5*2!
文献标识码:
-
引言
343
是目前最流行的功能强大的编程语言,它完全面向对象,简单高效安全,与平台无关,支持多
线程
=!
>
1,343*/-56
是
343
语言的
*/
图形用户接口,
343
语言提供的内在机制使
*/
图形图像程序具
有“一次写成,到处运行”
(?
:
@89A7B90:
C737D?
E9:
9+
的特点
0
开发出的图形系统拥有
;9F
特性,因而受到
了广泛关注
1
本文从各个侧面对
343*/
图形开发技术作了较详细的论述
1
!
343*/
图形开发技术简介
343*/
是
343!
1%
的一个标准扩展,它从高层次为开发者提供对三维实体的创建、操纵和着色,使
开发工作变得较为简单
1,343*/
的低级
-56
依赖于现有三维图形系统,如
/@:
9B8*/
、
G5HIJK
等
1
它为
我们编写三维应用程序提供了一个非常完善的
-56
,其功能主要有
=%>
:
(!
+
生成简单或复杂的形体(也可以直接调用现有的三维形体);
(%+
使形体具有颜色及具有透明效果;
(*+
在三维环境中生成灯光及移动灯光;
(’+
具有行为(
L9E34@A:
)的处理判断能力(键盘、鼠标等);
("+
可以生成雾、背景、声音等;
($+
可以使形体变形、移动、生成三维动画;
(#+
可以编写非常复杂的应用程序,用于各种领域
0
如
.M1
!
N!
343*/
的场景图数据结构
343*/
的数据结构采用
/-J
(
/@:
9B89O&-BDBP@BJ:
3QE
)式的场景图(
RB979J:
3QE
),即具有方向性
的不对称图形
1
图中线和线的交汇点称节点(
IAO9
),这些节点都是
343*/
类的实例;线(
-:
B
)表示实
例之间的关系
1
最底层的节点是
.@:
8C3PS7@49:
T9
,每个场景图只能有一个
.@:
8C3PS7@49:
T91
在
.@:
8C3P
S7@49:
T9
之上是
KAB3P9
节点,每个程序可以有一个或多个
KAB3P9
,
KAB3P9
节点之间可以相互切换,不过
大多数程序只有一个
KAB3P91
每一个
KAB3P9
之上可有一个到多个
L:
37BEJ:
ACQ
节点
1
要建立三维应用
环境,必须建立所需要的形体(
RE3Q9
),给出形体的外观(
-QQ93:
37B9
)及几何信息(
J9AU98:
D
),再把它们
摆放在合适的位置,这些形体及其摆放位置都建立在
L:
37BEJ:
ACQ
节点之上
0
摆放位置通过另一个节点
<:
37TVA:
UJ:
ACQ
来设定
1
在安放好三维形体之后,还需设定具体的观察位置
.@9?
5P38VA:
U
,它也是建立
.AP1!
W0IA1!
X3:
10%))*
安徽工程科技学院学报
AC:
73PAV-7EC@S7@49:
T@8DAV<9BE7APAYD37ORB@97B9
第
!
W
卷第
!
期
%))*
年
*
月
收稿日期:
%))%&)2&!
!
作者简介:
龚建成(
!
2#)&
),男,江苏扬州人,讲师,在读硕士研究生
1第
!
期·
"!
龚建成,等:
基于·
#$%$
的
&’
图形开发技术
处理,对程序的运行产生相应的控制作用
()*+,-
对象一共有三个:
)*+,-.*/0/-
、
)*+,-1**2
、
)*+,-3
4506,70/-
它们分别作用鼠标的左、中、右键,用于坐标的旋转、平移、放大缩小变换
(
鼠标如果没有中键,
可用
$849
左键代替
(
处理交互问题时,利用监听器
8:
/-6-5
和
;-<0=:
*5
方面的
>/:
7:
/?
常常不能满足编程需要,这是可以
利用定义新的
;-<0=:
*5
对象的方法编写交互式
#0=0&’
程序
(
编写自定义的
;-<0=:
*5
对象的三个步骤
为:
(
!
)定义一个继承
;-<0=:
*5
的新对象,同时给出新对象的构造方法
(
(
@
)定义一个初始化所用的
:
6:
/:
07:
A-
()方法
(
(
&
)定义一个处理交互作用的
B5*C-,,D/:
2+7+,
()方法
(
@E"#0=0&’
的冲突检测
FGH
冲突检测与响应在物体的物理建模中是十分重要的内容
(
因为虚拟物体在运动过程中
I
可能发生
相互碰撞、接触或其他形式的相互作用
(
出现这种情况
I
物体就不能按照原来的运动状态继续运动
I
否
则虚拟环境中就会出现虚拟物体之间相互穿透、彼此重叠等不真实的现象
(
检测虚拟环境中虚拟物体
是否发生了相互碰撞的过程称为冲突检测
(
检测到碰撞后
I
要对之做出正确的响应
I
修改虚拟物体的运
动状态
I
确定物体的变形和损坏等
I
这就是冲突响应
(
冲突检测是虚拟现实、计算机动画、机器人学等领
域的核心问题之一
(#0=0&’
具有形体间冲突检查功能,为了编写具有这样功能的交互式应用程序,需要
定义一个检查形体之间碰撞情况的行为对象,这时可用到
#0=0&’
提供的用于形体间冲突检查用的三个
对象:
J0K-+BL6M*77,:
*6N6/5?
、
J0K-+BL6M*77,:
*6NO:
/
、
J0K-+BL6M*77,:
*6)*=-2-6/(#0=0&’
的冲突检查功
能还处于不断改进的阶段,这方面的计算需要较多的时间,有时会影响程序的运行速度
(
&
结束语
随着计算机技术的发展和广泛应用,三维图形的应用范围也越来越广;另一方面,随着
P6/-56-/
的
飞速发展,计算机网络成为数据信息流动最方便的渠道,
JJJ
则成为用户利用网络最便捷的方式
(
新
的应用环境要求更适合于它的图形编程手段
(#0=0
语言和其
&’$QP
的推出,刚好迎合了这一潮流,为
广大程序员提供了开发
&’
图形应用软件的新途径,因而一定会得到广泛推广与应用
(
参考文献:
F!
HR05=-?
)(’0:
/-7IQ0+7#(’-:
/-7E#0=0
程序设计教程(上册)
F)HE
北京:
机械工业出版社,
@SS@E
F@H#0=0&’4+/*5:
07F’;TL8H
,
/BUTTV0=0(,+6(C*2TB5*W+C/TV0=0(2-W:
0TV0=0&’(
F&HD+6):
C5*,?
/-2,(P6C(4<-#0=0&’$QPDB-C:
X:
C0/:
*6%-5,:
*6!
(@F1H(@SSS(
FGH
陈静勇
(
基于
#0=0&’
的虚拟现实建模方法F
#H(
计算机应用研究,
@SS@I
(
Y
):
&&Z&YE
!
"#$%&’&()*&+,"-"’&./%(01(+2.$3423",&%52-2
[L\[#:
063C<-6]
!
I@
I1R$\[^*+3,<-6]
!
_!
(R-X-:
>6:
=-5,:
/?
*X4-C<6*7*]?
IR-X-:
@&SSS‘IM<:
60a@($6<+:
>6:
=-5,:
/?
*X4-C<6*7*]?
06WDC:
-6C-IJ+<+@G!
SSSI
M<:
60b
!
"#$%&’$(#0=0:
0605C<:
/-C/+5-Z6-+/507I6-/c*5KZW:
/5:
d+/-W706]+0]-(P/,&’$QP,<0=-]5-0/0W=06/0]-,
:
6/<-W-=-7*B2-6/*X]50B<0BB7:
C0/:
*6,*6P6/-56-/06WJJJ(D*I:
/:
e+:
CK7?
B5-0W-W06W0BB7:
-W(4<:
05/:
C7-:
6/5*W+C-W#0=0&’$QPf,X-0/+5-,I,+2205:
A-W#0=0&’$QPf,C*2B*,:
/:
*6IW:
C+,,-W/<-W0/0,/5+C/+5-
*X#0=0&’06W/<-K-?
B*:
6/,*X:
/,0BB7:
C0/:
*6,(.-,-05C<*6<*c/*+,-#0=0&’$QP,/*B5*]5022-c0,07,*
W-07/c:
/<(
)*+,-%.#(#0=0a#0=0&’aP6/-56-/a,C-6-]50B<