void OnMouseUp() { transform.localScale = new Vector3(1f, 1f, 1f); if (id == 1 && PlayerPrefs.GetString(Sphere1.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere1.GetComponent <MeshRenderer>().material; } else if (id == 2 && PlayerPrefs.GetString(Sphere2.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere2.GetComponent <MeshRenderer>().material; } else if (id == 3 && PlayerPrefs.GetString(Sphere3.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere3.GetComponent <MeshRenderer>().material; } else if (id == 4 && PlayerPrefs.GetString(Sphere4.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere4.GetComponent <MeshRenderer>().material; } else if (id == 5 && PlayerPrefs.GetString(Sphere5.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere5.GetComponent <MeshRenderer>().material; } }
private void Update() { if (Player.lose == false) { player.gameObject.GetComponent <Rigidbody2D>().velocity -= player.gameObject.GetComponent <Rigidbody2D>().velocity; } if (SelectNowSphere.id == 1 && PlayerPrefs.GetString(Sphere1.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere1.GetComponent <MeshRenderer>().material; } else if (SelectNowSphere.id == 2 && PlayerPrefs.GetString(Sphere2.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere2.GetComponent <MeshRenderer>().material; } else if (SelectNowSphere.id == 3 && PlayerPrefs.GetString(Sphere3.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere3.GetComponent <MeshRenderer>().material; } else if (SelectNowSphere.id == 4 && PlayerPrefs.GetString(Sphere4.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere4.GetComponent <MeshRenderer>().material; } else if (SelectNowSphere.id == 5 && PlayerPrefs.GetString(Sphere5.gameObject.name) == "Open") { mainSphere.GetComponent <MeshRenderer>().material = Sphere5.GetComponent <MeshRenderer>().material; } }
private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(-0.2f, 0, 1) * 14; var center = new vec3(0, 0, 0); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspective, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.scene = new Scene(camera); var rootNode = new GroupNode(); this.scene.RootNode = rootNode; { var sphere = new Sphere2();//(1, 40, 80); var filename = Path.Combine(System.Windows.Forms.Application.StartupPath, "sphere2.obj_"); sphere.DumpObjFile(filename, "sphere2"); var parser = new ObjVNFParser(false, true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); // render rows*column number of spheres with varying metallic/roughness values scaled by rows and columns respectively for (int row = 0; row < nrRows; ++row) { for (int col = 0; col < nrColumns; ++col) { var node = PBRNode.Create(model, model.GetSize(), ObjVNF.strPosition, ObjVNF.strTexCoord, ObjVNF.strNormal, ObjVNF.strTangent); node.Metallic = (float)row / (float)nrRows; // we clamp the roughness to 0.025 - 1.0 as perfectly smooth surfaces (roughness of 0.0) tend to look a bit off // on direct lighting. node.Roughness = glm.clamp((float)col / (float)nrColumns, 0.05f, 1.0f); node.WorldPosition = new vec3( (col - (nrColumns / 2)) * spacing, (row - (nrRows / 2)) * spacing, 0.0f); rootNode.Children.Add(node); } } } } var list = new ActionList(); var transformAction = new TransformAction(scene); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; var manipulater = new FirstPerspectiveManipulater(); manipulater.Bind(camera, this.winGLCanvas1); }
public void Reset() { V1 = 0f; V2 = 0f; Po1.x = x1i; Po2.x = x2i; Sphere1.GetComponent <Transform>().position = Po1; Sphere2.GetComponent <Transform>().position = Po2; }
// Start is called before the first frame update void Start() { Sphere1 = GameObject.Find("Sphere_A"); Sphere2 = GameObject.Find("Sphere_B"); Po1 = Sphere1.GetComponent <Transform>().position; Po2 = Sphere2.GetComponent <Transform>().position; R = 10f; x1i = Po1.x; x2i = Po2.x; V1 = 0; V2 = 0; }
void OnMouseUp() { BuySound.Play(); transform.localScale = new Vector3(1f, 1f, 1f); if (PlayerPrefs.GetInt("Coins") >= 40 && SelectNowSphere.id == 1) { PlayerPrefs.SetString(Sphere1.GetComponent <SelectSphere>().nowSphere, "Open"); mainSphere.GetComponent <MeshRenderer>().material = Sphere1.GetComponent <MeshRenderer>().material; PlayerPrefs.SetInt("Coins", PlayerPrefs.GetInt("Coins") - 40); selectBtn.SetActive(true); gameObject.SetActive(false); } else if (PlayerPrefs.GetInt("Coins") >= 150 && SelectNowSphere.id == 2) { PlayerPrefs.SetString(Sphere2.GetComponent <SelectSphere>().nowSphere, "Open"); mainSphere.GetComponent <MeshRenderer>().material = Sphere2.GetComponent <MeshRenderer>().material; PlayerPrefs.SetInt("Coins", PlayerPrefs.GetInt("Coins") - 150); selectBtn.SetActive(true); gameObject.SetActive(false); } else if (PlayerPrefs.GetInt("Coins") >= 150 && SelectNowSphere.id == 3) { PlayerPrefs.SetString(Sphere3.GetComponent <SelectSphere>().nowSphere, "Open"); mainSphere.GetComponent <MeshRenderer>().material = Sphere3.GetComponent <MeshRenderer>().material; PlayerPrefs.SetInt("Coins", PlayerPrefs.GetInt("Coins") - 150); selectBtn.SetActive(true); gameObject.SetActive(false); } else if (PlayerPrefs.GetInt("Coins") >= 150 && SelectNowSphere.id == 4) { PlayerPrefs.SetString(Sphere4.GetComponent <SelectSphere>().nowSphere, "Open"); mainSphere.GetComponent <MeshRenderer>().material = Sphere4.GetComponent <MeshRenderer>().material; PlayerPrefs.SetInt("Coins", PlayerPrefs.GetInt("Coins") - 150); selectBtn.SetActive(true); gameObject.SetActive(false); } else if (PlayerPrefs.GetInt("Coins") >= 150 && SelectNowSphere.id == 5) { PlayerPrefs.SetString(Sphere5.GetComponent <SelectSphere>().nowSphere, "Open"); mainSphere.GetComponent <MeshRenderer>().material = Sphere5.GetComponent <MeshRenderer>().material; // PlayerPrefs.SetString("Now", Sphere5.GetComponent<SelectSphere>().nowSphere); PlayerPrefs.SetInt("Coins", PlayerPrefs.GetInt("Coins") - 150); selectBtn.SetActive(true); gameObject.SetActive(false); } }
// Update is called once per frame void Update() { if (Mathf.Abs(Po1.x - Po2.x) <= (R)) { V1 = Vc1; V2 = Vc2; } Po1.x = Po1.x + Time.fixedDeltaTime * V1; Po2.x = Po2.x + Time.fixedDeltaTime * V2; Sphere1.GetComponent <Transform>().position = Po1; Sphere2.GetComponent <Transform>().position = Po2; }
void Update() { PosEsf1 = gameObject.GetComponent <Transform>().position; if (Input.GetKey(KeyCode.UpArrow) && (PosEsf1.z + Rad) < LimU) { if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.x - PosEsf2.x), 2) + Mathf.Pow((PosEsf1.z - PosEsf2.z), 2))) > (Rad2)) //si las esferas no se tocan { V1z = V1z + 1f; } else //si si se tocan { if (LimU >= (PosEsf2.z + Rad) && (PosEsf2.z > PosEsf1.z)) //revisar si no se tocan contra pared { V2z = (((1 + e) * M1) / (M1 + M2)) * V1z; PosEsf2.z = PosEsf2.z + Time.fixedDeltaTime * V2z; PosEsf1.z = PosEsf1.z + 1f; } if (PosEsf2.z < PosEsf1.z) { PosEsf1.z = PosEsf1.z + 1f; V1z = V1z + 1f; } } } if (Input.GetKey(KeyCode.DownArrow) && (PosEsf1.z - Rad) > LimD) { if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.x - PosEsf2.x), 2) + Mathf.Pow((PosEsf1.z - PosEsf2.z), 2))) > (Rad2)) { PosEsf1.z = PosEsf1.z - 1f; } else { if (LimD <= (PosEsf2.z - Rad) && (PosEsf2.z < PosEsf1.z)) { PosEsf2.z = PosEsf2.z - 1f; PosEsf1.z = PosEsf1.z - 1f; } if (PosEsf2.z > PosEsf1.z) { PosEsf1.z = PosEsf1.z - 1f; } } } if (Input.GetKey(KeyCode.RightArrow) && (PosEsf1.x + Rad) < LimR) { if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) > (Rad2)) { PosEsf1.x = PosEsf1.x + 0.05f; } else { if (LimR >= (PosEsf2.x + Rad) && (PosEsf2.x > PosEsf1.x)) { PosEsf2.x = PosEsf2.x + 0.05f; PosEsf1.x = PosEsf1.x + 0.05f; } if (PosEsf2.x < PosEsf1.x) { PosEsf1.x = PosEsf1.x + 0.05f; } } } if (Input.GetKey(KeyCode.LeftArrow) && (PosEsf1.x - Rad) > LimL) { if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) > (Rad2)) { PosEsf1.x = PosEsf1.x - 0.05f; } else { if (LimL <= (PosEsf2.x - Rad) && (PosEsf2.x < PosEsf1.x)) { PosEsf2.x = PosEsf2.x - 0.05f; PosEsf1.x = PosEsf1.x - 0.05f; } if (PosEsf2.x > PosEsf1.x) { PosEsf1.x = PosEsf1.x - 0.05f; } } } if (Input.GetKey(KeyCode.W)) { LimU = LimU + 0.05f; LimD = LimD + 0.05f; if (LimD >= (PosEsf1.z - Rad)) { PosEsf1.z = LimD + Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf2.z = PosEsf1.z + Rad2; } } if (LimD >= (PosEsf2.z - Rad)) { PosEsf2.z = LimD + Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf1.z = PosEsf2.z + Rad2; } } } if (Input.GetKey(KeyCode.S)) { LimU = LimU - 0.05f; LimD = LimD - 0.05f; if (LimU <= (PosEsf1.z + Rad)) { PosEsf1.z = LimU - Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf2.z = PosEsf1.z - Rad2; } } if (LimU <= (PosEsf2.z + Rad)) { PosEsf2.z = LimU - Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf1.z = PosEsf2.z - Rad2; } } } if (Input.GetKey(KeyCode.D)) { LimR = LimR + 0.05f; LimL = LimL + 0.05f; if (LimL >= (PosEsf1.x - Rad)) { PosEsf1.x = LimL + Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf2.x = PosEsf1.x + Rad2; } } if (LimL >= (PosEsf2.x - Rad)) { PosEsf2.x = LimL + Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf1.x = PosEsf2.x + Rad2; } } } if (Input.GetKey(KeyCode.A)) { LimR = LimR - 0.05f; LimL = LimL - 0.05f; if (LimR <= (PosEsf1.x + Rad)) { PosEsf1.x = LimR - Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf2.x = PosEsf1.x - Rad2; } } if (LimR <= (PosEsf2.x + Rad)) { PosEsf2.x = LimR - Rad; if (Mathf.Abs(Mathf.Sqrt(Mathf.Pow((PosEsf1.z - PosEsf2.z), 2) + Mathf.Pow((PosEsf1.x - PosEsf2.x), 2))) <= (Rad2)) { PosEsf1.x = PosEsf2.x - Rad2; } } } gameObject.GetComponent <Transform>().position = PosEsf1; Sphere2.GetComponent <Transform>().position = PosEsf2; }
void Start() { Sphere2 = GameObject.Find("Esf2"); PosEsf2 = Sphere2.GetComponent <Transform>().position; V1x = 0; V1z = 0; V2x = 0; V2z = 0; M1 = 1; M2 = 1; }
private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(-0.2f, 0, 1) * 14; var center = new vec3(0, 0, 0); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspective, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.scene = new Scene(camera); var rootNode = new GroupNode(); this.scene.RootNode = rootNode; Texture albedoMap = GetTexture(@"Textures\albedo.png", 0); Texture normalMap = GetTexture(@"Textures\normal.png", 1); Texture metallicMap = GetTexture(@"Textures\metallic.png", 2); Texture roughnessMap = GetTexture(@"Textures\roughness.png", 3); Texture aoMap = GetTexture(@"Textures\ao.png", 4); { var sphere = new Sphere2(); // Sphere(1, 40, 80); var filename = Path.Combine(System.Windows.Forms.Application.StartupPath, "sphere2.obj_"); sphere.DumpObjFile(filename, "sphere2"); var parser = new ObjVNFParser(false, true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { Console.WriteLine("Error: {0}", result.Error); } else { ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); // render rows*column number of spheres with varying metallic/roughness values scaled by rows and columns respectively for (int row = 0; row < nrRows; ++row) { for (int col = 0; col < nrColumns; ++col) { var node = PBRNode.Create(model, model.GetSize(), ObjVNF.strPosition, ObjVNF.strTexCoord, ObjVNF.strNormal); node.AlbedoMap = albedoMap; node.NormalMap = normalMap; node.MetallicMap = metallicMap; node.RoughnessMap = roughnessMap; node.AOMap = aoMap; node.WorldPosition = new vec3( (col - (nrColumns / 2)) * spacing, (row - (nrRows / 2)) * spacing, 0.0f); rootNode.Children.Add(node); } } } } var list = new ActionList(); var transformAction = new TransformAction(scene); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; var manipulater = new FirstPerspectiveManipulater(); manipulater.Bind(camera, this.winGLCanvas1); }
private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(9.3968f, -0.7408f, 2.9288f); var center = new vec3(-0.0710f, -2.2829f, 1.3023f); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspective, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.scene = new Scene(camera); var rootNode = new GroupNode(); this.scene.RootNode = rootNode; Texture texBRDF = LoadBRDFTexture(); texBRDF.TextureUnitIndex = 2; Texture prefilterMap = LoadPrefilterMap(); prefilterMap.TextureUnitIndex = 1; Texture irradianceMap = LoadIrradianceMap(); irradianceMap.TextureUnitIndex = 0; Texture envCubemap = LoadEnvCubeMap(); Texture texHDR = LoadHDRTexture("environment.hdr"); { var node = CubemapNode.Create(envCubemap, texHDR); rootNode.Children.Add(node); } { var node = IrradianceNode.Create(irradianceMap, envCubemap); rootNode.Children.Add(node); } { var node = PrefilterNode.Create(prefilterMap, envCubemap); rootNode.Children.Add(node); } { var node = BRDFNode.Create(texBRDF); rootNode.Children.Add(node); } { var textureGroups = new string[] { "cerberus", "cerberus", "gold", "grass", "plastic", "rock", "rusted_iron", "wall", "wood" }; var models = new ObjVNF[textureGroups.Length]; { var filename = Path.Combine(System.Windows.Forms.Application.StartupPath, "cerberus.obj_"); var parser = new ObjVNFParser(false, false); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(string.Format("Error: {0}", result.Error)); return; } ObjVNFMesh mesh = result.Mesh; // scale it to 0.1 percent. for (int i = 0; i < mesh.vertexes.Length; i++) { mesh.vertexes[i] = mesh.vertexes[i] / 10; } //// Dump texture coordinates' layout. //{ // vec2[] texCoords = mesh.texCoords; // int polygon = (mesh.faces[0] is ObjVNFTriangle) ? 3 : 4; // int index = 0; // var indices = new uint[polygon * mesh.faces.Length]; // foreach (var face in mesh.faces) { // foreach (var vertexIndex in face.VertexIndexes()) { // indices[index++] = vertexIndex; // } // } // var bmp = TexCoordAnalyzer.DumpLines(texCoords, indices, 1024); // bmp.Save("cerberus.texCoords.png"); //} var model = new ObjVNF(mesh); models[0] = model; } { var sphere = new Sphere2();//(1, 40, 80); var filename = Path.Combine(System.Windows.Forms.Application.StartupPath, "sphere2.obj_"); sphere.DumpObjFile(filename, "sphere2"); var parser = new ObjVNFParser(false, true); ObjVNFResult result = parser.Parse(filename); if (result.Error != null) { MessageBox.Show(string.Format("Error: {0}", result.Error)); return; } ObjVNFMesh mesh = result.Mesh; var model = new ObjVNF(mesh); for (int i = 1; i < textureGroups.Length; i++) { models[i] = model; } } for (int i = 0; i < textureGroups.Length; i++) { ObjVNF model = models[i]; string group = textureGroups[i]; var node = PBRNode.Create(model, model.GetSize(), ObjVNF.strPosition, ObjVNF.strTexCoord, ObjVNF.strNormal); node.IrradianceMap = irradianceMap; node.PrefilterMap = prefilterMap; node.texBRDF = texBRDF; Texture albedo = GetTexture(string.Format(@"Textures\{0}\albedo.png", group), 3); node.AlbedoMap = albedo; Texture ao = GetTexture(string.Format(@"Textures\{0}\ao.png", group), 4); node.AOMap = ao; Texture metallic = GetTexture(string.Format(@"Textures\{0}\metallic.png", group), 5); node.MetallicMap = metallic; Texture normal = GetTexture(string.Format(@"Textures\{0}\normal.png", group), 6); node.NormalMap = normal; Texture roughness = GetTexture(string.Format(@"Textures\{0}\roughness.png", group), 7); node.RoughnessMap = roughness; if (i == 0) { node.WorldPosition = new vec3(0, -5, 0); } else { node.WorldPosition = new vec3( 0.0f, 0.0f, ((textureGroups.Length / 2.0f) - i) * spacing); } rootNode.Children.Add(node); } } { var backgroundNode = BackgroundNode.Create(envCubemap); rootNode.Children.Add(backgroundNode); } var list = new ActionList(); var transformAction = new TransformAction(scene); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; var manipulater = new FirstPerspectiveManipulater(); manipulater.Bind(camera, this.winGLCanvas1); }