2014-11-06 51 views
1

我創建了一小段代碼,在我的SWT應用程序中繪製一個3D立方體,允許旋轉它。如何在Java 3D API中將不同的圖像設置爲3D立方體的面/邊?

現在,我想更改立方體的每個面/一側並在其上繪製不同的圖像,但我無法找到如何去做(或者至少,如果可能的話,以一種簡單的方式)。

我能夠將多維數據集的完整紋理更改爲圖像,但它會更改所有面,並且我想爲每個面設置不同的圖像。這可能嗎?任何代碼示例?

謝謝

回答

0

使用TextureCubeMap類,它是Texture的子類。紋理貼圖可用於將圖像應用於立方體的面部。

您可以通過使用xyz座標指定正方體和負方向來指定立方體面。

請參閱下面的link其完整文檔。

0

好吧,基於以前的答案和一些其他論壇我到下面的代碼,允許不同的紋理設置爲立方體的每個面:

基本上允許這樣做行是下面一個:

 ((Shape3D) textureCube.getChild(POSITION)).setAppearance(APPEARANCE); 

考慮到:

textureCube:

Box textureCube = new Box(0.4f, 0.4f, 0.4f, Box.GENERATE_TEXTURE_COORDS, 
      defaultAppearance); 

(defaultAppearance僅僅是一個基本的外觀對象:外觀defaultAppearance =新外觀();)

位置由下式給出,作爲vembutech指出,TextureCubeMap類和它們的每個面的值:POSITIVE_X,POSITIVE_Y,POSITIVE_Z, NEGATIVE_X,NEGATIVE_Y,NEGATIVE_Z。

而外觀對象只是一個外觀對象。我用這種方法創建了我的外觀對象:

private Appearance getAppearance(String f) throws Exception { 
    Appearance app = new Appearance(); 
    URL texImage = new java.net.URL("file:" + f); 
    Texture tex = new TextureLoader(texImage, this).getTexture(); 
    app.setTexture(tex); 
    TextureAttributes texAttr = new TextureAttributes(); 
    texAttr.setTextureMode(TextureAttributes.MODULATE); 
    app.setTextureAttributes(texAttr); 
    return app; 
} 

此方法創建基於輸入文件(f)的外觀。

乾杯