MeshGeometry3DクラスのインスタンスにTextureCoordinates.AddによりPoint変数を設定することにより、指定した画像中の同一形状の三角形領域のテクスチャをMeshGeometry3Dクラスのインスタンスに拡大されて貼り付けられることを期待しましたが、うまくいきません。画像中の指定した三角形領域ではなく、常に画像の幅と高さの最大値まで広がった三角形領域になってしまいます。
画像データの任意の3点を指定してテクスチャマッピングすることはできないのでしょうか?
ご教授頂ければ幸いです。
以下に、GeometryModel3Dクラスのインスタンスに対して三角形の位置設定、テクスチャマッピングを行う部分のテストルーチンを示します。
void TestCreateTriangle(GeometryModel3D model, ImageSource ims)
{
ImageBrush imb = new ImageBrush(ims);
MeshGeometry3D mesh = new MeshGeometry3D();
Point3D[] pos = new Point3D[3];
pos[0] = new Point3D(0, 0, 0);
pos[1] = new Point3D(0, 1, 0);
pos[2] = new Point3D(1, 0, 0);
mesh.Positions.Add(pos[0]);
mesh.Positions.Add(pos[1]);
mesh.Positions.Add(pos[2]);
double x = 0.0;
double y = 0.0;
mesh.TextureCoordinates.Add(new Point(x, y));
mesh.TextureCoordinates.Add(new Point(x, y+0.15));
mesh.TextureCoordinates.Add(new Point(x+0.3*ims.Height/ims.Width, y));
mesh.TriangleIndices.Add(0);
mesh.TriangleIndices.Add(1);
mesh.TriangleIndices.Add(2);
model.Geometry = mesh;
model.Material = new DiffuseMaterial(imb);
}