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) { 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 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) { int selector = (int)time % 2; mNode.GetShape().SetFaceMaterial(selector == 1 ? mMaterial1 : mMaterial2); render.RequestDraw(); }
public override void Animation(RenderControl render, float time) { if (mMaterial == null) { return; } mMaterial.SetUniform("time", Uniform.Create(time)); render.RequestDraw(); }
public override void Animation(RenderControl render, float time) { int selector = (int)time % 2; var faces = mNode.GetShape().GetFaces(); foreach (var face in faces) { face.SetMaterial(selector == 1? mMaterial1 : mMaterial2); } render.RequestDraw(); }
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 (step == 0) { if (mCome.Play(time)) { render.RequestDraw(EnumUpdateFlags.Scene); } else { step = 1; if (mWorking == null) { mWorking = new RayAnimation(mWorkingPosition); mWorking.Create(render); } } } else if (step == 1) { if (!mWorking.Play(render, time)) { step = 2; } } else if (step == 2) { if (mGo.Play(time)) { render.RequestDraw(EnumUpdateFlags.Scene); } else { step = 3; } } }
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 Animation(RenderControl render, float time) { var position = mGeometry.GetAttribute(0); position.SetDataUsage(EnumBufferDataUsage.DYNAMIC_DRAW); var mPosition = new Float32Array(position.GetData()); var count = mPosition.GetItemCount() / 3; for (uint i = 0; i < count; i++) { var z = (float)(35 * Math.Sin(i / 5 + (time * 50 + i) / 7)); mPosition.SetValue(i * 3 + 2, z); } position.RequestUpdate(); mGeometry.RequestUpdate(); render.RequestDraw(); }
public override void OnSelectionChanged(RenderControl render, PickedResult result) { var item = result.GetItem(); if (item.GetNode() == null) { return; } var ssn = BrepSceneNode.Cast(item.GetNode()); if (ssn == null) { return; } if (item.GetShapeType() == EnumShapeFilter.Face) { var face = ssn.GetShape().GetShape().FindChild(EnumTopoShapeType.Topo_FACE, (int)item.GetShapeIndex()); if (face != null) { var surface = new ParametricSurface(face); var pt = item.GetPoint().GetPosition(); var param = surface.ComputeClosestPoint(pt.ToPnt(), GP.Resolution(), GP.Resolution()); var values = surface.D1(param.X(), param.Y()); var postion = Vector3.From(values.GetPoint()); var vecs = values.GetVectors(); var dir = Vector3.From(vecs[0].Crossed(vecs[1])); dir.normalize(); mArrow.SetLocation(postion, dir); mArrow.RequstUpdate(); mArrow.Update(); render.GetContext().GetSelection().Clear(); render.RequestDraw(EnumUpdateFlags.Scene); } } }
public override void Animation(RenderControl render, float time) { if (nCurrentHeight > 50) { //CylinderNode.SetMaterial(GrayMaterial); //TubeNode.SetMaterial(RedMaterial); nDirection = -1; } else if (nCurrentHeight < 0) { nDirection = 1; //CylinderNode.SetMaterial(RedMaterial); //TubeNode.SetMaterial(GrayMaterial); } { var matrixR = Matrix4.makeRotationAxis(new Vector3(0, 0, 1), time); var matrixT = Matrix4.makeTranslation(-50, 0, 0); ConeNode1.SetTransform(matrixR * matrixT); ConeNode1.RequstUpdate(); nScale *= 1.01f; if (nScale > 5) { nScale = 1; } ConeNode2.SetTransform(matrixT * matrixR * Matrix4.makeScale(1, nScale, nScale)); ConeNode2.RequstUpdate(); } nCurrentHeight += nStep * nDirection; CylinderNode.SetTransform(Matrix4.makeTranslation(0, 0, nCurrentHeight)); CylinderNode.RequstUpdate(); render.GetContext().UpdateWorld(); render.RequestDraw(); }
private void depthTestToolStripMenuItem_Click(object sender, EventArgs e) { bEnableDepathTest = !bEnableDepathTest; mRenderView.GetContext().GetSelection().SetDepthTest(bEnableDepathTest); mRenderView.RequestDraw(EnumUpdateFlags.Camera); }
public void UpdateView() { mRootSceneNode.RequstUpdate(); mRenderCtrl.RequestDraw(EnumUpdateFlags.Scene); }
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); }