在Mascot Capsule v3中使用多个纹理

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

原文地址链接

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://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航