public FaceFactory addFace(FaceType faceType) { FaceFactory ff = new FaceFactory(faceType); this.faceFactory.add(ff); return ff; }
public void addVert(int vertIndex, int coordIndex, int normalIndex) { this.vertIndex.add(vertIndex); validateAddedTextureCoordinates(1); this.coordIndexLayers.get(0).add(coordIndex); this.normalIndex.add(normalIndex); this.count++; }
face.addVert(ldf, tld, nf); face.addVert(rdf, trd, nf); face.addVert(ruf, tru, nf); face.addVert(luf, tlu, nf); face.addVert(rdb, tld, nb); face.addVert(ldb, trd, nb); face.addVert(lub, tru, nb); face.addVert(rub, tlu, nb); face.addVert(rdf, tld, nr); face.addVert(rdb, trd, nr); face.addVert(rub, tru, nr); face.addVert(ruf, tlu, nr); face.addVert(ldb, tld, nl); face.addVert(ldf, trd, nl); face.addVert(luf, tru, nl); face.addVert(lub, tlu, nl); face.addVert(luf, tld, nt); face.addVert(ruf, trd, nt); face.addVert(rub, tru, nt); face.addVert(lub, tlu, nt); face.addVert(ldb, tld, nd); face.addVert(rdb, trd, nd); face.addVert(rdf, tru, nd); face.addVert(ldf, tlu, nd);
/** * @param pMeshRoof * @param pPlane * @param pTextureVector * @param pTextureData * @param textureOffsetU * @param textureOffsetV * @param normalIndex * @param face * @param point2d */ private static void addPointToTriangleFace(MeshFactory pMeshRoof, Plane3d pPlane, Vector3d pTextureVector, TextureData pTextureData, double textureOffsetU, double textureOffsetV, int normalIndex, FaceFactory face, Point2d point2d) { double h = pPlane.calcYOfPlane(point2d.x, -point2d.y); Point3d point3d = new Point3d(point2d.x, h, -point2d.y); int vi = pMeshRoof.addVertex(point3d); // Point3d point3d = pMeshRoof.vertices.get(vi); face.addVertIndex(vi); face.addNormalIndex(normalIndex); TextCoord calcUV = TextCordFactory.calcFlatSurfaceUV(point3d, pPlane.getNormal(), pTextureVector, pPlane.getPoint(), pTextureData, textureOffsetU, textureOffsetV); int tci = pMeshRoof.addTextCoord(calcUV); face.addCoordIndex(tci); }
int j = 0; for (FaceFactory ff : faceFactory) { Face f = new Face(ff.type.getType(), ff.vertIndex.size(), ff.numOfTexturesLayers()); for (int l = 0; l < ff.numOfTexturesLayers(); l++) { List<Integer> coordIndex = ff.coordIndexLayers.get(l);
face.addVertIndex(point1HightIndex); face.addVertIndex(point1BottomIndex); face.addVertIndex(point2BottomIndex); face.addNormalIndex(normalIndex); face.addNormalIndex(normalIndex); face.addNormalIndex(normalIndex); face.addCoordIndex(tc_0_v); face.addCoordIndex(tc_0_0); face.addCoordIndex(tc_u_0); face.addVertIndex(point1HightIndex); face.addVertIndex(point2BottomIndex); face.addVertIndex(point2HightIndex); face.addNormalIndex(normalIndex); face.addNormalIndex(normalIndex); face.addNormalIndex(normalIndex); face.addCoordIndex(tc_0_v); face.addCoordIndex(tc_u_0); face.addCoordIndex(tc_u_v);
face.addVert(ps1it, 0, niStart); face.addVert(ps2it, 0, niStart); face.addVert(ps2ib, 0, niStart); face.addVert(ps1ib, 0, niStart); face.addVert(pe1it, 0, niTop); face.addVert(pe2it, 0, niTop); face.addVert(ps2it, 0, niTop); face.addVert(ps1it, 0, niTop); face.addVert(ps1ib, 0, niBottom); face.addVert(ps2ib, 0, niBottom); face.addVert(pe2ib, 0, niBottom); face.addVert(pe1ib, 0, niBottom); face.addVert(ps1ib, 0, niRight); face.addVert(pe1ib, 0, niRight); face.addVert(pe1it, 0, niRight); face.addVert(ps1it, 0, niRight); face.addVert(ps2it, 0, niLeft); face.addVert(pe2it, 0, niLeft); face.addVert(pe2ib, 0, niLeft); face.addVert(ps2ib, 0, niLeft); face.addVert(ps2it, 0, niEnd); face.addVert(ps1it, 0, niEnd); face.addVert(ps1ib, 0, niEnd); face.addVert(ps2ib, 0, niEnd);
face.addVertIndex(vi); face.addNormalIndex(normalIndex); face.addCoordIndex(tci);
public void addVert(int vertIndex, int normalIndex, int...cords) { this.vertIndex.add(vertIndex); validateAddedTextureCoordinates(cords.length); for (int i = 0; i < cords.length; i++) { this.coordIndexLayers.get(i).add(cords[i]); } this.normalIndex.add(normalIndex); this.count++; }
public FaceFactory addFace(FaceType faceType, int numOfTextures) { FaceFactory ff = new FaceFactory(faceType, numOfTextures); this.faceFactory.add(ff); return ff; }
public void addVert(int vertIndex, int coordIndex0, int coordIndex1, int normalIndex) { this.vertIndex.add(vertIndex); validateAddedTextureCoordinates(2); this.coordIndexLayers.get(0).add(coordIndex0); this.coordIndexLayers.get(1).add(coordIndex1); this.normalIndex.add(normalIndex); this.count++; }
int ehi = pMeshBorder.addTextCoord(eh); faceRight.addVert(startHi, bhi, n1i); faceRight.addVert(startMi, bmi, n1i); faceRight.addVert(endMi, emi, n1i); faceRight.addVert(endHi, ehi, n1i); faceLeft.addVert(startMi, emi, n2i); faceLeft.addVert(startHi, ehi, n2i); faceLeft.addVert(endHi, bhi, n2i); faceLeft.addVert(endMi, bmi, n2i);
leftBorder.addVert(wbi1, tcb1, flatNormalI); leftBorder.addVert(wbi2, tcb2, flatNormalI); leftBorder.addVert(wei1, tce1, flatNormalI); leftBorder.addVert(wei2, tce2, flatNormalI); leftPart.addVert(wbi2, tcb2, flatNormalI); leftPart.addVert(wbi3, tcb3, flatNormalI); leftPart.addVert(wei2, tce2, flatNormalI); leftPart.addVert(wei3, tce3, flatNormalI); rightBorder.addVert(wbi3, tcb3, flatNormalI); rightBorder.addVert(wbi4, tcb4, flatNormalI); rightBorder.addVert(wei3, tce3, flatNormalI); rightBorder.addVert(wei4, tce4, flatNormalI); rightPart.addVert(wbi4, tcb4, flatNormalI); rightPart.addVert(wbi5, tcb5, flatNormalI); rightPart.addVert(wei4, tce4, flatNormalI); rightPart.addVert(wei5, tce5, flatNormalI);
face.addVert(b01, t_0_0, nb1); face.addVert(b11, t_0_v1, nb1); face.addVert(b12, t_u1_v1, nb1); face.addVert(b02, t_u1_0, nb1); face.addVert(b02, t_0_0, nb2); face.addVert(b12, t_0_v1, nb2); face.addVert(b13, t_u2_v2, nb2); face.addVert(b03, t_u2_0, nb2); face.addVert(b03, t_0_0, nb3); face.addVert(b13, t_0_v2, nb3); face.addVert(b14, t_u1_v2, nb3); face.addVert(b04, t_u1_0, nb3); face.addVert(b04, t_u2_0, nb4); face.addVert(b14, t_u2_v2, nb4); face.addVert(b11, t_0_v1, nb4); face.addVert(b01, t_0_0, nb4); topFace.addVert(t1, tc1, tni); topFace.addVert(t2, tc2, tni); topFace.addVert(t3, tc3, tni); topFace.addVert(t4, tc4, tni);
face.addVert(b01, t_0_0, nb1); face.addVert(b03, t_u1_0, nb1); face.addVert(b12, t_u15_v1, nb1); face.addVert(b04, t_0_0, nb2); face.addVert(b06, t_u1_0, nb2); face.addVert(b15, t_u15_v1, nb2); topFace.addVert(t1, tc1, tn1i); topFace.addVert(t25, tc2, tn1i); topFace.addVert(t38, tc3, tn1i); topFace.addVert(t4, tc4, tn1i); topFace.addVert(t25, tc5, tn2i); topFace.addVert(t6, tc6, tn2i); topFace.addVert(t7, tc7, tn2i); topFace.addVert(t38, tc8, tn2i);
private static MultiPolygonList2d applyWindowsBegin(MultiPolygonList2d mPoly, BuildingNodeElement be, Point2d segmentStart, Vector2d segmentDirection, double nodeDisplacement, CatchFaceFactory pCatchFaceFactory, BuildingElementsTextureManager pTextureMenager, boolean counterClockwise) { if (be instanceof SquareHoleElement) { SquareHoleElement she = (SquareHoleElement) be; Point2d mbp = new Point2d(0, she.getMinHeight()); Point2d rbp = new Point2d(she.getWidth() / 2.0, she.getMinHeight()); Point2d rtp = new Point2d(she.getWidth() / 2.0, she.getMaxHeight()); Point2d mtp = new Point2d(0, she.getMaxHeight()); mPoly = PolygonSplitHelper.unionOfLeftSideOfMultipleCuts(mPoly, new LinePoints2d(rtp, rbp), new LinePoints2d(mtp, rtp), new LinePoints2d(rbp, mbp)); TextureData td = findWindowTextureData(be, pTextureMenager); MeshFactory mesh = pCatchFaceFactory.createOrGetMeshFactory(td.getTex0()); FaceFactory face = mesh.addFace(FaceType.QUADS); Vector3d n = new Vector3d(-segmentDirection.y, 0, -segmentDirection.x); // if (counterClockwise) { n.negate(); // } int iN = mesh.addNormal(n); int imbTc = mesh.addTextCoord(new TextCoord(0.5, 0)); int imtTc = mesh.addTextCoord(new TextCoord(0.5, 1)); int irbTc = mesh.addTextCoord(new TextCoord(1, 0)); int irtTc = mesh.addTextCoord(new TextCoord(1, 1)); face.addVert(segmentPointToVertex3dIndex(mbp, segmentStart, segmentDirection, mesh), imbTc, iN); face.addVert(segmentPointToVertex3dIndex(rbp, segmentStart, segmentDirection, mesh), irbTc, iN); face.addVert(segmentPointToVertex3dIndex(rtp, segmentStart, segmentDirection, mesh), irtTc, iN); face.addVert(segmentPointToVertex3dIndex(mtp, segmentStart, segmentDirection, mesh), imtTc, iN); } return mPoly; }
/** * @param meshBorder * @param polygons */ public void solidToModel(MeshFactory meshBorder, ArrayList<Polygon> polygons) { for (Polygon polygon : polygons) { Vertex[] vertices = polygon.getVertices(); FaceFactory faceRight = meshBorder.addFace(FaceType.TRIANGLE_FAN); meshBorder.addTextCoord(new TextCoord(0.5, 0.5)); for (Vertex vertex : vertices) { kendzi.math.geometry.Bool.CSG.Vector pos = vertex.getPos(); Vector normal = vertex.getNormal(); int vi = meshBorder.addVertex(new Point3d(pos.x, pos.y, pos.z)); int ni = meshBorder.addNormal(new Vector3d(normal.x, normal.y, normal.z)); faceRight.addVert(vi, 0, ni); } } }
private static MultiPolygonList2d applyWindowsEnd(MultiPolygonList2d mPoly, BuildingNodeElement be, Point2d segmentStart, Vector2d segmentDirection, double nodeDisplacement, CatchFaceFactory catchFaceFactory, BuildingElementsTextureManager textureMenager, boolean counterClockwise) { if (be instanceof SquareHoleElement) { SquareHoleElement she = (SquareHoleElement) be; Point2d lbp = new Point2d(nodeDisplacement - she.getWidth() / 2.0, she.getMinHeight()); Point2d mbp = new Point2d(nodeDisplacement, she.getMinHeight()); Point2d mtp = new Point2d(nodeDisplacement, she.getMaxHeight()); Point2d ltp = new Point2d(nodeDisplacement - she.getWidth() / 2.0, she.getMaxHeight()); mPoly = PolygonSplitHelper.unionOfLeftSideOfMultipleCuts(mPoly, new LinePoints2d(lbp, ltp), new LinePoints2d(ltp, mtp), new LinePoints2d(mbp, lbp)); TextureData td = findWindowTextureData(be, textureMenager); MeshFactory mesh = catchFaceFactory.createOrGetMeshFactory(td.getTex0()); FaceFactory face = mesh.addFace(FaceType.QUADS); Vector3d n = new Vector3d(-segmentDirection.y, 0, -segmentDirection.x); n.negate(); int iN = mesh.addNormal(n); int imbTc = mesh.addTextCoord(new TextCoord(0.5, 0)); int imtTc = mesh.addTextCoord(new TextCoord(0.5, 1)); int ilbTc = mesh.addTextCoord(new TextCoord(0, 0)); int iltTc = mesh.addTextCoord(new TextCoord(0, 1)); face.addVert(segmentPointToVertex3dIndex(lbp, segmentStart, segmentDirection, mesh), ilbTc, iN); face.addVert(segmentPointToVertex3dIndex(mbp, segmentStart, segmentDirection, mesh), imbTc, iN); face.addVert(segmentPointToVertex3dIndex(mtp, segmentStart, segmentDirection, mesh), imtTc, iN); face.addVert(segmentPointToVertex3dIndex(ltp, segmentStart, segmentDirection, mesh), iltTc, iN); } return mPoly; }