예제 #1
0
        //#region Active Geometry property

        //public static readonly DependencyProperty ActiveGeometryProperty = DependencyProperty.RegisterAttached(
        //    "ActiveGeometry",
        //    typeof(GeometryModel3D),
        //    typeof(Viewport3DX),
        //    new PropertyMetadata(null, ActiveGeometryPropertyChanged));

        //public static void SetActiveGeometry(DependencyObject element, GeometryModel3D value)
        //{
        //    element.SetValue(ActiveGeometryProperty, value);
        //}

        //public static GeometryModel3D GetActiveGeometry(DependencyObject element)
        //{
        //    return (GeometryModel3D)element.GetValue(ActiveGeometryProperty);
        //}

        //private static void ActiveGeometryPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
        //{

        //}

        //#endregion

        #region utils

        /// <summary>
        /// Sets the property value on the DynamoMeshCore - this makes its way down to our shader and invalidates the render.
        /// </summary>
        /// <param name="meshGeom"></param>
        /// <param name="args"></param>
        private static void HandleMeshPropertyChange(DynamoGeometryModel3D meshGeom, DependencyPropertyChangedEventArgs args)
        {
            var meshCore = meshGeom?.SceneNode?.RenderCore as DynamoGeometryMeshCore;

            if (meshCore != null)
            {
                meshCore.SetPropertyData(args);
            }
        }
예제 #2
0
        private DynamoGeometryModel3D CreateDynamoGeometryModel3D(HelixRenderPackage rp)
        {
            var meshGeometry3D = new DynamoGeometryModel3D(renderTechnique)
            {
                Transform                   = Model1Transform,
                Material                    = WhiteMaterial,
                IsHitTestVisible            = false,
                RequiresPerVertexColoration = rp.RequiresPerVertexColoration,
                IsSelected                  = rp.IsSelected
            };

            if (rp.Colors != null)
            {
                var pf     = PixelFormats.Bgra32;
                var stride = (rp.ColorsStride / 4 * pf.BitsPerPixel + 7) / 8;
                try
                {
                    var diffMap = BitmapSource.Create(rp.ColorsStride / 4, rp.Colors.Count() / rp.ColorsStride, 96.0, 96.0, pf, null,
                                                      rp.Colors.ToArray(), stride);
                    var diffMat = new PhongMaterial
                    {
                        Name              = "White",
                        AmbientColor      = PhongMaterials.ToColor(0.1, 0.1, 0.1, 1.0),
                        DiffuseColor      = defaultMaterialColor,
                        SpecularColor     = PhongMaterials.ToColor(0.0225, 0.0225, 0.0225, 1.0),
                        EmissiveColor     = PhongMaterials.ToColor(0.0, 0.0, 0.0, 1.0),
                        SpecularShininess = 12.8f,
                        DiffuseMap        = diffMap
                    };
                    meshGeometry3D.Material = diffMat;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
            }

            return(meshGeometry3D);
        }
예제 #3
0
        /// <summary>
        /// Sets the property value on the DynamoMeshCore - this makes its way down to our shader and invalidates the render.
        /// </summary>
        /// <param name="meshGeom"></param>
        /// <param name="args"></param>
        internal static void HandleMeshPropertyChange(DynamoGeometryModel3D meshGeom, DependencyPropertyChangedEventArgs args)
        {
            var meshCore = meshGeom?.SceneNode?.RenderCore as DynamoGeometryMeshCore;

            meshCore?.SetPropertyData(args);
        }
예제 #4
0
        private DynamoGeometryModel3D CreateDynamoGeometryModel3D(HelixRenderPackage rp)
        {
            var meshGeometry3D = new DynamoGeometryModel3D()
            {
                Transform = Model1Transform,
                Material = WhiteMaterial,
                IsHitTestVisible = true,
                RequiresPerVertexColoration = rp.RequiresPerVertexColoration,
                IsSelected = rp.IsSelected,
            };

            if (rp.Colors != null)
            {
                var pf = PixelFormats.Bgra32;
                var stride = (rp.ColorsStride / 4 * pf.BitsPerPixel + 7) / 8;
                try
                {
                    var diffMap = BitmapSource.Create(rp.ColorsStride / 4, rp.Colors.Count() / rp.ColorsStride, 96.0, 96.0, pf, null,
                        rp.Colors.ToArray(), stride);
                    var diffMat = new PhongMaterial
                    {
                        Name = "White",
                        AmbientColor = PhongMaterials.ToColor(0.1, 0.1, 0.1, 1.0),
                        DiffuseColor = defaultMaterialColor,
                        SpecularColor = PhongMaterials.ToColor(0.0225, 0.0225, 0.0225, 1.0),
                        EmissiveColor = PhongMaterials.ToColor(0.0, 0.0, 0.0, 1.0),
                        SpecularShininess = 12.8f,
                        DiffuseMap = diffMap
                    };
                    meshGeometry3D.Material = diffMat;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                }
            }
            ((MaterialGeometryModel3D)meshGeometry3D).SelectionColor = defaultSelectionColor;

            return meshGeometry3D;
        }