PartOperation

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Kelas abstrak yang semua bagian berdasarkan pemodelan padat mewarisi dari.

Rangkuman

Properti

Properti diwarisi dari TriangleMeshPartProperti diwarisi dari BasePartProperti diwarisi dari PVInstance

Metode

Metode diwarisi dari BasePartMetode diwarisi dari PVInstance

Acara

Acara diwarisi dari BasePart

Properti

RenderFidelity

Keamanan Plugin
Baca Paralel

Properti ini menentukan tingkat rincian yang akan ditampilkan bagian berbentuk padat.Ini dapat ditetapkan ke nilai mungkin dari Enum.RenderFidelity enum.

Nilai default adalah Automatic , artinya rincian bagian berdasarkan jaraknya dari kamera seperti yang dijelaskan dalam tabel berikut.


<th>Render Akurasi</th>
</tr>
</thead>
<tbody>
<tr>
<td>Kurang dari 250 kancing</td>
<td>Tertinggi</td>
</tr>
<tr>
<td>250-500 kancing</td>
<td>Sedang</td>
</tr>
<tr>
<td>500 atau lebih kancing</td>
<td>Terendah</td>
</tr>
</tbody>
Jarak dari Kamera

SmoothingAngle

Keamanan Plugin
Baca Paralel

Properti ini mewakili sudut dalam derajat untuk nilai ambang batas antara normal wajah pada bagian model berpadat.Jika perbedaan normal kurang dari nilai, normals akan disesuaikan untuk meredam perbedaan.Sementara nilai antara 30 dan 70 derajat biasanya menghasilkan hasil yang baik, nilai antara 90 dan 180 tidak direkomendasikan karena dapat menyebabkan efek "pencahayaan" pada serikat dengan tepi tajam.

Perhatikan bahwa penyглаживаan tidak mempengaruhi normal antara berbagai materi atau warna yang berbeda.

Solid modeled part with SmoothingAngle of 0

<figcaption><code>Class.PartOperation.SmoothingAngle|SmoothingAngle</code> = 0</figcaption>
Solid modeled part with SmoothingAngle of 50

<figcaption><code>Class.PartOperation.SmoothingAngle|SmoothingAngle</code> = 50</figcaption>

TriangleCount

Hanya Baca
Tidak Direplikasi
Baca Paralel

Jumlah poligon dalam model solid ini.

UsePartColor

Baca Paralel

Mengatur apakah PartOperation dapat diubah warnanya menggunakan properti BasePart.Color atau BasePart.BrickColor.Ketika benar, seluruh serikat akan diwarnai sesuai dengan Color atau BrickColor .Ketika palsu, bagian dalam serikat akan mempertahankan warna asli mereka sebelum operasi bawang dilakukan.

Metode

SubstituteGeometry

()

Menggantikan geometri dari ini PartOperation dengan geometri dari yang lain PartOperation .Ini membuat lebih mudah untuk memanfaatkan geometri dari operasi pemodelan padatan seperti UnionAsync() , SubtractAsync() , atau IntersectAsync() tetapi mempertahankan properti, atribut, tag, dan anak-anak dari bagian utama seperti Attachments , Constraints , ParticleEmitters , objek ringan, stiker, dan lainnya.Pendekatan ini juga mengelilingi "flicker" potensial penggantian sepenuhnya asli PartOperation dengan yang lain.

Perhatikan bahwa jika Anda memanggil metode ini pada PartOperation dengan anak Attachments atau Constraints , Anda harus menghitung instans yang terpengaruh dengan CalculateConstraintsToPreserve() , kemudian menjatuhkan mereka yang orangtuanya direkomendasikan adalah nil .

Parameter

source: Instance

The PartOperation yang geometrinya akan menggantikan geometri dari ini PartOperation .

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

The following example substitutes the geometry of one PartOperation with the geometry of another PartOperation, then drops constraints/attachments that should not be preserved after substitution.

Substitute Geometry and Drop Constraints

local GeometryService = game:GetService("GeometryService")
local mainPart = workspace.PurpleBlock
local otherParts = { workspace.BlueBlock }
local options = {
CollisionFidelity = Enum.CollisionFidelity.Default,
RenderFidelity = Enum.RenderFidelity.Automatic,
SplitApart = false,
}
local constraintOptions = {
tolerance = 0.1,
weldConstraintPreserve = Enum.WeldConstraintPreserve.All,
}
-- Perform union operation in pcall() since it's asyncronous
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Set first part in resulting operation as part to use for substitution
-- First part is simply an option; this can be any PartOperation
local substitutePart = newParts[1]
-- Reposition part to the position of main part
substitutePart.CFrame = mainPart.CFrame
-- Calculate constraints/attachments to either preserve or drop
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Substitute main part's geometry with substitution geometry
mainPart:SubstituteGeometry(substitutePart)
-- Drop constraints/attachments that are not automatically preserved with substitution
for _, item in pairs(recommendedTable) do
if item.Attachment then
if item.ConstraintParent == nil then
item.Constraint.Parent = nil
end
if item.AttachmentParent == nil then
item.Attachment.Parent = nil
end
elseif item.WeldConstraint then
if item.Parent == nil then
item.WeldConstraint.Parent = nil
end
end
end
-- Destroy other parts
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end

Acara