soket文件传输java怎么实现 rt,刚开始学网络编程,对socket不是很理解,听老师说可以实现文件传输,请大家给点提示啊,3Q!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 无非就是IO操作,发送方是Socket客户端,用FileInputStream读文件,写到Socket上得的OutputStream中。接收方是Socket服务端,用ServerSocket上得到的InputStream读,用FileOutputStream写文件,如此而已。 这哥们的问题可是好啊!!现在我就呈上我的理解:客户端在使用Socket时,是通过传入服务器的IP地址与端口两个参数来实例化Socket 例如:Socket socket=new Socket("localhost",6789);也是正在学习中、、、、、、、、 然然后的步骤就是流的操作,发送方是Socket客户端,用FileInputStream读文件,写到Socket上得的OutputStream中。接收方是Socket服务端,用ServerSocket上得到的InputStream读,用FileOutputStream写文件,如此而已。 最好还是用上Buffered来进行缓存 个人觉得用Socket传输文件方式不太好之前做过一个项目,一开始用Socket方式传输文件,当客户端接到传输命令时,就去读取文件,以流的形式发送到服务器,服务器读取后写入文件.可这种方式对服务器压力比较大,当并发量大或者传输的文件比较大的时候,中间可能会丢包,会导致文件不完整.比如传一张1M的图片,经常会有缺个角或者中间有很多白点的情.后面改用了FTP方式传输,就是当Socket接到传输命令后,就去启动FTP服务按要求传输到服务器指定,传输完后再发送命令通知服务器传输完成.用FTP方式传输的话,没有出现过丢包的情况. 其思想就是把文件转换成字符流的形式,然后进行传输,传输过程中保证:1.socket 之间通信正常2.传送者和接受者对文件流的处理方式一致,以免出现字符编码等解析问题 网络环境下组合体交互式3D动画的设计摘 要:工程制图组合体网络教学系统的特点是三维实体造型多,动画数据量大,交互性强,对网络带宽要求高,开发该系统的关键和难点在于实现组合体三维动画的网络快速传输和实时交互.介绍了建立组合网络3D模型、动画及交互式操作,以及如何提高三维模型网络传输速度的实现方法.实验表明,基于Java 3D的组合体动画具有网络响应速度快、交互性强、文件占用空间小的优点,对于开发组合体网络教学系统十分适用.关键词:网络模拟;聚集流量; TCP流量模型目前工程制图组合体网络教学系统很少,究其原因是组合体多媒体网络教学实体造型多,三维动画数据量大,实时交互性强,对网络带宽要求高,直接使用OpenGL、DrectX、CAD或其他动画制作软件设计的三维组合体动画很难在网络上实时传输和交互操作.目前有研究将VRML、Java3D、Cult3D、X3D等技术用于三维场景的虚拟[1~4],但还未见到将以上技术用于组合体的网络3D实时动画.文中介绍了利用Java 3D建立组合体网络3D动画的过程,以及提高3D动画网络传输速度的方法.1 组合体网络3D模型的建立建立组合体3D模型可用两种方式:其一,利用Java 3D API生成组合体.该方法利用Java 3D自带API产生基本形体,然后再组合这些形体;或者计算出形体的各顶点坐标,然后生成各顶点连线所围成的面形成组合体.此方法可方便地实现对形体的交互操作,使形体在运动中产生变化,但要建立复杂的形体还比较困难.其二,利用CAD软件如SolidEdge等生成组合体三维模型,然后在Java 3D的com.sun.j3d.loaders包中通过Loader和Scene两个接口,导入这些3D模型.这种方法不用编程,建模快速简单,但模型建立后在Java 3D中形状很难改变.组合体网络教学系统中同时采用上述两种方法,首先在用SolidEdge或PRO-E软件构建基本形体,然后在Java 3D中分别实现组合体的旋转、平移、缩放,或按组合体的构形过程组织动画.在建立组合体模型时,要把形体的坐标系原点调整到形体的转动轴心处,输出为.wrl格式,利用Java 3D的VRMLLoader类, Scene对象和TransformGroup对象载入组合体3D模型.在导入之前,需将光盘中的vrml 97.jar文件拷贝到java3D安装目录的JRE目录下,如:C:\Program files\JavaSoft\JRE\1.3.1\lib\ext.部分程序如下:VrmlLoader l=new VrmlLoader();Scene s=null;TransformGroup m=new TransformGroup();s. setCapability ( TransformGroup. ALLOW _TRANSFORM_READ);s. setCapability ( TransformGroup. ALLOW _TRANSFORM_WRITE);try{ s=f.load(filename);}catch(FileNotFoundException e){System.err.println(e);System.exit(1);}…m.addChild(s.getSceneGroup());return sceneRoot;public vrmlLoader(String filename){filename="assembly.wrl";setLayout(new BorderLayout());Canvas3D c=new Canvas3D(nullAdd("Center",c);}2 3 D模型的几何变换组合体的动画主要是在三维坐标系中绕坐标轴旋转、以某一基点缩放或沿某一方向移动,以便从不同侧面观察组合体的结构.向Java 3D的TransformGroup中加入Transform 3D对象,可实现旋转、平移、缩放操作.以组合体的旋转为例,要实现组合体的旋转,有2种方法[5~7].方法一是通过Transform 3D的rotX、rotY、rotZ(分别实现绕X,Y,Z轴旋转一定的角度)方法来实现,如图1所示.当组合体由OP位置旋转到OP′位置时,其变换过程为:设P,P′的坐标分别为(X,Y,Z)和(X′,Y′,Z),OQ为OP′在XOY平面的投影线,α1,α2分别为YOY′和Y′OP′的夹角.图1只考虑第一象限的操作,旋转变换分为二步:首先,以Z为旋转轴旋转α1角度,XYZ坐标系变为X′Y′Z;然后,在新的X′Y′Z坐标系中,以X′为旋转轴再旋转α2角度,组合体即到达指定的方向.从图1中可以看出, OP′,α1,α2分别满足以下关系式:r = OP′= x2+y2+z2,α1=arctanxy,α2=arcsinzr具体程序如下:import java.lang.Math.*;import java.awt.Graphics;...double r=Math.sqrt(x*x+y*y+z*z);double an1=Math.atan(x/z);double an2=Math.asin(y/r);…Transform3D rot1=new Transform3D();Transform3D rot2=new Transform3D();rot1.rotY(an1);rot2.rotX(an2);Transform3D newTransform=new Transform3D();new Transform.mul(rot1);new Transform.mul(rot2);... 方法二是直接利用Transform 3D四维变换矩阵,完成对点或向量的转换(相应的语句为Transform3D(double[ ] matrix)或Transform3D(floa[]matrix).设[x,y,z,w]为变换前的图形坐标,对于三维点变换,w =1;对于三维向量变换,w =0.[xθ,yθ,zθ,wθ]为变换后的图形坐标,则[xθ,yθ,zθ,wθ] =G×[x,y,z,w],其中G为四维变换矩阵,其形式为G=g00 g01 g02 g03g10 g11 g12 g13g20 g21 g22 g23g30 g31 g32 g33变换矩阵左上角3×3矩阵为旋转成份,设定变换矩阵中的值,可实现组合体的不同旋转变换.现假定在右手坐标系下[x,y,z,w]绕原点旋转θ角,则G=cosθ sinθ 0 0-sinθ cosθ 0 00 0 1 00 0 0 1即变换后xθ= xcosθ-ysinθ;yθ= xsinθ+ycosθzθ= z;wθ= w3 交互式操作的实现用户可以通过Java 3D的KeyNavigatorBeha-vior类和MouseBehavior类实现使用键盘和鼠标控制组合体的平移、旋转和缩放[8].以鼠标交互式操作为例, Java 3D的MouseBehavior类的子类MouseRotate可实现用鼠标键拖动组合体原地旋转;MouseTranslate子类实现组合体的鼠标平移交互操作; MouseZoom是使用鼠标来缩放组合体.以下是使用鼠标交互实现组合体旋转的部分程序代码.TransformGroup objT=null;TransformGroup3D obj3D=new Transform3D();MouseRotate t=null;…BoudingShereBouds bounds = new BoudingShere(new Point3D(0.0 0.0 0.0),120.0…t=new MouseRotate();t.setTransformGroup(objT);t.setSchedulingBounds(bounds);TransformGroup(objT);objRoot.addChilid(t);4 提高三维模型的网络传输速度及用户环境的安装 Java 3D是面向Internet的三维开发环境,而Java即时编译器(JIT)、Java虚拟机(JVM)和Applet使得Java 3D本身具有较高的网络性能.基于Java3D的三维图像在网络上传输时,传输的不是图像本身,而是控制三维图像生成的程序和数据,即传输的是命令消息,因而大大节省了网络数据传输量.为了提高三维动画的网络响应速度,目前常用的方法有:预测计算、场景分块及优化、可见性剔除技术、细节层次模型(LOD)、增量传输技术、Java代码压缩解压技术、分布式服务器结构、多线程技术等.Java 3D的数据结构称为场景图,降低场景的复杂度(即降低图形系统需处理的多边形数)可大大提高3D动画的网络传输速度.图2所示是沿着场景图路径合并TransformGroup对象,将左边的结构编译优化成右边的结构(该图并非Java的实际操作,只是说明优化的概念).利用该方法可对组合体3D模型场景图结构进行优化. 在组合体3D场景优化中,可结合使用Java 3D的细节层次算法LOD和可见性剔除技术.对场景中的组合体,用具有不同细节的描述方法,或通过评估一个或一组绘制元素的可见性或不可见性来快速剔除不可见的绘制元素,从而减少送入渲染管道的绘制元素的数量,得到该组合体模型的“快照”.但是,该“快照”忽略了3D模型的大部分细节.当3D模型在网络上传输时,传输的是"快照",当浏览器端的客户需要查看某个模型的某部分细节时,服务器端再把该部分特定细节传输过去,而不是一开始就传输全部细节.同时结合采用增量传输技术[9],即服务器端在保证客户端得到正确结果的前提下,只向客户端传送被当前操作改变的拓扑元素相对应的显示模型中的点、线、面,这样可以极大减少数据的传输量.利用Java的Zip文件操作包对代码进行压缩,也是提高网络实时性的有效方法.利用Java的ZipEntry、ZipInputStream和ZipOutputStream 3个类可实现数据的压缩、网络传输和解压.用Java数据压缩方式编写的用文件输出流构建Zip压缩输出流的方法如下: ZipOutputStream zipos=new ZipOutputStream(new FileOutputStream(f)); zipos. setMethod ( ZipOutputStream.DEFLATED); zipos.putNextEntry(new ZipEntry("zip")); DataOutputStream os=new DataOutputStream(zipos); os.writeUTF(doc); os.close(); doczipsize = f.length(); showTextandInfo(); 数据压缩方法还包括对3D模型进行游程长度编码,用较低字节数的存储类型代替较高字节数据的存储类型(如用float型代替double型,用short型代替long型)等;也可以采用三角形网格Edgebreaker压缩法,对3D模型的顶点坐标和顶点属性信息进行压缩等[10].Java 3D继承了Java语言的风格,所以用Java3D编写的Applet需要变成以<object>、<embed>方式定义的页面嵌入到HTML中,才能在IE浏览器中浏览.当浏览含有嵌入Java 3D代码的HTML页面时,IE浏览器会自动检查客户端是否具有Java及Java 3D的运行环境.如果该环境尚未安装,将主动下载并安装,让用户能够像浏览网页一样观看并操作三维动态图形.5 实 验实验环境为校园网环境,Web服务器位于校网络中心,使用1 000 MB光纤接到机械学院CAD中心.CAD中心交换机100 MB连接有40个工作站,测试时间选在上午8:00左右的网络空闲时间.组合体网络教学包含30道组合体题目(要求能实现交互式操作),使用传统的帧动画技术实现,总的文件大小为523 MB,采用压缩和流媒体技术后达361 MB,平均单个组合体12 MB,浏览单个静态组合体约10 s,若是动画要1 min左右,交互式操作时续时断.采用Java 3D技术,总的文件大小为27 MB,使用代码压缩、LOD和增量传输等技术,单个组合体静态图形在网络上传输数据只有几十KB,动画约300 KB左右,浏览器端的显示速度和交互式操作响应在ms级,接近本地速度.6 结 语 基于Java 3D技术开发的组合体网络教学系统在试用中表明:具有网络响应速度快、交互性强、文件占用空间小的优点.将Java 3D技术用于组合体网络实时3D动画的制作是一种新的尝试,较好地解决了由于组合体实体造型多、三维数据量大而造成的网络传输和实时交互瓶颈,将大大促进工程制图组合体网络教学的开展.参考文献:[1 ]冯开平,左宗义.实时交互行为三维动画的设计技术[J].工程图学学报,2002,23(1):143-148.[2 ]邱宏俊,陶华,关文天.基于Java3D的产品数据信息的可视化[J].机床与液压, 2004,(12):88-92.[3 ]濮青,徐云.应用Cult 3D技术实现人脸交互式三维动画[J].计算机辅助与设计图形学学报,2004,16(3):382-384.[4 ]林冬梅.X3D:新一代Web交互式三维图形规范[J].计算机系统应用,2004,(10):1038-1043.[5 ]都志辉,顾雷,刘鹏,等.Java 3D编程实践[M].北京:清华大学出版社,2002.[6 ]张杰.Java 3D交互式三维图形编程[M].北京:人民邮电出版社,1999.[7 ]张大坤,薛忠明,王光兴.基于Java 3D的虚拟开发技术[J].沈阳工业大学学报,2004,26(5):547-500.[8 ]余小燕.基于Java 3D的三维交互式编程技术[J].工矿自动化,2004,(6):57-59.[9 ]周勋,李洁,何发智,等.基于Web的同步协同实体建模系统[J].计算机集成制造系统-CIMS,2003,9(11):960-965.[10]刘波,张鸿宾,王靖.三维图形数据的压缩与网上浏览[J].计算机工程与应用,2004,40(28):44-46.参考答案来源于:wenwen.soso.com《Csdn收音机》在线检测最新版本,让你永不过期! 上面是搜索的,每天答题获得可用分...你懂的,莫怪过去回1张贴就气喘吁吁,现在用了《Csdn收音机》,一口气回5张贴不费劲! 关于CSS的子元素选择器 会话标识未更新问题 servlet 修改后不能刷新,急!!! struts2.0标签棘手问题 下拉框问题,谢谢 Tomcat 下使用Hibernate访问数据库错误,急! Tomcat5连接池问题 一个关于 req.setChracaterEncoding(String) 的问题 让html的对象不显示成对象,而是以字符显示出来,恐怕是说得不明白,高手进来看看!!!! 我想将rs中的记录进行分页输出,可是?请教高手指点!!急 JAVA 面试题 有兴趣的答一答 请教一个问题,如何把tomcat sqlserver web项目作成一个 安装包
接收方是Socket服务端,用ServerSocket上得到的InputStream读,用FileOutputStream写文件,如此而已。
现在我就呈上我的理解:客户端在使用Socket时,是通过传入服务器的IP地址与端口两个参数来实例化Socket 例如:Socket socket=new Socket("localhost",6789);
也是正在学习中、、、、、、、、
接收方是Socket服务端,用ServerSocket上得到的InputStream读,用FileOutputStream写文件,如此而已。
最好还是用上Buffered来进行缓存
之前做过一个项目,一开始用Socket方式传输文件,当客户端接到传输命令时,就去读取文件,以流的形式发送到服务器,服务器读取后写入文件.可这种方式对服务器压力比较大,当并发量大或者传输的文件比较大的时候,中间可能会丢包,会导致文件不完整.比如传一张1M的图片,经常会有缺个角或者中间有很多白点的情.
后面改用了FTP方式传输,就是当Socket接到传输命令后,就去启动FTP服务按要求传输到服务器指定,传输完后再发送命令通知服务器传输完成.用FTP方式传输的话,没有出现过丢包的情况.
1.socket 之间通信正常
2.传送者和接受者对文件流的处理方式一致,以免出现字符编码等解析问题
摘 要:工程制图组合体网络教学系统的特点是三维实体造型多,动画数据量大,交互性强,对网
络带宽要求高,开发该系统的关键和难点在于实现组合体三维动画的网络快速传输和实时交互.
介绍了建立组合网络3D模型、动画及交互式操作,以及如何提高三维模型网络传输速度的实现方
法.实验表明,基于Java 3D的组合体动画具有网络响应速度快、交互性强、文件占用空间小的优
点,对于开发组合体网络教学系统十分适用.
关键词:网络模拟;聚集流量; TCP流量模型
目前工程制图组合体网络教学系统很少,究其
原因是组合体多媒体网络教学实体造型多,三维动
画数据量大,实时交互性强,对网络带宽要求高,直
接使用OpenGL、DrectX、CAD或其他动画制作软
件设计的三维组合体动画很难在网络上实时传输
和交互操作.目前有研究将VRML、Java3D、
Cult3D、X3D等技术用于三维场景的虚拟[1~4],但
还未见到将以上技术用于组合体的网络3D实时动
画.文中介绍了利用Java 3D建立组合体网络3D动
画的过程,以及提高3D动画网络传输速度的方法.
1 组合体网络3D模型的建立
建立组合体3D模型可用两种方式:其一,利用
Java 3D API生成组合体.该方法利用Java 3D自带
API产生基本形体,然后再组合这些形体;或者计
算出形体的各顶点坐标,然后生成各顶点连线所围
成的面形成组合体.此方法可方便地实现对形体的
交互操作,使形体在运动中产生变化,但要建立复
杂的形体还比较困难.其二,利用CAD软件如
SolidEdge等生成组合体三维模型,然后在Java 3D
的com.sun.j3d.loaders包中通过Loader和Scene
两个接口,导入这些3D模型.这种方法不用编程,
建模快速简单,但模型建立后在Java 3D中形状很
难改变.组合体网络教学系统中同时采用上述两种
方法,首先在用SolidEdge或PRO-E软件构建基
本形体,然后在Java 3D中分别实现组合体的旋转、
平移、缩放,或按组合体的构形过程组织动画.在建
立组合体模型时,要把形体的坐标系原点调整到形
体的转动轴心处,输出为.wrl格式,利用Java 3D
的VRMLLoader类, Scene对象和
TransformGroup对象载入组合体3D模型.在导入
之前,需将光盘中的vrml 97.jar文件拷贝到java
3D安装目录的JRE目录下,如:C:\Program files\
JavaSoft\JRE\1.3.1\lib\ext.部分程序如下:
VrmlLoader l=new VrmlLoader();
Scene s=null;
TransformGroup m=new TransformGroup();
s. setCapability ( TransformGroup. ALLOW _
TRANSFORM_READ);
s. setCapability ( TransformGroup. ALLOW _
TRANSFORM_WRITE);
try{
s=f.load(filename);
}
catch(FileNotFoundException e){
System.err.println(e);
System.exit(1);
}
…
m.addChild(s.getSceneGroup());
return sceneRoot;
public vrmlLoader(String filename){
filename="assembly.wrl";
setLayout(new BorderLayout());
Canvas3D c=new Canvas3D(null
Add("Center",c);
}
2 3 D模型的几何变换
组合体的动画主要是在三维坐标系中绕坐标
轴旋转、以某一基点缩放或沿某一方向移动,以便
从不同侧面观察组合体的结构.向Java 3D的
TransformGroup中加入Transform 3D对象,可实
现旋转、平移、缩放操作.以组合体的旋转为例,要
实现组合体的旋转,有2种方法[5~7].
方法一是通过Transform 3D的rotX、rotY、
rotZ(分别实现绕X,Y,Z轴旋转一定的角度)方法
来实现,如图1所示.当组合体由OP位置旋转到
OP′位置时,其变换过程为:设P,P′的坐标分别为
(X,Y,Z)和(X′,Y′,Z),OQ为OP′在XOY平面的
投影线,α1,α2分别为YOY′和Y′OP′的夹角.图1只
考虑第一象限的操作,旋转变换分为二步:首先,以
Z为旋转轴旋转α1角度,XYZ坐标系变为X′Y′Z;
然后,在新的X′Y′Z坐标系中,以X′为旋转轴再旋
转α2角度,组合体即到达指定的方向.从图1中可以
看出, OP′,α1,α2分别满足以下关系式:
r = OP′= x2+y2+z2,
α1=arctanxy,α2=arcsinzr具体程序如下:
import java.lang.Math.*;
import java.awt.Graphics;
...
double r=Math.sqrt(x*x+y*y+z*z);
double an1=Math.atan(x/z);
double an2=Math.asin(y/r);
…
Transform3D rot1=new Transform3D();
Transform3D rot2=new Transform3D();
rot1.rotY(an1);
rot2.rotX(an2);
Transform3D newTransform=new Transform3D
();
new Transform.mul(rot1);
new Transform.mul(rot2);
...
方法二是直接利用Transform 3D四维变换矩
阵,完成对点或向量的转换(相应的语句为
Transform3D(double[ ] matrix)或Transform3D
(floa[]matrix).
设[x,y,z,w]为变换前的图形坐标,对于三维
点变换,w =1;对于三维向量变换,w =0.
[xθ,yθ,zθ,wθ]为变换后的图形坐标,则
[xθ,yθ,zθ,wθ] =G×[x,y,z,w],其中G为四维变
换矩阵,其形式为
G=
g00 g01 g02 g03
g10 g11 g12 g13
g20 g21 g22 g23
g30 g31 g32 g33
变换矩阵左上角3×3矩阵为旋转成份,设定变换矩
阵中的值,可实现组合体的不同旋转变换.现假定
在右手坐标系下[x,y,z,w]绕原点旋转θ角,则
G=
cosθ sinθ 0 0
-sinθ cosθ 0 0
0 0 1 0
0 0 0 1
即变换后
xθ= xcosθ-ysinθ;yθ= xsinθ+ycosθ
zθ= z;wθ= w
3 交互式操作的实现
用户可以通过Java 3D的KeyNavigatorBeha-
vior类和MouseBehavior类实现使用键盘和鼠标
控制组合体的平移、旋转和缩放[8].以鼠标交互式
操作为例, Java 3D的MouseBehavior类的子类
MouseRotate可实现用鼠标键拖动组合体原地旋转;
MouseTranslate子类实现组合体的鼠标平移交互操
作; MouseZoom是使用鼠标来缩放组合体.以下是使
用鼠标交互实现组合体旋转的部分程序代码.
TransformGroup objT=null;
TransformGroup3D obj3D=new Transform3D();
MouseRotate t=null;
…
BoudingShereBouds bounds = new BoudingShere
(new Point3D(0.0 0.0 0.0),120.0
…
t=new MouseRotate();
t.setTransformGroup(objT);
t.setSchedulingBounds(bounds);
TransformGroup(objT);
objRoot.addChilid(t);
4 提高三维模型的网络传输速度及
用户环境的安装
Java 3D是面向Internet的三维开发环境,而
Java即时编译器(JIT)、Java虚拟机(JVM)和Applet
使得Java 3D本身具有较高的网络性能.基于Java
3D的三维图像在网络上传输时,传输的不是图像本
身,而是控制三维图像生成的程序和数据,即传输的
是命令消息,因而大大节省了网络数据传输量.为了
提高三维动画的网络响应速度,目前常用的方法有:
预测计算、场景分块及优化、可见性剔除技术、细节层
次模型(LOD)、增量传输技术、Java代码压缩解压技
术、分布式服务器结构、多线程技术等.
Java 3D的数据结构称为场景图,降低场景的
复杂度(即降低图形系统需处理的多边形数)可大
大提高3D动画的网络传输速度.图2所示是沿着
场景图路径合并TransformGroup对象,将左边的
结构编译优化成右边的结构(该图并非Java的实际
操作,只是说明优化的概念).利用该方法可对组合
体3D模型场景图结构进行优化. 在组合体3D场景优化中,可结合使用Java 3D
的细节层次算法LOD和可见性剔除技术.对场景
中的组合体,用具有不同细节的描述方法,或通过
评估一个或一组绘制元素的可见性或不可见性来
快速剔除不可见的绘制元素,从而减少送入渲染管
道的绘制元素的数量,得到该组合体模型的“快
照”.但是,该“快照”忽略了3D模型的大部分细节.
当3D模型在网络上传输时,传输的是"快照",当浏
览器端的客户需要查看某个模型的某部分细节时,
服务器端再把该部分特定细节传输过去,而不是一
开始就传输全部细节.同时结合采用增量传输技
术[9],即服务器端在保证客户端得到正确结果的前
提下,只向客户端传送被当前操作改变的拓扑元素
相对应的显示模型中的点、线、面,这样可以极大减
少数据的传输量.
利用Java的Zip文件操作包对代码进行压缩,
也是提高网络实时性的有效方法.利用Java的
ZipEntry、ZipInputStream和ZipOutputStream 3
个类可实现数据的压缩、网络传输和解压.用Java
数据压缩方式编写的用文件输出流构建Zip压缩输
出流的方法如下:
ZipOutputStream zipos=new ZipOutputStream
(new FileOutputStream(f));
zipos. setMethod ( ZipOutputStream.
DEFLATED);
zipos.putNextEntry(new ZipEntry("zip"));
DataOutputStream os=new DataOutputStream
(zipos);
os.writeUTF(doc);
os.close();
doczipsize = f.length();
showTextandInfo();
数据压缩方法还包括对3D模型进行游程长度
编码,用较低字节数的存储类型代替较高字节数据
的存储类型(如用float型代替double型,用short
型代替long型)等;也可以采用三角形网格
Edgebreaker压缩法,对3D模型的顶点坐标和顶点
属性信息进行压缩等[10].
Java 3D继承了Java语言的风格,所以用Java
3D编写的Applet需要变成以<object>、<embed
>方式定义的页面嵌入到HTML中,才能在IE浏
览器中浏览.当浏览含有嵌入Java 3D代码的
HTML页面时,IE浏览器会自动检查客户端是否
具有Java及Java 3D的运行环境.如果该环境尚未
安装,将主动下载并安装,让用户能够像浏览网页
一样观看并操作三维动态图形.
5 实 验
实验环境为校园网环境,Web服务器位于校网
络中心,使用1 000 MB光纤接到机械学院CAD中
心.CAD中心交换机100 MB连接有40个工作站,
测试时间选在上午8:00左右的网络空闲时间.
组合体网络教学包含30道组合体题目(要求
能实现交互式操作),使用传统的帧动画技术实现,
总的文件大小为523 MB,采用压缩和流媒体技术
后达361 MB,平均单个组合体12 MB,浏览单个静
态组合体约10 s,若是动画要1 min左右,交互式操
作时续时断.采用Java 3D技术,总的文件大小为
27 MB,使用代码压缩、LOD和增量传输等技术,单
个组合体静态图形在网络上传输数据只有几十
KB,动画约300 KB左右,浏览器端的显示速度和
交互式操作响应在ms级,接近本地速度.
6 结 语
基于Java 3D技术开发的组合体网络教学系统
在试用中表明:具有网络响应速度快、交互性强、文
件占用空间小的优点.将Java 3D技术用于组合体
网络实时3D动画的制作是一种新的尝试,较好地
解决了由于组合体实体造型多、三维数据量大而造
成的网络传输和实时交互瓶颈,将大大促进工程制
图组合体网络教学的开展.
参考文献:
[1 ]冯开平,左宗义.实时交互行为三维动画的设计技术[J].工程图学学报,2002,23(1):143-148.
[2 ]邱宏俊,陶华,关文天.基于Java3D的产品数据信息的可视化[J].机床与液压, 2004,(12):88-92.
[3 ]濮青,徐云.应用Cult 3D技术实现人脸交互式三维动画[J].计算机辅助与设计图形学学报,2004,16(3):382-384.
[4 ]林冬梅.X3D:新一代Web交互式三维图形规范[J].计算机系统应用,2004,(10):1038-1043.
[5 ]都志辉,顾雷,刘鹏,等.Java 3D编程实践[M].北京:清华大学出版社,2002.
[6 ]张杰.Java 3D交互式三维图形编程[M].北京:人民邮电出版社,1999.
[7 ]张大坤,薛忠明,王光兴.基于Java 3D的虚拟开发技术[J].沈阳工业大学学报,2004,26(5):547-500.
[8 ]余小燕.基于Java 3D的三维交互式编程技术[J].工矿自动化,2004,(6):57-59.
[9 ]周勋,李洁,何发智,等.基于Web的同步协同实体建模系统[J].计算机集成制造系统-CIMS,2003,9(11):960-965.
[10]刘波,张鸿宾,王靖.三维图形数据的压缩与网上浏览[J].计算机工程与应用,2004,40(28):44-46.
参考答案来源于:wenwen.soso.com《Csdn收音机》在线检测最新版本,让你永不过期!