การโมเดล링ของของแข็ง คือกระบวนการรวม ชิ้น เข้าด้วยกันในวิธีที่ไม่ซ้ำกันเพื่อสร้างรูปทรงที่ซับซ้อนมากขึ้นที่รู้จักกันในชื่อ สหภาพ หรือ การแยกทาง คุณสามารถดำเนินการโมเดลิ่งที่แข็งแกร่งได้สี่ครั้งโดยใช้เครื่องมือภายในแท็บ โมเดล ของแถบเครื่องมือ

เครื่องมือ | ลัด | คําอธิบาย |
---|---|---|
สหภาพ | (Windows) (Mac) | รวมส่วนสองหรือมากกว่าเพื่อสร้างสหภาพเดียวที่แข็งแกร่ง |
ซ้อนทับ | (Windows) (Mac) | ผสานชิ้นส่วนซ้อนทับเข้าด้วยกันเป็นช่องว่างเดียว |
เพิกเฉย | (Windows) (Mac) | ปฏิเสธส่วน มีประโยชน์สำหรับการสร้างหลุมและรอยบุ๋ม |
แยก | (Windows) (Mac) | แยกสหภาพหรือแยกทางแยกกลับเป็นส่วนย่อยของมัน |
ชิ้นส่วนสหภาพ
เครื่องมือ สหภาพ รวมสองส่วนหรือมากกว่าเข้าด้วยกันเพื่อสร้างเป็นของแข็งเดียว UnionOperationโดยค่าเริ่มต้น สหภาพใหม่จะเคารพคุณสมบัติ Color ของแต่ละส่วน แม้ว่าคุณจะสามารถเปิดใช้งานคุณสมบัติ UsePartColor ของมันเพื่อเปลี่ยนสหภาพทั้งหมดเป็นสีเฉพาะได้

เพื่อรวมชิ้นส่วนเข้าด้วยกันเป็นสหภาพ:
- เลือกชิ้นส่วนทั้งหมดที่คุณต้องการรวมกัน
ตัดส่วน
เครื่องมือ ซ้อน จะซ้อนส่วนที่ซ้อนทับกันเป็นของแข็งเดียว IntersectOperationโดยค่าเริ่มต้นสีใบหน้าของการแยกตัวที่ได้รับจะยืมมาจากคุณสมบัติ Color ของชิ้นส่วนเดิมแม้ว่าคุณจะสามารถเปิดใช้งานคุณสมบัติ UsePartColor เพื่อเปลี่ยนการแยกตัวทั้งหมดเป็นสีเฉพาะได้

เพื่อตัดส่วนที่ซ้อนทับกัน:
- เลือกชิ้นส่วนทั้งหมดที่คุณต้องการซ้อนทับ
ปฏิเสธส่วน
เครื่องมือ ปฏิเสธ ปฏิเสธส่วนหนึ่งเพื่อให้เมื่อมัน ผสานกับส่วนอื่น รูปร่างของส่วนที่ถูกปฏิเสธจะถูกหักออกจากส่วนอื่น

เพื่อหักส่วนออกจากส่วนที่ซ้อนทับอื่นๆ:
- เลือกส่วนที่คุณต้องการปฏิเสธจากส่วนอื่น
- คลิก ปฏิเสธ . ส่วนจะกลายเป็น NegateOperation ด้วยชื่อ NegativePart และกลายเป็นสีชมพูและโปร่งใสเพื่อระบุสถานะ
- เลือกทั้งส่วนที่ถูกปฏิเสธและส่วนที่คุณต้องการหักออก
- คลิก สหภาพ . ส่วนที่ถูกปฏิเสธจะถูกตัดออกจากส่วนที่ซ้อนกันที่รวมอยู่
สหภาพหรือแยกทางแยก
เครื่องมือแยก แยก แยกส่วนหลังออกเป็นส่วนต่างๆ โดยพื้นฐานเป็นเครื่องมือยกเลิกการทำงานสำหรับสหภาพและการแยก
เพื่อแยกสหภาพหรือแยกทางแยกกลับเป็นส่วนย่อยๆ:
- เลือกสหภาพหรือส่วนบรรทัด เช่น
- คลิก แยก . ชิ้นส่วนแยกกลับไปสู่รูปแบบเดิม
เรนเดอร์ความจงรักภักดี
โดยค่าเริ่มต้น การดำเนินการโมเดลแข็งใหม่จะแสดงเสมอในความถูกต้องของการเรนเดอร์ Automatic ซึ่งหมายความว่ารายละเอียดของชิ้นส่วนจะขึ้นอยู่กับระยะห่างจากกล้องตามที่ระบุไว้ในตารางต่อไปนี้
ระยะห่างจากกล้อง | เรนเดอร์ความจงรักภักดี |
---|---|
น้อยกว่า 250 สตัด | สูงสุด |
250-500 สตัด | ปานกลาง |
สตัด 500 หรือมากกว่า | ต่ำสุด |
มุมการบีบอัด
คุณสมบัติของชิ้นส่วนโมเดลที่แข็งแรงช่วยให้มุมระหว่างพื้นผิวที่อยู่ติดกันของสีหรือวัสดุเดียวกันนุ่มขึ้น SmoothingAngleค่าที่สูงกว่าผลิตลักษณะที่นุ่มนวลขึ้นในขณะที่ค่าที่ต่ำกว่าผลิตลักษณะที่หยาบกว่าด้วยขอบที่คมขึ้น
ในขณะที่ค่าระหว่าง 30 และ 70 ผลการค้นหาค่าระหว่าง 90 และ 180 ไม่แนะนำเนื่องจากอาจทําให้เกิดผลกระทบ "เงา" ต่อสหภาพและการแยกกับขอบที่แหลมคม


การสร้างแบบจำลอง
นอกจากเครื่องมือ สหภาพ , แตะ , และ ปฏิเสธ ใน Studio คุณสามารถอนุญาตให้ผู้เล่นใช้การดำเนินการโมเดลิงที่แข็งแกร่งขณะอยู่ภายในประสบการณ์ผ่าน UnionAsync() , IntersectAsync() และ SubtractAsync()วิธีเหล่านี้ทั้งหมดต้องถูกเรียกบน BasePart และต้องใช้ชุดของหนึ่งหรือมากกว่าส่วนที่จะรวมกัน ซับซ้อน หรือลบออกจากส่วนที่เรียก
สหภาพAsync()
เพื่อสาธิต UnionAsync() , การใช้ต่อไปนี้ Script ใช้ ส่วนที่ 1 จากพื้นที่ทำงาน, รวมกับ BasePart , ส่วนที่ 3 และ ส่วนที่ 4 จากพื้นที่ที่เกิดขึ้นในตำแหน่งเดิมของ ส่วนที่ 1 , จากนั้นผู้ปกครองผลลัพธ์ BaseParts ไปยังพื้นที่ที่เดิมของ UnionOperation ในตำแหน่งเดิมของ ส่วนที่ 1 Thai:To demonstrate , the following uses the Part1 from the workspace, unions it together with the Part2 , Part3 , and Part4 , then parents the resulting to the workspace at the original position of Part1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- ดำเนินการรวมขั้นตอน
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- หากการดำเนินการสําเร็จ ให้วางตําแหน่งไว้ในตําแหน่งเดียวกันและส่งมอบให้กับพื้นที่ทํางาน
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- ทำลายชิ้นส่วนเดิมที่ยังคงสมบูรณ์หลังการดำเนินการ
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
สะท้อนกันAsync()
เพื่อสาธิต , ต่อไปนี้ ใช้ ส่วนที่ 1 จากพื้นที่ทำงาน, ซ้อนทับกับ ส่วนที่ 2 และ ส่วนที่ 3 จากพื้นที่, จากนั้นพ่วงผลลัพธ์ ของ ไปยังพื้นที่เดิมของ ส่วนที่ 1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3}
-- ดำเนินการบดขยี้ตัวเลือก
local success, newIntersect = pcall(function()
return mainPart:IntersectAsync(otherParts)
end)
-- หากการดำเนินการสําเร็จ ให้วางตําแหน่งไว้ในตําแหน่งเดียวกันและส่งมอบให้กับพื้นที่ทํางาน
if success and newIntersect then
newIntersect.Position = mainPart.Position
newIntersect.Parent = Workspace
end
-- ทำลายชิ้นส่วนเดิมที่ยังคงสมบูรณ์หลังการดำเนินการ
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end
ลบออก Async()
เพื่อสาธิต , ต่อไปนี้ ใช้ ส่วนที่ 1 จากพื้นที่ทำงาน, ปฏิเสธ ส่วนที่ 2 , ส่วนที่ 3 และ ส่วนที่ 4 จากมัน, จากนั้นผู้ปกครองผลลัพธ์ จากพื้นที่เดิมของ ส่วนที่ 1 ไปยังพื้นที่ทำงานในตำแหน่งเดิมของ ส่วนที่ 4 Thai:To demonstrate , the following uses the Part1 from the workspace, negates the Part2 , Part3 และ Part4 จากมัน, then parents the resulting ไปยังพื้นที่ทำงานในตำแหน่งเดิมของ ส่วนที่ 1 .
local Workspace = game:GetService("Workspace")
local mainPart = Workspace.Part1
local otherParts = {Workspace.Part2, Workspace.Part3, Workspace.Part4}
-- ดำเนินการบวกลบ
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- หากการดำเนินการสําเร็จ ให้วางตําแหน่งไว้ในตําแหน่งเดียวกันและส่งมอบให้กับพื้นที่ทํางาน
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- ทำลายชิ้นส่วนเดิมที่ยังคงสมบูรณ์หลังการดำเนินการ
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end