Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16493132
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:47:24

下载本文示例代码
  在本系列的第一篇中,我们讨论了如何在开发Java 3D图形程序中创建形状、灯光和背景。在随后的本篇中,我将向你展示如何为Checkers3D程序创建浮动的球体。  一、 地板  地板是由瓷砖(用我的ColouredTiles类创建)和轴标签(用Java 3D中的Text2D工具类构建)组成的。图5显示了地板分支子图,以前隐藏在图3中的一个"Floor Branch"方框中。 图5.场景图的地板分支子图  这个地板子图是用我的CheckerFloor类的一个实例构建的,它可以通过调用getBG()方法来使用: sceneBG.addChild(new CheckerFloor().getBG());//添加地板  这个CheckerFloor()构造器使用嵌套的循环来初始化两个ArrayLists。blueCoords列表包含蓝色瓷砖相关的所有坐标,而greenCoords包含绿色瓷砖相关的坐标。一旦填充完ArrayLists,连同用于生成瓷砖的颜色被一起传递到ColouredTiles对象中。ColouredTiles对象是一个Shape3D的子类,因此可以被直接添加到地板图中: floorBG.addChild( new ColouredTiles(blueCoords, blue) );floorBG.addChild( new ColouredTiles(greenCoords, green) );  原点处的红色方格(见于图1)是用相似的方式构建的: Point3f p1 = new Point3f(-0.25f, 0.01f, 0.25f);Point3f p2 = new Point3f(0.25f, 0.01f, 0.25f);Point3f p3 = new Point3f(0.25f, 0.01f, -0.25f);Point3f p4 = new Point3f(-0.25f, 0.01f, -0.25f);ArrayList oCoords = new ArrayList( );oCoords.add(p1); oCoords.add(p2);oCoords.add(p3); oCoords.add(p4);floorBG.addChild( new ColouredTiles(oCoords, medRed) );  该方格的中心在XZ平面的(0,0)处并且在y轴稍微向上( 0.01单位)的地方,这样就可以在瓷砖上看到它。  该方格的每一边的长度为0.5单位。在ArrayList中的四个Point3f点以逆时针方向存储。对于在blueCoords和greenCoords中的每一组的四个点都是如此。图6显示出方格中的点的顺序。 图6.从上方看上去的OrigMarker  二、 着色的瓷砖  我的ColouredTiles类扩展了Shape3D并用相同的颜色定义瓷砖的几何体和外观。该几何体使用一个Java 3D QuadArray来描述瓷砖为一系列的四边形。其构造器是: QuadArray(int vertexCount, int vertexFormat);  vertexFormat是一个静态整数集合-它指定稍后被初始化的该四边形的各种信息如坐标、颜色和法线。在ColouredTiles中,QuadArray平面是用下面一行代码创建的: plane=new QuadArray(coords.size(),GeometryArray.COORDINATES|GeometryArray.COLOR_3);  size()方法返回在ArrayList中的坐标数目。坐标和颜色数据是在createGeometry()中提供的: int numPoints=coords.size();Point3f[] points=new Point3f[numPoints];coords.toArray(points);//ArrayList->数组plane.setCoordinates(0,points);Color3f cols[]=new Color3f[numPoints];for(int i=0;i   在本系列的第一篇中,我们讨论了如何在开发Java 3D图形程序中创建形状、灯光和背景。在随后的本篇中,我将向你展示如何为Checkers3D程序创建浮动的球体。  一、 地板  地板是由瓷砖(用我的ColouredTiles类创建)和轴标签(用Java 3D中的Text2D工具类构建)组成的。图5显示了地板分支子图,以前隐藏在图3中的一个"Floor Branch"方框中。 图5.场景图的地板分支子图  这个地板子图是用我的CheckerFloor类的一个实例构建的,它可以通过调用getBG()方法来使用: sceneBG.addChild(new CheckerFloor().getBG());//添加地板  这个CheckerFloor()构造器使用嵌套的循环来初始化两个ArrayLists。blueCoords列表包含蓝色瓷砖相关的所有坐标,而greenCoords包含绿色瓷砖相关的坐标。一旦填充完ArrayLists,连同用于生成瓷砖的颜色被一起传递到ColouredTiles对象中。ColouredTiles对象是一个Shape3D的子类,因此可以被直接添加到地板图中: floorBG.addChild( new ColouredTiles(blueCoords, blue) );floorBG.addChild( new ColouredTiles(greenCoords, green) );  原点处的红色方格(见于图1)是用相似的方式构建的: Point3f p1 = new Point3f(-0.25f, 0.01f, 0.25f);Point3f p2 = new Point3f(0.25f, 0.01f, 0.25f);Point3f p3 = new Point3f(0.25f, 0.01f, -0.25f);Point3f p4 = new Point3f(-0.25f, 0.01f, -0.25f);ArrayList oCoords = new ArrayList( );oCoords.add(p1); oCoords.add(p2);oCoords.add(p3); oCoords.add(p4);floorBG.addChild( new ColouredTiles(oCoords, medRed) );  该方格的中心在XZ平面的(0,0)处并且在y轴稍微向上( 0.01单位)的地方,这样就可以在瓷砖上看到它。  该方格的每一边的长度为0.5单位。在ArrayList中的四个Point3f点以逆时针方向存储。对于在blueCoords和greenCoords中的每一组的四个点都是如此。图6显示出方格中的点的顺序。 图6.从上方看上去的OrigMarker  二、 着色的瓷砖  我的ColouredTiles类扩展了Shape3D并用相同的颜色定义瓷砖的几何体和外观。该几何体使用一个Java 3D QuadArray来描述瓷砖为一系列的四边形。其构造器是: QuadArray(int vertexCount, int vertexFormat);  vertexFormat是一个静态整数集合-它指定稍后被初始化的该四边形的各种信息如坐标、颜色和法线。在ColouredTiles中,QuadArray平面是用下面一行代码创建的: plane=new QuadArray(coords.size(),GeometryArray.COORDINATES|GeometryArray.COLOR_3);  size()方法返回在ArrayList中的坐标数目。坐标和颜色数据是在createGeometry()中提供的: int numPoints=coords.size();Point3f[] points=new Point3f[numPoints];coords.toArray(points);//ArrayList->数组plane.setCoordinates(0,points);Color3f cols[]=new Color3f[numPoints];for(int i=0;i 下载本文示例代码


用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体用Java开发3D游戏之创建浮动的球体
阅读(271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~