public override void Run(RenderControl renderer) { var ellipse = SketchBuilder.MakeEllipse(GP.Origin(), 10, 5, GP.DX(), GP.DZ()); renderer.ShowShape(ellipse, Vector3.Blue); ParametricCurve pc = new ParametricCurve(ellipse); var paramsList = pc.SplitByUniformLength(1, 0.01); uint itemCount = (uint)paramsList.Count; var points = new ParticleSceneNode(itemCount, Vector3.Green, 5.0f); var lines = new SegmentsSceneNode(itemCount, Vector3.Red, 2); Random random = new Random(); for (int ii = 0; ii < paramsList.Count; ++ii) { var value = pc.D1(paramsList[ii]); var pos = value.GetPoint(); var dir = value.GetVectors()[0]; var end = new GPnt(pos.XYZ().Added(dir.XYZ())); lines.SetPositions((uint)ii, Vector3.From(pos), Vector3.From(end)); lines.SetColors((uint)ii, Vector3.Red, Vector3.From(random.NextDouble(), random.NextDouble(), random.NextDouble())); points.SetPosition((uint)ii, Vector3.From(pos)); } renderer.ShowSceneNode(points); renderer.ShowSceneNode(lines); }
public override void Animation(RenderControl render, float time) { mTheta += 0.5f; mRobot.SetVariable(1, mTheta * 2); mRobot.SetVariable(2, mTheta * 3); mRobot.SetVariable(4, mTheta * 6); mRobot.SetVariable(6, mTheta * 2); mRobot.SetVariable(7, mTheta * 6); mRobot.SetVariable(8, mTheta * 6); if (mD > 30 || mD < 10) { mSign *= -1; } mD += mSign * 0.2f; mRobot.UpdateFrames(); Vector3 pt = new Vector3(0); pt = pt * mRobot.GetFinalTransform(); mMotionTrail.SetPosition(mCount, pt); ++mCount; render.RequestDraw(EnumUpdateFlags.Scene); }
public bool Play(RenderControl render, float time) { if (mCurrentIdx >= mPoints.Count) { mLineNode.SetVisible(false); return(false); } mTime += time; if (mTime < 100) //距离上次更新不到100ms,就返回 { return(true); } mTime = 0; Vector3 target = mPoints[mCurrentIdx]; mLineNode.SetTransform(MakeTransform(mStart, target)); mLineNode.RequstUpdate(); mMotionTrail.SetPosition((uint)mCurrentIdx, target); mMotionTrail.RequstUpdate(); render.RequestDraw(EnumUpdateFlags.Scene); ++mCurrentIdx; return(true); }
public override void Animation(RenderControl render, float time) { if (mLength > 50) { return; } mTheta += 0.02f; var rotation = Matrix4.makeRotationAxis(new Vector3(1, 0, 0), mTheta); mLength += 0.1f; var trf = Matrix4.makeTranslation(-mLength, 0, 0) * rotation; mWorkpiece.SetTransform(trf); mWorkpiece.RequstUpdate(); Vector3 tailPostion = new Vector3(0, 0, 5); tailPostion.applyMatrix4(trf); mMotionTrail.SetPosition(mCount++, tailPostion); mMotionTrail.RequstUpdate(); render.RequestDraw(EnumUpdateFlags.Scene); }
public override void Animation(RenderControl render, float time) { if (mAnimation.Play(time)) { var trf = mWorkpiece.GetTransform(); Vector3 tailPostion = new Vector3(0, 0, 5); tailPostion.applyMatrix4(trf); mMotionTrail.SetPosition(mCount++, tailPostion); mMotionTrail.RequstUpdate(); render.RequestDraw(EnumUpdateFlags.Scene); } }
public override void Animation(RenderControl render, float time) { if (mRobotAnimation.Play(time)) { Vector3 pt = new Vector3(0); pt = pt * mRobot.GetFinalTransform(); mMotionTrail.SetPosition(mCount, pt); mMotionTrail.UpdateBoundingBox(); ++mCount; //Blink blink effect BrepSceneNode.Cast(mRobot.GetLink((mCount - 1) % 7).GetVisualNode()).GetShape().SetFaceMaterial(mRobotMaterial); BrepSceneNode.Cast(mRobot.GetLink(mCount % 7).GetVisualNode()).GetShape().SetFaceMaterial(mMaterial); render.RequestDraw(EnumUpdateFlags.Scene); } }
public override void Run(RenderControl render) { var fileName = GetResourcePath("models/YONGSHENGDA_9998.igs"); var shape = ShapeIO.Open(fileName); if (shape == null) { return; } var face = shape.FindChild(EnumTopoShapeType.Topo_FACE, 12); var edges = face.GetChildren(EnumTopoShapeType.Topo_EDGE); var wire = SketchBuilder.MakeWire(edges); if (wire == null) { return; } var curve = new ParametricCurve(); curve.Initialize(wire); var ulist = curve.SplitByUniformLength(1, 0.2); var node = new ParticleSceneNode((uint)ulist.Count, ColorTable.Red, 2); for (int ii = 0; ii < ulist.Count; ++ii) { node.SetPosition((uint)ii, Vector3.From(curve.Value(ulist[ii]))); } node.UpdateBoundingBox(); render.ShowShape(wire, ColorTable.GoldEnrod); render.ShowSceneNode(node); }
public override void Animation(RenderControl render, float time) { if (this.State == 0) { return; } mTheta += 0.5f; mRobot.SetVariable(1, mTheta * 1); mRobot.SetVariable(2, mTheta * 2); mRobot.SetVariable(4, mTheta * 3); mRobot.SetVariable(6, mTheta * 4); mRobot.SetVariable(7, mTheta * 5); mRobot.SetVariable(8, mTheta * 6); if (mD > 30 || mD < 10) { mSign *= -1; } mD += mSign * 0.2f; mRobot.UpdateFrames(); Vector3 pt = new Vector3(0); pt = pt * mRobot.GetFinalTransform(); mMotionTrail.SetPosition(mCount, pt); mMotionTrail.UpdateBoundingBox(); ++mCount; if (this.State == 1) { var position = pt - Vector3.UNIT_Y * 500; render.GetCamera().LookAt(position, pt, Vector3.UNIT_Z); } else if (this.State == 2) { var position = pt + Vector3.UNIT_Z * 500; render.GetCamera().LookAt(position, pt, Vector3.UNIT_Y); } else if (this.State == 3) { var camera = render.GetCamera(); var postion = new Vector3(0, -500, 0); var trf = Matrix4.makeRotationAxis(Vector3.UNIT_Z, mTheta * 3.1415926f / 180); postion.applyMatrix4(trf); camera.LookAt(postion, Vector3.Zero, Vector3.UNIT_Z); } if (this.State == 1 && mTheta > 360) { this.State = 2; } else if (this.State == 2 && mTheta > 720) { render.SetStandardView(EnumStandardView.Front); this.State = 3; } render.RequestDraw(EnumUpdateFlags.Scene); }