public INode CreateTree(Vector3 position) { TriangleMesh sphereMesh = new TriangleMesh(); TriangleMeshFactory.CreateSphere(sphereMesh, 1.0f, sphereResolution); TriangleMeshNode sphereNode = new TriangleMeshNode(sphereMesh); sphereNode.ShowNormals = false; sphereNode.SetColor(Color.DarkGreen); ScaleNode sphereScale = new ScaleNode(new Vector3(treeSize / 1.5f, treeSize / 1.5f, treeSize / 1.5f)); sphereScale.AddChild(sphereNode); TranslationNode sphereTranslation = new TranslationNode(new Vector3(0, 1.5f * treeSize, 0)); sphereTranslation.AddChild(sphereScale); TriangleMesh cubeMesh = new TriangleMesh(); TriangleMeshFactory.CreateCube(cubeMesh, 1.0f); TriangleMeshNode cubeNode = new TriangleMeshNode(cubeMesh); cubeNode.SetColor(Color.Brown); ScaleNode cubeScale = new ScaleNode(new Vector3(treeSize / 3.0f, treeSize, treeSize / 3.0f)); cubeScale.AddChild(cubeNode); TranslationNode cubeTranslation = new TranslationNode(new Vector3(0, treeSize / 2.0f, 0)); cubeTranslation.AddChild(cubeScale); TranslationNode treeNode = new TranslationNode(position); treeNode.AddChild(sphereTranslation); treeNode.AddChild(cubeTranslation); return(treeNode); }
private void CreateSimpleScene() { // Plane TriangleMesh planeMesh = new TriangleMesh(); TriangleMeshFactory.CreateSquare(planeMesh, 2); TriangleMeshNode planeMeshNode = new TriangleMeshNode(planeMesh); planeMeshNode.SetColor(Color.Green); GetRoot().AddChild(planeMeshNode); // Sphere TriangleMesh mesh = new TriangleMesh(); TriangleMeshFactory.CreateSphere(mesh, 0.25f, 10); TriangleMeshNode meshNode = new TriangleMeshNode(mesh); meshNode.SetColor(Color.Red); TranslationNode translationNode = new TranslationNode(new Vector3(0.5f, 0.5f, 0.5f)); translationNode.AddChild(meshNode); GetRoot().AddChild(translationNode); GetRoot().LightPosition = new Vector3(0.25f, 1, 0.25f); GetRoot().Animated = false; }
public Helicopter(Vector3 scale, Vector3 offset) { ScaleNode scaleNode = new ScaleNode(scale); scaleNode.AddChild(CreateCabin(new Vector3(0, 0, 0))); scaleNode.AddChild(CreateBase(new Vector3(0, -0.19f, 0))); scaleNode.AddChild(CreateBack(new Vector3(0, 0.1f, 0.35f))); scaleNode.AddChild(CreateRotor(new Vector3(0, 0.2f, 0))); scaleNode.AddChild(CreateBackRotor(new Vector3(-0.05f, 0.1f, 0.65f))); TranslationNode offsetNode = new TranslationNode(offset); offsetNode.AddChild(scaleNode); //TriangleMesh dummyCubeMesh = new TriangleMesh(); //TriangleMeshFactory.CreateCube(dummyCubeMesh, 1.0f); //TriangleMeshNode dummyCubeMeshNode = new TriangleMeshNode(dummyCubeMesh); //dummyCubeMeshNode.SetColor(Color.Aqua); //ScaleNode dummyCubeScale = new ScaleNode(new Vector3(0.2f, 0.2f, 0.2f)); //dummyCubeScale.AddChild(dummyCubeMeshNode); //offsetNode.AddChild(dummyCubeScale); AddChild(offsetNode); }
private INode CreateBase(Vector3 offset) { INode left = CreateBar(new Vector3(0.03f, 0.03f, 0.6f), Color.DarkGray); INode right = CreateBar(new Vector3(0.03f, 0.03f, 0.6f), Color.DarkGray); TranslationNode translationLeft = new TranslationNode(new Vector3(0.1f, 0, 0)); translationLeft.AddChild(left); TranslationNode translationRight = new TranslationNode(new Vector3(-0.1f, 0, 0)); translationRight.AddChild(right); TranslationNode offsetNode = new TranslationNode(offset); offsetNode.AddChild(translationLeft); offsetNode.AddChild(translationRight); return(offsetNode); }
private INode CreateBack(Vector3 offset) { INode backBar = CreateBar(new Vector3(0.1f, 0.1f, 0.7f), Color.Red); TranslationNode offsetNode = new TranslationNode(offset); offsetNode.AddChild(backBar); return(offsetNode); }
private INode CreateObject() { InnerNode objectNode = new InnerNode(); TriangleMesh mesh = new TriangleMesh(); double randomValue = random.NextDouble(); if (randomValue < 1 / 3.0) { TriangleMeshFactory.CreateSphere(mesh, 0.25f, 10); } else if (randomValue < 2 / 3.0) { TriangleMeshFactory.CreateCube(mesh, 0.25f); } else { ObjReader reader = new ObjReader(); reader.Read("meshes/cow.obj", mesh); } TriangleMeshNode meshNode = new TriangleMeshNode(mesh); meshNode.SetColor(CreateColor()); ScaleNode scaleNode = new ScaleNode(new Vector3(0.4f, 0.4f, 0.4f)); scaleNode.AddChild(meshNode); objectNode.AddChild(scaleNode); float posMin = -0.4f; Vector3 t = new Vector3((float)(random.NextDouble() * posMin * 2 - posMin), (float)(random.NextDouble() * posMin * 2 - posMin), (float)(random.NextDouble() * posMin * 2 - posMin)); TranslationNode translationNode = new TranslationNode(t); translationNode.AddChild(objectNode); Vector3 axis = new Vector3((float)(random.NextDouble()) + 0.2f, (float)(random.NextDouble()) + 0.2f, (float)(random.NextDouble()) + 0.2f).Normalized(); RotationNode rotationNode = new RotationNode(0, axis); rotationNode.Animated = true; rotationNode.AnimationSpeed = 0.01f; rotationNode.AddChild(translationNode); Console.WriteLine("Created object: " + t); return(rotationNode); }
private INode CreateRotor(Vector3 offset) { var bar1 = CreateBar(new Vector3(1, 0.03f, 0.03f), Color.DarkGray); var bar2 = CreateBar(new Vector3(0.03f, 0.03f, 1), Color.DarkGray); RotationNode rotorNode = new RotationNode(); rotorNode.Animated = true; rotorNode.AddChild(bar1); rotorNode.AddChild(bar2); TranslationNode offsetNode = new TranslationNode(offset); offsetNode.AddChild(rotorNode); return(offsetNode); }
private INode CreateCabin(Vector3 offset) { TriangleMesh mesh = new TriangleMesh(); TriangleMeshFactory.CreateSphere(mesh, 0.2f, 20); TriangleMeshNode node = new TriangleMeshNode(mesh); TriangleMesh windowMesh = new TriangleMesh(); TriangleMeshFactory.CreateSphere(windowMesh, 0.17f, 20); TriangleMeshNode windowNode = new TriangleMeshNode(windowMesh); windowNode.SetColor(Color.LightBlue); TranslationNode windowTranslation = new TranslationNode(new Vector3(0, 0.01f, -0.05f)); windowTranslation.AddChild(windowNode); TranslationNode cabin = new TranslationNode(offset); cabin.AddChild(node); cabin.AddChild(windowTranslation); return(cabin); }
public Core(Vector3 pos, float m, Vector3 vel, RootNode r) { mass = m; root = r; velocity = vel; position = pos; sphere = new SphereNode(0.05f, 10); tNode = new TranslationNode(position); root.AddChild(tNode); tNode.AddChild(sphere); point = new List <RenderVertex> { new RenderVertex(position, position.Normalized(), Color4.Aquamarine) }; }
private INode CreateBackRotor(Vector3 offset) { INode rotor = CreateRotor(new Vector3(0, 0, 0)); ScaleNode scaleNode = new ScaleNode(new Vector3(0.5f, 0.5f, 0.5f)); scaleNode.AddChild(rotor); RotationNode rotationNode = new RotationNode(90.0f, new Vector3(0, 0, 1)); rotationNode.Animated = false; rotationNode.AddChild(scaleNode); TranslationNode offsetNode = new TranslationNode(offset); offsetNode.AddChild(rotationNode); return(offsetNode); }
// Base constructor: Timer timeout between two TimerTick events and shader mode (PHONG, TEXTURE, NO_LIGHTING) public ShadowScene() : base(100, Shader.ShaderMode.PHONG, RenderMode.SHADOW_VOLUME) { //CreateCubeRoomScene(); //CreateTriangleMeshScene(); CreateHelicopterForestScene(); //CreateSimpleScene(); //Light TriangleMesh lightMesh = new TriangleMesh(); TriangleMeshFactory.CreateSphere(lightMesh, 0.02f, 10); TriangleMeshNode lightMeshNode = new TriangleMeshNode(lightMesh); lightMeshNode.SetColor(Color.Yellow); lightMeshNode.CastsShadow = false; lightNode.AddChild(lightMeshNode); lightNode.Translation = GetRoot().LightPosition; GetRoot().AddChild(lightNode); }
public override void SetupScenegraph() { GetRoot().LightPosition = new Vector3(1, 1, 1); GetRoot().Animated = true; // Sphere geometry TranslationNode sphereTranslation = new TranslationNode(new Vector3(1, -0.5f, 0)); INode sphereNode = new SphereNode(0.5f, 20); sphereTranslation.AddChild(sphereNode); GetRoot().AddChild(sphereTranslation); // Cube geometry TranslationNode cubeTranslation = new TranslationNode(new Vector3(-1, 0.5f, 0)); INode cubeNode = new CubeNode(0.5f); cubeTranslation.AddChild(cubeNode); GetRoot().AddChild(cubeTranslation); }