private Tuple <Material, Media3D.Transform3D> LoadBeetle() { var data = ReadDat("stagbeetle208x208x123.dat", out var width, out var height, out var depth); var m = new VolumeTextureDiffuseMaterial(); ushort max = data.Max(); uint[] histogram = new uint[max + 1]; float[] fdata = new float[data.Length]; for (int i = 0; i < data.Length; ++i) { fdata[i] = (float)data[i] / max; histogram[data[i]]++; } var transferMap = GetTransferFunction(histogram, data.Length, 1, 0.0001f); var gradients = VolumeDataHelper.GenerateGradients(fdata, width, height, depth, 1); VolumeDataHelper.FilterNxNxN(gradients, width, height, depth, 3); m.Texture = new VolumeTextureGradientParams(gradients, width, height, depth); m.Color = new Color4(0, 1, 0, 0.4f); var transform = new Media3D.ScaleTransform3D(1, 1, 1); transform.Freeze(); m.Freeze(); return(new Tuple <Material, Media3D.Transform3D>(m, transform)); }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var scale = (float)values[0]; var transform = (Numerics.Matrix4x4)values[1]; var tGroup = new Media3D.Transform3DGroup(); if (scale != 1) { var tform = new Media3D.ScaleTransform3D(scale, scale, scale); tform.Freeze(); tGroup.Children.Add(tform); } if (!transform.IsIdentity) { var tform = new Media3D.MatrixTransform3D(transform.ToMatrix3D()); tform.Freeze(); tGroup.Children.Add(tform); } tGroup.Freeze(); return(tGroup); }
private Tuple <Material, Media3D.Transform3D> LoadNoise() { var m = new VolumeTextureDDS3DMaterial(); m.Texture = LoadFileToMemory("NoiseVolume.dds"); m.Color = new Color4(1, 1, 1, 0.01f); m.Freeze(); var transform = new Media3D.ScaleTransform3D(1, 1, 1); transform.Freeze(); return(new Tuple <Material, Media3D.Transform3D>(m, transform)); }
private Media3D.Transform3D GetTransform(float scale, Matrix4x4 transform) { var tGroup = new Media3D.Transform3DGroup(); if (scale != 1) { var tform = new Media3D.ScaleTransform3D(scale, scale, scale); tform.Freeze(); tGroup.Children.Add(tform); } if (!transform.IsIdentity) { var tform = new Media3D.MatrixTransform3D(transform.ToMatrix3D()); tform.Freeze(); tGroup.Children.Add(tform); } tGroup.Freeze(); return(tGroup); }