El modelado sólido es el proceso de unir partes de formas únicas para formar formas más complejas conocidas como uniones o intersecciones . Puede realizar cuatro operaciones de modelado sólido utilizando las herramientas dentro de la pestaña Modelo.
![Studio's Model tab with the Solid Modeling tools highlighted.](https://prod.docsiteassets.roblox.com/assets/studio/general/Model-Tab-Solid-Modeling.png)
Herramienta | Atajo | Descripción |
---|---|---|
Unión | ShiftCtrlG (Windows) Shift⌘G (Mac) | Une dos o más partes para formar una sola unión sólida. |
Intersección | ShiftCtrlI (Windows) Shift⌘I (Mac) | Intersección de partes superpuestas en una única intersección sólida. |
Negar | ShiftCtrlN (Windows) Shift⌘N (Mac) | Negar partes, útil para hacer agujeros e indentaciones. |
Separar | ShiftCtrlU (Windows) Shift⌘U (Mac) | Separa la unión o intersección en sus partes individuales. |
Piezas de Unión
La herramienta Unión une dos o más partes para formar un solo sólido UnionOperation . Por defecto, una nueva unión respeta la Color propiedad de cada una de sus partes, aunque puede habilitar su UsePartColor propiedad para cambiar la unión completa a un color específico.
![Block and cylinder parts overlapping](https://prod.docsiteassets.roblox.com/assets/modeling/solid-modeling/Separate-Parts-To-Union.jpg)
Para combinar partes en una unión:
Selecciona todas las partes para unirlas.
Haga clic en el botón Unión . Todas las partes se combinan en un sólido UnionOperation con el nombre Unión .
Partes de intersección
La herramienta Intersección interseca partes superpuestas en un solo sólido IntersectOperation . Por defecto, los colores de la cara de la intersección resultante se toman prestados de la propiedad Color de las partes originales, aunque puede habilitar su propiedad UsePartColor para cambiar la intersección completa a un color específico.
![Block and cylinder parts overlapping](https://prod.docsiteassets.roblox.com/assets/modeling/solid-modeling/Separate-Parts-To-Intersect.jpg)
Para interseccionar partes superpuestas:
Selecciona todas las partes para interseccionar.
Haga clic en el botón Intersección . Todas las partes se combinan en un sólido IntersectOperation con el nombre Intersección .
Negando Partes
La herramienta Negar niega una parte para que cuando esté unida a otra parte, la forma de la parte negada sea restada de la otra parte.
![Negated block overlapping a cylinder](https://prod.docsiteassets.roblox.com/assets/modeling/solid-modeling/Negated-Part-To-Union.jpg)
Para restar una parte de otras partes superpuestas:
Selecciona la parte que te gustaría anular de otras partes.
Haga clic en Negar . La parte se convierte en NegateOperation con el nombre NegativePart y se vuelve rosa y translúcida para indicar su estado.
Seleccione tanto la parte negativa como las partes de las que desea restarla.
Haga clic en Unión . La parte negativa se corta de las partes superpuestas incluidas.
Separando uniones o intersecciones
La herramienta Separate separa a un UnionOperation en sus partes individuales, esencialmente sirviendo como una herramienta de "deshacer" para uniones e intersecciones.
Para separar una unión o intersección en partes individuales:
Selecciona un UnionOperation .
Haga clic en Separar . Las partes se separan de nuevo en su forma original.
Rendimiento de fidelidad
De forma predeterminada, las partes modeladas de sólidos siempre se mostrarán en fidelidad precisa , sin importar lo lejos que estén de la cámara. Esto mejora su apariencia cuando se ve desde cualquier distancia, pero si un lugar tiene un gran número de partes modeladas de sólidos detalladas, puede reducir el ejecucióngeneral.
Puede controlar dinámicamente el nivel de detalle de una parte modelada sólida a través de su propiedad RenderFidelity. Cuando se establece en Automático , la parte se renderizará a un nivel de detalle diferente dependiendo de su distancia de la cámara.
Distancia de la cámara | Rendimiento de fidelidad |
---|---|
Menos de 250 pernos | Más alto |
250-500 pernos | Medio |
500 o más pernos | Más bajo |
Angulo de suavizado
La propiedad SmoothingAngle de una parte sólida modelada suaviza los ángulos entre las superficies adyacentes del mismo color o material. Un valor más alto produce una apariencia más suave, mientras que un valor más bajo produce una apariencia más rugosa con bordes más afilados.
Si bien un valor entre 30 y 70 grados generalmente produce un buen resultado, no se recomiendan valores entre 90 y 180, ya que pueden causar un efecto de "sombra" en las uniones e intersecciones con bordes afilados.
![Solid modeled part with SmoothingAngle of 0](https://prod.docsiteassets.roblox.com/assets/modeling/solid-modeling/CSG-SmoothingAngle-0.jpg)
![Solid modeled part with SmoothingAngle of 50](https://prod.docsiteassets.roblox.com/assets/modeling/solid-modeling/CSG-SmoothingAngle-50.jpg)
Modelado de sólidos en la experiencia
Además de las herramientas Union , Intersect y Negate en Studio, puedes permitir a los jugadores usar operaciones de modelado sólido mientras están dentro de una experiencia a través de UnionAsync() , IntersectAsync() y SubtractAsync() . Todos estos métodos deben ser llamados en un BasePart y todos requieren un conjunto de una o más partes para unirse, intersecar o restar de la parte que llama.
UniónAsincrona ()
Para demostrar UnionAsync(), el siguiente Script usa el Part1 BasePart del espacio de trabajo, lo une con el Part2 , Part3 y Part4 BaseParts , luego guarda el UnionOperation resultante en el espacio de trabajo en la posición original de Part1 .
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3, workspace.Part4}
-- Realiza la operación de unión
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- Si la operación tiene éxito, colóquela en la misma ubicación y apártala al espacio de trabajo
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = workspace
end
-- Destruye las partes originales que permanecen intactas después de la operación
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
Intersección Asíncrona ()
Para demostrar IntersectAsync(), el siguiente Script usa el Part1 BasePart del espacio de trabajo, lo interseca con el Part2 y Part3 BaseParts, luego guarda el IntersectOperation resultante en el espacio de trabajo en la posición original de Part1 .
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3}
-- Realiza la operación de intersección
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- Si la operación tiene éxito, colóquela en la misma ubicación y apártala al espacio de trabajo
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = workspace
end
-- Destruye las partes originales que permanecen intactas después de la operación
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
SubtractAsync ()
Para demostrar SubtractAsync(), el siguiente Script usa el Part1 BasePart del espacio de trabajo, niega el Part2 , Part3 y Part4 BaseParts de él, luego guarda el UnionOperation en el espacio de trabajo en la posición original de Part1 .
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3, workspace.Part4}
-- Realiza la operación de restar
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Si la operación tiene éxito, colóquela en la misma ubicación y apártala al espacio de trabajo
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = workspace
end
-- Destruye las partes originales que permanecen intactas después de la operación
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end