基于Java3d的三维CAD软件的研制

基于Java3d的三维CAD软件的研制
2006年5月18日

1、报告内容
前期研究工作总结:可视化技术 三维造型基本方法 Extrude Lathe 三维实体的布尔运算
三维CAD软件的重点技术
目前的研究进展
要实现的目标

2、前期研究工作总结
前期重点研究了 可视化技术 三维造型基本方法 Extrude Lathe 三维实体的布尔运算

可视化技术
可视化技术不属于三维CAD里的内容。
由于我的毕业设计题目是“可视化技术的研究”,所以前期花了相当多的时间研究了可视化技术。
下面我将依次介绍可视化技术中的数据处理、点绘制技术、线绘制技术 和 面绘制技术。

可视化技术——数据
数据:可视化技术首先要关心的就是数据,一维数据、二维数据和三维数据应该采用不同的技术处理。
一维数据的可视化一般采用折线图、直方图、饼图等,这个在去年的Aolan流量统计系统中做过研究。
下面重点讨论二维和三维数据的可视化
//下面声明了一个二维数组
public float[][] myData=new float[100][100];
//下面声明了一个三维数组
public float[][][] myData=new float[100][100][100];
我们的数据就存储在这些数组里,为了在后面绘制图形的方便,我们还要简单处理一下这些数据,求出最值。

可视化技术——点绘制技术
二维数据:将数据值直接映射为颜色值
数据点较少时可以在数据点之间进行线性插值
点绘制技术其实就是位图(BitMap)技术,将这些点写入文件就成了位图。
三维数据:三维数据较少直接采用点绘制技术

可视化技术——线绘制技术
二维数据:等值线图,等值线的生成方法很多,下图显示的是其中的一种方法 MarchingSquare
三维数据:线框结构的等值面图,以二维等值线为基础,分层绘制

可视化技术——面绘制技术
二维数据:山峰图,将数据映射为高度
三维数据:等值面图,典型方法 MarchingCube

三维造型基本方法 Extrude Lathe
Extrude / Extrusion 原理
Lathe / Revolve 原理
方法扩展
再扩展
下面是上次给大家展示的Extrude和Lathe的样例。
这个样例中的截面是凹多边形,当时还没考虑到凹多边形的分解问题,是根据经验分解的。凹多边形的分解是重点研究问题。

三维实体的布尔运算
Jgeom是Java开发网上的一个开源项目,目标是提供一个三维几何体库,例如Meshes,NURBS, Subdivision Surfaces,可以用于游戏和建模环境。
其核心包用于创建NURBS和Subdivsiosn Surfaces。
其扩展库包括了Meshes、NURBS、 Subdivision Surfaces的布尔运算。

3、三维CAD软件的重点技术
文件读取存储(新建 打开 保存 打印)
图形对象编辑(剪切 复制 粘贴 删除)
二维图形创建(直线 圆弧 面域)
三维实体创建(Extrude Lathe 简单几何体)
三维实体编辑(布尔运算)
三维面创建(NURBS Meshes 简单几何面)
视图切换 缩放 三维动态观察器
捕捉系统(暂时不做)
着色方式(线框 平面 体着色)(暂时不做)
可视化工具(额外增加的)

4、目前的研究进展

5、要实现的目标
第一步:单机版
第二步:网络协同设计 单机版三维CAD + 原WebCAD协同部分=协同设计三维CAD
或者两部分工作可以分配给不同的人做。