private void NewForm3D_Load(object sender, EventArgs e) { var box = GeometryBuilder.CreateBox(100, 200, 300); var material = MeshPhongMaterial.Create("simple"); material.SetColor(ColorTable.Red); var node = new PrimitiveSceneNode(box, material); mRenderView.ShowSceneNode(node); mRenderView.SetStandardView(EnumStandardView.DefaultView); mRenderView.ZoomAll(); // 转发给事件处理 mRenderView.SetAfterRenderingCallback(() => { if (UpdateTagEvent != null) { UpdateTagEvent(); } }); // 创建两个自定义标注 var mTagCtl = new MyTagControl(mRenderView, new Vector3(200, 300, 400), Vector3.Zero); UpdateTagEvent += mTagCtl.UpdateLayout; var mTagCtl2 = new MyTagControl(mRenderView, new Vector3(-100, -200, 100), Vector3.Zero); UpdateTagEvent += mTagCtl2.UpdateLayout; }
public override void Run(RenderControl render) { // add a plane var mMaterial1 = MeshPhongMaterial.Create("phong.texture"); mMaterial1.SetFaceSide(EnumFaceSide.DoubleSide); var texture = ImageTexture2D.Create(GetResourcePath("textures/bricks2.jpg")); mMaterial1.SetColorMap(texture); var plane = GeometryBuilder.CreatePlane(500, 500); var planeNode = new PrimitiveSceneNode(plane, mMaterial1); planeNode.SetTransform(Matrix4.makeTranslation(new Vector3(0, 0, -2.5f))); planeNode.SetPickable(false); render.ShowSceneNode(planeNode); mDevice = new PrimitiveSceneNode(GeometryBuilder.CreateSphere(5), null); render.ShowSceneNode(mDevice); mCome = new RigidAnimation(); mCome.Add(new MoveAnimationClip(mDevice, mWorkingPosition, 0, 5)); mGo = new RigidAnimation(); mGo.Add(new MoveAnimationClip(mDevice, new Vector3(-200, -200, 0), 0, 5)); }
public override void Run(RenderControl render) { RedMaterial = MeshPhongMaterial.Create("phong.color"); RedMaterial.SetColor(Vector3.Red); GrayMaterial = MeshPhongMaterial.Create("phong.color"); GrayMaterial.SetColor(Vector3.LightGray); GrayMaterial.SetTransparent(true); GrayMaterial.SetOpacity(0.5f); var tube = ShapeBuilder.MakeTube(new GPnt(0, 0, 5), GP.DZ(), 10, 2, 50); TubeNode = BrepSceneNode.Create(tube, RedMaterial, null); var cylinder = ShapeBuilder.MakeCylinder(GP.XOY(), 10, 60, 0); CylinderNode = BrepSceneNode.Create(cylinder, GrayMaterial, null); render.ShowSceneNode(TubeNode); render.ShowSceneNode(CylinderNode); var cone = ShapeBuilder.MakeCone(GP.YOZ(), 5, 0, 10, 0); var bs = new BufferShape(cone, RedMaterial, null, 0.1); bs.Build(); ConeNode1 = new BrepSceneNode(bs); ConeNode2 = new BrepSceneNode(bs); render.ShowSceneNode(ConeNode1); render.ShowSceneNode(ConeNode2); }
public override void Run(RenderControl render) { // Create material var mMaterial1 = MeshPhongMaterial.Create("phong.texture"); mMaterial1.SetFaceSide(EnumFaceSide.DoubleSide); var texture = ImageTexture2D.Create(GetResourcePath("textures/bricks2.jpg")); mMaterial1.SetColorMap(texture); var plane = GeometryBuilder.CreatePlane(500, 500); var planeNode = new PrimitiveSceneNode(plane, mMaterial1); planeNode.SetTransform(Matrix4.makeTranslation(new Vector3(0, 0, -100))); render.ShowSceneNode(planeNode); var box = GeometryBuilder.CreateBox(100, 100, 200); var boxNode = new PrimitiveSceneNode(box, mMaterial1); render.ShowSceneNode(boxNode); var sphere = GeometryBuilder.CreateSphere(50, 32, 32); var sphereNode = new PrimitiveSceneNode(sphere, mMaterial1); sphereNode.SetTransform(Matrix4.makeTranslation(new Vector3(0, 0, 150))); render.ShowSceneNode(sphereNode); }
public override void Run(RenderControl render) { if (!ReadData()) { return; } var material = MeshPhongMaterial.Create("cae-material"); material.GetTemplate().SetVertexColors(true); material.SetFaceSide(EnumFaceSide.DoubleSide); var position = BufferAttribute.Create(EnumAttributeSemantic.Position, EnumAttributeComponents.Three, mPositions); var color = BufferAttribute.Create(EnumAttributeSemantic.Color, EnumAttributeComponents.Three, mColors); BufferGeometry geometry = new BufferGeometry(); geometry.AddAttribute(position); geometry.AddAttribute(color); NormalCalculator.ComputeVertexNormals(geometry); var node = new PrimitiveSceneNode(geometry, EnumPrimitiveType.TRIANGLES, material); node.SetPickable(false); PaletteWidget pw = new PaletteWidget(); pw.Update(mColorTable); render.ShowSceneNode(pw); render.ShowSceneNode(node); }
public override void Run(RenderControl renderer) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "IGES (*.igs;*.iges)|*.igs;*.iges|STEP (*.stp;*.step)|*.stp;*.step|Brep (*.brep)|*.brep"; if (dialog.ShowDialog() != DialogResult.OK) { return; } var shape = ShapeIO.Open(dialog.FileName); if (shape == null) { return; } var bs = new BufferShape(shape, null, null, 0); bs.Build(); // 1. Compute var holeExp = new HoleExplor(); if (!holeExp.Initialize(bs)) { return; } var dir = holeExp.ComputeDirection(); holeExp.Compute(dir); var defaultMaterial = MeshPhongMaterial.Create("face-x"); defaultMaterial.SetFaceSide(EnumFaceSide.DoubleSide); bs.SetFaceMaterial(defaultMaterial); // 2. Set hole faces with red color var material = BasicMaterial.Create("hole-face"); material.SetFaceSide(EnumFaceSide.DoubleSide); material.SetColor(new Vector3(0.5f, 0, 0)); var holeNumber = holeExp.GetHoleCount(); for (uint ii = 0; ii < holeNumber; ++ii) { var faceIDs = holeExp.GetHoleFaces(ii); foreach (var faceIdx in faceIDs) { bs.SetFaceMaterial(faceIdx, material); } } // 2. Show the faces var shapeNode = new BrepSceneNode(bs); renderer.ShowSceneNode(shapeNode); }
public override void Run(RenderControl render) { var material = MeshPhongMaterial.Create("phong.bspline"); material.SetUniform("diffuse", Uniform.Create(new Vector3(1, 0, 1))); var shape = CreateShape(); var node = BrepSceneNode.Create(shape, material, null); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { if (!ReadData()) { return; } var matplot = Matplot.Create("MyMatlab 2020"); var xRange = new PlotRange(mMinX, mMaxX - 1, 1); var yRange = new PlotRange(mMinY, mMaxY - 1, 1); matplot.AddSurface(xRange, yRange, (idxU, idxV, u, v) => { double x = u; double y = v; double z = mData[idxU + 1][idxV + 1]; return(new GPnt(x, y, z)); }); var node = matplot.Build(ColorMapKeyword.Create(EnumSystemColorMap.Cooltowarm)); node.SetPickable(false); var pw = new PaletteWidget(); pw.Update(matplot.GetColorTable()); render.ShowSceneNode(pw); render.ShowSceneNode(node); var material = MeshPhongMaterial.Create("font-x"); material.SetColor(Vector3.Red); var shape = FontManager.Instance().CreateMesh("Create a better world!"); shape.SetMaterial(material); var text = new TextSceneNode(shape, 24, true); //var text = new TextSceneNode("Wow", 24, new Vector3(1, 1, 0), Vector3.Red, false); var tag = TagNode2D.Create(text, new Vector3(15), new Vector3(0)); render.ShowSceneNode(tag); }
public override void Run(RenderControl render) { var arrowMaterial = MeshPhongMaterial.Create("arrow"); arrowMaterial.SetColor(ColorTable.Red); mArrow = ArrowWidget.Create(2, 10, arrowMaterial); mArrow.SetPickable(false); render.ShowSceneNode(mArrow); var shape = ShapeBuilder.MakeBox(GP.XOY(), 10, 20, 30); var mat = MeshStandardMaterial.Create("ss"); mat.SetColor(Vector3.LightGray); var node = BrepSceneNode.Create(shape, mat, null); render.ShowSceneNode(node); }
public override void Run(RenderControl render) { mMaterial1 = MeshPhongMaterial.Create("phong.texture"); mMaterial1.SetColor(new Vector3(1, 0, 1)); var texture = ImageTexture2D.Create(GetResourcePath("textures/bricks2.jpg")); texture.SetRepeat(new Vector2(2.0f, 2.0f)); texture.UpdateTransform(); mMaterial1.SetColorMap(texture); var shape = ShapeBuilder.MakeBox(GP.XOY(), 4, 4, 8); mNode = BrepSceneNode.Create(shape, mMaterial1, null); mMaterial2 = MeshPhongMaterial.Create("phong.texture"); var texture2 = ImageTexture2D.Create(GetResourcePath("textures/water.png")); mMaterial2.SetColorMap(texture2); render.ShowSceneNode(mNode); }