//#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); } }
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); }
/// <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); }
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; }