S
StonedOne
Gast
Hallo an alle,
dies ist mein erster Post hier und ich hätte eine Frage, da ich über die Suchfunktion einer Suchmaschine nicht finden kann.
Ich arbeite seid Anfang 2006 an einem Projekt namens www.FhitKick.de und es gab ein Turnier Ende 2006. Mit der Version 2.0 wird das ganze zu einem OpenSource-Projekt und wenn jemand Interesse hat kann er gerne Zugang zum SVN bekommen.
Nun zum eigentlichen Problem:
Mit dieser Funktion erstelle ich eine Fläche die aus vielen kleinen Quadraten besteht ( dies mache ich um korrekte Lichteffekte auf zB einer grossen Fläche zu bekommen), leider ist es mir nicht möglich eine Texture auf die komplette Fläche zu ziehen. Die gewählte Texture wird immer gekachelt ...
Ist es möglich auf alle Quadrate zusammen eine einzige Texture zu ziehen? Wenn ja, könnt ihr mir einen Anhaltspunkt geben wie ich das hin bekomme?
Grüsse aus Hessen
Stoned
dies ist mein erster Post hier und ich hätte eine Frage, da ich über die Suchfunktion einer Suchmaschine nicht finden kann.
Ich arbeite seid Anfang 2006 an einem Projekt namens www.FhitKick.de und es gab ein Turnier Ende 2006. Mit der Version 2.0 wird das ganze zu einem OpenSource-Projekt und wenn jemand Interesse hat kann er gerne Zugang zum SVN bekommen.
Nun zum eigentlichen Problem:
Mit dieser Funktion erstelle ich eine Fläche die aus vielen kleinen Quadraten besteht ( dies mache ich um korrekte Lichteffekte auf zB einer grossen Fläche zu bekommen), leider ist es mir nicht möglich eine Texture auf die komplette Fläche zu ziehen. Die gewählte Texture wird immer gekachelt ...
Code:
private Shape3D createXYPlane( float x, float y, Point3f p0 ) {
Shape3D plane = new Shape3D();
Vector3f norm = new Vector3f(0.0f, 0.0f, 1.0f);
// Map the texture coordinate
TexCoord2f[] texCoords = new TexCoord2f[(int)(16)];
for (int i = 0; i < texCoords.length; i += 4) {
texCoords[i] = new TexCoord2f(1.0f, 0.0f);
texCoords[i + 1] = new TexCoord2f(0.0f, 0.0f);
texCoords[i + 2] = new TexCoord2f(0.0f, 1.0f);
texCoords[i + 3] = new TexCoord2f(1.0f, 1.0f);
}
int count=0, step = 5;
QuadArray planeGeom = new QuadArray((int)(x*y*4*2), QuadArray.COORDINATES | QuadArray.NORMALS |
QuadArray.TEXTURE_COORDINATE_2);
for ( double countx = 0; countx < x; countx += step ){
for ( double county = 0; county < y; county += step ){
planeGeom.setCoordinate(count, new Point3d(p0.x - x/2 + countx, p0.y - y/2 + county, p0.z));
planeGeom.setNormal(count++, norm);
planeGeom.setCoordinate(count, new Point3d(p0.x - x/2 + countx + step, p0.y - y/2 + county, p0.z));
planeGeom.setNormal(count++, norm);
planeGeom.setCoordinate(count, new Point3d(p0.x - x/2 + countx + step, p0.y - y/2 + county + step, p0.z));
planeGeom.setNormal(count++, norm);
planeGeom.setCoordinate(count, new Point3d(p0.x - x/2 + countx, p0.y - y/2 + county + step, p0.z));
planeGeom.setNormal(count++, norm);
}
}
planeGeom.setTextureCoordinates(0, 0, texCoords);
plane.setGeometry(planeGeom);
return plane;
}
Grüsse aus Hessen
Stoned