Modelagem sólida é o processo de unir peças juntas de maneiras únicas para formar formas mais complexas conhecidas como uniões ou interseções .Você pode executar quatro operações de modelagem sólida usando as ferramentas dentro da aba Modelo da barra de ferramentas.

Ferramenta | Atalho | Descrição |
---|---|---|
União | ShiftCtrlG (Windows) Shift⌘G (Mac) | Junte duas ou mais peças para formar uma única união sólida. |
Intersecionar | ShiftCtrlI (Windows) Shift⌘I (Mac) | Interseccione partes sobrepostas em uma única interseção sólida. |
Rejeitar | ShiftCtrlN (Windows) Shift⌘N (Mac) | Negar partes, útil para fazer buracos e indenizações. |
Separado | ShiftCtrlU (Windows) Shift⌘U (Mac) | Separe a união ou interseção de volta em suas partes individuais. |
Peças de União
A ferramenta União junta duas ou mais peças para formar um único sólido ..Por padrão, uma nova união respeita a propriedade Color da cada uma de suas partes, embora você possa habilitar sua propriedade UsePartColor para mudar toda a união para uma cor específica.

Para combinar peças juntas em uma união:
- Selecione todas as peças que você deseja juntar.
Intersecionar peças
A ferramenta Intersecção intersecta peças sobrepostas em um único sólido IntersectOperation .Por padrão, as cores do rosto da interseção resultante são emprestadas da propriedade Color da parte original, embora você possa habilitar sua propriedade UsePartColor para mudar toda a interseção para uma cor específica.

Para intersectar partes sobrepostas juntas:
- Selecione todas as peças que você deseja intersectar.
- Clique no botão Intersect . Todas as peças se combinam em um sólido IntersectOperation com o nome Interseção .
Negar peças
A ferramenta Negar nega uma parte para que, quando for unida a outra parte, a forma da parte negada seja subtraída da outra parte.

Para subtrair uma parte de outras partes sobrepostas:
- Selecione a parte que você deseja negar de outras partes.
- Clique em Negar . A parte se torna um NegateOperation com o nome NegativePart e fica rosa e translúcida para indicar seu estado.
- Selecione tanto a parte negada quanto as partes que você deseja subtrair dela.
- Clique em União . A parte negada é cortada das partes sobrepostas incluídas.
Uniões ou interseções separadas
A ferramenta Separar separa um UnionOperation de volta em suas partes individuais, servindo essencialmente como uma ferramenta de "desfazer" para uniões e interseções.
Para separar uma união ou interseção de volta em partes individuais:
- Selecione a união ou interseção.
- Clique em Separar . As peças se separam de volta em sua forma original.
Renderizar fidelidade
Por padrão, novas operações modeladas sólidas sempre serão mostradas na fidelidade de renderização Automatic, o que significa que o detalhe da peça é baseado na distância dela da câmera como descrito na tabela a seguir.
Distância da Câmera | Renderizar fidelidade |
---|---|
Menos de 250 metros | Maior |
250-500 metros | Médio |
500 ou mais metros | Mais Baixa |
Ângulo de suavização
A propriedade de uma peça modelada sólida SmoothingAngle suaviza os ângulos entre as superfícies adjacentes do mesmo color ou material.Um valor mais alto produz uma aparência mais suave enquanto um valor mais baixo produz uma aparência mais áspera com mais bordas afiadas.
Enquanto um valor entre 30 e 70 graus geralmente produz um bom resultado, valores entre 90 e 180 não são recomendados, pois podem causar um efeito de "ombra" em uniões e interseções com bordas afiadas.


modelagemsólida na experiência
Além das ferramentas União , Intersecção e Negação no Studio, você pode permitir que os jogadores usem operações de modelagem sólida enquanto estiverem dentro de uma experiência através de UnionAsync(), IntersectAsync() e SubtractAsync().Todos esses métodos devem ser chamados em um BasePart e todos eles exigem um conjunto de uma ou mais partes para se unir, intersectar ou subtrair da parte chamada.
UniãoAsync()
Para demonstrar , o seguinte usa o Part1 da área de trabalho, une-o com o Part2 , Part3 e Part4 , então pais o resultante para a área de trabalho na posição original de Part1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Realizar operação de união
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- Se a operação for bem-sucedida, posicione-a no mesmo local e associá-la ao espaço de trabalho
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Destrua peças originais que permanecem intactas após a operação
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
IntersectAsync()
Para demonstrar IntersectAsync() , o seguinte Script usa o Part1 BasePart da área de trabalho, intersecta-o com o Part2 e Part3 BaseParts , então pais o resultante IntersectOperation para a área de trabalho na posição original de Part1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3}
-- Realizar operação de intersecção
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- Se a operação for bem-sucedida, posicione-a no mesmo local e associá-la ao espaço de trabalho
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = Workspace
end
-- Destrua peças originais que permanecem intactas após a operação
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
SubtraçãoAsync()
Para demonstrar , o seguinte usa o Part1 da área de trabalho, nega o Part2 , Part3 e Part4 da ele, e pais o resultante para a área de trabalho na posição original de Part1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Realizar operação de subtração
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Se a operação for bem-sucedida, posicione-a no mesmo local e associá-la ao espaço de trabalho
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Destrua peças originais que permanecem intactas após a operação
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end