Terrain

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Không Thể Tạo

Địa hình cho phép bạn tạo môi trường biến đổi định tĩnh với ít hoặc không có lag. Hiện tại được dựa trên một lưới 4×4×4 các tế bào, nơi mỗi tế bào có một số giữa 0 và 1 diễn tả số lượng hình họa nên tế bào nên

Để biết thêm thông tin, xem Mặt địa hình .

Tóm Tắt

Thuộc Tính

  • Không Thể Viết Kịch Bản
    Đọc Song Song

    Mở hoặc đóng trang trí địa hình.

  • Không Thể Viết Kịch Bản
    Đọc Song Song

    Chỉ định chiều dài của cỏ hoạt họa.

  • MaterialColors:BinaryString
    Không Thể Viết Kịch Bản
    Đọc Song Song

    MaterialColors đại diện cho editor cho tính năng Màu Vật, và không thể được chỉnh sửa bởi các <a href="/reference/engine/datatypes">mẫu</a> .

    Để nhận màu của một vật liệu, hãy sử dụng: Terrain:GetMaterialColor() Để cài đặt màu của một vật liệu, hãy sử dụng: Terrain:SetMaterialColor()

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Hiển thị các giới hạn của khu vực có thể chỉnh sửa lớn nhất.

  • Đọc Song Song

    Màu sắc của nước địa hình.

  • Đọc Song Song

    Điều khiển độ trong suốt của bóng nước khu vực.

  • Đọc Song Song

    Độ trong suốt của nước địa hình.

  • Đọc Song Song

    Điều chỉnh chiều cao tối đa của các môn nước địa hình trong studs.

  • Đọc Song Song

    Điều chỉnh số lần mà nước địa hình sẽ di chuyển lên xuống mỗi phút.

Thuộc Tính kế thừa từ BasePart
  • Đọc Song Song

    Xác định có phải một bộ phận là vật rắn bởi vật lý hay không.

  • Không Sao Chép
    Đọc Song Song

    Tốc độ góc của hệ thống tập hợp phần.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Trung tâm của hàng loạt của bộ phận trong không gian thế giới.

  • Không Sao Chép
    Đọc Song Song

    Tốc độ truyền thẳng của hộp số.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Tổng trọng lượng của hàng tập họp.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Một tham chiếu đến phần chính của hệ thống.

  • Xác định loại bề mặt cho mặt sau của một bộ phận (+Z hướng).

  • Xác định loại bề mặt cho mặt dưới của một bộ phận (-Y hướng).

  • Không Sao Chép
    Đọc Song Song

    Xác định màu của một bộ phận.

  • Đọc Song Song

    Xác định vị trí và hướng tây của BasePart trên thế giới.

  • Đọc Song Song

    Xác định có phải vật nào có thể va chạm với nhau.

  • Đọc Song Song

    Xác định có phải xử lý phần nào trong các hành động truy vấn không gian.

  • Đọc Song Song

    Xác định nếu sự kiện TouchedTouchEnded xảy ra trên bộ phận.

  • Đọc Song Song

    Xác định có hay không một bộ phận tạo ra bóng tối.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả vị trí trên thế giới mà trung tâm hồi quang của một bộ phận được đặt.

  • Không Sao Chép
    Đọc Song Song

    Mô tả tên của một nhóm va chạm của một phần.

  • Không Sao Chép
    Đọc Song Song

    Xác định màu của một bộ phận.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Chỉ định các thuộc tính vật lý hiện tại của bộ phận.

  • Xác định một số thuộc tính vật lý của một bộ phận.

  • Đọc Song Song

    Được sử dụng để bật hoặc tắt các lực khí tương đối trên các bộ phận và tập hợp.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Các CFrame của các thành phần vật lý của BasePart .

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Kích thước thực tế của BasePart như được xem xét bởi các khối lận BasePart lận lý.

  • Xác định loại bề mặt cho mặt trước của một bộ phận (-Z hướng).

  • Xác định loại bề mặt cho mặt trái của một bộ phận (-X hướng).

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Xác định một hệ số nhân cho BasePart.Transparency mà chỉ người dùng địa phương mới có thể thấy.

  • Đọc Song Song

    Xác định có phải một bộ phận được chọn trong Studio không.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả hầu hết lượng lớn của bộ phận, sản lượng của nó và khối lượng.

  • Đọc Song Song

    Xác định xem liệu phần có đóng góp vào tổng sức mạnh hoặc tốc độ chết của cơ thâncứng rắn của nó hay không.

  • Đọc Song Song

    Xác định các thuộc tính và thuộc tính vật lý mặc định của một phần.

  • Không Sao Chép
    Đọc Song Song

    Tên của MaterialVariant .

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Mô tả sự quay của bộ phận trong thế giới.

  • Đọc Song Song

    Định vị lệch của các cột trụ của bộ phận từ các CFrame của nó.

  • Ẩn
    Không Sao Chép
    Đọc Song Song

    Mô tả vị trí của bộ phận trên thế giới.

  • Ẩn
    Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Thời gian kể từ lần cuối cập nhật vật lý.

  • Đọc Song Song

    Xác định mức độ phản chiếu của một bộ phận trên trời.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả thay đổi nhỏ nhất cho phép bởi phương pháp Thay đổi kích thước.

  • Chỉ Đọc
    Không Sao Chép
    Đọc Song Song

    Mô tả các khuôn mặt mà một phần có thể được thay đổi kích thước.

  • Xác định loại bề mặt cho mặt phải của một bộ phận (+X hướng).

  • Đọc Song Song

    Quy tắc chính để xác định phần thân của một bản dựng.

  • Không Sao Chép
    Đọc Song Song

    Sự quay của bộ phận theo độ cho ba trục.

  • Không Sao Chép
    Đọc Song Song

    Xác định các kích thước của một bộ phận (Độ dài, chiều rộng, chiều cao).

  • Xác định loại bề mặt cho mặt trên của một bộ phận (+Y hướng).

  • Đọc Song Song

    Xác định mức độ mà một phần có thể được nhìn thấy thông qua (ản định hướng ngược lại của sự mờ dần).

Thuộc Tính kế thừa từ PVInstance
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song
  • Không Sao Chép
    Không Thể Viết Kịch Bản
    Đọc Song Song

Phương Pháp

Phương Pháp kế thừa từ BasePartPhương Pháp kế thừa từ PVInstance

Sự Kiện

Sự Kiện kế thừa từ BasePart

Thuộc Tính

Decoration

Không Thể Viết Kịch Bản
Đọc Song Song

Hiện đang bật hoặc tắt cỏ animatron trên vật liệu địa hình Cỏ , mặc dù những thay đổi trong tương lai của thuộc tính này có thể điều khiển các tính năng trang trí thêm.

GrassLength

Không Thể Viết Kịch Bản
Đọc Song Song

Định kích thước của cỏ hoạt họa trên vật liệu địa hình Grass , giả sử Decoration được bật. Các giá trị hợp lệ là giữa 0.1 và 1.

MaterialColors

BinaryString
Không Thể Viết Kịch Bản
Đọc Song Song

MaterialColors đại diện cho editor cho tính năng Màu Vật, và không thể được chỉnh sửa bởi các <a href="/reference/engine/datatypes">mẫu</a> .

Để nhận màu của một vật liệu, hãy sử dụng: Terrain:GetMaterialColor()

Để đặt màu của một vật liệu, hãy sử dụng: Terrain:SetMaterialColor()

MaxExtents

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Hiển thị các giới hạn của khu vực có thể chỉnh sửa lớn nhất.

WaterColor

Đọc Song Song

Màu sắc của nước địa hình.

WaterReflectance

Đọc Song Song

Điều khiển độ trong suốt của bóng nước khu vực.

WaterTransparency

Đọc Song Song

Độ trong suốt của nước địa hình.

WaterWaveSize

Đọc Song Song

Điều chỉnh chiều cao tối đa của các mông nước địa hình trong studs. Hiện tại điều này được hạn chế giữa 0 và 1.

WaterWaveSpeed

Đọc Song Song

Điều chỉnh số lần mà nước địa hình di chuyển lên xuống mỗi phút. Hiện tại được giới hạn giữa 0 và 100.

Phương Pháp

CellCenterToWorld

Trả về vị trí trung tâm của hạt đất (x, y, z).

Tham Số


Lợi Nhuận

CellCornerToWorld

Quay vị trí góc bên trái dưới của thành phần lưới (x, y, z).

Tham Số


Lợi Nhuận

Clear

void

Xóa mặt địa hình.


Lợi Nhuận

void

CopyRegion

Lưu một phần của địa hình vào một TerrainRegion để có thể được tải lại sau đó. Ghi chú: Dữ liệu TerrainRegion không bị sao chép giữa máy chủ và máy chủ khách.

Tham Số

region: Region3int16

Lợi Nhuận

Mẫu mã

Terrain:CopyRegion

local terrainRegion = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
workspace.Terrain:Clear()
task.wait(5)
workspace.Terrain:PasteRegion(terrainRegion, workspace.Terrain.MaxExtents.Min, true)

CountCells

Trả lại số lượng các tế bào không rỗng trong Terrain.


Lợi Nhuận

FillBall

void

Lấp đầy một quả cầu địa hình mịn trong một không gian cụ thể.

Tham Số

center: Vector3

Vị trí của trung tâm của quả cầu địa hình.

radius: number

Bán kính ở dấu hiệu của bóng địa hình.

material: Enum.Material

Của quả bóng địa hình. Enum.Material


Lợi Nhuận

void

Mẫu mã

Filling a Ball of Terrain

local Workspace = game:GetService("Workspace")
-- Creates a ball of grass at (0,0,-10) with a radius of 10 studs
Workspace.Terrain:FillBall(Vector3.new(0, 0, -10), 10, Enum.Material.Grass)

FillBlock

void

Làm cho một khối địa hình mịn màng bằng cách đặt một vị trí, vòng quay, kích thước và vật liệu nhất định.

Tham Số

cframe: CFrame

cframe (vị trí và hướng tượng) của khối địa hình.

size: Vector3

Kích thước của cục khối hình vuông - chiều cao và chiều rộng.

material: Enum.Material

Cục khối Enum.Material của mặt đất.


Lợi Nhuận

void

FillCylinder

void

Làm đầy một trụ tròn mịn trong một không gian cụ thể. Khoảng không được định bằng cách sử dụng CFrame, chiều cao và bán kính.

Sử dụng


workspace.Terrain:FillCylinder(CFrame.new(0, 50, 0), 5, 30, Enum.Material.Asphalt)

Tham Số

cframe: CFrame

CFrame (vị trí và hướng tâm) của trụ đất.

height: number

Chiều cao trong studs của hình trụ địa hình.

radius: number

Bán kính ở định dạng của hình trụ địa hình.

material: Enum.Material

Các Enum.Material của cylinder địa hình.


Lợi Nhuận

void

FillRegion

void

Làm đầy một khu vực Region3 với mặt địa hình mịn.

Tham Số

region: Region3
resolution: number
material: Enum.Material

Lợi Nhuận

void

FillWedge

void

FillWedge() Làm đầy một khối lượng hình chữ nhật có hình dạng của Terrain với Enum.Material được đưa và khu vực 0> Datatype.CFrame0> và kích thước. Hướng của khố

Tham Số

cframe: CFrame

Vị trí và hướng của cánh tay để điền.

size: Vector3

Kích thước của cánh tài liệu để đầy.

material: Enum.Material

Vật liệu mà cánh dao sẽ được điền.


Lợi Nhuận

void

GetMaterialColor

Ghi Song Song

Trả lại màu mặt địa hình hiện tại cho vật liệu địa hình được xác định.

Tham Số

material: Enum.Material

Lợi Nhuận

PasteRegion

void

Xem xét một phần của địa hình vào đối tượng Địa hình. Ghi chú: TerrainRegion dữ liệu không được sao chép giữa máy chủ và máy chủ.

Tham Số

corner: Vector3int16
pasteEmptyCells: bool

Lợi Nhuận

void

Mẫu mã

Create, Copy and Paste Terrain

--[[
Note: The use of int16 variants for these API is the result of legacy code.
The underlying voxel grid system uses Vector3int32 (Vector3).
]]
local Workspace = game:GetService("Workspace")
local Terrain = Workspace.Terrain
-- Create a simple terrain region (a 10x10x10 block of grass)
local initialRegion = Region3.new(Vector3.zero, Vector3.one * 10)
Terrain:FillRegion(initialRegion, 4, Enum.Material.Grass)
-- Copy the region using Terrain:CopyRegion
local copyRegion = Region3int16.new(Vector3int16.new(0, 0, 0), Vector3int16.new(10, 10, 10))
local copiedRegion = Terrain:CopyRegion(copyRegion)
-- Define where to paste the region (in this example, offsetting by 5 studs on the X-axis)
local newRegionCorner = Vector3int16.new(5, 0, 0)
-- Paste the region using Terrain:PasteRegion
Terrain:PasteRegion(copiedRegion, newRegionCorner, true)

ReadVoxelChannels

Ghi Song Song

Trả lại một khu vực dữ liệu voxel địa hình trong dạng bảng dựa trên tên kênh.

Tham Số

region: Region3

Vùng mục tiêu để đọc. Phải được dịch chuyển theo lưới voxel. Sẽ ném một lỗi nếu vùng quá lớn; giới hạn hiện tại là 4194304 voxels³.

resolution: number

Độ phân giải Voxel. Phải là 4.

channelIds: Array

Một dàn ID kênh (chuỗi) cần thiết phải truy cập từ dữ liệu voxel. Mỗi ID kênh đại diện một loại dữ liệu được lưu trong voxel. Các ID hỗ trợ hiện tại là {"SolidMaterial", "SolidOccupancy", "LiquidOccupancy"} .


Lợi Nhuận

Trả về dữ liệu voxel như một từ điển dựa trên lựa chọn channelIds . Các chìa khóa đại diện mỗi ID kênh với giá trị tương ứng của họ như một dàn 3D dữ liệu.

  • SolidMaterial — Vật liệu Enum.Material của voxel. Lưu ý rằng Water không còn được hỗ trợ nữa; thay vào đó, một voxel chứa nước sẽ có giá trị 0> LiquidOccupancy0> .
  • SolidOccupancy — Kích thước của vật liệu voxel như được quy định trong kênh SolidMaterial này. Đây là một giá trị giữa 0 (trống) và 1 (đầy đủ).
  • LiquidOccupancy — Định nghĩa sự chiếm hữu của vật liệu Water trong một voxel như một giá trị giữa 0 (không có nước) và 1 (đầy nước). Nếu <

Cuộn từ điều này cũng có một Size key với giá trị đại diện cho kích thước 3D của mỗi dữ liệu kênh.

Mẫu mã

Terrain:ReadVoxelChannels()

local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local function printRegion(terrain, region)
local channelOutput = terrain:ReadVoxelChannels(region, 4, {"SolidOccupancy", "SolidMaterial", "LiquidOccupancy"})
local size = channelOutput.Size
for x = 1, size.X do
for y = 1, size.Y do
for z = 1, size.Z do
print(("(%2i, %2i, %2i): %.2f %s %.2f"):format(x, y, z, channelOutput.SolidOccupancy[x][y][z], channelOutput.SolidMaterial[x][y][z].Name, channelOutput.LiquidOccupancy[x][y][z]))
end
end
end
end
local region = Region3.new(REGION_START, REGION_END)
printRegion(workspace.Terrain, region)

ReadVoxels

Ghi Song Song

Trả lại một khu vực nhất định của mặt đất mịn trong dạng bảng.

Tham Số

region: Region3

Vùng mục tiêu để đọc. Phải được dịch chuyển theo lưới voxel. Sẽ ném một lỗi nếu vùng quá lớn. Giới hạn hiện tại là 4194304 voxels^3.

resolution: number

Độ phân giải Voxel. Phải là 4.


Lợi Nhuận

Trả lại dữ liệu voxel thô như hai đường dữ liệu 3D.

  • materials - 3D array của Enum.Material từ khu vực mục tiêu. Cũng chứa một trường Kích thước, bằng kích thước của các ma trận đã được ghép.
  • occupancies - Một ma trận occupancies của giá trị địa điểm từ khu vực mục tiêu. Cũng chứa một trường Size, bằng kích thước của các ma trận đa dạng.

Mẫu mã

Terrain:ReadVoxels() Code Example

local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local function printRegion(terrain, region)
local materials, occupancies = terrain:ReadVoxels(region, 4)
local size = materials.Size -- Same as occupancies.Size
for x = 1, size.X, 1 do
for y = 1, size.Y, 1 do
for z = 1, size.Z, 1 do
print(("(%2i, %2i, %2i): %.2f %s"):format(x, y, z, occupancies[x][y][z], materials[x][y][z].Name))
end
end
end
end
local region = Region3.new(REGION_START, REGION_END)
printRegion(workspace.Terrain, region)

ReplaceMaterial

void

ReplaceMaterial thay thế mặt địa hình của một vùng Enum.Material nào đó bằng một vùng khác. Essentially, it is a find-and-replace operation on Region3 materials.

Hạn chế

Khi gọi phương thức này, resolution參數必須是正確的 4. 此外, Region3:ExpandToGrid()必須 được thêm vào khu vực vật liệu, i.e. các thành phần của điểm tối thiểu và tối đa của Region3 phải được chia bằng 4. S

Tham Số

region: Region3

Vùng mà hoạt động thay thế sẽ xảy ra.

resolution: number

Độ phân giải mà hoạt động thay thế sẽ diễn địa điểm; vào thời điểm này, điều này phải chính xác 4.

sourceMaterial: Enum.Material

Vật liệu cũ để được thay thế.

targetMaterial: Enum.Material

Vật liệu mới.


Lợi Nhuận

void

Mẫu mã

Terrain:ReplaceMaterial

local Workspace = game:GetService("Workspace")
local terrain = Workspace.Terrain
local region = Region3.new(Vector3.new(-20, -20, -20), Vector3.new(20, 20, 20))
local resolution = 4
local materialToReplace = Enum.Material.Grass
local replacementMaterial = Enum.Material.Asphalt
terrain:ReplaceMaterial(region, resolution, materialToReplace, replacementMaterial)

SetMaterialColor

void

Điều chỉnh màu mặt địa hình hiện tại cho địa hình được xác định. Màu mặt địa hình sẽ thay đổi màu sơ bản của nó thành màu sơ bản của màu được xác định.

Tham Số

material: Enum.Material
value: Color3

Lợi Nhuận

void

WorldToCell

Trả về vị trí màn hình đang hiển thị vị trí điểm .

Tham Số

position: Vector3

Lợi Nhuận

WorldToCellPreferEmpty

Trả về vị trí màn hình trong lưới chứa vị trí điểm, thích hợp khi vị trí ở một cạnh lưới.

Tham Số

position: Vector3

Lợi Nhuận

WorldToCellPreferSolid

Trả về vị trí màn hình trong lưới màu đỏ, bao gồm vị trí điểm, để đảm bảo màn hình không rỗi khi vị trí ở một cạnh lưới.

Tham Số

position: Vector3

Lợi Nhuận

WriteVoxelChannels

void

Định vị một khu vực của địa hình bằng cách sử dụng từ điển dữ liệu kênh voxel.

Tham Số

region: Region3

Vùng mục tiêu để viết. Phải được dịch chuyển theo lưới voxel. Sẽ ném lỗi nếu vùng quá lớn; giới hạn hiện tại là 4194304 voxels³.

resolution: number

Độ phân giải Voxel. Phải là 4.

channels: Dictionary

Từ điển dữ liệu voxel tương tự giá trị trả về của ReadVoxelChannels() . Các chìa khóa đại diện mỗi ID kênh với giá trị tương ứng của họ như một dải 3D dữ liệu. Cục từ điển có thể hỗ trợ một hoặc nhiều lựa chọn kê

  • SolidMaterial — Vật liệu Enum.Material của voxel. Lưu ý rằng Water không còn được hỗ trợ nữa; thay vào đó, một voxel chứa chỉ nư
  • SolidOccupancy — Kích thước của vật liệu voxel như được quy định trong kênh SolidMaterial này. Đây nên là một giá trị từ 0 (trống) đến 1 (đầy đủ).
  • LiquidOccupancy — Định nghĩa sự chiếm hữu của vật liệu Water trong một voxel như một giá trị giữa 0 (không có nước) và 1 (đầy nước). Nếu <

Lợi Nhuận

void

Mẫu mã

Terrain:WriteVoxelChannels()

local region = Region3.new(Vector3.new(0, 0, 0), Vector3.new(64, 32, 64))
local RESOLUTION = 4
local OCC_EPSILON = 1/256
local function generateRandomTerrainInRegion(regionInput)
local region = regionInput:ExpandToGrid(4)
local size = region.Size / 4
local solidMaterials = {}
local solidOccupancies = {}
local waterOcc = {}
for x = 1, size.X do
table.insert(solidMaterials, {})
table.insert(solidOccupancies, {})
table.insert(waterOcc, {})
for y = 1, size.Y do
table.insert(solidMaterials[x], {})
table.insert(solidOccupancies[x], {})
table.insert(waterOcc[x], {})
for z = 1, size.Z do
local mat = if math.random() < 0.5 then Enum.Material.Air else Enum.Material.Sand
local occ = 0
local water = math.random()
if mat == Enum.Material.Sand then
occ = math.random() / 2 + 0.5
if occ > 1 - OCC_EPSILON then
water = 0 -- Solids cannot contain water
end
else
occ = 0
end
table.insert(solidMaterials[x][y], mat)
table.insert(solidOccupancies[x][y], occ)
table.insert(waterOcc[x][y], water)
end
end
end
return {SolidMaterial = solidMaterials, SolidOccupancy = solidOccupancies, LiquidOccupancy = waterOcc}
end
local regionContent = generateRandomTerrainInRegion(region)
workspace.Terrain:WriteVoxelChannels(region, 4, regionContent)

WriteVoxels

void

Đặt một khu vực nhất định của mặt đất mịn bằng cách sử dụng hình dạng bảng.

Tham Số

region: Region3

Vùng mục tiêu để viết. Phải được tham chiếu đến lưới voxel. Sẽ ném lỗi nếu vùng quá lớn.

resolution: number

Độ phân giải Voxel. Phải là 4.

materials: Array

3D array ofENSEMBLE. Vị trí điểm 3D của Dimensions phải hoàn toàn trùng kích thước của vùng mục tiêu trong voxels.

occupancy: Array

3D array of voxel occupations (number between 0 and 1). Các kích thước phải hoàn toàn trùng kích thước của vùng mục tiêu trong voxels.


Lợi Nhuận

void

Mẫu mã

Example

local Workspace = game:GetService("Workspace")
local terrain = Workspace.Terrain
local resolution = 4
local region = Region3.new(Vector3.new(0, 0, 0), Vector3.new(16, 28, 20)):ExpandToGrid(resolution)
local materials = {
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.Sand,
Enum.Material.Sand,
Enum.Material.Sand,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Snow, Enum.Material.Air },
},
{
{
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
Enum.Material.CrackedLava,
},
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock, Enum.Material.Rock },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand, Enum.Material.Sand },
{ Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud, Enum.Material.Mud },
{ Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air, Enum.Material.Air },
},
}
local occupancies = {
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 0.5, 0.5, 0.5, 0.5 },
{ 0, 0, 0, 0, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 1, 1, 1, 0.5 },
{ 0, 1, 1, 1, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 1, 1, 1, 0.5 },
{ 0, 1, 1, 1, 0 },
},
{
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0.5, 0.5, 0.5, 0.5, 0.5 },
{ 0, 0, 0, 0, 0 },
},
}
terrain:WriteVoxels(region, resolution, materials, occupancies)
Maximum Region Size

local REGION_START = Vector3.new(-20, -20, -20)
local REGION_END = Vector3.new(20, 20, 20)
local CFRAME = CFrame.new(0, 20, 0)
local SIZE = 50
local function getRegionVolumeVoxels(region)
local resolution = 4
local size = region.Size
return (size.x / resolution) * (size.y / resolution) * (size.z / resolution)
end
local function isRegionTooLargeForReadWriteVoxels(region)
return getRegionVolumeVoxels(region) > 4194304
end
local function isRegionTooLarge(region)
return getRegionVolumeVoxels(region) > 67108864
end
-- Helper function to get an axis-aligned Region3 from the given cframe and size
local function getAABBRegion(cframe, size)
local inv = cframe:Inverse()
local x = size * inv.RightVector
local y = size * inv.UpVector
local z = size * inv.LookVector
local w = math.abs(x.X) + math.abs(x.Y) + math.abs(x.Z)
local h = math.abs(y.X) + math.abs(y.Y) + math.abs(y.Z)
local d = math.abs(z.X) + math.abs(z.Y) + math.abs(z.Z)
local pos = cframe.Position
local halfSize = Vector3.new(w, h, d) / 2
return Region3.new(pos - halfSize, pos + halfSize):ExpandToGrid(4)
end
-- Specific functions for checking individual methods
local function isRegionTooLargeForFillBall(cframe, radius)
local diameter = radius * 2
return isRegionTooLarge(getAABBRegion(cframe, Vector3.new(diameter, diameter, diameter)))
end
local function isRegionTooLargeForFillBlock(cframe, size)
return isRegionTooLarge(getAABBRegion(cframe, size))
end
local function isRegionTooLargeForFillCylinder(cframe, height, radius)
local diameter = radius * 2
return isRegionTooLarge(getAABBRegion(cframe, Vector3.new(diameter, height, diameter)))
end
local function isRegionTooLargeForFillRegion(region)
return isRegionTooLarge(region)
end
local function isRegionTooLargeForFillWedge(cframe, size)
return isRegionTooLarge(getAABBRegion(cframe, size))
end
local function isRegionTooLargeForReplaceMaterial(region)
return isRegionTooLarge(region)
end
local region = Region3.new(REGION_START, REGION_END)
print(isRegionTooLargeForReadWriteVoxels(region))
print(isRegionTooLargeForFillBall(CFRAME, SIZE))
print(isRegionTooLargeForFillBlock(CFRAME, SIZE))
print(isRegionTooLargeForFillCylinder(CFRAME, SIZE, SIZE))
print(isRegionTooLargeForFillRegion(region))
print(isRegionTooLargeForFillWedge(CFRAME, SIZE))
print(isRegionTooLargeForReplaceMaterial(region))

Sự Kiện