原文地址鏈接
Mascot Capsule v3支持在輪廓上使用多個紋理,然而,重復紋理卻是不支持的,例如,你不能在一個紋理上再添加另一個紋理。請記住,在Mascot Capsule v3里,所有紋理都是以256x256的圖象存放在堆里的,并不考慮原始大小。
下面我將創建一個使用兩個獨立紋理的MIDlet
下載源代碼
在這個立方體上使用了兩個獨立的紋理 
當一個輪廓從3D authoring程序中導出時,一個BAC文件被創建。這個BAC文件是一個文本文件,它存儲了輪廓數據。文件里的這些數據可以用PAC工具或手工編輯。
在Mascot Capsule v3 API中,這個BAC文件不能以輪廓的形式被裝載和使用。因此,我們得使用Micro3DConv_sony_EriCSSon工具沖BAC文件中創建一個mbac文件。在使用MIDlet以前,可以使用PVMicro工具預覽輪廓的最終效果。
如果我們關注BAC文件,我們可以看紋理坐標說明書,接下來我們可以知道如何如何使用這些坐標來創建輪廓。
( TextureCoords 
    ( f2    0.0005 0.9995 ) 
    ( f2    0.9995 0.9995 ) 
    ( f2    0.9995 0.0005 ) 
    ( f2    0.0005 0.0005 ) 
  ) ; TextureCoords   
 
 ( Polygons; number of faces: 6
  ;        mat vertex indices  texture coord. indices
    ( face    0 ( i4 0 1 2 3  ) ( i4 2 3 0 1 )  ) 
    ( face    0 ( i4 4 5 6 7  ) ( i4 2 1 0 3 )  ) 
    ( face    0 ( i4 8 9 10 11  ) ( i4 2 1 0 3 )  ) 
    ( face    0 ( i4 12 13 14 15  ) ( i4 2 3 0 1 )  ) 
    ( face    0 ( i4 16 17 18 19  ) ( i4 0 3 2 1 )  ) 
    ( face    1 ( i4 20 21 22 23  ) ( i4 1 0 3 2 )  ) 
  ) 
在上面的表中,除了最后一個值為一以外,所有面的”mat”(材質)值為零,就是這個值為一的材質的紋理與其他的不同。
當我們裝載這些紋理信息時,必須使用一個數組來存儲這些信息。下面是實現的代碼:
cubeFigure = new Figure("/cube.mbac");
textures = new Texture[] {new Texture("/image.bmp", true),
               new Texture("/se_turtle.bmp", true)};
cubeFigure.setTexture(textures);
g3d.renderFigure(cubeFigure, 0, 0, layout, effect);
為了之前的想法,我們必須把兩張圖象合并成一張圖象。在這個例子中,兩張96x96的圖象被合并成一張192x96的圖象。請注意:在一個輪廓中使用一張圖片里的兩種不同的紋理是可能實現的。

下面的紋理坐標是用來控制在一個面顯示烏龜圖象的。
PRivate int[] tex = {
            192, 0,     96, 0,    96, 96,     192, 96,
            0, 96,      96, 96,   96, 0,      0, 0,
            0, 96,      96, 96,   95, 0,      0, 0,
            0, 96,      96, 96,   95, 0,      0, 0,
            0, 96,      96, 96,   95, 0,      0, 0,
            0, 96,      96, 96,   95, 0,      0, 0};
上面提到的一些工具可以在這里下載。
(出處:http://m.survivalescaperooms.com)
新聞熱點
疑難解答