private void ClearView() { // floor plane grid var Maxreset = 100; var Minreset = -100; EffectsManager.Dispose(); EffectsManager = new DefaultEffectsManager(); var points = new PointGeometry3D(); var col = new Color4Collection(); // gradient na kolory var ptPos = new Vector3Collection(); // pozycje punktów var ptIdx = new IntCollection(); // indeksy punktów arrows = lines = new LineBuilder(); points.Positions = ptPos; points.Indices = ptIdx; points.Colors = col; PointsColor = Colors.White; // <- nie pamiętam po co to tutaj ale bez tego nie działa Points = points; PointsTransform = new Media3D.TranslateTransform3D(0, 0, Minreset); CreateGrid(Maxreset, Minreset, Maxreset, Maxreset, Minreset); Grid = lines.ToLineGeometry3D(); GridColor = new Color4(153 / 255.0f, 204 / 255.0f, 255 / 255.0f, (float)0.3).ToColor();; GridTransform = new Media3D.TranslateTransform3D(0, 0, Minreset); // strzałki CreateArrows(Maxreset, Minreset, Maxreset, Minreset, Maxreset, Minreset); Arrow = arrows.ToLineGeometry3D(); ArrowColor = new Color4(0, 255 / 255.0f, 255 / 255.0f, (float)0.5).ToColor();; ArrowTransform = new Media3D.TranslateTransform3D(0, 0, Minreset); }
public Plant() { var x = new Vector3D(1, 0, 0); var r1 = new RotateTransform3D(new AxisAngleRotation3D(x, 80)); var r2 = new RotateTransform3D(new AxisAngleRotation3D(x, -70)); var r3 = new RotateTransform3D(new AxisAngleRotation3D(x, -10)); var t1 = new TranslateTransform3D(0, 0, 0.5); var t2 = new TranslateTransform3D(0, 0, 0.7); var t3 = new TranslateTransform3D(0, 0, 1.0); var s1 = new ScaleTransform3D(0.5, 0.5, 0.5); var s2 = new ScaleTransform3D(0.3, 0.3, 0.3); var s3 = new ScaleTransform3D(0.8, 0.8, 0.8); var m1 = new Transform3DGroup(); m1.Children.Add(r1); m1.Children.Add(s1); m1.Children.Add(t1); var m2 = new Transform3DGroup(); m2.Children.Add(r2); m2.Children.Add(s2); m2.Children.Add(t2); var m3 = new Transform3DGroup(); m3.Children.Add(r3); m3.Children.Add(s3); m3.Children.Add(t3); T1 = m1; T2 = m2; T3 = m3; }
public BlipVisual(Visual3D visual, bool isVisualUpright, TranslateTransform3D translate, AxisAngleRotation3D rotate) { this.Visual = visual; this.IsVisualUpright = isVisualUpright; this.Translate = translate; this.Rotate = rotate; }
void MotionWindow_Loaded(object sender, RoutedEventArgs e) { Transform3DGroup gp = new Transform3DGroup(); uBase.Load(@"3DModules\upper.xaml"); ScaleTransform3D sc = new ScaleTransform3D(12, 12, 1, 0, 0, 0); TranslateTransform3D tt = new TranslateTransform3D(0, 0, -15.5); gp.Children.Add(sc); gp.Children.Add(tt); uBase.Transform = gp; uPlatform.Load(@"3DModules\platform.xaml"); upper.Load(@"3DModules\upper.xaml"); AbsoluteVisual.AddLight(Colors.Wheat, new Vector3D(-1, -1, -1), Colors.Gray); vpMain.PlaceCamera( new Point3D(0, 0, 500), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0), 45 ); AbsoluteVisual.Children.Add(uBase); AbsoluteVisual.Children.Add(uPlatform); AbsoluteVisual.Children.Add(upper); ca = new EventCameraAgent(vpMain); ca.MouseLockRelPos = new Point(1, 1); ca.BindEventTo(this); ca.OnCameraStatusChange += new CameraAgent.CameraTransformHandler(ca_OnCameraStatusChange); }
public GeometryModel3D ConvertOne( EngineViewModel engine ) { var white = Color.FromRgb(255, 255, 255); var whiteBrush = new SolidColorBrush(white); var model = new GeometryModel3D(GetGeometry(), new DiffuseMaterial(whiteBrush)); var transform = new Transform3DGroup(); var scaleTransform = new ScaleTransform3D(); var translateTransform = new TranslateTransform3D(); transform.Children.Add(scaleTransform); transform.Children.Add(translateTransform); scaleTransform.ScaleX = 3; scaleTransform.ScaleY = 3; var powerBinding = new Binding("Power") {Mode = BindingMode.OneWay, Source = engine}; BindingOperations.SetBinding( scaleTransform, ScaleTransform3D.ScaleZProperty, powerBinding); translateTransform.OffsetX = engine.OffsetX; translateTransform.OffsetY = engine.OffsetY; model.Transform = transform; return model; }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); RenderTechnique = EffectsManager[DefaultRenderTechniqueNames.Blinn]; // titles this.Title = "Post Processing Effects Demo"; this.SubTitle = "WPF & SharpDX"; // ---------------------------------------------- // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(0, -30, 0), LookDirection = new Vector3D(0, 30, 0), UpDirection = new Vector3D(0, 0, 1) }; var m1 = Load3ds("suzanne.obj").Select(x => x.Geometry).ToArray(); MeshModel1 = m1[0]; var m2 = Load3ds("skeleton.3ds").Select(x => x.Geometry).ToArray(); MeshModel2 = m2[0]; Model1Transform = new Media3D.TranslateTransform3D(new Vector3D(7, 0, 0)); Model2Transform = new Media3D.TranslateTransform3D(new Vector3D(-5, 0, 0)); var builder = new MeshBuilder(); builder.AddBox(new Vector3(0, 0, -5), 15, 15, 0.2); FloorModel = builder.ToMesh(); }
public MainViewModel() { RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); Title = "Shadow Map Demo"; SubTitle = "WPF & SharpDX"; // setup lighting this.AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); this.DirectionalLightColor = Color.White; this.DirectionalLightDirection = new Vector3(-0, -1, -1); this.LightDirectionTransform = CreateAnimatedTransform(-DirectionalLightDirection.ToVector3D(), new Vector3D(0, 1, -1), 24); this.ShadowMapResolution = new Vector2(2048, 2048); // camera setup this.Camera = new PerspectiveCamera { Position = (Point3D)(-DirectionalLightDirection.ToVector3D()), LookDirection = DirectionalLightDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0) }; Camera1 = new PerspectiveCamera { Position = (Point3D)(-DirectionalLightDirection.ToVector3D()), LookDirection = DirectionalLightDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0) }; Camera2 = new PerspectiveCamera { Position = (Point3D)(-DirectionalLightDirection.ToVector3D()), LookDirection = DirectionalLightDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0) }; // floor plane grid //Grid = LineBuilder.GenerateGrid(); //GridColor = SharpDX.Color.Black; //GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.25, 2, BoxFaces.All); Model = b1.ToMeshGeometry3D(); //Instances = new[] { Matrix.Translation(0, 0, -1.5f), Matrix.Translation(0, 0, 1.5f) }; var b2 = new MeshBuilder(); b2.AddBox(new Vector3(0, 0, 0), 10, 0, 10, BoxFaces.PositiveY); Plane = b2.ToMeshGeometry3D(); PlaneTransform = new Media3D.TranslateTransform3D(-0, -2, -0); GrayMaterial = PhongMaterials.LightGray; //GrayMaterial.TextureMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2.jpg", System.UriKind.RelativeOrAbsolute)); // lines model3d Lines = LineBuilder.GenerateBoundingBox(Model); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Glass; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.main = ((_3DHelixToolKitApp.MainWindow)(target)); return; case 2: this.tasksList = ((System.Windows.Controls.ListBox)(target)); return; case 3: this.min_Z = ((System.Windows.Controls.Slider)(target)); return; case 4: this.max_Z = ((System.Windows.Controls.Slider)(target)); return; case 5: this.hVp3D = ((HelixToolkit.Wpf.HelixViewport3D)(target)); return; case 6: this.model3d = ((System.Windows.Media.Media3D.ModelVisual3D)(target)); return; case 7: this.translate = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
/// <summary> /// constructor /// </summary> public mainViewModel() { showCurves = true; showFaces = false; showPanels = true; effectsManager = new DefaultEffectsManager(); helixMaterials = Enum.GetValues(typeof(projectMaterials)).Cast <projectMaterials>(); updateProperties = new relayCommand(x => updatePanelProperties(selection)); changePreviewMaterial = new relayCommand(x => previewSelectionMaterial()); // titles title = "App"; subTitle = "Test"; // camera setup camera = new PerspectiveCamera { Position = new Point3D(1500, 1500, 2500), LookDirection = new Vector3D(-60, -60, -100), UpDirection = upDirection, FarPlaneDistance = 1e4, NearPlaneDistance = 0.01, }; camera2d = new OrthographicCamera { Position = new Point3D(0, 0, 55), LookDirection = new Vector3D(0, 0, -25), UpDirection = upDirection2d, FarPlaneDistance = 1e4, NearPlaneDistance = 0.01, }; // setup lighting ambientLightColor = Colors.DimGray; directionalLightColor = Colors.White; // selection options //selectionColor = Color.FromRgb(91, 198, 208); selectionColor = Colors.Red; selectionMaterial = new DiffuseMaterial() { DiffuseColor = new Color4(91, 198, 208, 255) }; // floor plane grid (1') majorGrid = LineBuilder.GenerateGrid(new Vector3(1, 1, 0), -100, 100, -100, 100); majorGridColor = Color.FromArgb(150, 200, 200, 200); majorGridTransform = new Media3D.TranslateTransform3D(0, 0, -0.01); // grid (1') panelGrid = LineBuilder.GenerateGrid(new Vector3(1, 1, 0), -10, 10, -10, 10); panelGridColor = Color.FromArgb(255, 100, 100, 100); panelGridTransform = new Media3D.TranslateTransform3D(0, 0, -0.01); addCubes(); }
public Cell(INeuron neuron, ModelVisual3D mophology, Imaging imager) { this.neuron = neuron; this.mophology = mophology; this.imager = imager; neuron.Updated += OnUpdated; neuron.Hillock.Spike += OnSpike; IsPushing = true; var transforms = new Transform3DGroup(); Rotate = new RotateTransform3D(new QuaternionRotation3D()); Translate = new TranslateTransform3D(neuron.Position.X, neuron.Position.Y, neuron.Position.Z); Scale = new ScaleTransform3D(); transforms.Children.Add(Rotate); transforms.Children.Add(Translate); transforms.Children.Add(Scale); Mophology.Transform = transforms; var binding = new Binding() { Source = neuron, Path = new PropertyPath("Position"), Mode = BindingMode.OneWay }; BindingOperations.SetBinding(this, Cell.PositionProperty, binding); }
private void Expand(GeometryModel3D model, Transform3D transformation) { Transform3D ot; if (originalTransforms.ContainsKey(model)) ot = originalTransforms[model]; else { ot = model.Transform; originalTransforms.Add(model, ot); } Transform3D totalTransform = Transform3DHelper.CombineTransform(transformation, ot); var mesh = model.Geometry as MeshGeometry3D; if (mesh == null) return; var bounds = new Rect3D(); foreach (int i in mesh.TriangleIndices) bounds.Union(totalTransform.Transform(mesh.Positions[i])); Point3D p = bounds.Location; Vector3D d = p - actualExpandOrigin; d *= Expansion; Point3D p2 = actualExpandOrigin + d; var t = new TranslateTransform3D(p2 - p); model.Transform = Transform3DHelper.CombineTransform(ot, t); }
public CellNet(INetwork network, ModelVisual3D mophology, Dictionary<Guid, ICell> cells, Dictionary<Guid, ICellNet> childcellnet) { this.network = network; this.mophology = mophology; this.cells = cells; this.childcellnet = childcellnet; IsPushing = true; var transforms = new Transform3DGroup(); Rotate = new RotateTransform3D(new QuaternionRotation3D()); Translate = new TranslateTransform3D(network.Position.X, network.Position.Y, network.Position.Z); Scale = new ScaleTransform3D(); transforms.Children.Add(Rotate); transforms.Children.Add(Translate); transforms.Children.Add(Scale); Mophology.Transform = transforms; var binding = new Binding() { Source = network, Path = new PropertyPath("Position"), Mode = BindingMode.OneWay }; BindingOperations.SetBinding(this, CellNet.PositionProperty, binding); }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); RenderTechnique = EffectsManager[DefaultRenderTechniqueNames.Blinn]; // ---------------------------------------------- // titles this.Title = "SwapChain Top Surface Rendering Demo"; this.SubTitle = "WPF & SharpDX"; // ---------------------------------------------- // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(20, 20, 20), LookDirection = new Vector3D(-20, -20, -20), UpDirection = new Vector3D(0, 1, 0) }; // ---------------------------------------------- // setup scene this.Light1Color = Colors.White; var builder = new MeshBuilder(true, false, false); builder.AddBox(new Vector3(), 40, 0.1, 40); Plane1Model = FloorModel = builder.ToMeshGeometry3D(); builder = new MeshBuilder(true, false, false); builder.AddBox(new Vector3(), 0.1, 40, 40); Plane2Model = builder.ToMeshGeometry3D(); FloorMaterial = new PhongMaterial(); FloorMaterial.DiffuseColor = new Color4(1f, 1f, 1f, 0.2f); FloorMaterial.AmbientColor = new Color4(0, 0, 0, 0); FloorMaterial.ReflectiveColor = new Color4(0, 0, 0, 0); FloorMaterial.SpecularColor = new Color4(0, 0, 0, 0); PlaneMaterial = new PhongMaterial() { DiffuseColor = new Color4(0.1f, 0.1f, 0.8f, 0.2f) }; var landerItems = Load3ds("Car.3ds").Select(x => x.Geometry as MeshGeometry3D).ToArray(); Model = MeshGeometry3D.Merge(landerItems); Model.UpdateOctree(); ModelMaterial = PhongMaterials.Bronze; var transGroup = new Media3D.Transform3DGroup(); transGroup.Children.Add(new Media3D.ScaleTransform3D(0.01, 0.01, 0.01)); transGroup.Children.Add(new Media3D.RotateTransform3D(new Media3D.AxisAngleRotation3D(new Media3D.Vector3D(1, 0, 0), -90))); transGroup.Children.Add(new Media3D.TranslateTransform3D(new Media3D.Vector3D(0, 6, 0))); ModelTransform = transGroup; Plane1Transform = new TranslateTransform3D(new Vector3D(0, 15, 0)); Plane2Transform = new TranslateTransform3D(new Vector3D(15, 0, 0)); }
RenderController() { entity.Content = modelGroup; TranslateTransform3D translateTransform = new TranslateTransform3D(0, 0, -300); transformGroup.Children.Add(new RotateTransform3D()); transformGroup.Children.Add(translateTransform); entity.Transform = transformGroup; }
//Create a translation transformation. The first argument translates in x, the next in y and the last in z: public static TranslateTransform3D makeTranslateTransform(double xTrans, double yTrans, double zTrans) { TranslateTransform3D myTranslateTransform3D = new TranslateTransform3D(); myTranslateTransform3D.OffsetX = xTrans; myTranslateTransform3D.OffsetY = yTrans; myTranslateTransform3D.OffsetZ = zTrans; return myTranslateTransform3D; }
//public Camera Camera2 { private set; get; } public MainViewModel() { EffectsManager = new DefaultEffectsManager(); RenderTechnique = EffectsManager[DefaultRenderTechniqueNames.Blinn]; Title = "Shadow Map Demo"; SubTitle = "WPF & SharpDX"; // setup lighting this.AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); this.DirectionalLightColor = Media.Colors.White; //this.DirectionalLightDirection = new Vector3(-1, -1, -1); // this.LightDirectionTransform = CreateAnimatedTransform(-DirectionalLightDirection.ToVector3D(), new Vector3D(0, 1, -1), 24); this.ShadowMapResolution = new Size(2048, 2048); // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(0, 1, 1), LookDirection = new Vector3D(0, -1, -1), UpDirection = new Vector3D(0, 1, 0) }; Camera1 = new PerspectiveCamera { Position = new Point3D(0, 5, 0), LookDirection = new Vector3D(0, -1, 0), UpDirection = new Vector3D(1, 0, 0) }; // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.25, 2, BoxFaces.All); Model = b1.ToMeshGeometry3D(); Instances = new[] { Matrix.Translation(0, 0, -1.5f), Matrix.Translation(0, 0, 1.5f) }; var b2 = new MeshBuilder(); b2.AddBox(new Vector3(0, 0, 0), 10, 0, 10, BoxFaces.PositiveY); Plane = b2.ToMeshGeometry3D(); PlaneTransform = new Media3D.TranslateTransform3D(-0, -2, -0); GrayMaterial = PhongMaterials.Indigo; // lines model3d Lines = LineBuilder.GenerateBoundingBox(Model); //this.PropertyChanged += MainViewModel_PropertyChanged; // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Glass; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; GrayMaterial.RenderShadowMap = RedMaterial.RenderShadowMap = GreenMaterial.RenderShadowMap = BlueMaterial.RenderShadowMap = true; //var b3 = new MeshBuilder(); //b3.AddBox(new Vector3(), 0.3f, 0.3f, 0.3f, BoxFaces.All); //b3.AddCone(new Vector3(0, 0.3f, 0), new Vector3(0, 0f, 0), 0.2f, true, 24); //LightCameraModel = b3.ToMesh(); //LightCameraTransform.Children.Add(new Media3D.RotateTransform3D(new Media3D.AxisAngleRotation3D(new Vector3D(1, 0, 0), -135))); //LightCameraTransform.Children.Add(new Media3D.TranslateTransform3D(0, 3, 3)); //UpdateCamera(); }
public ModelVisual3D Render() { _blocks = new GeometryModel3D[_dimension, _dimension, _dimension]; Model3DGroup group = new Model3DGroup(); double space = 0.03; double w = (1 - space * (_dimension - 1)) / _dimension; double slot = w + space; ScaleTransform3D scaling = new ScaleTransform3D(w, w, w); for (int i = 0; i < _dimension * _dimension * _dimension; i++) { int x = i % _dimension; int y = (int)(i / _dimension) % _dimension; int z = (int)(i / (_dimension * _dimension)); GeometryModel3D c = CreateMiniCube(); _blocks[x, y, z] = c; TranslateTransform3D pos = new TranslateTransform3D((slot * x), (slot * y), -(slot * z)); Transform3DGroup tgroup = new Transform3DGroup(); tgroup.Children.Add(scaling); tgroup.Children.Add(pos); c.Transform = tgroup; group.Children.Add(c); } Transform3DGroup cubeTransGroup = new Transform3DGroup(); TranslateTransform3D cubePos = new TranslateTransform3D(-0.5, -0.5, 0.5); cubeTransGroup.Children.Add(cubePos); // Animation _spinTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0)); //Vector3DAnimation myVectorAnimation = new Vector3DAnimation(new Vector3D(0, 0, -1), new Duration(TimeSpan.FromMilliseconds(5000))); //myVectorAnimation.RepeatBehavior = RepeatBehavior.Forever; //myRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AxisProperty, myVectorAnimation); //myRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AngleProperty, doubleAnim); cubeTransGroup.Children.Add(_spinTransform); // Animation end group.Transform = cubeTransGroup; ModelVisual3D model = new ModelVisual3D(); model.Content = group; return model; }
public void Move(double offsetX, double offsetY, double offsetZ, double angle) { Transform3DGroup transform = new Transform3DGroup(); RotateTransform3D rotateTrans = new RotateTransform3D(); rotateTrans.Rotation = new AxisAngleRotation3D(new Vector3D(0, 1, 0), angle); TranslateTransform3D translateTrans = new TranslateTransform3D(offsetX, offsetY, offsetZ); transform.Children.Add(rotateTrans); transform.Children.Add(translateTrans); this.Transform = transform; }
public Node(NodeTemplate template) { Translation = new TranslateTransform3D(); PrimaryRotation = new AxisAngleRotation3D(template.Axis, 0); Transform3DGroup group = new Transform3DGroup(); group.Children.Add(new RotateTransform3D(PrimaryRotation, template.Center)); group.Children.Add(Translation); Transform = group; }
public Cube(Viewport3D myViewport3D, float obesity) { this.up = ((PerspectiveCamera)myViewport3D.Camera).UpDirection; this.trans = new Transform3DGroup(); this.scale = new ScaleTransform3D(); this.translation = new TranslateTransform3D(); this.rotation = new RotateTransform3D(); this.axis = new AxisAngleRotation3D(); this.obesity = obesity; this.cube = new Model3DGroup(); Point3D p0 = new Point3D(-1, -1, -1); Point3D p1 = new Point3D(1, -1, -1); Point3D p2 = new Point3D(1, -1, 1); Point3D p3 = new Point3D(-1, -1, 1); Point3D p4 = new Point3D(-1, 0, -1); Point3D p5 = new Point3D(1, 0, -1); Point3D p6 = new Point3D(1, 0, 1); Point3D p7 = new Point3D(-1, 0, 1); //front side triangles cube.Children.Add(CreateTriangleModel(p3, p2, p6)); cube.Children.Add(CreateTriangleModel(p3, p6, p7)); //right side triangles cube.Children.Add(CreateTriangleModel(p2, p1, p5)); cube.Children.Add(CreateTriangleModel(p2, p5, p6)); //back side triangles cube.Children.Add(CreateTriangleModel(p1, p0, p4)); cube.Children.Add(CreateTriangleModel(p1, p4, p5)); //left side triangles cube.Children.Add(CreateTriangleModel(p0, p3, p7)); cube.Children.Add(CreateTriangleModel(p0, p7, p4)); //top side triangles cube.Children.Add(CreateTriangleModel(p7, p6, p5)); cube.Children.Add(CreateTriangleModel(p7, p5, p4)); //bottom side triangles cube.Children.Add(CreateTriangleModel(p2, p3, p0)); cube.Children.Add(CreateTriangleModel(p2, p0, p1)); this.model = new ModelVisual3D(); this.model.Content = cube; this.myDirectionalLight = new DirectionalLight(); this.myDirectionalLight.Color = Colors.Green; this.myDirectionalLight.Direction = new Vector3D(-2, -3, 1); this.cube.Children.Add(myDirectionalLight); myViewport3D.Children.Add(model); trans.Children.Add(scale); trans.Children.Add(rotation); trans.Children.Add(translation); this.cube.Transform = trans; }
public Dot(bool isStatic, Point3D position) { this.IsStatic = isStatic; _position = position; ModelVisual3D model = BuildDot(isStatic); this.Visual = model; _transform = new TranslateTransform3D(position.ToVector()); model.Transform = _transform; }
private void GenerateMain() { terrainMesh = new MeshBuilder(); GenerateTerrainPositions(); GenerateTerrainTriangleIndices(); GenerateTerrainUVCoordinates(); TerrainMeshMainGeometry3D = terrainMesh.ToMeshGeometry3D(); TerrainMeshMainMaterial = new PhongMaterial(); TerrainMeshMainMaterial.RenderDiffuseMap = true; TerrainMeshTransform = new Media3D.TranslateTransform3D(0, 0, 0); }
public Dot(bool isStatic, Point3D position, double repulseMult = 1d) { this.IsStatic = isStatic; _position = position; this.RepulseMult = repulseMult; ModelVisual3D model = BuildDot(isStatic, repulseMult); this.Visual = model; _transform = new TranslateTransform3D(position.ToVector()); model.Transform = _transform; }
public MainViewModel() { RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); Title = "Shadow Map Demo"; SubTitle = "WPF & SharpDX"; // setup lighting this.AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); this.DirectionalLightColor = Color.White; this.DirectionalLightDirection = new Vector3(-0, -1, -1); this.LightDirectionTransform = CreateAnimatedTransform(-DirectionalLightDirection.ToVector3D(), new Vector3D(0, 1, -1), 24); this.ShadowMapResolution = new Vector2(2048, 2048); // camera setup this.Camera = new PerspectiveCamera { Position = (Point3D)(-DirectionalLightDirection.ToVector3D()), LookDirection = DirectionalLightDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0) }; // floor plane grid //Grid = LineBuilder.GenerateGrid(); //GridColor = SharpDX.Color.Black; //GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.25, 2, BoxFaces.All); Model = b1.ToMeshGeometry3D(); //Instances = new[] { Matrix.Translation(0, 0, -1.5f), Matrix.Translation(0, 0, 1.5f) }; var b2 = new MeshBuilder(); b2.AddBox(new Vector3(0, 0, 0), 10, 0, 10, BoxFaces.PositiveY); Plane = b2.ToMeshGeometry3D(); PlaneTransform = new Media3D.TranslateTransform3D(-0, -2, -0); GrayMaterial = PhongMaterials.LightGray; //GrayMaterial.TextureMap = new BitmapImage(new System.Uri(@"TextureCheckerboard2.jpg", System.UriKind.RelativeOrAbsolute)); // lines model3d Lines = LineBuilder.GenerateBoundingBox(Model); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Glass; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.mainViewport = ((System.Windows.Controls.Viewport3D)(target)); return; case 2: this.camera = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 3: this.MyModel = ((System.Windows.Media.Media3D.ModelVisual3D)(target)); return; case 4: this.scale = ((System.Windows.Media.Media3D.ScaleTransform3D)(target)); return; case 5: this.rotateY = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 6: this.rotateX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 7: this.translate = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 8: this.model3DGroup = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 9: this.geometryModel = ((System.Windows.Media.Media3D.GeometryModel3D)(target)); return; case 10: this.meshMain = ((System.Windows.Media.Media3D.MeshGeometry3D)(target)); return; case 11: this.meshBack = ((System.Windows.Media.Media3D.MeshGeometry3D)(target)); return; } this._contentLoaded = true; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: #line 9 "..\..\..\..\Views\ProductSlideGallery.xaml" ((MagicMirror.Views.ProductSlideGallery)(target)).MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.UserControl_MouseDown); #line default #line hidden return; case 2: this.RootGrid = ((System.Windows.Controls.Grid)(target)); return; case 3: this.viewport3D = ((System.Windows.Controls.Viewport3D)(target)); #line 12 "..\..\..\..\Views\ProductSlideGallery.xaml" this.viewport3D.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.viewport3D_MouseLeftButtonDown); #line default #line hidden return; case 4: this.mainScene = ((System.Windows.Media.Media3D.ModelVisual3D)(target)); return; case 5: this.angleRotation = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 6: this.sceneTransform3d = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 7: this.busyGrid = ((System.Windows.Controls.Grid)(target)); return; case 8: this.viewLoading = ((MagicMirror.Views.LoadingWait)(target)); return; } this._contentLoaded = true; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.rbOrthographic = ((System.Windows.Controls.RadioButton)(target)); return; case 2: this.rbPerspective = ((System.Windows.Controls.RadioButton)(target)); return; case 3: this.tbOffsetX = ((System.Windows.Controls.TextBox)(target)); return; case 4: this.tbOffsetY = ((System.Windows.Controls.TextBox)(target)); return; case 5: this.tbOffsetZ = ((System.Windows.Controls.TextBox)(target)); return; case 6: this.btnApply = ((System.Windows.Controls.Button)(target)); #line 47 "..\..\TranslateTransformation.xaml" this.btnApply.Click += new System.Windows.RoutedEventHandler(this.btnApply_Click); #line default #line hidden return; case 7: this.myViewport = ((System.Windows.Controls.Viewport3D)(target)); return; case 8: this.myCameraMatrix = ((System.Windows.Media.Media3D.MatrixCamera)(target)); return; case 9: this.myTransform = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
public void SetProjectionCamera(Viewport3D myViewport3D, Model3DGroup modelGroup) { const double CameraDistance = 80; // distance from camera to origin const double CameraLatitude = Math.PI / 2; // angle from +ve y axis to camera (i.e. latitude) const double CameraLongitude = Math.PI; // angle from -ve z axis to camera (i.e. longitude) double x = CameraDistance * -Math.Sin(CameraLongitude) * Math.Sin(CameraLatitude); double y = CameraDistance * Math.Cos(CameraLatitude); double z = CameraDistance * -Math.Cos(CameraLongitude) * Math.Sin(CameraLatitude); ProjectionCamera projCamera = myViewport3D.Camera.Clone() as ProjectionCamera; projCamera.Position = new Point3D(x, y, z); myViewport3D.Camera = projCamera; TranslateTransform3D pan = new TranslateTransform3D(new Vector3D(0, 0, 0)); modelGroup.Transform = pan; }
/// <summary> /// Add a 3D model to the instance /// </summary> private void Init() { Model3DGroup group = ((Model3DGroup)Core.Instance.Models["point"]).Clone(); MeshGeometry3D mesh = ((MeshGeometry3D)Core.Instance.Models["pointMesh"]).Clone(); //Model3DGroup g2 = group.Clone(); SolidColorBrush b = new SolidColorBrush(Color.FromArgb(255, 255, 255, 0)); DiffuseMaterial material = new DiffuseMaterial(b); GeometryModel3D model2 = new GeometryModel3D(mesh, material); ScaleTransform3D scale = new ScaleTransform3D(); TranslateTransform3D move = new TranslateTransform3D(); TranslateTransform3D move2 = new TranslateTransform3D(); AxisAngleRotation3D rotate = new AxisAngleRotation3D(); Transform3DGroup t = new Transform3DGroup(); double factor = 3; Console.WriteLine(_Point.X + " " + _Point.Y); move.OffsetX = (1 / factor) * _Point.X; move.OffsetZ = 0.5;//;// new Random().NextDouble(); move.OffsetY = -(1 / factor) * _Point.Y;//Y*factor; move2.OffsetY = -2; rotate.Axis = new Vector3D(1, 0, 0); rotate.Angle = 270; scale.ScaleX = factor; scale.ScaleY = factor; scale.ScaleZ = factor; t.Children.Add(move); t.Children.Add(scale); t.Children.Add(new RotateTransform3D(rotate)); t.Children.Add(move2); t.Children.Add(_Scale); group.Transform = t; this.Content = group;// (Model3DGroup)Core.Instance.Models["side"]; ColorAnimation da = new ColorAnimation(Color.FromArgb(150, 255, 255, 0), Color.FromArgb(255, 255, 255, 0), new Duration(new TimeSpan(0, 0, 1))); da.RepeatBehavior = RepeatBehavior.Forever; da.AutoReverse = true; GeometryModel3D m1 = (GeometryModel3D)group.Children[0]; GeometryModel3D m2 = (GeometryModel3D)group.Children[0]; ((DiffuseMaterial)m1.Material).BeginAnimation(DiffuseMaterial.ColorProperty, da); ((DiffuseMaterial)m2.Material).BeginAnimation(DiffuseMaterial.ColorProperty, da); //model2.Material.colo //move2.BeginAnimation(TranslateTransform3D.OffsetYProperty, da); }
/// <summary> /// Add a 3D model to the instance /// </summary> private void Init() { MeshGeometry3D m1 = (MeshGeometry3D)Core.Instance.Models["Road"]; SolidColorBrush b = new SolidColorBrush(Color.FromArgb(255, 255, 255, 0)); DiffuseMaterial material = new DiffuseMaterial(b); GeometryModel3D model1 = new GeometryModel3D(m1, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model1); this.Content = group; ScaleTransform3D scale = new ScaleTransform3D(); TranslateTransform3D move = new TranslateTransform3D(); TranslateTransform3D move2 = new TranslateTransform3D(); AxisAngleRotation3D rotate = new AxisAngleRotation3D(); AxisAngleRotation3D rotate2 = new AxisAngleRotation3D(); Transform3DGroup t = new Transform3DGroup(); double angle = 0; switch (_Location.Direction) { case ESideDirection.SlopeDown: angle = 60; break; case ESideDirection.UpDown: angle = 0; break; case ESideDirection.SlopeUp: angle = -60; break; } scale.ScaleZ = 1.2; scale.ScaleX = 3; move.OffsetX = _Point.X; move.OffsetZ = _Point.Y; move.OffsetY = 0.5; rotate.Axis = new Vector3D(0, 1, 0); rotate.Angle = angle; t.Children.Add(scale); t.Children.Add(new RotateTransform3D(rotate)); t.Children.Add(move); t.Children.Add(_Scale); ColorAnimation da = new ColorAnimation(Color.FromArgb(255, 255, 255, 0), Color.FromArgb(150, 255, 255, 0), new Duration(new TimeSpan(0, 0, 1))); da.RepeatBehavior = RepeatBehavior.Forever; da.AutoReverse = true; material.BeginAnimation(DiffuseMaterial.ColorProperty, da); this.Transform = t; }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); // titles this.Title = "Post Processing Effects Demo"; this.SubTitle = "WPF & SharpDX"; // ---------------------------------------------- // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(0, -30, 0), LookDirection = new Vector3D(0, 30, 0), UpDirection = new Vector3D(0, 0, 1) }; var m1 = Load3ds("suzanne.obj").Select(x => x.Geometry).ToArray(); MeshModel1 = m1[0]; var m2 = Load3ds("skeleton.3ds").Select(x => x.Geometry).ToArray(); MeshModel2 = m2[0]; Model1Transform = new Media3D.TranslateTransform3D(new Vector3D(7, 0, 0)); Model2Transform = new Media3D.TranslateTransform3D(new Vector3D(-5, 0, 0)); var builder = new MeshBuilder(); builder.AddBox(new Vector3(0, 0, -5), 15, 15, 0.2); FloorModel = builder.ToMesh(); builder = new MeshBuilder(); builder.AddSphere(new Vector3(0, 0, 0), 1); MeshModel3 = builder.ToMesh(); var lineBuilder = new LineBuilder(); lineBuilder.AddLine(Vector3.Zero, Vector3.UnitX * 5); lineBuilder.AddLine(Vector3.Zero, Vector3.UnitY * 5); lineBuilder.AddLine(Vector3.Zero, Vector3.UnitZ * 5); LineModel = lineBuilder.ToLineGeometry3D(); LineModel.Colors = new Color4Collection() { new Color4(1, 0, 0, 1), new Color4(1, 0, 0, 1), new Color4(0, 1, 0, 1), new Color4(0, 1, 0, 1), new Color4(0, 0, 1, 1), new Color4(0, 0, 1, 1), }; }
private void Init() { MeshGeometry3D m1 = (MeshGeometry3D)Core.Instance.Models["mesh_0"]; MeshGeometry3D m2 = (MeshGeometry3D)Core.Instance.Models["mesh_1"]; SolidColorBrush b = new SolidColorBrush(_Color); DiffuseMaterial material = new DiffuseMaterial(b); GeometryModel3D model1 = new GeometryModel3D(m1, material); GeometryModel3D model2 = new GeometryModel3D(m2, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model1); group.Children.Add(model2); this.Content = group; ScaleTransform3D scale = new ScaleTransform3D(); TranslateTransform3D move = new TranslateTransform3D(); TranslateTransform3D move2 = new TranslateTransform3D(); AxisAngleRotation3D rotate = new AxisAngleRotation3D(); AxisAngleRotation3D rotate2 = new AxisAngleRotation3D(); Transform3DGroup t = new Transform3DGroup(); move2.OffsetX = 0; move2.OffsetY = -1.7; double factor = .012; move.OffsetX = (1 / factor) * _Point.X; move.OffsetZ = 1; move.OffsetY = -(1 / factor) * _Point.Y; rotate.Axis = new Vector3D(1, 0, 0); rotate.Angle = 270; rotate2.Axis = new Vector3D(0, 0, 1); rotate2.Angle = 45; scale.ScaleX = factor; scale.ScaleY = factor; scale.ScaleZ = factor; t.Children.Add(new RotateTransform3D(rotate2)); t.Children.Add(move); t.Children.Add(scale); t.Children.Add(move2); t.Children.Add(new RotateTransform3D(rotate)); this.Transform = t; }
private void Init() { MeshGeometry3D m1 = (MeshGeometry3D)Core.Instance.Models["City1"]; MeshGeometry3D m2 = (MeshGeometry3D)Core.Instance.Models["City2"]; DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(_Color)); GeometryModel3D model1 = new GeometryModel3D(m1, material); GeometryModel3D model2 = new GeometryModel3D(m2, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model1); group.Children.Add(model2); this.Content = group; ScaleTransform3D scale = new ScaleTransform3D(); TranslateTransform3D move = new TranslateTransform3D(); TranslateTransform3D move2 = new TranslateTransform3D(); AxisAngleRotation3D rotate = new AxisAngleRotation3D(); AxisAngleRotation3D rotate2 = new AxisAngleRotation3D(); Transform3DGroup t = new Transform3DGroup(); move2.OffsetX = 0; move2.OffsetY = -1.7; move.OffsetX = _Point.X - 2; move.OffsetZ = _Point.Y; move.OffsetY = 0; rotate.Axis = new Vector3D(1, 0, 0); rotate.Angle = 270; rotate2.Axis = new Vector3D(0, 0, 1); rotate2.Angle = 45; double scaleFactor = 35; scale.ScaleX = scaleFactor; scale.ScaleY = scaleFactor; scale.ScaleZ = scaleFactor; t.Children.Add(scale); t.Children.Add(move); this.Transform = t; }
public WorkShop() { InitializeComponent(); var network = new Network(); var solver = new ODESolver(); var recorder = new Recorder(Simulator, RecordType.None, "Soul"); Simulator = new Simulator(0.01, 50, network, solver, recorder); IsReportProgress = true; CellNet = new CellNet(network); IsImaging = true; var transformGroup = new Transform3DGroup(); TranslateTransform = new TranslateTransform3D(); RotateTransform = new RotateTransform3D(new QuaternionRotation3D()); ScaleTransform = new ScaleTransform3D(); transformGroup.Children.Add(TranslateTransform); transformGroup.Children.Add(RotateTransform); transformGroup.Children.Add(ScaleTransform); ModelVisual.Transform = transformGroup; ActionType = ActionType.None; MouseLeftButtonDown += WorkShop_MouseLeftButtonDown; MouseLeftButtonUp += WorkShop_MouseLeftButtonUp; MouseRightButtonDown += WorkShop_MouseRightButtonDown; MouseRightButtonUp += WorkShop_MouseRightButtonUp; MouseMove += WorkShop_MouseMove; MouseWheel += WorkShop_MouseWheel; var n = new LI(-50, -48, 5, 2, -55); var net0 = Proliferation.Division(n, new Point3D(1, 10, 10), "InitPotential", new Randomizer(new RNG(), dimyend: 9, dimzend: 9, mean: -50.0, std: 5)); net0.ReSet(); //net0.ReShape(new Point3D(2, 10, 5)); var net1 = Proliferation.Division(n, new Point3D(1, 10, 10), "InitPotential", new Randomizer(new RNG(), dimyend: 9, dimzend: 9, mean: -50.0, std: 10)); net1.ReSet(); Projection.From_To(net0, net1, new WeightSynapse(null, 1), ProjectionType.OneToOne, 1.0); Projection.From_To(net0, net0, new WeightSynapse(null, -0.4), ProjectionType.AllToAll, 0.3); Projection.From_To(net1, net0, new WeightSynapse(null, -0.1), ProjectionType.AllToAll, 0.5); Projection.From_To(net1, net1, new WeightSynapse(null, 0.1), ProjectionType.OneToOne, 0.8); var net = new Network(); net.ChildNetworks.Add(net0.ID, net0); net.ChildNetworks.Add(net1.ID, net1); LoadNetwork(net); CellNet.ChildCellNet[net0.ID].Position = new Point3D(-15, 0, 15); }
public Cover(string imagePath, int pos) { this.pos = pos; imageSource = LoadImageSource(imagePath); modelGroup = new Model3DGroup(); modelGroup.Children.Add(new GeometryModel3D(Tessellate(), LoadImage(imageSource))); modelGroup.Children.Add(new GeometryModel3D(TessellateMirror(), LoadImageMirror(imageSource))); rotation = new AxisAngleRotation3D(new Vector3D(0, 1, 0), RotationAngle(0)); translation = new TranslateTransform3D(TranslationX(0), 0, TranslationZ(0)); var transformGroup = new Transform3DGroup(); transformGroup.Children.Add(new RotateTransform3D(rotation)); transformGroup.Children.Add(translation); modelGroup.Transform = transformGroup; Content = modelGroup; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this._Border = ((System.Windows.Controls.Border)(target)); return; case 2: this._Viewport = ((System.Windows.Controls.Viewport3D)(target)); return; case 3: this._TestPointerMatrix = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.MyAnimatedObject = ((System.Windows.Controls.Viewport3D)(target)); return; case 2: this.myPerspectiveCamera = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 3: this.myTranslateTransform3D = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
public ModelViewerViewModel(IWindowManager windowManager, IEffectsManager effectsManager) { this.windowManager = windowManager; this.effectsManager = effectsManager; this.camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; this.testMaterial = PhongMaterials.Red; // setup lighting AmbientLightColor = Colors.DimGray; DirectionalLightColor = Colors.White; // floor plane grid Grid = LineBuilder.GenerateGrid(new Vector3(0, 1, 0), -5, 5, -5, 5); GridColor = Colors.Black; GridTransform = new Media3D.TranslateTransform3D(0, -3, 0); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.myRoot = ((IdentityMine.Avalon.Controls.Rotater3DTransition)(target)); #line 6 "..\..\Rotater3DTransition.xaml" this.myRoot.Loaded += new System.Windows.RoutedEventHandler(this.OnLoaded); #line default #line hidden return; case 2: #line 11 "..\..\Rotater3DTransition.xaml" ((System.Windows.Media.Animation.Storyboard)(target)).CurrentStateInvalidated += new System.EventHandler(this.OnRotateStoryboard); #line default #line hidden return; case 3: this.myViewport3D = ((System.Windows.Controls.Viewport3D)(target)); return; case 4: this.MainScale = ((System.Windows.Media.Media3D.ScaleTransform3D)(target)); return; case 5: this.MainRotation = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 6: this.MainTranslate = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
private void BuildGrid() { var builder = new LineBuilder(); int zOff = -45; for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { builder.AddLine(new SharpDX.Vector3(-i * 5, 0, j * 5), new SharpDX.Vector3(i * 5, 0, j * 5)); builder.AddLine(new SharpDX.Vector3(-i * 5, 0, -j * 5), new SharpDX.Vector3(i * 5, 0, -j * 5)); builder.AddLine(new SharpDX.Vector3(i * 5, 0, -j * 5), new SharpDX.Vector3(i * 5, 0, j * 5)); builder.AddLine(new SharpDX.Vector3(-i * 5, 0, -j * 5), new SharpDX.Vector3(-i * 5, 0, j * 5)); builder.AddLine(new SharpDX.Vector3(-i * 5, j * 5, zOff), new SharpDX.Vector3(i * 5, j * 5, zOff)); builder.AddLine(new SharpDX.Vector3(i * 5, 0, zOff), new SharpDX.Vector3(i * 5, j * 5, zOff)); builder.AddLine(new SharpDX.Vector3(-i * 5, 0, zOff), new SharpDX.Vector3(-i * 5, j * 5, zOff)); } } GridModel = builder.ToLineGeometry3D(); GridTransform = new Media3D.TranslateTransform3D(new Media3D.Vector3D(0, -10, 0)); }
public override void OnMouse3DMove(object sender, RoutedEventArgs e) { base.OnMouse3DMove(sender, e); if (this.isCaptured) { var args = e as Mouse3DEventArgs; // move dragmodel var normal = this.camera.LookDirection; // hit position var newHit = this.viewport.UnProjectOnPlane(args.Position, lastHitPos, normal); if (newHit.HasValue) { var offset = (newHit.Value - lastHitPos); var dragTrafo = new TranslateTransform3D((Vector3D)this.ModelMatrix.TranslationVector.ToVector3D() + offset); this.Transform = dragTrafo; this.lastHitPos = newHit.Value; } } }
public Model3DGroup Transform3D_OnMemberEntity_fromLCStoGCS(Model3DGroup modelgroup_original, CMember member) { double dAlphaX = 0; double dBetaY = 0; double dGammaZ = 0; double dBetaY_aux = 0; double dGammaZ_aux = 0; member.GetRotationAngles(out dAlphaX, out dBetaY, out dGammaZ, out dBetaY_aux, out dGammaZ_aux); RotateTransform3D RotateTrans3D_AUX_Y = new RotateTransform3D(); RotateTransform3D RotateTrans3D_AUX_Z = new RotateTransform3D(); RotateTrans3D_AUX_Y.Rotation = new AxisAngleRotation3D(new Vector3D(0, 1, 0), dBetaY_aux * 180 / Math.PI); RotateTrans3D_AUX_Y.CenterX = 0; RotateTrans3D_AUX_Y.CenterY = 0; RotateTrans3D_AUX_Y.CenterZ = 0; RotateTrans3D_AUX_Z.Rotation = new AxisAngleRotation3D(new Vector3D(0, 0, 1), dGammaZ_aux * 180 / Math.PI); RotateTrans3D_AUX_Z.CenterX = 0; RotateTrans3D_AUX_Z.CenterY = 0; RotateTrans3D_AUX_Z.CenterZ = 0; TranslateTransform3D Translate3D_AUX = new TranslateTransform3D(member.NodeStart.X, member.NodeStart.Y, member.NodeStart.Z); Transform3DGroup Trans3DGroup = new Transform3DGroup(); Trans3DGroup.Children.Add(RotateTrans3D_AUX_Y); Trans3DGroup.Children.Add(RotateTrans3D_AUX_Z); Trans3DGroup.Children.Add(Translate3D_AUX); // Objekty na prute s x <> 0 // Modelgroup musime pridat ako child do novej modelgroup inak sa "Transform" definovane z 0,0,0 do LCS pruta prepise "Transform" z LCS do GCS Model3DGroup modelgroup_out = new Model3DGroup(); modelgroup_out.Children.Add(modelgroup_original); modelgroup_out.Transform = Trans3DGroup; // Return transformed model group return modelgroup_out; }
private void Init() { MeshGeometry3D m1 = (MeshGeometry3D)Core.Instance.Models["Ship1"]; MeshGeometry3D m2 = (MeshGeometry3D)Core.Instance.Models["Ship2"]; SolidColorBrush b = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); DiffuseMaterial material = new DiffuseMaterial(b); GeometryModel3D model1 = new GeometryModel3D(m1, material); GeometryModel3D model2 = new GeometryModel3D(m2, material); Model3DGroup group = new Model3DGroup(); group.Children.Add(model1); group.Children.Add(model2); this.Content = group; ScaleTransform3D scale = new ScaleTransform3D(); TranslateTransform3D move = new TranslateTransform3D(); AxisAngleRotation3D rotate = new AxisAngleRotation3D(); AxisAngleRotation3D rotate2 = new AxisAngleRotation3D(); Transform3DGroup t = new Transform3DGroup(); double angle = 0; double factor = 25; scale.ScaleZ = factor; scale.ScaleY = factor; scale.ScaleX = factor; move.OffsetX = _Point.X; move.OffsetZ = _Point.Y; move.OffsetY = 0; rotate.Axis = new Vector3D(0, 1, 0); rotate.Angle = angle; t.Children.Add(scale); t.Children.Add(new RotateTransform3D(rotate)); t.Children.Add(move); t.Children.Add(_Move); this.Transform = t; }
public void AddNewBox(ServiceBoxElement box) { // TODO: Calculate the Position and Render the BOX! int n = EntranceQueue.Count; box.Transform = new TranslateTransform3D(-15 - (n*5), 0, 2.1f); box.Transformer = new TranslateTransform3D(-15 - (n*5), 0, 2.1f); World.Instance.Mother.Children.Add(box); EntranceQueue.Enqueue(box); //reArrenging Box! int counter = 1; foreach (ServiceBoxElement boxe in EntranceQueue) { var tr = new TranslateTransform3D(-15 - (counter * 5), 0, 2.1f); boxe.Transform = tr; boxe.Transformer = tr; counter++; } }
public Cover(ImageInfo info, int coverPos, int currentPos, ModelVisual3D model) { pos = coverPos; imageName = new FileInfo(info.Path).Name; visualModel = model; imageSource = LoadImageSource(info); modelGroup = new Model3DGroup(); modelGroup.Children.Add(new GeometryModel3D(Tessellate(), LoadImage(imageSource))); modelGroup.Children.Add(new GeometryModel3D(TessellateMirror(), LoadImageMirror(imageSource))); rotation = new AxisAngleRotation3D(new Vector3D(0, 1, 0), RotationAngle(currentPos)); translation = new TranslateTransform3D(TranslationX(currentPos), 0, TranslationZ(currentPos)); var transformGroup = new Transform3DGroup(); transformGroup.Children.Add(new RotateTransform3D(rotation)); transformGroup.Children.Add(translation); modelGroup.Transform = transformGroup; Content = modelGroup; visualModel.Children.Add(this); }
public PortalVisual(object item, double radius) { if (item is Shop) { this.PortalType = PortalVisualType.Shop; } else { throw new ApplicationException("Unknown item's type: " + item.GetType().ToString()); } this.Item = item; #region WPF Model this.Model = GetModel(out this.BackdropPanelColors, this.PortalType, radius); _rotateTransform = new QuaternionRotation3D(); _translateTransform = new TranslateTransform3D(); Transform3DGroup transform = new Transform3DGroup(); transform.Children.Add(new RotateTransform3D(_rotateTransform)); transform.Children.Add(_translateTransform); ModelVisual3D visual = new ModelVisual3D(); visual.Transform = transform; visual.Content = this.Model; this.Visuals3D = new Visual3D[] { visual }; #endregion this.Token = TokenGenerator.NextToken(); this.Radius = radius; this.CreationTime = DateTime.UtcNow; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: #line 15 "..\..\..\UI\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.OnPause); #line default #line hidden return; case 2: #line 16 "..\..\..\UI\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.OnHelp); #line default #line hidden return; case 3: #line 17 "..\..\..\UI\MainWindow.xaml" ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.SwitchCameraCommand_OnExecuted); #line default #line hidden return; case 4: this.CameraViewsCombobox = ((System.Windows.Controls.ComboBox)(target)); return; case 5: this.TogglePause = ((System.Windows.Controls.CheckBox)(target)); #line 33 "..\..\..\UI\MainWindow.xaml" this.TogglePause.Checked += new System.Windows.RoutedEventHandler(this.ToggleButton_OnChanged); #line default #line hidden #line 33 "..\..\..\UI\MainWindow.xaml" this.TogglePause.Unchecked += new System.Windows.RoutedEventHandler(this.ToggleButton_OnChanged); #line default #line hidden return; case 6: this.ButtonExit = ((System.Windows.Controls.Button)(target)); #line 34 "..\..\..\UI\MainWindow.xaml" this.ButtonExit.Click += new System.Windows.RoutedEventHandler(this.ButtonExit_OnClick); #line default #line hidden return; case 7: this.ViewPort = ((HelixToolkit.Wpf.HelixViewport3D)(target)); #line 39 "..\..\..\UI\MainWindow.xaml" this.ViewPort.CameraChanged += new System.Windows.RoutedEventHandler(this.ViewPort_CameraChanged); #line default #line hidden return; case 8: this.Grid = ((HelixToolkit.Wpf.GridLinesVisual3D)(target)); return; case 9: this.BoatBearing = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 10: this.BoatPosition = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 11: this.FileModelVisual3D = ((HelixToolkit.Wpf.FileModelVisual3D)(target)); return; case 12: this.Waypoint = ((AutoPilotSimulation.UI.DraggableSphere)(target)); return; case 13: this.InfoBox = ((AutoPilotSimulation.UI.InfoBox)(target)); return; } this._contentLoaded = true; }
public MainViewModel() { RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); // ---------------------------------------------- // titles this.Title = "SwapChain Top Surface Rendering Demo"; this.SubTitle = "WPF & SharpDX"; // ---------------------------------------------- // camera setup this.Camera = new PerspectiveCamera { Position = new Point3D(20, 20, 20), LookDirection = new Vector3D(-1, -1, -1), UpDirection = new Vector3D(0, 1, 0) }; // (Camera as ProjectionCamera).FarPlaneDistance = 10000; this.Light1Direction = new Vector3(-100, -100, -100); SetupCameraBindings(this.Camera); // ---------------------------------------------- // setup scene this.Light1Color = (Color4)Color.White; var builder = new MeshBuilder(true, false, false); builder.AddBox(new Vector3(), 40, 0.1, 40); Plane1Model = FloorModel = builder.ToMeshGeometry3D(); builder = new MeshBuilder(true, false, false); builder.AddBox(new Vector3(), 0.1, 40, 40); Plane2Model = builder.ToMeshGeometry3D(); FloorMaterial = new PhongMaterial(); FloorMaterial.DiffuseColor = new Color4(1f, 1f, 1f, 0.2f); FloorMaterial.AmbientColor = new Color4(0, 0, 0, 0); FloorMaterial.ReflectiveColor = new Color4(0, 0, 0, 0); FloorMaterial.SpecularColor = new Color4(0, 0, 0, 0); PlaneMaterial = new PhongMaterial() { DiffuseColor = new Color4(0.1f, 0.1f, 0.8f, 0.2f) }; var landerItems = Load3ds("Car.3ds").Select(x => x.Geometry as MeshGeometry3D).ToArray(); Model = MeshGeometry3D.Merge(landerItems); ModelMaterial = PhongMaterials.Obsidian; var transGroup = new Media3D.Transform3DGroup(); transGroup.Children.Add(new Media3D.ScaleTransform3D(0.01, 0.01, 0.01)); transGroup.Children.Add(new Media3D.RotateTransform3D(new Media3D.AxisAngleRotation3D(new Media3D.Vector3D(1, 0, 0), -90))); transGroup.Children.Add(new Media3D.TranslateTransform3D(new Media3D.Vector3D(0, 6, 0))); ModelTransform = transGroup; Plane1Transform = new TranslateTransform3D(new Vector3D(0, 15, 0)); Plane2Transform = new TranslateTransform3D(new Vector3D(15, 0, 0)); timer = new DispatcherTimer(DispatcherPriority.Render); timer.Interval = TimeSpan.FromMilliseconds(30); timer.Tick += Timer_Tick; timer.Start(); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.viewport1 = ((System.Windows.Controls.Viewport3D)(target)); #line 10 "..\..\MainWindow.xaml" this.viewport1.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.viewport1_MouseLeftButtonDown); #line default #line hidden #line 11 "..\..\MainWindow.xaml" this.viewport1.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(this.viewport1_MouseLeftButtonUp); #line default #line hidden #line 11 "..\..\MainWindow.xaml" this.viewport1.MouseMove += new System.Windows.Input.MouseEventHandler(this.viewport1_MouseMove); #line default #line hidden #line 12 "..\..\MainWindow.xaml" this.viewport1.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(this.viewport1_MouseWheel); #line default #line hidden #line 12 "..\..\MainWindow.xaml" this.viewport1.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.Viewport1_MouseDown); #line default #line hidden #line 12 "..\..\MainWindow.xaml" this.viewport1.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.Viewport1_MouseUp); #line default #line hidden return; case 2: this.modelGroup = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 3: this.rotateTransform = ((System.Windows.Media.Media3D.RotateTransform3D)(target)); return; case 4: this.rotate = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 5: this.rotateTransformX = ((System.Windows.Media.Media3D.RotateTransform3D)(target)); return; case 6: this.rotateX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 7: this.translacija = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 8: this.skaliranje = ((System.Windows.Media.Media3D.ScaleTransform3D)(target)); return; } this._contentLoaded = true; }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.viewport = ((System.Windows.Controls.Viewport3D)(target)); return; case 2: this.camera = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 3: this.group1 = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 4: this.translacija1 = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 5: this.group2 = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 6: this.translacija2 = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 7: this.group3 = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 8: this.translacija3 = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 9: this.group4 = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 10: this.translacija4 = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 11: this.group = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 12: this.translacija0 = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 13: this.canvas = ((System.Windows.Controls.Canvas)(target)); #line 121 "..\..\MainWindow.xaml" this.canvas.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.Grid_MouseDown); #line default #line hidden #line 121 "..\..\MainWindow.xaml" this.canvas.MouseMove += new System.Windows.Input.MouseEventHandler(this.Grid_MouseMove); #line default #line hidden #line 121 "..\..\MainWindow.xaml" this.canvas.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.Grid_MouseUp); #line default #line hidden #line 121 "..\..\MainWindow.xaml" this.canvas.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(this.Grid_MouseWheel); #line default #line hidden return; } this._contentLoaded = true; }
private void AddPointCloud() { var points = new PointGeometry3D(); var col = new Color4Collection(); // gradient na kolory var ptPos = new Vector3Collection(); // pozycje punktów var ptIdx = new IntCollection(); // indeksy punktów int dataSampling = 2; // taki prosty przeskok miedzy punktami /można zrobić coś na podstawie odległości kamery albo różnicy wysokości między kolejnymi punktami // wpisywane na sztywno dane (lepiej zrobić funkcję obsługującą odpowiednie typy) // path = "C:/Users/astat/Desktop/DaneViewer/xyzi_wrakII.txt"; //path = "C:/Users/astat/Desktop/DaneViewer/export_xyzi.txt"; if (filepath != null && positionX != null && positionY != null && positionZ != null) { dataFromTxt(filepath, positionX, positionY, positionZ); //newdataFromTxt(path, positionX, positionY, positionZ); double maxX = positionX.Max(); double minX = positionX.Min(); double maxY = positionY.Max(); double minY = positionY.Min(); double maxZ = positionZ.Max(); double minZ = positionZ.Min(); Trace.WriteLine($"{maxX} {minX} {maxY} {minY} {maxZ} {minZ}"); for (int i = 0; i < positionX.Count(); i += dataSampling) // tutaj powinna być pętla foreach ale potrzebowałem prostego przerzedzenia dannych { // Trace.WriteLine($"{i} {positionX[i]} {positionY[i]} {positionZ[i]}"); bool reverse = true; var positionZReversed = maxZ - positionZ[i]; // czasami dostawałem punkty z odwróconą osią Z po to ta zmienna var positionToColour = Math.Abs(positionZ[i] / (maxZ - minZ)); ptIdx.Add(ptPos.Count); if (reverse == true) { ptPos.Add(new Vector3((float)positionX[i], (float)positionY[i], (float)positionZReversed)); } else { ptPos.Add(new Vector3((float)positionX[i], (float)positionY[i], (float)positionZ[i])); } // Trace.WriteLine($"{i} {positionX[i]} {positionY[i]} {positionZ[i]} {positionToColour}"); var colourR = Math.Sqrt(-positionToColour + 0.75); var colourG = (Math.Sin(4 * positionToColour - 0.2)) / 1.6;//tutaj trzeba potworzyć funkcje matematyczne żeby zmieniały się kolorki/ można też użyć warunków i color4.Scale var colourB = Math.Sqrt(positionToColour - 0.25); col.Add(new Color4((float)colourR, (float)colourG, (float)colourB, 1f)); //te kolory to czarna magia ale nie są według żadnej skali tylko żeby ładnie wyglądały hehe } //Trace.WriteLine($"{i} {positionToColour} {colourR} {colourG} {colourB} {col[i]}"); points.Positions = ptPos; points.Indices = ptIdx; points.Colors = col; PointsColor = Colors.White; // <- nie pamiętam po co to tutaj ale bez tego nie działa Points = points; PointsTransform = new Media3D.TranslateTransform3D(0, 0, minZ); // floor plane grid CreateGrid(maxX, minX, maxY, minY, minZ); Grid = lines.ToLineGeometry3D(); GridColor = new Color4(153 / 255.0f, 204 / 255.0f, 255 / 255.0f, (float)0.3).ToColor();; GridTransform = new Media3D.TranslateTransform3D(0, 0, minZ); // strzałki CreateArrows((float)maxX, (float)minX, (float)maxY, (float)minY, (float)maxZ, (float)minZ); Arrow = arrows.ToLineGeometry3D(); ArrowColor = new Color4(0, 255 / 255.0f, 255 / 255.0f, (float)0.5).ToColor();; ArrowTransform = new Media3D.TranslateTransform3D(0, 0, minZ); } }
public MainViewModel() { EffectsManager = new DefaultEffectsManager(); // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // setup lighting AmbientLightColor = Colors.DimGray; DirectionalLightColor = Colors.White; DirectionalLightDirection = new Vector3D(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(new Vector3(0, 1, 0), -5, 5, -5, 5); GridColor = Colors.Black; GridTransform = new Media3D.TranslateTransform3D(0, -3, 0); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); var textBuilder = new MeshBuilder(); textBuilder.ExtrudeText("HelixToolkit.SharpDX", "Arial", System.Windows.FontStyles.Normal, System.Windows.FontWeights.Bold, 14, new Vector3(1, 0, 0), new Vector3(0, 0, 0), new Vector3(0, 0, 1)); TextModel = textBuilder.ToMesh(); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); Model4Transform = new Media3D.TranslateTransform3D(-8, 0, -5); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); int numRows = 11; int numColumns = 11; string[] texts = new string[] { "HelixToolkit", "abcde", "random", "SharpDX", "DirectX" }; float angle = 0; for (var i = 0; i < numRows; i++) { for (var j = 0; j < numColumns; j++) { angle += (float)Math.PI / 10; Text.TextInfo.Add(new TextInfo(texts[(i + j) % texts.Length], new Vector3((i - numRows / 2), 0.0f, (j - numColumns / 2))) { Foreground = new Color4((float)i / numRows, 1 - (float)i / numRows, (float)(numColumns - j) / numColumns, 1f), Background = new Color4(1 - (float)i / numRows, (float)(numColumns - j) / numColumns, (float)i / numRows, 0.8f), Scale = Math.Max(0.01f, (float)i / numRows * 0.02f), Angle = angle }); } } Billboard1Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(0, 1, 0)) { Angle = 0 }, FontColor = Colors.Blue.ToColor4(), FontSize = 12, BackgroundColor = Colors.Plum.ToColor4(), FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2), }; var background = Colors.Blue; background.A = (byte)120; Billboard2Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 2", new Vector3(2, 1, 0)) { Angle = -(float)Math.PI / 3 }, FontSize = 12, FontColor = Colors.Green.ToColor4(), BackgroundColor = background.ToColor4(), FontWeight = System.Windows.FontWeights.Bold, Padding = new System.Windows.Thickness(2), }; background = Colors.Purple; background.A = (byte)50; Billboard3Model = new BillboardSingleText3D(2, 0.8f) { TextInfo = new TextInfo("Model 3", new Vector3(-2, 1, 0)) { Angle = -(float)Math.PI / 6 }, FontSize = 12, FontColor = Colors.Red.ToColor4(), BackgroundColor = background.ToColor4(), FontFamily = "Times New Roman", FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2), }; //BillboardImageModel = new BillboardSingleImage3D(CreateBitmapSample()) { MaskColor = Color.Black }; BillboardImageModel = new BillboardSingleImage3D(CreatePNGSample(), 1, 1) { Angle = -(float)Math.PI / 5 }; BillboardImageModel.Center = new Vector3(2, 2, 0); UpXCommand = new RelayCommand(x => { UpDirection = new Vector3D(1, 0, 0); }); UpYCommand = new RelayCommand(x => { UpDirection = new Vector3D(0, 1, 0); }); UpZCommand = new RelayCommand(x => { UpDirection = new Vector3D(0, 0, 1); }); BackgroundTexture = BitmapExtensions.CreateLinearGradientBitmapStream(EffectsManager, 128, 128, Direct2DImageFormat.Bmp, new Vector2(0, 0), new Vector2(0, 128), new SharpDX.Direct2D1.GradientStop[] { new SharpDX.Direct2D1.GradientStop() { Color = Colors.White.ToColor4(), Position = 0f }, new SharpDX.Direct2D1.GradientStop() { Color = Colors.DarkGray.ToColor4(), Position = 1f } }); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.tulbar = ((System.Windows.Controls.ToolBar)(target)); return; case 2: #line 15 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.prviChecked); #line default #line hidden #line 15 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.prviUnchecked); #line default #line hidden return; case 3: #line 16 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.drugiChecked); #line default #line hidden #line 16 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.drugiUnchecked); #line default #line hidden return; case 4: #line 17 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.treciChecked); #line default #line hidden #line 17 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.treciUnchecked); #line default #line hidden return; case 5: this.vjuport = ((System.Windows.Controls.Viewport3D)(target)); #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(this.panMouseLeftButtonUp); #line default #line hidden #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(this.zoomMouseWheel); #line default #line hidden #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.panMouseLeftButtonDown); #line default #line hidden #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseMove += new System.Windows.Input.MouseEventHandler(this.panMouseMove); #line default #line hidden #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.rotacijaWheel); #line default #line hidden #line 19 "..\..\MainWindow.xaml" this.vjuport.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.rotacijaWheelUp); #line default #line hidden return; case 6: this.kamera = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 7: this.mapaPoZ = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 8: this.mapaPoX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 9: this.translacija = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 10: this.skaliranje = ((System.Windows.Media.Media3D.ScaleTransform3D)(target)); return; case 11: this.elementiPoZ = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 12: this.elementiPoX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 13: this.grupica = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 14: this.prveLinijePoZ = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 15: this.prveLinijePoX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 16: this.prveLinije = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 17: this.drugeLinijePoZ = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 18: this.drugeLinijePoX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 19: this.drugeLinije = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 20: this.treceLinijePoZ = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 21: this.treceLinijePoX = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 22: this.treceLinije = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; } this._contentLoaded = true; }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // default render technique RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); // setup lighting AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); DirectionalLightColor = Color.White; DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(); GridColor = SharpDX.Color.Black; GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); for (var i = 0; i < 50; i++) { for (var j = 0; j < 50; j++) { Text.TextInfo.Add(new TextInfo("Hello World", new Vector3(i, j, 0))); } } }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.ExampleBeginStoryboard = ((System.Windows.Media.Animation.BeginStoryboard)(target)); return; case 2: this.ExampleStoryboard = ((System.Windows.Media.Animation.Storyboard)(target)); return; case 3: this.mySplineKeyFrame = ((System.Windows.Media.Animation.SplineDoubleKeyFrame)(target)); return; case 4: this.myVector3DSplineKeyFrame = ((System.Windows.Media.Animation.SplineDoubleKeyFrame)(target)); return; case 5: this.thePanel = ((System.Windows.Controls.StackPanel)(target)); return; case 6: this.SliderControlPoint1X = ((System.Windows.Controls.Slider)(target)); #line 404 "..\..\..\..\Examples\BezierTimeExample\BezierTimeExample.xaml" this.SliderControlPoint1X.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler <double>(this.OnSliderChanged); #line default #line hidden return; case 7: this.SliderControlPoint1Y = ((System.Windows.Controls.Slider)(target)); #line 408 "..\..\..\..\Examples\BezierTimeExample\BezierTimeExample.xaml" this.SliderControlPoint1Y.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler <double>(this.OnSliderChanged); #line default #line hidden return; case 8: this.SliderControlPoint2X = ((System.Windows.Controls.Slider)(target)); #line 412 "..\..\..\..\Examples\BezierTimeExample\BezierTimeExample.xaml" this.SliderControlPoint2X.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler <double>(this.OnSliderChanged); #line default #line hidden return; case 9: this.SliderControlPoint2Y = ((System.Windows.Controls.Slider)(target)); #line 417 "..\..\..\..\Examples\BezierTimeExample\BezierTimeExample.xaml" this.SliderControlPoint2Y.ValueChanged += new System.Windows.RoutedPropertyChangedEventHandler <double>(this.OnSliderChanged); #line default #line hidden return; case 10: this.keySplineText = ((System.Windows.Controls.TextBlock)(target)); return; case 11: this.SplineIllustrationSegment = ((System.Windows.Media.BezierSegment)(target)); return; case 12: this.SplineControlPoint1Marker = ((System.Windows.Media.EllipseGeometry)(target)); return; case 13: this.SplineControlPoint2Marker = ((System.Windows.Media.EllipseGeometry)(target)); return; case 14: this.SplineProgressTransform = ((System.Windows.Media.TranslateTransform)(target)); return; case 15: this.TimeProgressTransform = ((System.Windows.Media.TranslateTransform)(target)); return; case 16: this.myPerspectiveCamera = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 17: this.myHorizontalRotation = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 18: this.myVerticalRotation = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 19: this.myTranslateTransform3D = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; } this._contentLoaded = true; }
private void UpdateModel(TriangleMesh mesh, Mesh3DUtilities.Mesh3DShading meshShading, bool transform = true) { if (mesh == null) { return; } if (mesh.Vertices.Count == 0) { return; } var box = mesh.Traits.BoundingBox; var scale = 2f / (box.Maximum - box.Minimum).Length(); var center = (box.Maximum - box.Minimum) / 2f; // bbox this.Box = LineBuilder.GenerateBoundingBox(box); // edges this.MeshEdges = mesh.ToLineGeometry3D(); // border edges var borderEdges = mesh.Halfedges.Where(x => x.OnBoundary).SelectMany(x => new[] { x.FromVertex.Index, x.ToVertex.Index }).ToArray(); var borderVerts = mesh.Vertices.Select(x => x.Traits.Position).ToArray(); if (borderEdges.Length > 0) { this.BorderEdges = new LineGeometry3D() { Positions = borderVerts, Indices = borderEdges, }; } else { this.BorderEdges = null; } // get geometry var model = mesh.ToMeshGeometry3D(meshShading, false); if (meshShading == Mesh3DUtilities.Mesh3DShading.Smooth) { var colors = new Color4[mesh.Vertices.Count]; foreach (var v in mesh.Vertices) { int idx = (int)(254 * (((v.Traits.MinCurvature + v.Traits.MaxCurvature) / 2 - MinCurv) / (MaxCurv))); idx = idx < 0 ? 0 : idx; idx = idx > 254 ? 254 : idx; var c = JetMap255[idx]; //colors[v.Index] = c.ToColor4(); colors[v.Index] = (Color4)Color.WhiteSmoke; } model.Colors = colors; } else if (meshShading == Mesh3DUtilities.Mesh3DShading.Flat) { int ii = 0; var colors = new Color4[3 * mesh.Faces.Count]; foreach (var f in mesh.Faces) { foreach (var v in f.Vertices) { int idx = (int)(254 * (((v.Traits.MinCurvature + v.Traits.MaxCurvature) / 2 - MinCurv) / (MaxCurv))); idx = idx < 0 ? 0 : idx; idx = idx > 254 ? 254 : idx; var c = JetMap255[idx]; //colors[ii++] = c.ToColor4(); colors[ii++] = (Color4)Color.WhiteSmoke; } } model.Colors = colors; } else { model.Colors = mesh.Vertices.Select(x => x.Traits.Normal.ToColor4()).ToArray(); } for (int i = 0; i < mesh.Vertices.Count; i++) { var v = mesh.Vertices[i]; if (v.Halfedge == null) { model.Colors[i] = (Color4)Color.Red; } } var nullVerts = mesh.Vertices.Where(x => x.Halfedge == null).ToArray().Length; if (nullVerts > 0) { Console.WriteLine("Mesh warning: found {0} overhang vertices!", nullVerts); } if (transform) { Media3D.Transform3D trafo = new Media3D.TranslateTransform3D(-box.Minimum.ToVector3D()); trafo = trafo.AppendTransform(new Media3D.TranslateTransform3D(-center.ToVector3D())); trafo = trafo.AppendTransform(new Media3D.ScaleTransform3D(scale, scale, scale)); this.MeshModelTransform = trafo; } //model.Colors = model.TextureCoordinates.Select(x => x.ToColor4()).ToArray(); this.MeshModel = model; this.Title = System.IO.Path.GetFileName(mesh.FileName); this.SubTitle = string.Format("V:{0} | T:{1} | E:{2}", mesh.Vertices.Count, mesh.Faces.Count, mesh.Edges.Count); }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // default render technique RenderTechniquesManager = new DefaultRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques[DefaultRenderTechniqueNames.Blinn]; EffectsManager = new DefaultEffectsManager(RenderTechniquesManager); // setup lighting AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); DirectionalLightColor = Color.White; DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(); GridColor = SharpDX.Color.Black; GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); // model trafos Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; //var diffColor = this.RedMaterial.DiffuseColor; //diffColor.Alpha = 0.5f; //this.RedMaterial.DiffuseColor = diffColor; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { for (int z = 0; z < 10; z++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, y, z)); } } } Points.Positions = ptPos; Points.Indices = ptIdx; Text = new BillboardText3D(); for (var i = 0; i < 50; i++) { for (var j = 0; j < 50; j++) { Text.TextInfo.Add(new TextInfo("Hello World", new Vector3(i, j, 0))); } } Billboard1Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(0, 1, 0)), FontColor = Color.Blue, FontSize = 12, BackgroundColor = Color.Plum, FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2) }; var background = Color.Blue; background.A = (byte)120; Billboard2Model = new BillboardSingleText3D() { TextInfo = new TextInfo("Model 1", new Vector3(2, 1, 0)), FontSize = 12, FontColor = Color.Green, BackgroundColor = background, FontWeight = System.Windows.FontWeights.Bold, Padding = new System.Windows.Thickness(2) }; background = Color.Purple; background.A = (byte)50; Billboard3Model = new BillboardSingleText3D(2, 0.8f) { TextInfo = new TextInfo("Model 1", new Vector3(-2, 1, 0)), FontSize = 12, FontColor = Color.Red, BackgroundColor = background, FontFamily = new System.Windows.Media.FontFamily("Times New Roman"), FontStyle = System.Windows.FontStyles.Italic, Padding = new System.Windows.Thickness(2) }; //BillboardImageModel = new BillboardSingleImage3D(CreateBitmapSample()) { MaskColor = Color.Black }; BillboardImageModel = new BillboardSingleImage3D(CreatePNGSample(), 1, 1); BillboardImageModel.Center = new Vector3(2, 2, 0); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.grid = ((System.Windows.Controls.Grid)(target)); return; case 2: this.ViewPort = ((System.Windows.Controls.Viewport3D)(target)); #line 13 "..\..\MainWindow.xaml" this.ViewPort.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.ViewPort_MouseLeftButtonDown); #line default #line hidden #line 14 "..\..\MainWindow.xaml" this.ViewPort.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(this.ViewPort_MouseLeftButtonUp); #line default #line hidden #line 14 "..\..\MainWindow.xaml" this.ViewPort.MouseMove += new System.Windows.Input.MouseEventHandler(this.ViewPort_MouseMove); #line default #line hidden #line 15 "..\..\MainWindow.xaml" this.ViewPort.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(this.ViewPort_MouseWheel); #line default #line hidden #line 15 "..\..\MainWindow.xaml" this.ViewPort.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.ViewPort_MouseDown); #line default #line hidden #line 15 "..\..\MainWindow.xaml" this.ViewPort.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.ViewPort_MouseUp); #line default #line hidden #line 15 "..\..\MainWindow.xaml" this.ViewPort.MouseRightButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.ViewPort_MouseRightButtonDown); #line default #line hidden return; case 3: this.CAMERA = ((System.Windows.Media.Media3D.PerspectiveCamera)(target)); return; case 4: this.translacija = ((System.Windows.Media.Media3D.TranslateTransform3D)(target)); return; case 5: this.myLight = ((System.Windows.Media.Media3D.ModelVisual3D)(target)); return; case 6: this.dirLightMain = ((System.Windows.Media.Media3D.DirectionalLight)(target)); return; case 7: this.model3dGroup = ((System.Windows.Media.Media3D.Model3DGroup)(target)); return; case 8: this.Rotate = ((System.Windows.Media.Media3D.RotateTransform3D)(target)); return; case 9: this.myAngleRotation = ((System.Windows.Media.Media3D.AxisAngleRotation3D)(target)); return; case 10: #line 80 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.CheckBox_Unchecked); #line default #line hidden #line 80 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.CheckBox_Checked); #line default #line hidden return; case 11: #line 81 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.CheckBox_Unchecked); #line default #line hidden #line 81 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.CheckBox_Checked); #line default #line hidden return; case 12: #line 82 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Unchecked += new System.Windows.RoutedEventHandler(this.CheckBox_Unchecked); #line default #line hidden #line 82 "..\..\MainWindow.xaml" ((System.Windows.Controls.CheckBox)(target)).Checked += new System.Windows.RoutedEventHandler(this.CheckBox_Checked); #line default #line hidden return; } this._contentLoaded = true; }
public MainViewModel() { // titles Title = "Simple Demo"; SubTitle = "WPF & SharpDX"; // camera setup Camera = new PerspectiveCamera { Position = new Point3D(3, 3, 5), LookDirection = new Vector3D(-3, -3, -5), UpDirection = new Vector3D(0, 1, 0), FarPlaneDistance = 5000000 }; // Create a custom render techniques manager that // only supports Phong and Blinn RenderTechniquesManager = new CustomRenderTechniquesManager(); RenderTechnique = RenderTechniquesManager.RenderTechniques["RenderCustom"]; EffectsManager = new CustomEffectsManager(RenderTechniquesManager); // setup lighting AmbientLightColor = new Color4(0.1f, 0.1f, 0.1f, 1.0f); DirectionalLightColor = Color.White; DirectionalLightDirection = new Vector3(-2, -5, -2); // floor plane grid Grid = LineBuilder.GenerateGrid(); GridColor = Color.Black; GridTransform = new Media3D.TranslateTransform3D(-5, -1, -5); // scene model3d var b1 = new MeshBuilder(); b1.AddSphere(new Vector3(0, 0, 0), 0.5); b1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2, BoxFaces.All); var meshGeometry = b1.ToMeshGeometry3D(); meshGeometry.Colors = new Color4Collection(meshGeometry.TextureCoordinates.Select(x => x.ToColor4())); Model = meshGeometry; // lines model3d var e1 = new LineBuilder(); e1.AddBox(new Vector3(0, 0, 0), 1, 0.5, 2); Lines = e1.ToLineGeometry3D(); // model transform Model1Transform = new Media3D.TranslateTransform3D(0, 0, 0); Model2Transform = new Media3D.TranslateTransform3D(-2, 0, 0); Model3Transform = new Media3D.TranslateTransform3D(+2, 0, 0); // model materials RedMaterial = PhongMaterials.Red; GreenMaterial = PhongMaterials.Green; BlueMaterial = PhongMaterials.Blue; Points = new PointGeometry3D(); var ptPos = new Vector3Collection(); var ptIdx = new IntCollection(); Text = new BillboardText3D(); for (int x = -5; x <= 5; x++) { for (int y = -5; y <= 5; y++) { ptIdx.Add(ptPos.Count); ptPos.Add(new Vector3(x, -1, y)); Text.TextInfo.Add(new TextInfo(string.Format("{0}:{1}", x, y), new Vector3(x, -1, y))); } } Points.Positions = ptPos; Points.Indices = ptIdx; }
private Robot robot; //the robot to display! #endregion Fields #region Constructors public ViewPlatform(Viewport3D viewport, MotorManager motorManager, Robot robot) { this.robot = robot; robot.intialise(viewport); this.motorManager = motorManager; //Add myself as a listener for the motor manager: this.motorManager.addListener(this); //Create a focussed camera to watch the origin: focussedCamera = new FocussedCamera(200, 0, 0); //Create the perspective camera! camera = getCamera(focussedCamera.Location, focussedCamera.Direction); viewport.Camera = camera; //Now to construct the light: light = getLight(Colors.White,focussedCamera.Direction); ModelVisual3D visual = new ModelVisual3D(); visual.Content = light; viewport.Children.Add(visual); ModelVisual3D visual2 = new ModelVisual3D(); //Now add in the robot too! updateMotors(); outerModel = new Model3DGroup(); outerModel.Children.Add(robot.getRobot()); currentMatTransform = (MatrixTransform3D)MatrixTransform3D.Identity; TranslateTransform3D trans = new TranslateTransform3D(); outerModel.Children[0] = Transforms.applyTransform((Model3DGroup)outerModel.Children[0],currentMatTransform); visual2.Content = outerModel; viewport.Children.Add(visual2); //Phew! That should be it... viewport.ClipToBounds = true; }