前回は,
矩形のビットマップを任意の四角形に変形する
まずは,
Graphics.
Graphicsオブジェクト.drawTriangles(頂点座標, null, uv座標)
スクリプト1 三角形分割した領域にビットマップを変形して塗る
// フレームアクション
var nCenterX:Number = stage.stageWidth / 2;
var nCenterY:Number = stage.stageHeight / 2;
var myShape:Shape = new Shape();
var myGraphics:Graphics = myShape.graphics;
var myTexture:BitmapData = new Image();
var vertices:Vector.<Number> = new Vector.<Number>();
var uvData:Vector.<Number> = new Vector.<Number>();
myShape.x = nCenterX;
myShape.y = nCenterY;
vertices.push(-50, -50); // 頂点0
vertices.push(50, -70); // 頂点1
vertices.push(-70, 70); // 頂点2
vertices.push(50, -70); // 頂点1 (重複)
vertices.push(70, 50); // 頂点3
vertices.push(-70, 70); // 頂点2 (重複)
uvData.push(0, 0);
uvData.push(1, 0);
uvData.push(0, 1);
uvData.push(1, 0); // 重複
uvData.push(1, 1);
uvData.push(0, 1); // 重複
myGraphics.beginBitmapFill(myTexture);
myGraphics.drawTriangles(vertices, null, uvData);
myGraphics.endFill();
addChild(myShape);
[ムービープレビュー]を確かめると,
テクスチャマッピングは,
三角形の頂点の組を定める - Graphics.drawTriangles()メソッドの第2引数
前掲スクリプト1のGraphics.
Graphics.
スクリプト2 Graphics.
// フレームアクション
var nCenterX:Number = stage.stageWidth / 2;
var nCenterY:Number = stage.stageHeight / 2;
var myShape:Shape = new Shape();
var myGraphics:Graphics = myShape.graphics;
var myTexture:BitmapData = new Image();
var vertices:Vector.<Number> = new Vector.<Number>();
var indices:Vector.<int> = new Vector.<int>();
var uvData:Vector.<Number> = new Vector.<Number>();
myShape.x = nCenterX;
myShape.y = nCenterY;
// 頂点座標
vertices.push(-50, -50); // 頂点0
vertices.push(50, -70); // 頂点1
vertices.push(-70, 70); // 頂点2
vertices.push(70, 50); // 頂点3
// 頂点番号
indices.push(0, 1, 2); // 左上三角形
indices.push(1, 3, 2); // 右下三角形
// uv座標
uvData.push(0, 0);
uvData.push(1, 0);
uvData.push(0, 1);
uvData.push(1, 1);
myGraphics.beginBitmapFill(myTexture);
myGraphics.drawTriangles(vertices, indices, uvData);
myGraphics.endFill();
addChild(myShape);
Graphics.
そして,
[ムービープレビュー]を確かめると,
- ※1
- 3頂点の順序を時計回りか半時計回りかに決めておくと,
後の回で解説する面の裏表が調べられる。 - ※2
- [ヘルプ]の[Graphics]クラスで
「drawTriangles()メソッド」 の項を見ると, 第2引数の 「インデックスを使用すると, 通常, 送信されるデータ量と計算されるデータ量が減少」 すると説明されている。