/// <summary> /// /// </summary> /// <param name="size"></param> /// <param name="step"></param> public GridHelper(float size, float step) { var colorConvertor = new ColorConverter(); var geometry = new Geometry(); var material = new LineBasicMaterial { VertexColors = Three.VertexColors }; this.Color1 = (Color)colorConvertor.ConvertFromString("#444444"); this.Color2 = (Color)colorConvertor.ConvertFromString("#888888"); this.Color1 = Color.DeepSkyBlue; // TODO deze kleur komt door this.Color2 = Color.GreenYellow; // TODO deze kleur komt NIET door for (var i = -size; i <= size; i += step) { geometry.Vertices.AddRange(new [] { new Vector3(-size, 0, i), new Vector3(size, 0, i), new Vector3(i, 0, -size), new Vector3(i, 0, size) } ); var color = (i == 0) ? this.Color1 : this.Color2; geometry.Colors.AddRange(new [] { color, color, color, color }); } this.Geometry = geometry; this.Material = material; this.Mode = this.LinePieces; }
private CameraHelper(Camera camera, Geometry geometry, LineBasicMaterial material) : base(geometry, material, LineType.Pieces) { this.camera = camera; this.matrixWorld = camera.matrixWorld; this.matrixAutoUpdate = false; }
/// <summary> /// /// </summary> /// <param name="control"></param> public override void Load(Control control) { base.Load(control); // camera = new PerspectiveCamera(27, control.Width / (float)control.Height, 1, 4000); this.camera.Position.Z = 2750; scene = new Scene(); const int segments = 10000; var geometry = new BufferGeometry(); var material = new LineBasicMaterial { VertexColors = 2 }; var positions = new float[segments * 3]; var colors = new float[segments * 3]; const float r = 800.0f; for (var i = 0; i < segments; i++) { var x = Mat.Random() * r - r / 2; var y = Mat.Random() * r - r / 2; var z = Mat.Random() * r - r / 2; // positions positions[i * 3 + 0] = x; positions[i * 3 + 1] = y; positions[i * 3 + 2] = z; // colors colors[i * 3 + 0] = (x / r) + 0.5f; colors[i * 3 + 1] = (y / r) + 0.5f; colors[i * 3 + 2] = (z / r) + 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; }
public static BoxHelper Create(Renderer renderer, Object3D o) { var mat = new LineBasicMaterial(renderer) { Diffuse = new Color(0xffff00) }; var geo = new Geometry(); var boxHelper = new BoxHelper(geo, mat); boxHelper.o = o; boxHelper.Update(); return(boxHelper); }
public static CameraHelper Create(Renderer renderer, Camera camera) { var pointMap = new Dictionary <string, List <int> >(); var geometry = new Geometry(); var material = new LineBasicMaterial(renderer) { Diffuse = Color.White, VertexColors = VertexColorMode.Vertex }; var cameraHelper = new CameraHelper(camera, geometry, material); //Colors var hexFrustum = new Color(0xffaa00); var hexCone = new Color(0xff0000); var hexUp = new Color(0x00aaff); var hexTarget = new Color(0xffffff); var hexCross = new Color(0x333333); // near cameraHelper.AddLine("n1", "n2", hexFrustum); cameraHelper.AddLine("n2", "n4", hexFrustum); cameraHelper.AddLine("n4", "n3", hexFrustum); cameraHelper.AddLine("n3", "n1", hexFrustum); // far cameraHelper.AddLine("f1", "f2", hexFrustum); cameraHelper.AddLine("f2", "f4", hexFrustum); cameraHelper.AddLine("f4", "f3", hexFrustum); cameraHelper.AddLine("f3", "f1", hexFrustum); // sides cameraHelper.AddLine("n1", "f1", hexFrustum); cameraHelper.AddLine("n2", "f2", hexFrustum); cameraHelper.AddLine("n3", "f3", hexFrustum); cameraHelper.AddLine("n4", "f4", hexFrustum); // cone cameraHelper.AddLine("p", "n1", hexCone); cameraHelper.AddLine("p", "n2", hexCone); cameraHelper.AddLine("p", "n3", hexCone); cameraHelper.AddLine("p", "n4", hexCone); // up cameraHelper.AddLine("u1", "u2", hexUp); cameraHelper.AddLine("u2", "u3", hexUp); cameraHelper.AddLine("u3", "u1", hexUp); // target cameraHelper.AddLine("c", "t", hexTarget); cameraHelper.AddLine("p", "c", hexCross); // cross cameraHelper.AddLine("cn1", "cn2", hexCross); cameraHelper.AddLine("cn3", "cn4", hexCross); cameraHelper.AddLine("cf1", "cf2", hexCross); cameraHelper.AddLine("cf3", "cf4", hexCross); cameraHelper.Update(); return(cameraHelper); }
private AxisHelper(Geometry geometry, LineBasicMaterial material) : base(geometry, material, LineType.Pieces) { }
/// <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; }
/// <summary> /// /// </summary> /// <param name="control"></param> public override void Load(Control control) { base.Load(control); camera = new PerspectiveCamera(27, control.Width / (float)control.Height, 1, 3500); camera.Position.Z = 2750; scene = new Scene(); scene.Fog = new Fog((Color)colorConvertor.ConvertFromString("#050505"), 2000, 3500); scene.Add(new AmbientLight((Color)colorConvertor.ConvertFromString("#444444"))); var light1 = new DirectionalLight(Color.White, 0.5f); light1.Position = new Vector3(1, 1, 1); scene.Add(light1); var light2 = new DirectionalLight(Color.White, 1.5f); light2.Position = new Vector3(0, -1, 0); scene.Add(light2); // const int Triangles = 5000; var geometry = new BufferGeometry(); var positions = new float[Triangles * 3 * 3]; var normals = new float[Triangles * 3 * 3]; var colors = new float[Triangles * 3 * 3]; var color = new Color(); const int n = 800; const int n2 = n / 2; // triangles spread in the cube const int d = 120; const int d2 = d / 2; // individual triangle size for (var i = 0; i < positions.Length; i += 9) { // positions var r = 0.5f; var x = getRandom() * n - n2; var y = getRandom() * n - n2; var z = getRandom() * n - n2; var ax = x + getRandom() * d - d2; var ay = y + getRandom() * d - d2; var az = z + getRandom() * d - d2; var bx = x + getRandom() * d - d2; var by = y + getRandom() * d - d2; var bz = z + getRandom() * d - d2; var cx = x + getRandom() * d - d2; var cy = y + getRandom() * d - d2; var cz = z + getRandom() * d - d2; positions[i] = ax; positions[i + 1] = ay; positions[i + 2] = az; positions[i + 3] = bx; positions[i + 4] = by; positions[i + 5] = bz; positions[i + 6] = cx; positions[i + 7] = cy; positions[i + 8] = cz; // flat face normals var pA = new Vector3(ax, ay, az); var pB = new Vector3(bx, by, bz); var pC = new Vector3(cx, cy, cz); var cb = pC - pB; var ab = pA - pB; cb.Cross(ab).Normalize(); var nx = cb.X; var ny = cb.Y; var nz = cb.Z; normals[i] = nx; normals[i + 1] = ny; normals[i + 2] = nz; normals[i + 3] = nx; normals[i + 4] = ny; normals[i + 5] = nz; normals[i + 6] = nx; normals[i + 7] = ny; normals[i + 8] = nz; // colors var vx = (x / n) + 0.5; var vy = (y / n) + 0.5; var vz = (z / n) + 0.5; color = Color.FromArgb(255, (int)(vx * 255), (int)(vy * 255), (int)(vz * 255)); colors[i] = color.R / 255.0f; colors[i + 1] = color.G / 255.0f; colors[i + 2] = color.B / 255.0f; colors[i + 3] = color.R / 255.0f; colors[i + 4] = color.G / 255.0f; colors[i + 5] = color.B / 255.0f; colors[i + 6] = color.R / 255.0f; colors[i + 7] = color.G / 255.0f; colors[i + 8] = color.B / 255.0f; } geometry.AddAttribute("position", new BufferAttribute <float>(positions, 3)); geometry.AddAttribute("normal", new BufferAttribute <float>(normals, 3)); geometry.AddAttribute("color", new BufferAttribute <float>(colors, 3)); geometry.ComputeBoundingSphere(); var material = new MeshPhongMaterial() { Color = (Color)colorConvertor.ConvertFromString("#aaaaaa"), Ambient = (Color)colorConvertor.ConvertFromString("#aaaaaa"), Specular = Color.White, Shininess = 250, Side = Three.DoubleSide, VertexColors = Three.VertexColors, }; mesh = new Mesh(geometry, material); scene.Add(mesh); // projector = new Projector(); raycaster = new Raycaster(); mouse = new Vector2(); var geometry2 = new BufferGeometry(); geometry2.AddAttribute("position", new BufferAttribute <float>(new float[4 * 3], 3)); var material2 = new LineBasicMaterial() { Color = Color.White, Linewidth = 2, Transparent = true }; line = new Line(geometry2, material2); scene.Add(line); renderer.SetClearColor(scene.Fog.Color); }
public Line(Geometry geometry, LineBasicMaterial material, LineType type = LineType.Strip) { this.geometry = geometry; Material = material; this.Type = type; }