Servus,
ich habe ne kleine Frage, wieso interpoliert Java3D jpgs so schlecht?
Als beispiel ich habe eine Sphere mit dem Radius 1f und nicht in der Z Achse verschoben, also ist die Kugel recht groß.
Jetzt muss ich da aber eine 2048x2048er Texture von der Erde drüberbügeln, dass es einigermaßen gescheit aussieht.
Eigentlich müsste das Bild doppelt so groß sein, dass man keine Pixel mehr sieht und keine Treppen (AntiAliasing geht
leider nicht, weil das verbugged ist). 2048² ist natürlich eine Hammertextur für jede Grafikkarte, ich frage mich einfach
wie das bei anderen Spielen z.B. X3 - Reunion oder so gemacht wird, da sind die Objekte noch viel größer, aber die
Texturen gestochen scharf, die können doch keine 16000er Texturen oder so verwenden.
Gibt es da einen Tip wie ich die Texturen schärfer bekomme, ohne noch mehr Pixel benutzen zu müssen. Z.B. einen
anderen Interpolationsmodus oder so?
mfg Der Grüne
Hier noch der Code wie ich Texturen einlade:
ich habe ne kleine Frage, wieso interpoliert Java3D jpgs so schlecht?
Als beispiel ich habe eine Sphere mit dem Radius 1f und nicht in der Z Achse verschoben, also ist die Kugel recht groß.
Jetzt muss ich da aber eine 2048x2048er Texture von der Erde drüberbügeln, dass es einigermaßen gescheit aussieht.
Eigentlich müsste das Bild doppelt so groß sein, dass man keine Pixel mehr sieht und keine Treppen (AntiAliasing geht
leider nicht, weil das verbugged ist). 2048² ist natürlich eine Hammertextur für jede Grafikkarte, ich frage mich einfach
wie das bei anderen Spielen z.B. X3 - Reunion oder so gemacht wird, da sind die Objekte noch viel größer, aber die
Texturen gestochen scharf, die können doch keine 16000er Texturen oder so verwenden.
Gibt es da einen Tip wie ich die Texturen schärfer bekomme, ohne noch mehr Pixel benutzen zu müssen. Z.B. einen
anderen Interpolationsmodus oder so?
mfg Der Grüne
Hier noch der Code wie ich Texturen einlade:
Code:
public static Appearance texture(String s) {
TextureLoader loader = new TextureLoader(s, TextureLoader.GENERATE_MIPMAP, null);
ImageComponent2D image = loader.getImage();
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
int imageLevel = 0;
image.setCapability(ImageComponent2D.ALLOW_IMAGE_WRITE);
Texture2D texture = new Texture2D(Texture.MULTI_LEVEL_MIPMAP, Texture.RGB,imageWidth ,imageHeight);
/*Texture2D texture = new Texture2D();
int form = texture.getFormat();
int base = texture.getMipMapMode();
texture = new Texture2D(base,form,image.getWidth(),image.getHeight());
*/
texture.setImage(imageLevel, image);
Appearance appear = new Appearance();
while(imageHeight > 1 || imageWidth > 1){
//Imagelevel erhöhen
++imageLevel;
if(imageHeight > 1){
imageHeight /= 2;
}
if(imageWidth > 1){
imageWidth /= 2;
}
image = loader.getScaledImage(imageWidth, imageHeight);
texture.setImage(imageLevel, image);
}
appear.setTexture(texture);
TextureAttributes texat = new TextureAttributes(TextureAttributes.MODULATE,
new Transform3D(),new Color4f(),TextureAttributes.NICEST);
appear.setTextureAttributes(texat);
Material mat = new Material(new Color3f(0f,0f,0f),new Color3f(0f,0f,0f),new Color3f(0f,0f,0f),new Color3f(0f,0f,0f),100f);
mat.setDiffuseColor(1, 1, 1, 255);
appear.setMaterial(mat);
return(appear);
}