// Use this for initialization void Start() { MeshFilter filter = (MeshFilter)this.GetComponent <MeshFilter> (); if (filter == null) { filter = gameObject.AddComponent <MeshFilter> (); } filter.mesh = CylinderGenerator.generateCylinder(1f, 0.004f, 0.003f, 5); gameObject.AddComponent <MeshRenderer> ().material = material; int numberOfNodes = 35; float rotationAngle = 75; float leafWidth = 0.2f; for (int i = 0; i < numberOfNodes; i++) { Leaf newLeaf = new GameObject("BranchLeaf").AddComponent <Leaf> ().Initialize(fernBranchMaterial, leafWidth, 0.6f, null); newLeaf.transform.parent = this.transform; newLeaf.transform.localScale = Vector3.one * ((0.3f / (((float)i / (float)numberOfNodes) + 0.3f)) - 0.16f); //Mathf.Pow(1.13f, i/numberOfNodes); newLeaf.transform.localPosition = new Vector3(-(leafWidth / 2f) * newLeaf.transform.localScale.x, Mathf.Log10((((float)i / (float)numberOfNodes) + 0.1f) * 10f), 0f); newLeaf.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); //newLeaf.transform.RotateAround (newLeaf.transform.position + new Vector3((leafWidth/2f) * newLeaf.transform.localScale.x, 0f, 0f), this.transform.rotation.eulerAngles, -rotationAngle + ((i % 2) * (rotationAngle * 2))); rotateAroundLocal(newLeaf.transform, newLeaf.transform.position + new Vector3((leafWidth / 2f) * newLeaf.transform.localScale.x, 0f, 0f), Vector3.forward, -rotationAngle + ((i % 2) * (rotationAngle * 2))); /*newLeaf.transform.localRotation = Quaternion.Euler(0, 0, ); * * //Correct for rotation anchor point. * float angle = Mathf.Deg2Rad * (newLeaf.transform.localRotation.eulerAngles.z); * float hypo = .1f; * newLeaf.transform.localPosition += new Vector3(Mathf.Sin(angle) * hypo, Mathf.Cos(angle) * hypo);*/ } }
public void Render() { CylinderGenerator.GenerateCylinder(resolution, mesh, atom0.color, atom1.color); float l = atoms.getDistance(a0, a1); transform.localPosition = (atom0.transform.localPosition + atom1.transform.localPosition) / 2f; transform.localScale = new Vector3(radius, radius, l); transform.localRotation = Quaternion.LookRotation(atoms.getVector(a0, a1)); }
// Use this for initialization void Start() { CylinderGenerator.Create(gameObject, true, 64); meshRenderer = gameObject.AddComponent <MeshRenderer>(); meshRenderer.material.shader = cylinderShader; meshRenderer.material.EnableKeyword("FROM_SPHERICAL"); meshRenderer.material.SetFloat("_Fade", 1f); meshRenderer.material.SetFloat("_ShiftU", shiftU); meshRenderer.material.SetFloat("_ScaleV", scaleCylinderV); }
//Build the actual shape of the branch. public void build() { if (parentBranch != null) { this.manager = parentBranch.manager; this.material = parentBranch.material; this.transform.parent = parentBranch.transform; this.branchDepth = parentBranch.branchDepth + 1; //These constants control the appearance of the tree. updateLength(); this.width = parentBranch.width * 0.5f; //Move the current branch so that it is stacked right above its parent. if (directBranch) { transform.localPosition = Vector3.up * parentBranch.length; } else { transform.localPosition = Vector3.up * Random.Range(parentBranch.length - ((parentBranch.length) * (0.8f - this.branchDepth / 10)), parentBranch.length); } //when we rotate we have to transform again so that the branch keeps its bottom connected to its parent's top. //float hypo = this.length/2f; //float opposite = Mathf.Sin(Mathf.Deg2Rad * transform.localRotation.eulerAngles.z) * hypo; //float adjacent = Mathf.Cos (Mathf.Deg2Rad * transform.localRotation.eulerAngles.y) * hypo; //float oppositeX = Mathf.Sin (Mathf.Deg2Rad * transform.localRotation.eulerAngles.x) * 2f *adjacent; //transform.localPosition = transform.localPosition + new Vector3 (0f, adjacent, 0f); } //Check for mesh filter and make one if none exists. MeshFilter filter = (MeshFilter)this.GetComponent <MeshFilter> (); if (filter == null) { filter = gameObject.AddComponent <MeshFilter> (); } //Create a new cylinder mesh. filter.mesh = mesh = new Mesh(); int numberOfRingVerts = 6 - this.branchDepth; if (numberOfRingVerts < 2) { numberOfRingVerts = 2; } filter.mesh = mesh = CylinderGenerator.generateCylinder(this.length, this.width, this.width * 0.5f, numberOfRingVerts); //transform.localRotation = Quaternion.Euler(0f, 0f, weightedRand() * 30f); }
void Start() { if (isCylinder) { CylinderGenerator.Create(gameObject, true, 64); } else { IcoSphereGenerator.Create(gameObject, true, 5); } meshRenderer = gameObject.AddComponent <MeshRenderer>(); if (isCylinder) { meshRenderer.material.shader = cylinderShader; meshRenderer.material.EnableKeyword("FROM_SPHERICAL"); meshRenderer.material.SetFloat("_Fade", 1f); meshRenderer.material.SetFloat("_ShiftU", shiftU); meshRenderer.material.SetFloat("_ScaleV", scaleCylinderV); } else { meshRenderer.material.shader = sphereShader; meshRenderer.material.SetFloat("_Fade", 1f); meshRenderer.material.SetFloat("_ShiftU", shiftU); } infoBlock = new GameObject(name + " Info"); infoBlock.transform.SetParent(transform); infoBlock.transform.localPosition = new Vector3(0f, -0.5f, 0.5f); infoBlock.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); var infoText = infoBlock.AddComponent <TextMesh>(); infoText.text = "Record: Not yet loaded\nImage: N/A"; infoText.anchor = TextAnchor.MiddleCenter; infoText.fontSize = 40; infoText.characterSize = 0.005f; OnValidate(); if (Application.sandboxType != ApplicationSandboxType.NotSandboxed) { archive.jsonPath = Application.streamingAssetsPath; } archive.Load(); ChangeRecord(-1); }
private void SetupVirtualPointsCylinder( int lengthPoints, int circlePoints, double radius, double height ) { var generated = CylinderGenerator.Generate( lengthPoints, circlePoints, radius, height ); SetControlPointsUsingPositions(generated); }
void SetupCylinder() { cylinder = new GameObject("Virtual Panorama Cylinder"); // cylinder.transform.SetParent(transform); cylinder.transform.position = new Vector3(0f, aboveFloor + screenHeight * 0.5f, 0f) - viewerPosition; float sr = diameter / 2f; float sh = screenHeight / 2f; cylinder.transform.localScale = new Vector3(sr, sh, sr); cylinder.layer = PanoramaCameraRig.PANORAMA_LAYER; CylinderGenerator.Create(cylinder, true, 180); cylinderRenderer = cylinder.AddComponent <MeshRenderer>(); if (undistortSlices) { cylinderRenderer.material = new Material(Shader.Find("EMPlus/PanoramaSliceWarpShader")); cylinderRenderer.material.SetVector("_SliceLayout", new Vector4(cameraRig.numSlices, cameraRig.sliceAngle * Mathf.Deg2Rad, 0f, 0f)); } else { cylinderRenderer.material = new Material(Shader.Find("Unlit/Texture")); } cylinderRenderer.material.SetTexture("_MainTex", cameraRig.renderTexture); cylinderRenderer.material.SetTextureScale("_MainTex", new Vector2(360f / cameraRig.RenderedAngle(), 1f)); cylinderBlack = new GameObject("Virtual Cylinder Outside Black"); CylinderGenerator.Create(cylinderBlack, true, 90); cylinderBlack.AddComponent <MeshRenderer>(); cylinderBlack.layer = PanoramaCameraRig.PANORAMA_LAYER; cylinderBlack.transform.SetParent(cylinder.transform); Material matBlack = cylinderBlack.GetComponent <MeshRenderer>().material; matBlack.shader = Shader.Find("Unlit/Color"); matBlack.SetColor("_Color", new Color(0, 0, 0, 1f)); floor = GameObject.CreatePrimitive(PrimitiveType.Quad); floor.name = "Virtual Panorama Screen Floor Quad"; floor.layer = PanoramaCameraRig.PANORAMA_LAYER; floor.transform.SetParent(cylinder.transform); floor.transform.rotation = Quaternion.Euler(90f, 0f, 0f); Material matFloor = floor.GetComponent <MeshRenderer>().material; matFloor.shader = Shader.Find("Standard"); matFloor.SetColor("_Color", new Color(0.1f, 0.1f, 0.1f, 1f)); OnValidate(); }
/// <inheritdoc /> public override IGameObject BuildArea(Tile tile, Rule rule, Area area) { base.BuildArea(tile, rule, area); if (tile.Registry.Contains(area.Id)) { return(null); } double radius; Vector2d center; CircleUtils.GetCircle(tile.RelativeNullPoint, area.Points, out radius, out center); var elevation = ElevationProvider.GetElevation(center); var height = rule.GetHeight(); var minHeight = rule.GetMinHeight(); var actualHeight = (height - minHeight); var color = rule.GetFillColor(); var gradient = CustomizationService.GetGradient(color); tile.Registry.RegisterGlobal(area.Id); var cylinderGen = new CylinderGenerator() .SetCenter(new Vector3((float)center.X, elevation + minHeight, (float)center.Y)) .SetHeight(actualHeight) .SetMaxSegmentHeight(5f) .SetRadialSegments(7) .SetRadius((float)radius) .SetGradient(gradient); var meshData = new MeshData(MeshDestroyIndex.Default, cylinderGen.CalculateVertexCount()) { GameObject = GameObjectFactory.CreateNew(GetName(area)), MaterialKey = rule.GetMaterialKey() }; cylinderGen.Build(meshData); BuildObject(tile.GameObject, meshData, rule, area); return(meshData.GameObject); }
public void growChildren() { branchAge++; float originalLength = this.length; this.width = this.width * this.manager.widthFactor; if (parentBranch) { this.width = this.parentBranch.width * this.manager.childWidthFactor; } if (branchAge < 3) { this.length = this.ultimateLength / 4 + (this.ultimateLength / 4) * branchAge; } //Check for mesh filter and make one if none exists. MeshFilter filter = (MeshFilter)this.GetComponent <MeshFilter> (); if (filter == null) { filter = gameObject.AddComponent <MeshFilter> (); } //Create a new cylinder mesh to represent a larger version of the branch. filter.mesh = mesh = CylinderGenerator.generateCylinder(this.length, this.width, this.width * 0.65f, 6); if (childBranches.Count == 0) { branch(); } else { for (int i = 0; i < childBranches.Count; i++) { //preserves the child branch's position on the parent branch. childBranches [i].transform.localPosition = Vector3.up * (childBranches [i].transform.localPosition.y * this.length) / originalLength; childBranches [i].growChildren(); } } }
// Use this for initialization void Start() { if (segments < 6) { segments = 6; } if (segments > 360) { segments = 360; } CylinderGenerator.Create(gameObject, insideOut, segments); var cylinderRenderer = gameObject.AddComponent <MeshRenderer>(); if (material != null) { cylinderRenderer.sharedMaterial = material; } else { cylinderRenderer.material.shader = Shader.Find("EMPlus/GridShader"); cylinderRenderer.material.SetColor("_Color", color); cylinderRenderer.material.SetFloat("_LineWidth", lineWidth); } }
// Use this for initialization void Start() { cylinderGenerator = new CylinderGenerator (); }
public void Render() { CylinderGenerator.GenerateCylinder(resolution, mesh, atom0.color, atom1.color); _cylinderRendered = true; UpdateLocalTransform(); }
// Use this for initialization void Start() { CylinderGenerator.Create(gameObject, true, 64); }