m3g note 4
/////////////////// note 4///////////////////1.camer的可视范围照相机利用setPerspective方法设置在它前端的坐标系统中什么范围内的对象是可见的。 2.建立3D对象(棱锥)的过程。2.1.这一步比较简单,指定棱锥用到的五个点。2.2.建立一个点序列的INDICES 数组,这个数组中和第一步中建立的点1到点5对应.2.3.分别指定五个点对应的颜色信息,包含了顶点的信息,其中 0 到 4 依次每个顶点都是按中的元素是表示将对照RGB的顺序。在以上的步骤中请大家注意一点,就是每一步中的数组的类型。 2.4.指定一个LENGTH数组,它其应的INDICES数组中元素划分为序列时,每个序列的长度。例子中的值是3,就表示INDICES中每三个元素作为一个序列。我们会发现,将INDICES中按照三个一组进行划分,所得到的每组序列刚好是组成一个三角形所需要的三个顶点。 2.5.使用VertexArray 对象来保存顶点位置和颜色信息。VertexArray 中三个参数的意义分别为建组成棱锥的三角面。TriangleStripArray 是 IndexBuffer类的能会保存法线信息(setNormals)。是顶载范例程序和源代码:第一个是创建的对象中元素的个数,第二个是每个元素所包含的子元素数,第三个用来指定每个子元素所占的字节数。 2.6.使用TriangleStripArray对象创子类,它是根据第二个参数将第一个参数也就是INDICES数组中的元素划为序列,组成三角面。在例子中是将INDICES中元素每三个划分为一个序列,刚好组成一个三角面。但是有时可能不是三个划分的,例如对于正方体我们可以定义LENGTH={4,4,4,4,4,4},这时INDICES中元素就会按照四个一组划分,于是这四个元素中的前三个先组成一个三角面,然后后面的两个元素交换位置和第四个元素再组成一个三角面,例如S=(2,0,1,4)就定义了两个三角面:(2,0,1)和(1,0,4)。另外TriangleStripArray中的INDICES数组也可以隐式声明,即TriangleStripArray(int, int[]),此时第一个参数指定了数组中起始元素,后面的元素依次加1递增。例如LENGTH={3,4},那么TriangleStripArray(0, LENGTH)就相当于指定了INDICES={0,1,2,3,4,5,6}。 2.7.利用VertexBuffer保存位置和颜色信息,有时也可能会保存法线信息(setNormals) 2.8.这是最后一步,使用Mesh建立3D对象。这里Mesh的构造函数有三个参数,第一个点的相关信息,例如位置、颜色和法线等,第二个是组成3D对象的三角面或子Mesh对象(并不是指Mesh的子类或Mesh对象)的信息,第三个是外观,Appearance对象,如果在这里指定为null,那么在建立Mesh对象以后,还可以通过setAppearance设定。 // 棱锥用到的顶点. x, y, zshort []POINTS = new short[] {-1, -1, 1, // 点11, -1, 1, // 点21, -1, -1, // 点3-1, -1, -1, // 点40, 1, 0}; // 点5, 顶点// 点序列int []INDICES = new int[] {0, 1, 4, 1, 2, 4, 2, 3, 4, 3, 0, 4, 2, 1, 0, 2, 0, 3};byte []COLORS = new byte[] {127, 0,…