So I made this script that manages to generate some pretty natural terrain in chunks. I want to make it look more natural by making the blocks less "blocky". I know marching cubes might work with that kind of stuff but it limits terrain generation. Is there any other way to "flatten" the terrain?
Script:
chunks = 20 csize = 30 platform = 4 scale = 150 amplitude = 7 seed = math.random(0, 10e5) print(seed) fold = Instance.new("Folder") fold.Name = "PT" fold.Parent = game.Workspace part = Instance.new("Part") part.Anchored = true part.Size = Vector3.new(platform, 20, platform) part.Color = Color3.fromRGB(255, 255, 255) part.Locked = true part.Parent = game.ServerStorage w = Instance.new("Part") w.Anchored = true w.Size = Vector3.new(platform, 20, platform) w.Color = Color3.fromRGB(100, 100, 255) w.Locked = true w.Transparency = 0.7 w.Parent = game.ServerStorage function GenChunk(x, z) for x = (-csize/2)+x*csize, (csize/2)+x*csize do for z = (-csize/2)+z*csize, (csize/2)+z*csize do local y1 = math.noise(x/scale/0.5, z/scale/0.5, seed) * amplitude local y2 = math.noise(x/scale, z/scale, seed) * amplitude*3 local y3 = math.noise(x/scale/1.75, z/scale/1.75, seed) * amplitude*4 local y = (y1 * y2 * y3)/2 local p = part:Clone() p.CFrame = CFrame.new(Vector3.new(platform*x, y, platform*z)) if y <= -1 then p.Color = Color3.fromRGB(200, 200, 50) end if y > -1 and y <= 0 then p.Color = Color3.fromRGB(100, 50, 0) end if y > 0 and y <= 2 then p.Color = Color3.fromRGB(150, 75, 25) end if y > 2 and y <= 29 then p.Color = Color3.fromRGB(50, 150, 50) end if y > 29 and y <= 51 then p.Color = Color3.fromRGB(50, 100, 50) end if y > 51 and y <= 65 then p.Color = Color3.fromRGB(100, 125, 100) end if y > 65 then p.Color = Color3.fromRGB(200, 200, 200) end p.Parent = fold local wa = w:Clone() wa.CFrame = CFrame.new(Vector3.new(platform*x, -3, platform*z)) wa.Parent = game.Workspace.PT end end end for x = -chunks/2, chunks/2 do for z = -chunks/2, chunks/2 do wait() GenChunk(x, z) end end print("Done!") function close() game.Workspace.PT:Destroy() end game:BindToClose(close)
Image of example terrain: Image_1