Mô hình rắn chắc là quá trình kết hợp các bộ phận với nhau theo cách độc đáo để tạo ra các hình dạng phức tạp hơn được gọi là liên minh hoặc giao lộ .Bạn có thể thực hiện bốn hoạt động mô hình rắn chắc bằng cách sử dụng các công cụ trong tab Mô hình của thanh công cụ.

Công cụ | Lối tắt | Mô tả |
---|---|---|
Liên minh | ShiftCtrlG (Windows) Shift⌘G (Mac) | Tham gia hai hoặc nhiều phần cùng nhau để tạo thành một liên minh vững chắc duy nhất. |
Vòng lặp | ShiftCtrlI (Windows) Shift⌘I (Mac) | Kết hợp các phần chồng lấp vào một sự kết hợp rắn ráo duy nhất. |
Phủ nhận | ShiftCtrlN (Windows) Shift⌘N (Mac) | Phủ nhận các phần, hữu ích để tạo lỗ và dấu chấm câu. |
Tách rời | ShiftCtrlU (Windows) Shift⌘U (Mac) | Tách liên minh hoặc giao lộ trở lại thành các phần riêng lẻ. |
Các phần liên kết
Công cụ Liên minh kết hợp hai hoặc nhiều phần cùng nhau để tạo thành một khối rắn chung UnionOperation .Mặc định, một liên minh mới tôn trọng thuộc tính Color của mỗi phần của nó, mặc dù bạn có thể bật chức năng UsePartColor của nó để thay đổi toàn bộ liên minh thành một màu cụ thể.

Để kết hợp các bộ phận lại với nhau thành một liên minh:
- Chọn tất cả các bộ phận bạn muốn gộp lại với nhau.
- Nhấp vào nút Liên minh . Tất cả các bộ phận kết hợp thành một khối rắn chắc UnionOperation với tên Liên minh .
Giao nhau các bộ phận
Công cụ Vòng chồng xác định các phần chồng lấp vào một khối rắn duy nhất IntersectOperation.Mặc định, màu của khối lượng kết hợp có được từ thuộc tính Color của các phần gốc, mặc dù bạn có thể bật chức năng UsePartColor của nó để thay đổi toàn bộ khối lượng kết hợp thành một màu cụ thể.

Để giao nhau các phần chồng lấp:
- Chọn tất cả các bộ phận bạn muốn giao nhau.
- Nhấp vào nút Giao nhau . Tất cả các bộ phận kết hợp thành một khối rắn IntersectOperation với tên Giao nhau .
Phủ nhận các phần
Công cụ Phủ nhận phủ nhận một phần để khi nó kết hợp với một phần khác , hình dạng của phần bị phủ nhận được trừ đi từ phần khác.

Để trừ một phần khỏi các phần chồng lấp khác:
- Chọn phần bạn muốn phủ nhận từ các phần khác.
- Nhấp vào Phủ nhận . Phần trở thành một NegateOperation với tên Phần tiêu cực và chuyển sang màu hồng và mờ để chỉ ra tình trạng của nó.
- Chọn cả phần bị phủ nhận và các phần bạn muốn trừ đi.
- Nhấp vào Liên minh . Phần bị phủ nhận được cắt bỏ khỏi các phần chồng lấp bao gồm.
Tách các công đoàn hoặc giao lộ
Công cụ Tách riêng tách một UnionOperation trở lại thành các phần riêng biệt, về cơ bản phục vụ như công cụ "hoàn tác" cho các công đoàn và giao lộ.
Để tách một liên minh hoặc giao lộ trở lại thành các phần riêng biệt:
- Chọn liên minh hoặc khớp.
- Nhấp vào Tách riêng . Các bộ phận tách trở lại dưới dạng ban đầu.
Hiển thị chính xác
Mặc định, các hoạt động mô hình hóa solid mới sẽ luôn được hiển thị trong độ trung thực render Automatic, có nghĩa là chi tiết của phần được dựa trên khoảng cách từ camera như được mô tả trong bảng sau.
Khoảng cách từ camera | Hiển thị chính xác |
---|---|
Ít hơn 250 khối | Cao nhất |
250-500 đinh tán | Trung bình |
500 hoặc nhiều khối | Thấp nhất |
Góc làm mịn
Tính năng của một phần được mô hình hóa vững chắc SmoothingAngle làm mịn các góc giữa các bề mặt liền kề cùng một màu hoặc vật liệu.Một giá trị cao hơn tạo ra một cái nhìn mượt hơn trong khi một giá trị thấp hơn tạo ra một cái nhìn thô hơn với nhiều cạnh sắc nét hơn.
Trong khi một giá trị nằm giữa 30 và 70 độ thường sản xuất kết quả tốt, các giá trị nằm giữa 90 và 180 không được khuyến khích vì chúng có thể gây ra hiệu ứng "bóng tối" trên các liên minh và giao lộ với các cạnh sắc nhọn.


Mô hình hóa rắn ráo trong kinh nghiệm
Ngoài các công cụ Liên minh , Phối hợp và Phủ nhận trong Studio, bạn có thể cho phép người chơi sử dụng các hoạt động mô hình hóa rắn chắc trong khi ở bên trong kinh nghiệm thông qua UnionAsync(), IntersectAsync() và SubtractAsync() .Tất cả các phương pháp này phải được gọi trên một BasePart và tất cả đều yêu cầu một mảng của một hoặc nhiều phần để kết hợp, chồng lấp hoặc trừ với phần gọi.
Liên minhAsync()
Để minh họa UnionAsync() , dưới đây Script sử dụng Phần1 BasePart từ không gian làm việc, kết hợp nó với Phần2 , Phần3 , và Phần4 BaseParts , sau đó cha mẹ kết quả là UnionOperation vào không gian ban đầu của Phần1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Thực hiện hoạt động union
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- Nếu hoạt động thành công, vị trí nó tại cùng một vị trí và gán nó cho không gian làm việc
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Phá hủy các bộ phận gốc vẫn nguyên vẹn sau khi hoạt động
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
Vượt lại Async()
Để minh họa IntersectAsync() , dưới đây Script sử dụng Phần1 BasePart từ không gian làm việc, va chạm nó với Phần2 và Phần3 BaseParts , sau đó cha mẹ kết quả IntersectOperation vào không gian làm việc tại vị trí ban đầu của Phần1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3}
-- Thực hiện hoạt động cắt nhau
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- Nếu hoạt động thành công, vị trí nó tại cùng một vị trí và gán nó cho không gian làm việc
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = Workspace
end
-- Phá hủy các bộ phận gốc vẫn nguyên vẹn sau khi hoạt động
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
Trừ bỏAsync()
Để minh họa SubtractAsync() , dưới đây Script sử dụng Phần1 BasePart từ không gian làm việc, phủ nhận Phần2 , Phần3 , và Phần4 BaseParts từ nó, sau đó cha mẹ kết quả UnionOperation vào không gian tại vị trí ban đầu của Phần1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- Thực hiện hoạt động trừ
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- Nếu hoạt động thành công, vị trí nó tại cùng một vị trí và gán nó cho không gian làm việc
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Phá hủy các bộ phận gốc vẫn nguyên vẹn sau khi hoạt động
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end