java3D 构建三维人体模型的方法
用该类时,首先需要根据给定的的顶点的一维数组的序号,建立要用到的顶点的索引数组index,该数组是一个一维数组,每个元素保存选择出的一个顶点的元素序号。然后再用继承自IndexedGeometryArray 的方法setColorIndices(0,index)、setCoordinateIndices(0,index)分别设置颜色、坐标数组与索引数组之间的对应关系。
对应本程序,以第4 部分小腿部分为例,定义floatvert[]数组存放由分析3DS 文件得出的顶点坐标,定义float normals[]数组存放顶点的法向量,定义int index[]数组存放用到的顶点编号。具体程序实现如下:
IndexedTriangleStripArray line = new IndexedTriangle
StripArray(vert.length,IndexedTriangleStripArray.COORDINATES|IndexedTriangleStripArray.NORMAS|IndexedTriangleStripArray.COLOR_3,index.length,count);
4.2.3 对三维模型进行交互控制
三维图形的几何变换矩阵可以用矩阵T3D表示,表示形式如下[11]:

[a41 a42 a43]产生平移变换。
Java 3D包含了Transform3D类来表示3D放射变换或投影变换。在场景图中,一个TransformGroup节点利用Transform3D对象来定义其变换,Transform3D在其内部保留了一个4*4的double型矩阵以表示其变换。本程序中,通过调用voidsetTranslation()方法建立平移变换,调用void setScale()方法建立缩放变换。并通过鼠标行为类MouseZoom、MouseRotate和MouseTranslate,实现鼠标对3D人体模型交互控制。
4.2.3 最终显示结果

图4 最终效果
5.结论
应用本文方法开发出的三维人体展示系统,既利用了Poser 建立人体模型方便快捷的特点,又利用了java 3D 容易实现渲染和交互的特点,避免了各自的缺陷,使真实感人体人体建模能更轻松。在本文的基础上可以进一步进行NURBS 曲面拟合,实现面向真实人体着装的需要,输入服装用的人体尺寸,修改相应的主要造型特征与尺寸,得到特定用户所需的个性化人体模型。在服装CAD 领域有着良好的前景和广阔的发展空间。





