/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.renderer); var time = stopWatch.ElapsedMilliseconds * 0.001f; rx = (float)(Math.Sin(time * 0.7) * 0.2); ry = (float)(Math.Sin(time * 0.3) * 0.1); rz = (float)(Math.Sin(time * 0.2) * 0.1); camera.Position.X += (this.mouse.X - camera.Position.X) * .05f; camera.Position.Y += (-this.mouse.Y - camera.Position.Y) * .05f; camera.LookAt(scene.Position); root.Traverse( child => { child.Rotation.X = rx; child.Rotation.Y = ry; child.Rotation.Z = rz; }); renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.renderer); camera.Position.X += (mouse.X - camera.Position.X) * .05f; camera.Position.Y += (-mouse.Y - camera.Position.Y) * .05f; camera.LookAt(scene.Position); renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { camera.Position.X += (mouse.X - camera.Position.X) * .05f; camera.Position.Y = Mat.Clamp(camera.Position.Y + (-(mouse.Y - 200) - camera.Position.Y) * .05f, 50, 1000); camera.LookAt(scene1.Position); renderer.EnableScissorTest(false); renderer.Clear(); renderer.EnableScissorTest(true); renderer.SetScissor(0, 0, SCREEN_WIDTH / 2 - 2, SCREEN_HEIGHT); renderer.Render(scene1, camera); renderer.SetScissor(SCREEN_WIDTH / 2, 0, SCREEN_WIDTH / 2 - 2, SCREEN_HEIGHT); renderer.Render(scene2, camera); }
/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.renderer); var time = stopWatch.ElapsedMilliseconds * 0.0015f; camera.Position.X += (this.mouse.X - camera.Position.X) * .05f; camera.Position.Y += (-this.mouse.Y - camera.Position.Y) * .05f; camera.LookAt(scene.Position); if (zmesh1 != null && zmesh2 != null) { zmesh1.Rotation.Y = -time; zmesh2.Rotation.Y = -time + (float)(Math.PI / 2.0f); } if ((float)material.Uniforms["time"]["value"] > 1 || (float)material.Uniforms["time"]["value"] < 0) { delta *= -1; } material.Uniforms["time"]["value"] = (float)material.Uniforms["time"]["value"] + delta; if (true) { renderer.Render(sceneRtt, cameraRtt, null, true); } else { renderer.Clear(); // Render first scene into texture renderer.Render(sceneRtt, cameraRtt, rtTexture, true); // Render full screen quad with generated texture renderer.Render(sceneScreen, cameraRtt); // Render second scene to screen // (using first scene as regular texture) renderer.Render(scene, camera); } }
/// <summary> /// /// </summary> public override void Render() { theta += 0.1f; camera.Position.X = radius * (float)Math.Sin(Mat.DegToRad(theta)); camera.Position.Y = radius * (float)Math.Sin(Mat.DegToRad(theta)); camera.Position.Z = radius * (float)Math.Cos(Mat.DegToRad(theta)); camera.LookAt(scene.Position); // find intersections var vector = new Vector3(mouse.X, mouse.Y, 1).Unproject(camera); raycaster = new Raycaster(camera.Position, vector.Sub(camera.Position).Normalize()); var intersects = raycaster.IntersectObjects(parentTransform.Children, true); if (intersects.Count > 0) { if (currentIntersected != null) { ((LineBasicMaterial)currentIntersected.Material).Linewidth = 1; } currentIntersected = intersects[0].Object3D; ((LineBasicMaterial)currentIntersected.Material).Linewidth = 5; sphereInter.Visible = true; sphereInter.Position.Copy(intersects[0].Point); } else { if (currentIntersected != null) { ((LineBasicMaterial)currentIntersected.Material).Linewidth = 1; } currentIntersected = null; sphereInter.Visible = false; } renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { var time = stopWatch.ElapsedMilliseconds * 0.0005; sphere.Position.X = (float)Math.Sin(time * 0.7f) * 2000.0f; sphere.Position.Y = (float)Math.Cos(time * 0.5f) * 2000.0f; sphere.Position.Z = (float)Math.Cos(time * 0.3f) * 2000.0f; for (var i = 1; i < scene.Children.Count; i++) { scene.Children[i].LookAt(sphere.Position); } camera.Position.X += (this.mouse.X - camera.Position.X) * .05f; camera.Position.Y += (-this.mouse.Y - camera.Position.Y) * .05f; camera.LookAt(scene.Position); renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { theta += 0.1f; camera.Position.X = radius * (float)System.Math.Sin(Mat.DegToRad(theta)); camera.Position.Y = radius * (float)System.Math.Sin(Mat.DegToRad(theta)); camera.Position.Z = radius * (float)System.Math.Cos(Mat.DegToRad(theta)); camera.LookAt(scene.Position); // find intersections var vector = new Vector3(mouse.X, mouse.Y, 1).Unproject(camera); raycaster = new Raycaster(camera.Position, vector.Sub(camera.Position).Normalize()); var intersects = raycaster.IntersectObjects(scene.Children); if (intersects.Count > 0) { if (INTERSECTED != intersects[0].Object3D) { if (INTERSECTED != null) { ((MeshLambertMaterial)INTERSECTED.Material).Emissive = currentHex; } INTERSECTED = intersects[0].Object3D; currentHex = ((MeshLambertMaterial)INTERSECTED.Material).Emissive; ((MeshLambertMaterial)INTERSECTED.Material).Emissive = Color.Red; } } else { if (INTERSECTED != null) { ((MeshLambertMaterial)INTERSECTED.Material).Emissive = currentHex; } INTERSECTED = null; } renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.renderer); Debug.Assert(null != this.mesh); if (isUserInteracting == false) { lon += 0.1f; } lat = Math.Max(-85, Math.Min(85, lat)); phi = (float)Mat.DegToRad(90 - lat); theta = (float)Mat.DegToRad(lon); target.X = (float)(500 * Math.Sin(phi) * Math.Cos(theta)); target.Y = (float)(500 * Math.Cos(phi)); target.Z = (float)(500 * Math.Sin(phi) * Math.Sin(theta)); camera.LookAt(target); renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.mesh); Debug.Assert(null != this.renderer); var time = stopWatch.ElapsedMilliseconds / 6000.0f; camera.Position.X = 80 * (float)System.Math.Cos(time); camera.Position.Z = 80 * (float)System.Math.Sin(time); camera.LookAt(scene.Position); for (var i = 0; i < scene.Children.Count; i++) { var mesh = scene.Children[i]; mesh.Position.X = (float)System.Math.Sin(time * 4) * i * i * 0.005f; mesh.Position.Z = (float)System.Math.Cos(time * 6) * i * i * 0.005f; } renderer.Render(scene, camera); }
/// <summary> /// /// </summary> public override void Render() { Debug.Assert(null != this.renderer); Debug.Assert(null != this.group); var time = stopWatch.ElapsedMilliseconds; var ftime = time * 0.001f; var rx = (float)(Math.Sin(ftime * 0.7) * 0.5); var ry = (float)(Math.Sin(ftime * 0.3) * 0.5); var rz = (float)(Math.Sin(ftime * 0.2) * 0.5); camera.Position.X += (this.mouse.X - camera.Position.X) * .05f; camera.Position.Y += (-this.mouse.Y - camera.Position.Y) * .05f; camera.LookAt(scene.Position); this.group.Rotation.X = rx; this.group.Rotation.Y = ry; this.group.Rotation.Z = rz; renderer.Render(scene, camera); }
private void Render() { //GET MAP //Create pane GeometryModel3D Pane1 = new GeometryModel3D(); //LOAD IN LOGIC MeshGeometry3D paneMesh = MPane(comm.heights); Pane1.Geometry = paneMesh; //paneMesh.Material ImageBrush imagebrush = new ImageBrush(); //Get Image //https://stackoverflow.com/questions/8352787/how-to-free-the-memory-after-the-bitmapimage-is-no-longer-needed BitmapImage image = new BitmapImage(); FileStream stream = File.OpenRead(@"texture.bmp"); image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad; image.StreamSource = stream; image.EndInit(); stream.Close(); stream.Dispose(); //Set Image imagebrush.ImageSource = image; Pane1.Material = new DiffuseMaterial(imagebrush); Pane1.BackMaterial = new DiffuseMaterial(new SolidColorBrush(Colors.LightGray)); //GET MARKERS //LIGHTS DirectionalLight DirLicht1 = new DirectionalLight(); DirLicht1.Color = Colors.White; DirLicht1.Direction = new Vector3D(-1, -1, -1); //REMOVE LATER DirectionalLight DirLicht2 = new DirectionalLight(); DirLicht2.Color = Colors.White; DirLicht2.Direction = new Vector3D(1, 1, 1); //MAP Model3DGroup modelGroup = new Model3DGroup(); modelGroup.Children.Add(Pane1); foreach (Model3D x in markers.Keys) { modelGroup.Children.Add(x); } modelGroup.Children.Add(DirLicht1); modelGroup.Children.Add(DirLicht2); //Add to visual3d ModelVisual3D visuals = new ModelVisual3D(); visuals.Content = modelGroup; //Map PerspectiveCamera Camera1 = new PerspectiveCamera(); Camera1.FarPlaneDistance = 1000000; Camera1.NearPlaneDistance = 50; Camera1.FieldOfView = 45; Camera1.Position = new Point3D(301, 5000, 301); Camera1.LookDirection = new Vector3D(301, -5000, 301); Camera1.LookAt(new Point3D(301, 301, 0), 0d); Camera1.UpDirection = new Vector3D(0, 1, 0); MainViewport.Camera = Camera1; MainViewport.Children.Add(visuals); MainViewport.CameraRotationMode = CameraRotationMode.Turntable; MainViewport.ModelUpDirection = new Vector3D(0, 1, 0); MainViewport.Height = 500; MainViewport.Width = 1000; Canvas.SetTop(MainViewport, 0); Canvas.SetLeft(MainViewport, 0); this.Width = MainViewport.Width; this.Height = MainViewport.Height + 100; }
/// <summary> /// /// </summary> /// <param name="openTKcontrol"></param> public override void Load(Control openTKcontrol) { base.Load(openTKcontrol); camera = new PerspectiveCamera(70, openTKcontrol.Width / (float)openTKcontrol.Height, 1, 3000); camera.Position = new Vector3(1000, 500, 1000); camera.LookAt(new Vector3(0, 200, 0)); scene = new Scene(); scene.Add(new GridHelper(500, 100)); var light = new DirectionalLight(Color.White, 2); light.Position = new Vector3(1, 1, 1); scene.Add(light); var texture = ImageUtils.LoadTexture(@"examples/textures/crate.gif"); texture.Anisotropy = this.renderer.MaxAnisotropy; var geometry = new BoxGeometry(200, 200, 200); var material = new MeshLambertMaterial(null) { Map = texture }; //var arrowGeometry = new Geometry(); //var cm = new Mesh(new CylinderGeometry(0, 200, 1000, 12, 1, false)); //cm.Position.Y = 100; //cm.UpdateMatrix(); //arrowGeometry.Merge((Geometry)cm.Geometry, cm.Matrix); //var ww = new Mesh(arrowGeometry); //scene.Add(ww); control = new TransformControls(camera, openTKcontrol); control.PropertyChanged += control_PropertyChanged; mesh = new Mesh(geometry, material); scene.Add(mesh); control.Attach(mesh); scene.Add(control); openTKcontrol.KeyDown += (o, args) => { switch (args.KeyValue) { case 81: // Q control.setSpace(control.space == "local" ? "world" : "local"); break; case 87: // W control.SetMode("translate"); break; case 69: // E control.SetMode("rotate"); break; case 82: // R control.SetMode("scale"); break; case 187: case 107: // +,=,num+ control.setSize(control.size + 0.1f); break; case 189: case 10: // -,_,num- control.setSize(Math.Max(control.size - 0.1f, 0.1f)); break; } }; }
/// <summary> /// /// </summary> /// <param name="control"></param> public override void Load(Control control) { base.Load(control); // camera = new PerspectiveCamera(50, control.Width / (float)control.Height, 1, 4000); // new OrthographicCamera(-control.Width/20, control.Width / 20, -control.Height / 20, control.Height / 20);// this.camera.Position.Z = 50; camera.LookAt(new Vector3(0, 0, 0)); controls = new CamControl(control, camera); controls.RotateSpeed = 5; controls.ZoomSpeed = 5; controls.PanSpeed = 2; controls.StaticMoving = true; controls.DynamicDampingFactor = 0.4f; scene = new Scene(); scene.Add(camera); var material = new LineBasicMaterial { VertexColors = ThreeCs.Three.VertexColors }; if (dataList != null) { foreach (var data in dataList) { int segments = data.Count; var geometry = new BufferGeometry(); var positions = new float[segments * 3]; var colors = new float[segments * 3]; for (int i = 0; i < segments; i++) { positions[i * 3 + 0] = data[i].X; positions[i * 3 + 1] = data[i].Y; positions[i * 3 + 2] = data[i].Z * 5; colors[i * 3 + 0] = 0.5f; colors[i * 3 + 1] = 0.5f; colors[i * 3 + 2] = 0.5f; } geometry.AddAttribute("position", new BufferAttribute <float>(positions, 3)); geometry.AddAttribute("color", new BufferAttribute <float>(colors, 3)); geometry.ComputeBoundingSphere(); mesh = new Line(geometry, material); scene.Add(mesh); } } renderer.gammaInput = true; renderer.gammaOutput = true; }