private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(5, 3, 4), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var cameraManipulater = new SatelliteManipulater(); cameraManipulater.Bind(camera, this.glCanvas1); this.cameraManipulater = cameraManipulater; this.scene = new Scene(camera, this.glCanvas1); this.scene.ClearColor = Color.SkyBlue; this.glCanvas1.Resize += this.scene.Resize; } { PointLightRenderer renderer = PointLightRenderer.Create(); SceneObject obj = renderer.WrapToSceneObject(true, new ModelScript(this.glCanvas1, this.scene.FirstCamera)); this.scene.RootObject.Children.Add(obj); this.renderer = renderer; var frmPropertyGrid = new FormProperyGrid(renderer); frmPropertyGrid.Show(); } { SimplexNoiseRenderer renderer = SimplexNoiseRenderer.Create(); renderer.Scale = new vec3(0.2f); renderer.WorldPosition = new vec3(3, 3, 3); SceneObject obj = renderer.WrapToSceneObject(true, new LightScript(this.glCanvas1, this.scene.FirstCamera, renderer)); this.scene.RootObject.Children.Add(obj); this.sunRenderer = renderer; } { SceneObject obj = this.renderer.BindingSceneObject; obj.Scripts.Add(new UpdatePointLightPosition(this.sunRenderer)); } { var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(3, 3, 3, 3), new Size(128, 128)); this.scene.RootUI.Children.Add(uiAxis); } { this.glCanvas1.MouseDown += glCanvas1_MouseDown; this.glCanvas1.MouseMove += glCanvas1_MouseMove; this.glCanvas1.MouseUp += glCanvas1_MouseUp; } { var builder = new StringBuilder(); builder.AppendLine("1: Scenes' property grid."); builder.AppendLine("2: Canvas' property grid."); MessageBox.Show(builder.ToString()); } { this.scene.Start(); } }
public static RendererBase Create(Type rendererType) { RendererBase renderer = null; if (rendererType == typeof(AnalyzedPointSpriteRenderer)) { int particleCount = 10000; renderer = AnalyzedPointSpriteRenderer.Create(particleCount); } else if (rendererType == typeof(BufferBlockRenderer)) { renderer = BufferBlockRenderer.Create(); } else if (rendererType == typeof(ConditionalRenderer)) { renderer = ConditionalRenderer.Create(); } else if (rendererType == typeof(EmitNormalLineRenderer)) { var model = new Teapot(); renderer = EmitNormalLineRenderer.Create(model, Teapot.strPosition, Teapot.strNormal, model.Lengths); } else if (rendererType == typeof(ImageProcessingRenderer)) { renderer = new ImageProcessingRenderer(); } else if (rendererType == typeof(KleinBottleRenderer)) { renderer = KleinBottleRenderer.Create(new KleinBottleModel()); } else if (rendererType == typeof(OrderDependentTransparencyRenderer)) { var model = new Teapot(); renderer = OrderDependentTransparencyRenderer.Create(model, model.Lengths, Teapot.strPosition, Teapot.strColor); } else if (rendererType == typeof(OrderIndependentTransparencyRenderer)) { var model = new Teapot(); renderer = new OrderIndependentTransparencyRenderer(model, model.Lengths, Teapot.strPosition, Teapot.strColor); } else if (rendererType == typeof(ParticleSimulatorRenderer)) { renderer = new ParticleSimulatorRenderer(); } else if (rendererType == typeof(PointCloudRenderer)) { var list = new List <vec3>(); using (var reader = new StreamReader(@"Resources\data\19PointCloud.txt")) { while (!reader.EndOfStream) { string line = reader.ReadLine(); string[] parts = line.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); float x = float.Parse(parts[0]); float y = float.Parse(parts[1]); float z = float.Parse(parts[2]); list.Add(new vec3(x, y, z)); } } renderer = PointCloudRenderer.Create(new PointCloudModel(list)); } else if (rendererType == typeof(PointSpriteRenderer)) { const int particleCount = 10000; renderer = PointSpriteRenderer.Create(particleCount); } else if (rendererType == typeof(RaycastVolumeRenderer)) { renderer = new RaycastVolumeRenderer(); } else if (rendererType == typeof(RayTracingRenderer)) { renderer = RayTracingRenderer.Create(); } else if (rendererType == typeof(ShaderToyRenderer)) { renderer = ShaderToyRenderer.Create(); } else if (rendererType == typeof(SimpleComputeRenderer)) { renderer = SimpleComputeRenderer.Create(); } else if (rendererType == typeof(SimplexNoiseRenderer)) { renderer = SimplexNoiseRenderer.Create(); } else if (rendererType == typeof(UniformArrayRenderer)) { renderer = UniformArrayRenderer.Create(); } else if (rendererType == typeof(UniformBlockRenderer)) { renderer = UniformBlockRenderer.Create(); } else if (rendererType == typeof(UniformStructRenderer)) { renderer = UniformStructRenderer.Create(); } else if (rendererType == typeof(WaterRenderer)) { renderer = WaterRenderer.Create(waterPlaneLength: 4); } else if (rendererType == typeof(ZeroAttributeRenderer)) { renderer = ZeroAttributeRenderer.Create(); } return(renderer); }
private List <PickableRenderer> GetPickableRenderers() { List <PickableRenderer> list = new List <PickableRenderer>(); { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Tetrahedron()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Teapot()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Sphere()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Chain()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new BigDipper()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Axis(partCount: 6, radius: 1.0f)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Cube(new vec3(5, 4, 3))); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 0.0f), new vec3(-6.0f, 4.0f, 0.0f), new vec3(6.0f, -4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Curve); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { // note: the points are not centered at (0, 0, 0). Thus the renderer will not be placed at (0, 0, 0). var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 4.0f), new vec3(-2.0f, 4.0f, 4.0f), new vec3(4.0f, 0.0f, 4.0f), new vec3(-4.0f, 0.0f, 0.0f), new vec3(-2.0f, 4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), new vec3(-4.0f, 0.0f, -4.0f), new vec3(-2.0f, 4.0f, -4.0f), new vec3(4.0f, 0.0f, -4.0f) }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Surface); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimplexNoiseRenderer pickableRenderer = SimplexNoiseRenderer.Create(); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { KleinBottleRenderer pickableRenderer = KleinBottleRenderer.Create(new KleinBottleModel()); pickableRenderer.Scale = new vec3(0.1f, 0.1f, 0.1f); pickableRenderer.Initialize(); list.Add(pickableRenderer); } return(list); }