在Mascot Capsule v3中使用多个纹理

作者:numenzq 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=1092

原文地址链接

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};

上面提到的一些工具可以在这里下载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值