private SceneNode BuildPalmAt(float atZ, String name) { float useXPos = kArmLength + 1f; // add the palm circle radius to it SceneNode palm = new SceneNode(name); palm.Xform.Pivot = new Vector3(kArmLength, 0, atZ); MeshShape c1 = new MeshShape("sphere"); c1.Xform.Scale = new Vector3(kSphereScale); c1.Xform.Translation = new Vector3(useXPos, 0, atZ); c1.Color = Color.Blue; palm.AddShape(c1); MeshShape s1 = new MeshShape("teapot"); s1.Xform.Scale = new Vector3(0.5f); s1.Xform.Translation = new Vector3(useXPos, 1.1f, atZ); s1.Color = Color.DeepPink; palm.AddShape(s1); s1 = new MeshShape("teapot"); s1.Xform.Scale = new Vector3(0.4f); s1.Xform.Translation = new Vector3(useXPos + 1.1f, 0f, atZ); s1.Color = Color.DarkSeaGreen; palm.AddShape(s1); SceneNode finger = BuildFingerAt(kArmLength + 1, atZ + 1.0f, "f1"); palm.AddChild(finger); finger = BuildFingerAt(kArmLength + 1, atZ - 1.0f, "f2"); palm.AddChild(finger); return(palm); }
private SceneNode BuildFingerAt(float atX, float atZ, String name) { SceneNode aFinger = new SceneNode(name); // const float fingerLength = 3f; float pivotXOffset = atX; aFinger.Xform.Pivot = new Vector3(pivotXOffset, 0, atZ); MeshShape finger = new MeshShape("cylinder"); finger.Xform.RotateInYByRadian(MathHelper.PiOver2); finger.Xform.Scale = new Vector3(0.25f * kCylinderRadiusScale, 0.25f * kCylinderRadiusScale, fingerLength * kCylinderRadiusScale); finger.Xform.Translation = new Vector3(pivotXOffset + (fingerLength / 2f), 0, atZ); finger.Color = Color.Purple; aFinger.AddShape(finger); MeshShape c1 = new MeshShape("teapot"); c1.Xform.Scale = new Vector3(0.6f); c1.Xform.Translation = new Vector3(pivotXOffset + fingerLength, 0f, atZ); c1.Color = Color.DarkSlateGray; aFinger.AddShape(c1); return(aFinger); }
/// <summary> /// Constructor /// </summary> public MyModel() { mTheStack = new MatrixStack(); mMajorAxis = new AxisShape(); mMajorAxis.Xform.Scale = new Vector3(10, 10, 10); mRoot = new SceneNode("Root"); SceneNode arm = BuildArm("TopArm"); mRoot.AddChild(arm); arm.Xform.RotateInYByRadian(MathHelper.PiOver2); arm.Xform.Translation = new Vector3(0, 15, 20); InitCameraParameters(arm); arm = BuildArm("BottomArm"); mRoot.AddChild(arm); arm.Xform.Translation = new Vector3(0, 2, 0); SceneNode others = new SceneNode("Other Stuff"); mRoot.AddChild(others); MeshShape m = new MeshShape("cone"); m.Xform.Translation = new Vector3(-10, 3, 0); others.AddShape(m); SquareOnXZ s = new SquareOnXZ(); s.Xform.Scale = new Vector3(20, 20, 20); s.Xform.Translation = new Vector3(0, -2, 0); s.Color = Color.DarkGray; others.AddShape(s); m = new MeshShape("shusui"); m.Xform.Translation = new Vector3(8, 2, -10); m.Xform.Scale = new Vector3(4f); others.AddShape(m); m = new MeshShape("bigship1"); m.Xform.Translation = new Vector3(-5, 2, -5); m.Xform.Scale = new Vector3(0.5f, 0.5f, 0.5f); others.AddShape(m); }
private SceneNode BuildArm(String name) { SceneNode node = new SceneNode(name); MeshShape m = new MeshShape("cylinder"); m.Color = Color.Blue; node.AddShape(m); // arm and the decorations MeshShape arm = new MeshShape("cylinder"); arm.Xform.RotateInYByRadian(MathHelper.PiOver2); arm.Xform.Scale = new Vector3(kArmWidth * kCylinderRadiusScale, 0.7f, kArmLength * kCylinderLengthScale); arm.Xform.Translation = new Vector3(kArmLength / 2f, 0, 0); node.AddShape(arm); MeshShape c1 = new MeshShape("sphere"); c1.Xform.Scale = new Vector3(1.0f * kSphereScale); c1.Xform.Translation = new Vector3(kArmLength / 4f, 0f, 0); c1.Color = Color.DarkSlateBlue; node.AddShape(c1); c1 = new MeshShape("sphere"); c1.Xform.Scale = new Vector3(1.0f * kSphereScale); c1.Xform.Translation = new Vector3(kArmLength / 2f, 0f, 0); c1.Color = Color.Black; node.AddShape(c1); c1 = new MeshShape("sphere"); c1.Xform.Scale = new Vector3(1.0f * kSphereScale); c1.Xform.Translation = new Vector3(kArmLength * 0.75f, 0f, 0); c1.Color = Color.DarkSlateBlue; node.AddShape(c1); SceneNode palm = BuildPalmAt(kArmWidth / 2f, "Top"); node.AddChild(palm); palm = BuildPalmAt(0, "Mid"); node.AddChild(palm); palm = BuildPalmAt(-kArmWidth / 2f, "Bottom"); node.AddChild(palm); return(node); }