我有一个圆柱体,我想使用 36 个不同的位图对其进行纹理处理。如果我只用一种纹理对圆柱体进行纹理处理,我会看到它被拉伸了,就像这里的图片:
// 90, 90, are top radius, down radius, 50 is the height, 60 segements w, 60 segments height.
reel = new CylinderGeometry(90,90,50,60,60,false,false,true);
var textureBase2:Texture2DBase = new BitmapTexture(new reelTexture().bitmapData);
matrial_Reel = new TextureMaterial(textureBase2);
matrial_Reel.bothSides = true;
reelMesh = new Mesh(reel, matrial_Reel);
reel = null;
reelMesh.mouseEnabled = true;
我还想把不同的纹理一个一个地放在另一个上,但是要将它们组合成一个大的纹理,问题在于坐标。我使用以下代码,但我仍然得到两张图片相互重叠
public static const SIZE : int 1024;
public var img1 : Bitmap;
public var img2 : Bitmap;
var bmp:BitmapData=new BitmapData(SIZE,SIZE,false,0);
//Draw img1 at 0,0
bmp.draw(img1);
//Draw img2 at 512,0
bmp.draw(img2, new Matrix(1,0,0,1, SIZE/2, 0));
编辑:
新问题是我对12张图片(128*128)进行了纹理处理,但是最后一张图片与最后一张图片重叠。我也想纹理36张图片,但是在away3d中最大纹理是4k,我该怎么做?
这是带有新代码的新图片:
render = new BitmapData ( 2048 , 128 , false, 0 );
for (var j:int = 0; j < bitmaps.length; j++)
{
if ( j == 0 )
{
matrix.translate(0,0);
matrix.scale(1.1,1);
render.draw(bitmaps[0], matrix);
}
else if ( j == bitmaps.length -1 )
{
matrix.translate(128,0);
//matrix.scale(1,1);
render.draw(bitmaps[j], matrix);
}
else
{
matrix.translate(128,0);
matrix.scale(1.05,1);
render.draw(bitmaps[j], matrix);
}
}
var m_finalText:TextureMaterial = new TextureMaterial ( new BitmapTexture( render) ) ;