void UpdateBranch(bool normalShader = false) { if (branchObject == null) { CreateBranchObject(normalShader); } CreateLeafMesh(); MTree branch = new MTree(branchObject.transform); TreeFunction trunkF = new TreeFunction(0, FunctionType.Trunk, null); float resolution = 20; Random.InitState(seed); branch.AddTrunk(Vector3.up, Vector3.forward, stemLength, AnimationCurve.Linear(0, 1, 1, .3f), radius, resolution, randomness / 3, 0, AnimationCurve.Linear(0, 1, 0, 0), 0, .01f, 1, 0); branch.AddBranches(0, length, AnimationCurve.Linear(0, 1, 1, 1), resolution, branchNumber, splitProba, AnimationCurve.Linear(0, 1, 1, 1), angle, randomness, AnimationCurve.Linear(0, 1, 1, .4f), .9f, 0, 1, 0f, 2, .1f, 1f, 0.00001f); branch.AddLeafs(leafCovering, leafNumber, new Mesh[] { leafMesh }, leafSize, false, 0, 0, 1, leafAngle); Mesh mesh = CreateBranchMesh(branch, trunkF); branchObject.GetComponent <MeshFilter>().mesh = mesh; if (cameraObject == null) { CreateCameraObject(); } RenderCamera(); DestoyObjects(); }
void UpdateBranch(bool normalShader = false) { switch (texSize) { case EnumTextureSize._512: textureSize = 512; break; case EnumTextureSize._1024: textureSize = 1024; break; case EnumTextureSize._2048: textureSize = 2048; break; case EnumTextureSize._4096: textureSize = 4096; break; } if (branchObject == null) { CreateBranchObject(normalShader); } if (!deadLeafsRendering) { CreateLeafMesh(); } MTree branch = new MTree(branchObject.transform); TrunkFunction trunkFunction = ScriptableObject.CreateInstance <TrunkFunction>(); trunkFunction.Init(null); float resolution = 20; Random.InitState(seed); branch.AddTrunk(Vector3.up, Vector3.forward, stemLength, AnimationCurve.Linear(0, 1, 1, .3f), radius, resolution, randomness / 3, 0, AnimationCurve.Linear(0, 1, 0, 0), 0, .01f, 1, 0); branch.TwigSplit(branchNumber, angle * 90f, .9f, 0f); branch.Grow(length, AnimationCurve.Linear(0, 1, 1, 1), resolution, splitProba, AnimationCurve.Linear(0, 1, 1, 1), angle, 2, 1, 1, randomness, AnimationCurve.Linear(0, 1, 1, .4f), .9f, 0f, 0f, 1f, 0.00001f); if (!deadLeafsRendering) { branch.AddLeafs(leafCovering, leafNumber, new Mesh[] { leafMesh }, leafSize, false, 0, 0, 1, leafAngle, false, 0, 0, 0, 0); } Mesh mesh = CreateBranchMesh(branch, trunkFunction); branchObject.GetComponent <MeshFilter>().mesh = mesh; if (cameraObject == null) { CreateCameraObject(); } RenderCamera(); DestoyObjects(); }
public override void Execute(MTree tree) { base.Execute(tree); Random.InitState(seed); int selection = parent == null ? 0 : parent.id; bool procedural = leafType == 5; Mesh[] leafMeshes = null; switch (leafType) { case 0: leafMeshes = new Mesh[] { Resources.LoadAll <Mesh>("Mtree/branches")[0] }; break; case 1: leafMeshes = new Mesh[] { Resources.LoadAll <Mesh>("Mtree/branches")[1] }; break; case 2: leafMeshes = new Mesh[] { Resources.LoadAll <Mesh>("Mtree/branches")[2], Resources.LoadAll <Mesh>("Mtree/branches")[3] }; break; case 3: leafMeshes = new Mesh[] { Resources.LoadAll <Mesh>("Mtree/branches")[4], Resources.LoadAll <Mesh>("Mtree/branches")[5] }; break; case 4: leafMeshes = new Mesh[] { Resources.LoadAll <Mesh>("Mtree/branches")[6] }; break; case 5: leafMeshes = null; break; case 6: leafMeshes = new Mesh[] { customLeafMesh }; break; } tree.AddLeafs(maxRadius, number, leafMeshes, size, overrideNormals, minWeight, maxWeight, selection, 70, procedural, length, resolution, uLoops, gravityStrength); }
public void Execute(MTree tree) { int selection = parent == null ? 0 : parent.id; Random.InitState(seed); if (type == FunctionType.Trunk) { tree.AddTrunk(Vector3.down * TheightOffset, Vector3.up, Tlength, Tradius, TradiusMultiplier, Tresolution, Trandomness , id, TrootShape, TrootRadius, TrootHeight, TrootResolution, ToriginAttraction); } if (type == FunctionType.Grow) { tree.Grow(Glength, GlengthCurve, Gresolution, GsplitProba, GsplitProbaCurve, GsplitAngle, GmaxSplits, selection , id, Grandomness, Gradius, GsplitRadius, GupAttraction, GgravityStrength, 0f, 0.001f); } if (type == FunctionType.Split) { tree.Split(selection, Snumber, SsplitAngle, id, SsplitRadius, Sstart, Sspread, 0f); } if (type == FunctionType.Branch) { tree.AddBranches(selection, Blength, BlengthCurve, Bresolution, Bnumber, BsplitProba, BsplitProbaCurve, Bangle , Brandomness, Bshape, Bradius, BupAttraction, id, Bstart, BgravityStrength, 0f, 0.001f); } if (type == FunctionType.Leaf) { tree.AddLeafs(LmaxRadius, Lnumber, LleafMesh, Lsize, LoverrideNormals, LminWeight, LmaxWeight, selection, 70, Lprocedural, Llength, Lresolution, LuLoops, LgravityStrength); } }