WPF 3D DiffuseMaterial

Site Index




//*******************************
// VisualHostMaterial
//*******************************
DiffuseMaterial w_DiffuseMaterial = new DiffuseMaterial(Brushes.White);
w_DiffuseMaterial.SetValue(Viewport2DVisual3D.IsVisualHostMaterialProperty, true);
w_2_Viewport2DVisual3D.Material = w_DiffuseMaterial;


光源の設定
http://ex.osaka-kyoiku.ac.jp/~j129603/WPF/WPF_Lesson6.html




for (int idx = 0; idx < z_idxMax; idx++)
{
z_1_GeometryModel3D[idx] = new GeometryModel3D();
z_1_GeometryModel3D[idx].Geometry = xaml_Geometry_ball;
z_1_GeometryModel3D[idx].Material = new DiffuseMaterial(new SolidColorBrush(Colors.Aqua));

//**Viewport2DVisual3DにはGeometryModel3Dは適用できないため
//**MeshGeometry3Dを使用する。
//**z_2_GeometryModel3D[idx] = new GeometryModel3D();
//**z_2_GeometryModel3D[idx].Geometry = xaml_Geometry_text;
//**z_2_GeometryModel3D[idx].Material = new DiffuseMaterial(new SolidColorBrush(Colors.Aqua));

z_2_MeshGeometry3D[idx] = new MeshGeometry3D();
TypeConverter w_cvt_int32 = TypeDescriptor.GetConverter(typeof(Int32Collection));
z_2_MeshGeometry3D[idx].TriangleIndices = (Int32Collection)w_cvt_int32.ConvertFromString("0,1,2 3,4,5");
TypeConverter w_cvt_vector3D = TypeDescriptor.GetConverter(typeof(Vector3DCollection));
z_2_MeshGeometry3D[idx].Normals = (Vector3DCollection)w_cvt_vector3D.ConvertFromString("0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1");
TypeConverter w_cvt_point3D = TypeDescriptor.GetConverter(typeof(Point3DCollection));
z_2_MeshGeometry3D[idx].Positions = (Point3DCollection)w_cvt_point3D.ConvertFromString("-30,-20,0 30,-20,0 30,20,0 30,20,0 -30,20,0 -30,-20,0");
TypeConverter w_cvt_point = TypeDescriptor.GetConverter(typeof(PointCollection));
z_2_MeshGeometry3D[idx].TextureCoordinates = (PointCollection)w_cvt_point.ConvertFromString("0,1 1,1 1,0 1,0 0,0 0,1");

//Transformはここ(スライダーバインドの包括)
z_1_GeometryModel3D[idx].Transform = xaml_Transform_UIE;
//**z_2_GeometryModel3D[idx].Transform = xaml_Transform_UIE;
}

Refer TypeConverter
http://uchukamen.wordpress.com/2009/01/03/zam3d%E3%81%8C%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bxaml%E3%82%92c%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%81%A8/




Canvas w_canvas = new Canvas();
w_canvas.Width = 200;
w_canvas.Height = 200;
w_canvas.Background = new SolidColorBrush(Colors.LemonChiffon);

Label w_label = new Label();
w_label.Width = 150;
w_label.Height = 150;
w_label.Content = "idx --> " + idx;
w_label.FontSize = 32;
w_label.Background = new SolidColorBrush(Colors.AliceBlue);
w_label.Foreground = new SolidColorBrush(Colors.Blue);

Rectangle w_rect = new Rectangle();
w_rect.Width = 200;
w_rect.Height = 200;
w_rect.Stroke = new SolidColorBrush(Colors.Red);
w_rect.StrokeThickness = 2;

w_canvas.Children.Add(w_rect);
w_canvas.Children.Add(w_label);

w_label.SetValue(Canvas.LeftProperty, 20.0);
w_label.SetValue(Canvas.TopProperty, 20.0);




AX