固体建模

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

固体建模 是使用独特方法将 零件 组合在一起以形成更复杂的形状,例如 联接 或 0> 交叉0> 。您可以使用 3> 模型 3> 选项卡中的工具执行四个固体建模操作。

Studio's Model tab with the Solid Modeling tools highlighted.
工具快捷方式描述
联合 Shift Ctrl G (Windows) Shift 1> ⌘1> 3> G3> (Mac)加入两个或多个零件以形成一个单一的牢固联合体。
交叉点 Shift Ctrl I (Windows) Shift 1> ⌘1> 3> I3> (Mac)将交叉的零件交叉到一个固定的交叉点。
消除 Shift Ctrl N (Windows) Shift 1> ⌘1> 3> N3> (Mac)负部件,用于制作孔和矮坑。
分离 Shift Ctrl U (Windows) Shift 1> ⌘1> 3> U3> (Mac)将联合或交叉部分分离为其个々的部分。

联合零件

联合工具将两个或多个零件组合在一起,形成一个单一的UnionOperation。默认情况下,新的联合会尊重每个零件的Color属性,尽管您可以启用其1> Class.PartOperation.UsePartColor|UsePartColor1>属性来将整个联合更改

Block and cylinder parts overlapping

要将零件组合成联盟:

  1. 选择所有部分来组合在一起。

  2. 单击 联合 按钮。所有零件都合成为一个牢固的UnionOperation,并带有 联合 名称。

    Union tool indicated in Model tab

交叉部件

交叉工具 将覆盖的零件交叉成一个单一的 IntersectOperation 。默认情况下,结果交叉的零件的面色是从原始零件的 Color 属性借鉴的,尽管您可以启用其 1> Class.PartOperation.UsePartColor|UsePartColor</

Block and cylinder parts overlapping

要将相交的零件交叉:

  1. 选择所有部分进行交叉。

  2. 点击 交叉 按钮。所有零件都合成为一个完整的IntersectOperation,并带有 交叉 名称。

    Intersect tool indicated in Model tab

否定部件

消除工具 消除零件,使其当它与另一个零件联合时,零件的形状是 减去 其他零件。

Negated block overlapping a cylinder

要从其他交叉部分中减去一部分:

  1. 选择您想要从其他部分中抵消的部分。

  2. 单击 消除 。零件成为一个 NegateOperation 使用 “ 负面部分 ” 的名称,并变为粉红色和半透明以表示其状态。

    Negate tool indicated in Model tab
  3. 选择您想要减去的零件和零件。

  4. 单击 联合 。包含的交叉部分从其包含的交叉部分中切开。

    Union tool indicated in Model tab

分离联接或交叉

分离工具将一个UnionOperation 分离为其个별部分,基本上为联盟和交叉点提供“撤销”工具。

要将联合或交叉部分分离为单独部分:

  1. 选择一个 UnionOperation

  2. 单击 分离 。零件将回到原始形状。

    Separate tool indicated in Model tab

渲染质量

默认情况下,新的固体模型操作总是会在 Automatic 渲染�idelity中显示,这意味着零件的细节基于其距离从相机中距离如在下表中所示。

从相机远度渲染质量
小于 250 格最高
250-500 格中等
500 或更多的螺柱最低

光滑角度

一个坚固的模型零件的 SmoothingAngle 属性可以在同一颜色或材料的相邻表面之间滑动角度。更高的值产生滑滑的外观,而更低的值产生粗糙的外观。

值在 30 至 70 度之间通常会产生良好的结果,但值在 90 至 180 度之间不建议,因为它们可能会在锋利边缘上产生“阴影”效果,导致联接和交叉部位之间的“撞击”效果。

实验中的固体模型

除了 联合 、 交叉 和 捉迷你 工具在 Studio 中外,您可以允许玩

联盟异步器()

要示示 UnionAsync() , 请使用 Script 从工作区使用 Part1 1> Class.BasePart


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

IntersectSync()

要示示 IntersectAsync()Script 使用 Part1 从工作区中与 1> Part31> 和


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

减去异步()

要示示 SubtractAsync()Script 使用 零件1 从工作区, 1


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