地形讓您創建動態變形環境,並且幾乎沒有延遲。目前基於 4×4×4 格子細胞,每個細胞都有一個數字介於 0 和 1之間,代表幾何應該佔用細胞的量,以及細胞的材料。占用率決定細胞是如何與周圍的細胞一起變形的,結果是沒有網格限制的錯覺。
欲了解更多信息,請參閱地形。
概要
屬性
啟用或停用地形裝飾。
指定動畫草的長度。
MaterialColors 代表材料顏色功能的編輯器,並且 不能被腳本編輯 。
若要取得材料的顏色,請使用:Terrain:GetMaterialColor() 若要設置材料的顏色,請使用:Terrain:SetMaterialColor()
顯示最大可編輯區域的邊界。
地形水的色調。
控制地形水反射的不透明程度。
地形水的透明度。
以厘米設定地形水波的最大高度。
設置地形水波每分鐘移動上下的次數。
決定零件是否因物理學而無法移動。
零件裝配的角速度。
零件在世界空間的質量中心。
零件裝配的線速度。
零件裝配的總重量。
指向裝配的根部分。
決定零件是否會物理與音響模擬互動,類似於 CastShadow 對於照明。
決定零件後面的表面類型。
決定零件底面的表面類型。
決定零件的顏色。
決定世界中 BasePart 的位置和方向。
決定零件是否可能與其他零件碰撞。
決定零件在空間查詢操作期間是否被考慮。
決定是否 Touched 和 TouchEnded 事件在零件上發射。
決定零件是否投射陰影。
描述零件的質量中心所在的世界位置。
描述零件衝突群組的名稱。
決定零件的顏色。
指示零件目前的物理特性。
決定零件的多個物理特性。
用於啟用或禁用零件和裝配的空氣動力。
物理引擎所看到的 BasePart 實際尺寸。
決定零件前面的表面類型。
決定零件左面的表面類型。
決定只對本地客戶可見的乘數 BasePart.Transparency 。
決定零件是否可在 Studio 中選擇。
描述零件的質量、密度和體積的產品。
決定零件是否會對其剛性身體的總質量或慣性有貢獻。
決定零件的紋理和預設物理特性。
MaterialVariant 的名稱。
描述世界中零件的旋轉。
指定零件的軸偏移來自其 CFrame 。
描述零件在世界上的位置。
上次記錄物理更新的時間。
決定零件是否反映了天空盒。
描述 Resize() 方法允許的最小變更尺寸。
描述可以縮放零件的面。
確定零件右面的表面類型。
決定組裝根部分的主要規則。
零件在三軸上的旋轉度。
決定零件的尺寸(長度、寬度、高度)。
決定零件上方面的表面類型。
決定零件能被看到多少(與零件隱形度相反)。
方法
返回地形元素中心的世界位置(x,y,z)。
返回網格細胞的左下角位置(x, y, z)。
清除地形。
將一塊地形存入 TerrainRegion 對象中,以便稍後載回。注意:TerrainRegion資料不會在伺服器與客戶端之間複製。
返回地形中非空白細胞數量。
在指定空間填滿一球滑順的地形。
用給定的位置、旋轉、尺寸和材料填滿一塊平滑的地形。
在給定的空間中填滿平滑地形的筒體。
用平滑的地形填充 Region3 空間。
用給定的 Enum.Material 和地區的 CFrame 和尺寸填滿楔形體積的地形。
返回指定地形材料的現有地形材料顏色。
- IterateVoxelsAsync_beta(region : Region3,resolution : number,channelIds : Array):TerrainIterateOperation
- ModifyVoxelsAsync_beta(region : Region3,resolution : number,channelIds : Array):TerrainModifyOperation
將地形塊應用到地形對象。注意:TerrainRegion資料不會在服務器和客戶端之間複製。
返回基於通道名稱的表格中的地形體積數據的區域。
以表格形式返回特定區域的平滑地形。
- ReplaceMaterial(region : Region3,resolution : number,sourceMaterial : Enum.Material,targetMaterial : Enum.Material):()
用另一種材料取代區域內物質的地形。
設置目標地形材料的現有地形材料顏色。
返回包含點 位置 的網格細胞位置。
返回包含點位置的網格細胞位置,在位置位於網格邊緣時,優先使用空白網格細胞。
返回包含點位置的網格細胞位置,在位置位於網格邊緣時,優先使用非空白網格細胞。
使用沃塞爾通道數據辭典設置地形區域。
使用表格格式設置特定區域的平滑地形。
- WriteVoxelsAsync_beta(region : Region3,resolution : number,channelIds : Array):TerrainWriteOperation
對裝配應用角度脈沖。
在裝配的 center of mass 應用脈沖到裝配。
在指定位置應用脈沖到裝配。
返回零件是否可以相互碰撞。
檢查您是否可以設置零件的網絡所有權。
返回包含任何種類剛性聯組合的對象與零件的表。
返回連接到此零件的所有關節或限制。
返回 Mass 屬性的值。
返回這部分網絡所有者的當前玩家,或在伺服器的情況下返回 nil。
如果遊戲引擎自動決定此部分的網絡所有者,返回真值。
返回零件組合的基本零件。
返回包含這個部分交叉的所有 BasePart.CanCollide 真實零件的表。
返回零件在指定位置相對於此零件的線速度。
如果對象連接到會將其保持在位置的零件(例如 Anchored 零件),則返回真值;否則返回假值。
以相同於使用 Studio 縮放工具的方式變更對象的大小。
將指定的玩家設為網絡所有者,用於此網絡和所有連接的零件。
讓遊戲引擎動態決定誰會處理零件的物理(客戶端之一或服務伺服器)。
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
從零件和給定數陣列中的其他零件的重疊幾何圖中創建一個新的 IntersectOperation 。
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
從零件中創建一個新的 UnionOperation ,減去給定數陣列中零件所佔的幾何圖形。
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
從零件中創建一個新的 UnionOperation ,加上給定數陣列中零件所佔的幾何圖形。
獲得 PVInstance 的軸心。
將 以及所有其子孫 轉換為指定的 位置,使旋轉點現在位於指定的 位置。
屬性
MaterialColors
MaterialColors 代表材料顏色功能的編輯器,並且 不能被腳本編輯 。
要取得材料的顏色,使用:Terrain:GetMaterialColor()
要設置材料的顏色,使用:Terrain:SetMaterialColor()
方法
CellCenterToWorld
返回地形元素中心的世界位置(x,y,z)。
參數
返回
CellCornerToWorld
返回網格細胞的左下角位置(x, y, z)。
參數
返回
Clear
清除地形。
返回
CopyRegion
將一塊地形存入 TerrainRegion 對象中,以便稍後載回。注意:TerrainRegion資料不會在伺服器與客戶端之間複製。
參數
返回
範例程式碼
The following code will copy the whole Terrain and clear it. After 5 seconds it will paste the terrain back.
local terrainRegion = workspace.Terrain:CopyRegion(workspace.Terrain.MaxExtents)
workspace.Terrain:Clear()
task.wait(5)
workspace.Terrain:PasteRegion(terrainRegion, workspace.Terrain.MaxExtents.Min, true)
FillBall
在指定空間填滿一球滑順的地形。
參數
返回
範例程式碼
Terrain:FillBall() creates a ball of terrain given a center position, ball radius, and terrain materials.
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
用給定的位置、旋轉、尺寸和材料填滿一塊平滑的地形。
參數
返回
FillCylinder
在給定的空間中填滿平滑地形的筒體。空間使用 CFrame、高度和範圍來定義。
local Workspace = game:GetService("Workspace")Workspace.Terrain:FillCylinder(CFrame.new(0, 50, 0), 5, 30, Enum.Material.Asphalt)
參數
返回
FillWedge
填滿給定的 和區域的 和尺寸的楔形體積。楔子的方向與等值的 WedgePart 相同。
參數
要填充的楔子位置和方向。
要填充的楔子的尺寸。
楔子將被填滿的材料。
返回
IterateVoxelsAsync_beta
參數
返回
ModifyVoxelsAsync_beta
參數
返回
PasteRegion
將地形塊應用到地形對象。注意:TerrainRegion資料不會在服務器和客戶端之間複製。
參數
返回
範例程式碼
Creates some terrain, copies it, then pastes it using the following API:
--[[
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
返回基於通道名稱的表格中的地形體積數據的區域。
參數
要讀取的目標區域必須與音箱網格對齊。如果區域過大,將發生錯誤;目前限制為 4194304 個音箱³。
音箱解析度。必須是 4。
需要從虛擬空間數據中訪問的通道ID(字串)列表。每個通道ID代表在 voxel 中儲存的數據類型。目前支持的ID是{"SolidMaterial", "SolidOccupancy", "LiquidOccupancy"}。
返回
返回 voxel 數據作為基於 channelIds 輸入的辭典。鑰匙代表每個通道 ID 並將其值轉換為 3D 數據的陣列。
- SolidOccupancy — 在 SolidMaterial 通道中指定的音箱材料的使用率。這是一個介於 0(空)和 1(滿)之間的值。
辭典也包含一個 Size 值代表每個通道數據3D陣列大小的鑰匙。
範例程式碼
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
以表格形式返回特定區域的平滑地形。
參數
要讀取的目標區域必須與音箱網格對齊。如果區域過大,將發生錯誤。目前限制為 4194304 個音箱^3。
音箱解析度。必須是 4。
返回
以兩個 3D 陣列返回原始音箱數據。
- materials - 來自目標區域的 3D 陣列 Enum.Material 。也包含尺寸欄位,與孤立陣列的尺寸相等。
- occupancies - 來自目標區域的 3D 空間值數組。也包含一個大小欄位,等於叢集數組的尺寸。
範例程式碼
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 -- 與人口相同。尺寸
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)
ReadVoxelsAsync_beta
參數
返回
ReplaceMaterial
取代材料會將特定的 內的地形替換為另一種材料。本質上是在 Terrain 材料上的匹配和替換操作。
限制
當呼叫此方法時,resolution參數必須正確為 4。此外,區域 3 必須與地形材料網格對齊,即區域 3 的最小和最大點數必須是 4 的倍數。使用 Region3:ExpandToGrid() 將區域變更為與此功能相容。
參數
替換操作將發生的區域。
替換操作將發生的解析度;目前這必須是正確的 4。
將被替換的舊材料。
新的材料。
返回
範例程式碼
This code sample demonstrates the usage of Terrain:ReplaceMaterial() by replacing grass near the game origin with asphalt. It does this by constructing a Region3 using two Vector3s.
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
設置目標地形材料的現有地形材料顏色。地形材料將向指定顏色移動其基礎顏色。
參數
返回
WorldToCellPreferEmpty
返回包含點位置的網格細胞位置,在位置位於網格邊緣時,優先使用空白網格細胞。
參數
返回
WorldToCellPreferSolid
返回包含點位置的網格細胞位置,在位置位於網格邊緣時,優先使用非空白網格細胞。
參數
返回
WriteVoxelChannels
使用沃塞爾通道數據辭典設置地形區域。
參數
要寫入的目標區域必須與音箱網格對齊。如果區域過大,將發生錯誤;目前限制為 4194304 個音箱³。
音箱解析度。必須是 4。
與 ReadVoxelChannels() 返回值相似的音箱數據辭典。鑰匙代表每個通道ID,並以其各自的值作為3D數據的陣列。辭典可支持單個或多個通道輸入。
- SolidMaterial — 虛擬物體的 Enum.Material 材料。請注意,Water 不再支持;相反,只包含水的體素應該輸入為 SolidMaterial = Enum.Material.Air, LiquidOccupancy = x,其中 x 是介於 0(獨家)和 1(包括)之間的數字。
- SolidOccupancy — 在 SolidMaterial 通道中指定的物體材料的使用率。這應該是 0(空)和 1(滿)之間的值。
返回
範例程式碼
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
使用表格格式設置特定區域的平滑地形。
參數
要寫入的目標區域必須與音量網格對齊。如果區域過大,將發生錯誤。
音箱解析度。必須是 4。
3D枚列的 Enum.Material. 維度必須與目標區域在瓦斯中的大小完全匹配。
3D 的 voxel 佔用量處理 (數字介於 0 和 1之間)。維度必須與目標區域在 voxels 的大小相匹配。
返回
範例程式碼
範例
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)
Many terrain methods throw an error if their given region size is too large. The limit is currently 4194304 voxels^3 for ReadVoxels() and WriteVoxels(), and 67108864 voxels^3 for other methods. For methods that take a cframe + size combination (e.g. FillBlock, FillCylinder etc.), then the region volume is calculated from the AABB of the target area.
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))