Modellazione solida

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Modellazione solida è il processo di unire parti in modi unici per formare forme più complesse conosciute come unioni o intersezioni .Puoi eseguire quattro operazioni di modellazione solide utilizzando gli strumenti nella scheda Modello della barra degli strumenti.

Studio's Model tab with the Solid Modeling tools highlighted.
StrumentoScorciatoiaDescrizione
UnioneShiftCtrlG  (Windows) ShiftG (Mac)Unisci due o più parti insieme per formare un'unione solida singola.
IntersezioneShiftCtrlI  (Windows) ShiftI (Mac)Interseca parti sovrapposte in una singola intersezione solida.
RifiutaShiftCtrlN  (Windows) ShiftN (Mac)Negare le parti, utile per fare buche e indentazioni.
SeparatoShiftCtrlU  (Windows) ShiftU (Mac)Separa l'unione o l'intersezione in sue parti individuali.

Parti dell'unione

Lo strumento Unione unisce due o più parti per formare un solido singolo UnionOperation.Per impostazione predefinita, una nuova unione rispetta la proprietà Color di ciascuna delle sue parti, anche se puoi abilitare la sua proprietà UsePartColor per cambiare l'intera unione in un colore specifico.

Block and cylinder parts overlapping

Per combinare le parti insieme in un'unione:

  1. Seleziona tutte le parti che vuoi unire insieme.
  2. Fai clic sul pulsante Unione . Tutte le parti si combinano in una solida UnionOperation con il nome Unione .

Intersezione delle parti

Lo strumento Intersezione interseca le parti sovrapposte in un solido singolo IntersectOperation.Per impostazione predefinita, i colori del viso dell'intersezione risultante sono presi in prestito dalla proprietà Color della parte originale, anche se puoi abilitare la sua proprietà UsePartColor per cambiare l'intera intersezione a un colore specifico.

Block and cylinder parts overlapping

Per intersecare parti sovrapposte insieme:

  1. Seleziona tutte le parti che vuoi intersecare.
  2. Fai clic sul pulsante Intersezione . Tutte le parti si combinano in una solida IntersectOperation con il nome Intersezione .

Rifiuta parti

Lo strumento Negare nega una parte in modo che quando è unita con un'altra parte , la forma della parte negata viene sottratta dall'altra parte.

Negated block overlapping a cylinder

Per sottrarre una parte da altre parti sovrapposte:

  1. Seleziona la parte che vuoi negare da altre parti.
  2. Fai clic su Negare . La parte diventa un NegateOperation con il nome NegativePart e diventa rosa e traslucida per indicare il suo stato.
  3. Seleziona sia la parte negata che le parti da cui vuoi sottrarlo.
  4. Fai clic su Unione . La parte negata viene tagliata dalle parti sovrapposte incluse.

Unioni separate o intersezioni

Lo strumento Separate separa un UnionOperation indietro nelle sue singole parti, servendo essenzialmente come strumento "annullare" per unioni e intersezioni.

Per separare un'unione o un'intersezione in singole parti:

  1. Seleziona l'unione o l'intersezione.
  2. Fai clic su Separate . Le parti si separano nuovamente nella loro forma originale.

Rendere la fedeltà

Per impostazione predefinita, le nuove operazioni modellate solide saranno sempre visualizzate nella fedeltà del rendering Automatic, il che significa che i dettagli della parte sono basati sulla sua distanza dalla fotocamera come descritto nella seguente tabella.

Distanza dalla TelecameraRendere la fedeltà
Meno di 250 borchiePiù alto
250-500 metriMediamente
500 o più borchieMinore

Angolo di levigatura

La proprietà di una parte modellata solida SmoothingAngle leviga gli angoli tra le superfici adiacenti dello stesso colore o materiale.Un valore più alto produce un aspetto più liscio mentre un valore più basso produce un aspetto più grezzo con più bordi acuti.

Mentre un valore tra 30 e 70 gradi di solito produce un buon Risultato, i valori tra 90 e 180 non sono raccomandati poiché possono causare un effetto "ombreggiamento" su unioni e intersezioni con bordi affilati.

Modellazione solida in-experience

Oltre agli strumenti Unione , Intersezione e Negazione in Studio, puoi consentire ai giocatori di utilizzare operazioni di modellazione solide mentre sono all'interno di un'esperienza attraverso UnionAsync(), IntersectAsync() e SubtractAsync().Tutti questi metodi devono essere chiamati su un BasePart e tutti richiedono un array di una o più parti da unire, intersecare o sottrarre alla parte di chiamata.

UnioneAsync()

Per dimostrare UnionAsync() , il seguente Script utilizza il Part1 BasePart dallo spazio di lavoro, lo unisce con il Part2 , Part3 , e Part4 BaseParts , poi genitori il risultante UnionOperation alla posizione originale di Part1 .


local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Esegui l'operazione di unione
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- Se l'operazione ha successo, posizionala nello stesso luogo e affidala allo spazio di lavoro
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Distruggi le parti originali che rimangono intatte dopo l'operazione
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

IntersezioneAsync()

Per dimostrare IntersectAsync() , il seguente Script utilizza il Part1 BasePart dallo spazio di lavoro, lo interseca con il Part2 e Part3 BaseParts , poi genitori il risultante IntersectOperation allo spazio di lavoro nella posizione originale di Part1 .


local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3}
-- Eseguire l'operazione di intersezione
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- Se l'operazione ha successo, posizionala nello stesso luogo e affidala allo spazio di lavoro
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = Workspace
end
-- Distruggi le parti originali che rimangono intatte dopo l'operazione
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

SottraiAsync()

Per dimostrare , il seguente utilizza il Part1 dallo spazio di lavoro, nega il Part2 , Part3 , e Part4 dalla stessa, quindi genitori il risultante allo spazio di lavoro nella posizione originale di Part1 .


local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Eseguire l'operazione di sottrazione
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Se l'operazione ha successo, posizionala nello stesso luogo e affidala allo spazio di lavoro
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Distruggi le parti originali che rimangono intatte dopo l'operazione
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end