private void CreateCubeRoomScene() { baseLightPosition = new Vector3(0, 0, -0.4f); ObjReader reader = new ObjReader(); TriangleMesh roomMesh = new TriangleMesh(); reader.Read("meshes/inverse_cube.obj", roomMesh); TriangleMeshNode roomNode = new TriangleMeshNode(roomMesh); roomNode.SetColor(Color.Khaki); roomNode.ShowNormals = false; ScaleNode roomScale = new ScaleNode(new Vector3(1, 1, 1)); roomScale.AddChild(roomNode); GetRoot().AddChild(roomScale); int numberOfObjects = 5; for (int i = 0; i < numberOfObjects; i++) { INode objectNode = CreateObject(); GetRoot().AddChild(objectNode); } GetRoot().LightPosition = baseLightPosition; GetRoot().Animated = false; }
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); }
public override void InitContent() { GetRoot().LightPosition = new Vector3(1, 1, 1); GetRoot().Animated = true; ITriangleMesh mesh = new TriangleMesh(); mesh.SetTexture(new Texture("textures/lego.png")); ObjReader reader = new ObjReader(); reader.Read("meshes/cow.obj", mesh); TriangleMeshNode node = new TriangleMeshNode(mesh); node.ShowNormals = false; GetRoot().AddChild(node); }