Terrain

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável

O terreno permite que você crie ambientes dinâmicos morfáveis com pouco ou nenhum atraso.Atualmente, é baseado em uma grade 4×4×4 de células, onde cada célula tem um número entre 0 e 1 que representa quanto a geometria deve ocupar a célula e o material da célula.A ocupação determina como a célula se transformará junto com as células circundantes, e o resultado é a ilusão de não ter restrição de grade.

Para mais informações, veja Terreno.

Resumo

Propriedades

Propriedades herdados de BasePartPropriedades herdados de PVInstance

Métodos

Métodos herdados de BasePartMétodos herdados de PVInstance

Eventos

Eventos herdados de BasePart

Propriedades

Decoration

Não scriptável
Ler Parallel

Atualmente ativa ou desativa grama animada no material do terreno Grama , embora modificações futuras dessa propriedade possam controlar características decorativas adicionais.

GrassLength

Não scriptável
Ler Parallel

Specifica o comprimento da grama animada no material do terreno Grama , assumindo que Decoration esteja habilitado. Os valores válidos estão entre 0.1 e 1.

MaterialColors

BinaryString
Não scriptável
Ler Parallel

MaterialColors representa o editor para a funcionalidade de Cor do Material e não pode ser editado por scripts .

Para obter a cor de um material, use: Terrain:GetMaterialColor()

Para definir a cor de um material, use: Terrain:SetMaterialColor()

MaxExtents

Somente leitura
Não replicado
Ler Parallel

Mostra os limites da região editável mais grande possível.

WaterColor

Ler Parallel

A tonalidade da água do Terreno.

WaterReflectance

Ler Parallel

Controla quão opaca as reflexões de água do Terreno são.

WaterTransparency

Ler Parallel

A transparência da água do Terreno.

WaterWaveSize

Ler Parallel

Define a altura máxima das ondas de água do Terreno em studs. Isso é atualmente restrito entre 0 e 1.

WaterWaveSpeed

Ler Parallel

Define quantas vezes as ondas de água do terreno se moverão para cima e para baixo a cada minuto. Isso é atualmente restrito entre 0 e 100.

Métodos

CellCenterToWorld

Retorna a posição mundial do centro da célula de terreno (x, y, z).

Parâmetros

Valor Padrão: ""
Valor Padrão: ""
Valor Padrão: ""

Devolução

CellCornerToWorld

Retorna a posição do canto inferior esquerdo para frente da célula de grade (x, y, z).

Parâmetros

Valor Padrão: ""
Valor Padrão: ""
Valor Padrão: ""

Devolução

Clear

()

Limpa o terreno.


Devolução

()

ClearVoxelsAsync_beta

()

Parâmetros

region: Region3
Valor Padrão: ""
channelIds: Array
Valor Padrão: ""

Devolução

()

CopyRegion

Armazena um pedaço de terreno em um objeto TerrainRegion para que possa ser carregado de volta mais tarde.Nota: TerrainRegion dados não se replicam entre o servidor e o cliente.

Parâmetros

region: Region3int16
Valor Padrão: ""

Devolução

Amostras de código

The following code will copy the whole Terrain and clear it. After 5 seconds it will paste the terrain back.

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

Retorna o número de células não vazias no Terreno.


Devolução

FillBall

()

Preenche uma bola de terreno liso em um espaço dado.

Parâmetros

center: Vector3

A posição do centro da bola de terreno.

Valor Padrão: ""
radius: number

O raio em studs da bola de terreno.

Valor Padrão: ""
material: Enum.Material

O Enum.Material da bola de terreno .

Valor Padrão: ""

Devolução

()

Amostras de código

Terrain:FillBall() creates a ball of terrain given a center position, ball radius, and terrain materials.

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

()

Preenche um bloco de terreno liso com uma localização, rotação, tamanho e material dados.

Parâmetros

cframe: CFrame

A posição e orientação do bloco de terreno.

Valor Padrão: ""
size: Vector3

O tamanho em studs do bloco quadrado - tanto a altura quanto a largura.

Valor Padrão: ""
material: Enum.Material

O Enum.Material do bloco de terreno.

Valor Padrão: ""

Devolução

()

FillCylinder

()

Preenche um cilindro de terreno liso em um espaço dado. O espaço é definido usando um CFrame, altura e raio.


local Workspace = game:GetService("Workspace")
Workspace.Terrain:FillCylinder(CFrame.new(0, 50, 0), 5, 30, Enum.Material.Asphalt)

Parâmetros

cframe: CFrame

A posição e orientação do cilindro de terreno.

Valor Padrão: ""
height: number

A altura em studs do cilindro de terreno.

Valor Padrão: ""
radius: number

O raio em studs do cilindro de terreno.

Valor Padrão: ""
material: Enum.Material

O Enum.Material da cilindro de terreno.

Valor Padrão: ""

Devolução

()

FillRegion

()

Preenche um espaço Region3 com terreno liso.

Parâmetros

region: Region3
Valor Padrão: ""
resolution: number
Valor Padrão: ""
material: Enum.Material
Valor Padrão: ""

Devolução

()

FillWedge

()

preenche um volume em forma de cunha de com o dado e o tamanho e a área da área.A orientação da cunha é a mesma de um equivalente WedgePart .

Parâmetros

cframe: CFrame

A posição e orientação da cunha para preencher.

Valor Padrão: ""
size: Vector3

O tamanho do cunha para preencher.

Valor Padrão: ""
material: Enum.Material

O material com o qual a cunha será preenchida.

Valor Padrão: ""

Devolução

()

GetMaterialColor

Escrever Parallel

Retorna a cor do material de terreno atual para o material de terreno especificado.

Parâmetros

material: Enum.Material
Valor Padrão: ""

Devolução

IterateVoxelsAsync_beta

Parâmetros

region: Region3
Valor Padrão: ""
resolution: number
Valor Padrão: ""
channelIds: Array
Valor Padrão: ""

Devolução

ModifyVoxelsAsync_beta

Parâmetros

region: Region3
Valor Padrão: ""
resolution: number
Valor Padrão: ""
channelIds: Array
Valor Padrão: ""

Devolução

PasteRegion

()

Aplica um pedaço de terreno ao objeto Terreno. Nota: TerrainRegion dados não se replicam entre o servidor e o cliente.

Parâmetros

Valor Padrão: ""
corner: Vector3int16
Valor Padrão: ""
pasteEmptyCells: boolean
Valor Padrão: ""

Devolução

()

Amostras de código

Creates some terrain, copies it, then pastes it using the following API:

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

Escrever Parallel

Retorna uma região de dados de terreno em formato de tabela com base nos nomes dos canais.

Parâmetros

region: Region3

Região alvo para ler. Deve estar alinhada à grade de voxel. Será lançado um erro se a região for muito grande; o limite é atualmente 4194304 voxels³.

Valor Padrão: ""
resolution: number

Resolução de voxel. Deve ser 4.

Valor Padrão: ""
channelIds: Array

Array de IDs de canal ( strings ) que precisam ser acessados a partir dos dados do voxel.Cada ID de canal representa um tipo de dado que é armazenado em voxel.Os IDs suportados atuais são {"SolidMaterial", "SolidOccupancy", "LiquidOccupancy"} .

Valor Padrão: ""

Devolução

Retorna dados de voxel como um dicionário com base na entrada channelIds. As chaves representam cada ID de canal com seu respectivo valor como um array de dados 3D.

  • SolidMaterial — O material Enum.Material da voxela.Observe que Water não é mais suportado; em vez disso, um voxel que contém água terá um valor de LiquidOccupancy .
  • SolidOccupancy — A ocupação do material do voxel como especificado no canal SolidMaterial. Este é um valor entre 0 (vazio) e 1 (completo).
  • LiquidOccupancy — Especifica a ocupação do material Water em um voxel como um valor entre 0 (sem água) e 1 (cheio de água).Se o SolidOccupancy for 1 e o SolidMaterial não for Air, isso será 0.

O dicionário também contém uma chave Size com um valor que representa o tamanho do arranjo 3D de cada dado de canal.

Amostras de código

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

Escrever Parallel

Retorna uma determinada região de terreno liso no formato de tabela.

Parâmetros

region: Region3

Região alvo para ler. Deve estar alinhada à grade de voxel. Será lançado um erro se a região for muito grande. O limite é atualmente 4194304 voxels^3.

Valor Padrão: ""
resolution: number

Resolução de voxel. Deve ser 4.

Valor Padrão: ""

Devolução

Retorna dados brutos de voxel como dois arrays 3D.

  • materials - 3D array de Enum.Material da área alvo. Também contém um campo de Tamanho, igual às dimensões dos arrays aninhados.
  • occupancies - 3D array de valores de ocupação da área alvo. Também contém um campo de Tamanho, igual às dimensões dos arrays aninhados.

Amostras de código

Terreno:Exemplo de Código ReadVoxels()

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 -- O mesmo que ocupações.Tamanho
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

Parâmetros

region: Region3
Valor Padrão: ""
resolution: number
Valor Padrão: ""
channelIds: Array
Valor Padrão: ""

Devolução

ReplaceMaterial

()

O ReplaceMaterial substitui o terreno de um determinado Enum.Material dentro de um Region3 com outro material.Basicamente, é uma operação de busca e substituição em Terrain materiais.

Con restricções

Ao chamar este método, o parâmetro resolution deve ser exatamente 4.Além disso, a Região3 deve estar alinhada à grade de materiais de terreno, ou seja:os componentes dos pontos mínimo e máximo da Região3 devem ser divisíveis por 4.Use Region3:ExpandToGrid() para tornar uma região compatível com essa função.

Parâmetros

region: Region3

A região em que a operação de substituição ocorrerá.

Valor Padrão: ""
resolution: number

A resolução em que a operação de substituição ocorrerá; no momento este deve ser exatamente 4.

Valor Padrão: ""
sourceMaterial: Enum.Material

O material antigo que deve ser substituído.

Valor Padrão: ""
targetMaterial: Enum.Material

O novo material.

Valor Padrão: ""

Devolução

()

Amostras de código

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.

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

()

Define a cor do material do terreno atual para o material de terreno especificado. O material do terreno mudará sua cor base para a cor especificada.

Parâmetros

material: Enum.Material
Valor Padrão: ""
value: Color3
Valor Padrão: ""

Devolução

()

WorldToCell

Retorna a localização da célula de grade que contém a posição do ponto **** .

Parâmetros

position: Vector3
Valor Padrão: ""

Devolução

WorldToCellPreferEmpty

Retorna a localização da célula de grade que contém a posição do ponto, preferindo células de grade vazias quando a posição está em uma borda de grade.

Parâmetros

position: Vector3
Valor Padrão: ""

Devolução

WorldToCellPreferSolid

Retorna a localização da célula de grade que contém a posição do ponto, preferindo células de grade não vazias quando a posição está em uma borda de grade.

Parâmetros

position: Vector3
Valor Padrão: ""

Devolução

WriteVoxelChannels

()

Define uma região de terreno usando um dicionário de dados de canal de voxel.

Parâmetros

region: Region3

Região alvo para escrever. Deve estar alinhada à grade de voxel. Será lançado um erro se a região for muito grande; o limite é atualmente 4194304 voxels³.

Valor Padrão: ""
resolution: number

Resolução de voxel. Deve ser 4.

Valor Padrão: ""
channels: Dictionary

Dicionário de dados de voxel semelhante ao valor de retorno de ReadVoxelChannels() .Chaves representam cada ID de canal com seu respectivo valor como um conjunto de dados 3D.O dicionário pode suportar entradas de canal único ou múltiplo.

  • SolidMaterial — O material Enum.Material da voxela.Observe que Water não é mais suportado; em vez disso, um voxel que contém apenas água deve ser inserido como SolidMaterial = Enum.Material.Air, LiquidOccupancy = x, onde x é um número entre 0 (exclusivo) e 1 (inclusivo).
  • SolidOccupancy — A ocupação do material do voxel como especificado no canal SolidMaterial. Este deve ser um valor entre 0 (vazio) e 1 (completo).
  • LiquidOccupancy — Especifica a ocupação do material Water em um voxel como um valor entre 0 (sem água) e 1 (cheio de água).Se o SolidOccupancy for 1 e o SolidMaterial não for Air, isso será 0.
Valor Padrão: ""

Devolução

()

Amostras de código

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

()

Define uma determinada região de terreno liso usando o formato de tabela.

Parâmetros

region: Region3

Região alvo para escrever. Deve estar alinhada à grade de voxel. Será lançado um erro se a região for muito grande.

Valor Padrão: ""
resolution: number

Resolução de voxel. Deve ser 4.

Valor Padrão: ""
materials: Array

O arranjo 3D de Enum.Material. Dimensions deve exatamente corresponder ao tamanho da região alvo em voxels.

Valor Padrão: ""
occupancy: Array

3D array de ocupações de voxel (numbero entre 0 e 1). As dimensões devem exatamente corresponder ao tamanho da região alvo em voxels.

Valor Padrão: ""

Devolução

()

Amostras de código

Exemplo

Exemplo

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.

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))

WriteVoxelsAsync_beta

Parâmetros

region: Region3
Valor Padrão: ""
resolution: number
Valor Padrão: ""
channelIds: Array
Valor Padrão: ""

Devolução

Eventos