Solid modelowanie to proces łączenia części razem w wyjątkowy sposób, aby tworzyć bardziej złożone kształty znane jako związania lub 0>intersekcje0>. Możesz wykonać cztery operacje solidnego modelowania używając narzędzi w zakładce 3>Model 3>.
Narzędzie | Skrót | Opis |
---|---|---|
Unia | Shift CtrlG (Windows) Shift 1> ⌘1> 3> G3> (Mac) | Połącz dwa lub więcej części razem, aby tworzyć jedną, spójną unię. |
Interweniuj | Shift CtrlI (Windows) Shift 1> ⌘1> 3> I3> (Mac) | Połącz otaczające się części w jedną spójną wiąзę. |
Odrzuć | Shift CtrlN (Windows) Shift 1> ⌘1> 3> N3> (Mac) | Odrzucaj części, przydatne do tworzenia dziur i zaznaczeń. |
Oddzielny | Shift CtrlU (Windows) Shift 1> ⌘1> 3> U3> (Mac) | Rozdziel lub zespoł połączeń ponownie w jego poszczególnych części. |
Łączenie części
Narzędzie Unia łączy dwa lub więcej części w jedną spadającą całość UnionOperation . Domyślnie nowa unia szanuje właściwość Color każdej z jej części, choć możesz włączyć jego właściwość 1> Class.PartOperation.UsePartColor|UsePart
Aby połączyć części w jedną unię:
Wybierz wszystkie części, aby dołączyć razem.
Kliknij przycisk Unia . Wszystkie części połączone są w jedną spójną UnionOperation z imieniem Unia .
Połączające części
Narzędzie Intersect łączy różne części w jedną spójną IntersectOperation . Domyślnie kolory twarzy wynikającego interesji są pożyczone z właściwości Color z oryginalnych części, chociaż możesz włączyć jego 1> Class.PartOperation
Aby połączyć części, które się wzajemnie przenikają:
Wybierz wszystkie części do połączenia.
Kliknij przycisk Intersect . Wszystkie części połączone są w jedną spójną IntersectOperation z imieniem Intersect .
Negowanie części
Narzędzie Odrzuć odrzuca część, aby u łączyć z inną częścią , kształt negatywnej części jest odrzucony od innej części.
Aby odejść część z innych pokrewnych części:
Wybierz część, którą chcesz negować z innych części.
Kliknij Odrzuć . Część staje się NegateOperation z imieniem NegativePart i staje się różowa i przejrzysta, aby określić jej stan.
Wybierz zarówno negowaną część, jak i części, które chcesz z niej odebrać.
Kliknij Unię . Część negowana jest wycięta z włączonych pokrywających się części.
Rozdzielanie Związków lub Intersekcji
Narzędzie Separate oddziela Class.UnionOperation ponownie w jego pojedyncze części, służąc w zasadzie jako narzędzie "cofnięcia" dla związków i intersekcji.
Aby oddzielić unię lub krzyżowanie z powrotem w poszczególne części:
Wybierz UnionOperation.
Kliknij oddzielne . Części oddzielne powrót do ich oryginalnej formy.
Odwzorowanie fidelity
Domyślnie nowe solidnie modelowane operacje zawsze będą wyświetlane w Automatic render fidelity, co oznacza, że szczegół części opiera się na jej odległości od kamery, jak opisano w następującej tabeli.
Odległość od kamery | Odwzorowanie fidelity |
---|---|
Mniej niż 250 jednostek | Najwyższy |
250-500 jednostek | Średni |
500 lub więcej jednostek | Najniższy |
Zmiękczenie kąta
A solidnie zapisany model części SmoothingAngle zmootuje kąty między sąsiadującymi powierzchniami tego samego koloru lub materiału. Wyższa wartość wytwarza gładki wygląd, a niższa wartość wytwarza gładki wygląd z bardziejostrymi krawędźmi.
Podczas gdy wartość pomiędzy 30 i 70 stopni zwykle generuje dobry wynik, wartości pomiędzy 90 i 180 nie są rekomendowane, ponieważ mogą powodować efekt "ciemienia" na związkach i węzłach ostrych krawędzi.
W modelowaniu solidnym
Oprócz narzędzi Związek, Intersect i Negate w Studio możesz pozwolić graczom używać solidnych
Zwój trybunał
Aby pokazać UnionAsync() , następujące Script używa Part1 1> Class.BasePart
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3, workspace.Part4}
-- Wykonaj operację połączenia
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- Jeśli operacja się powoduje, pozycjonuj ją w tym samym miejscu i załóż ją na poziomie przestrzeni roboczej
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = workspace
end
-- Niszcz oryginalne części, które pozostają nienaruszone po operacji
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
InterceptAsync()
Aby pokazać IntersectAsync() , następujące Script używa część1 1> Class.BasePart1> z prz
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3}
-- Wykonaj operację intersekcji
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- Jeśli operacja się powoduje, pozycjonuj ją w tym samym miejscu i załóż ją na poziomie przestrzeni roboczej
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = workspace
end
-- Niszcz oryginalne części, które pozostają nienaruszone po operacji
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
SubtrybujAsync()
Aby pokazać SubtractAsync() , następujące Script używa część1 1>
local mainPart = workspace.Part1
local otherParts = {workspace.Part2, workspace.Part3, workspace.Part4}
-- Wykonaj operację odejmowania
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Jeśli operacja się powoduje, pozycjonuj ją w tym samym miejscu i załóż ją na poziomie przestrzeni roboczej
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = workspace
end
-- Niszcz oryginalne części, które pozostają nienaruszone po operacji
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end