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 INode CreateBar(Vector3 orientation, Color color) { ScaleNode bar1Scale = new ScaleNode(orientation); TriangleMesh bar1Mesh = new TriangleMesh(); TriangleMeshFactory.CreateCube(bar1Mesh, 1.0f); TriangleMeshNode bar1Node = new TriangleMeshNode(bar1Mesh); bar1Node.SetColor(color); bar1Scale.AddChild(bar1Node); return(bar1Scale); }
public INode CreatePlane() { TriangleMesh mesh = new TriangleMesh(); TriangleMeshFactory.CreateCube(mesh, 1.0f); TriangleMeshNode node = new TriangleMeshNode(mesh); node.SetColor(Color.DarkGreen); ScaleNode scaleNode = new ScaleNode(new Vector3(3, 0.02f, 3)); scaleNode.AddChild(node); return(scaleNode); }
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); }