/** * Make a donation http://sourceforge.net/donate/index.php?group_id=98797 * Microcrowd.com * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Contact Josh DeFord jdeford@microcrowd.com */ package com.microcrowd.loader.java3d.max3ds.chunks; import javax.vecmath.Point3f; import com.microcrowd.loader.java3d.max3ds.ChunkChopper; import com.microcrowd.loader.java3d.max3ds.ChunkMap; /** * This chunk is used to generate normals for a mesh according * to the data in the smoothing groups chunk. * Vertices that share coordinates will all use the same, averaged * normal if they also belong to the same smoothing groups. * @author jdeford */ public class SmoothingChunk extends Chunk { /** * Loads the vertices smoothing groups for * a mesh and stores it in chopper * * @param chopper the ChunkChopper containing the state of the parser. */ public void loadData(ChunkChopper chopper) { Point3f[] vertices = (Point3f[])chopper.popData(ChunkMap.FACES_DESCRIPTION); int[] smoothGroups = new int[vertices.length]; int numFaces = vertices.length/3; for(int i=0; i < numFaces; i++) { int groupMask = chopper.getInt(); smoothGroups[i*3]=groupMask; smoothGroups[(i*3)+1]=groupMask; smoothGroups[(i*3)+2]=groupMask; java.util.ArrayList list = new java.util.ArrayList(); for(int j=0; j < 32; j++) { if(((0x1l << j) & groupMask) > 0) { list.add(new Integer(j)); } } } chopper.pushData(chopper.getID(), smoothGroups); } }