public AdornerSet3DContainer(Viewport3DElement adornedViewport) { if (adornedViewport == null) { throw new ArgumentNullException("adornedViewport"); } this.adornedViewport = adornedViewport; Rect computedTightBounds = adornedViewport.GetComputedTightBounds(); this.shadowAdorningContainer = new Viewport3DVisual(); this.shadowAdorningContainer.Children.Add((Visual3D)this.CreateContainerWorld()); this.shadowAdorningContainer.Viewport = computedTightBounds; this.orthographicAdorningContainer = new Viewport3DVisual(); this.orthographicAdorningContainer.Children.Add((Visual3D)this.CreateContainerWorld()); this.orthographicAdorningContainer.Viewport = computedTightBounds; ProjectionCamera projectionCamera1 = this.adornedViewport.Camera.ViewObject.PlatformSpecificObject as ProjectionCamera; ProjectionCamera projectionCamera2; if (projectionCamera1 != null) { projectionCamera2 = projectionCamera1.Clone(); projectionCamera2.Transform = Transform3D.Identity; } else { projectionCamera2 = (ProjectionCamera) new PerspectiveCamera(new Point3D(0.0, 0.0, 10.0), new Vector3D(0.0, 0.0, 1.0), new Vector3D(0.0, 1.0, 0.0), 35.0); } this.shadowAdorningContainer.Camera = (Camera)projectionCamera2; OrthographicCamera orthographicCamera = new OrthographicCamera(projectionCamera2.Position, projectionCamera2.LookDirection, projectionCamera2.UpDirection, 3.0); orthographicCamera.NearPlaneDistance = 0.01; orthographicCamera.FarPlaneDistance = 1000000.0; this.orthographicAdorningContainer.Camera = (Camera)orthographicCamera; this.Children.Add((Visual)this.shadowAdorningContainer); this.Children.Add((Visual)this.orthographicAdorningContainer); }
protected virtual IList <SceneElement> AddToDocumentInternal(string importedFilePath, SceneElement element, ISceneInsertionPoint insertionPoint, SceneViewModel sceneViewModel, SceneEditTransaction undoTransaction) { List <SceneElement> list = new List <SceneElement>(); SceneElement sceneElement = insertionPoint.SceneElement; Viewport3DElement viewport3Delement = sceneElement as Viewport3DElement; if (viewport3Delement != null || sceneElement is Base3DElement) { if (element.TargetType == typeof(Image)) { string[] strArray = importedFilePath.Split('.'); string newName = strArray.Length <= 1 || strArray[0] == null ? "Image" : strArray[0]; element = (SceneElement)GeometryCreationHelper3D.ConvertImageTo3D(sceneViewModel, (BaseFrameworkElement)element, newName); } IChildContainer3D childContainer3D = sceneElement as IChildContainer3D; if (ModelVisual3DElement.ContentProperty.Equals((object)insertionPoint.Property)) { element = (SceneElement)BaseElement3DCoercionHelper.CoerceToModel3D(sceneViewModel, element); if (element != null) { list.Add(element); insertionPoint.Insert((SceneNode)element); } } else if (childContainer3D != null) { Base3DElement child = (Base3DElement)element; list.Add(childContainer3D.AddChild(sceneViewModel, child)); if (viewport3Delement != null && viewport3Delement.Camera == null) { ModelVisual3DElement modelVisual3Delement = element as ModelVisual3DElement; Camera camera; if (modelVisual3Delement != null) { Rect computedTightBounds = viewport3Delement.GetComputedTightBounds(); camera = Helper3D.CreateEnclosingPerspectiveCamera(45.0, computedTightBounds.Width / computedTightBounds.Height, modelVisual3Delement.DesignTimeBounds, 0.8); } else { camera = (Camera) new PerspectiveCamera(new Point3D(0.0, 0.0, -5.0), new Vector3D(0.0, 0.0, 1.0), new Vector3D(0.0, 1.0, 0.0), 45.0); } viewport3Delement.Camera = (CameraElement)sceneViewModel.CreateSceneNode((object)camera); } } } else { ModelVisual3DElement modelVisual3D = element as ModelVisual3DElement; if (modelVisual3D != null) { Viewport3DElement forModelVisual3D = GeometryCreationHelper3D.GetEnclosingViewportForModelVisual3D(sceneViewModel, modelVisual3D); list.Add((SceneElement)forModelVisual3D); insertionPoint.Insert((SceneNode)forModelVisual3D); } else if (insertionPoint.CanInsert((ITypeId)element.Type)) { list.Add(element); insertionPoint.Insert((SceneNode)element); } } return((IList <SceneElement>)list); }