DataModelMesh
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
DataModelMesh adalah kelas abstrak dari mana kelas mesh turun.
Kelas Mesh adalah objek yang, saat diberi kepada BaseParts , mengubah penampilan bagian menjadi seperti mesh yang telah ditentukan sebelumnya.Catatan, mereka hanya mengubah penampilan bagian dan bukan batas fisika/tabrakan bagian.Pengembang yang ingin menerapkan mesh ke bagian yang mengubah kolisi bagian harus menggunakan MeshParts .
Perhatikan bahwa kelas MeshPart dan CharacterMesh tidak turun dari DataModelMesh.
Rangkuman
Properti
Offset dari sebuah meshes menentukan posisi relatif dari BasePart.Position dari sebuah BasePart yang meshes akan ditampilkan di.
Skala dari mesh menentukan ukuran mesh relatif terhadap dimensi aslinya.
Mengubah nuansa tekstur mesh, digunakan dengan FileMesh.TextureId .
Properti
Offset
Offset dari mesh menentukan jarak dari BasePart.Position dari BasePart bahwa mesh akan ditampilkan.
Cara menggunakan offset mesh
Properti Offset mengubah posisi relatif di mana mesh akan ditampilkan.Sebagai contoh, offset 0, 5, 0 akan menyebabkan mesh ditampilkan 5 kancing di atas posisi BasePart .
Posisi BasePart tetap tidak berubah, artinya kotak kolisi fisika bagian akan tetap berada di lokasi yang sama.Ini ditunjukkan dalam gambar di bawah ini di mana garis hijau (a SelectionBox ) menunjukkan batas-batas BasePart .
Penggunaan lain untuk offset mesh
Ada beberapa penggunaan menarik untuk properti offset mesh.
- Offset dan DataModelMesh.Scale dapat dianimasikan menggunakan TweenService relatif murah karena mesin tidak perlu melakukan perhitungan fisika/tabrakan apa pun karena BasePart tidak dipindahkan.
- Mengubah hubungan antara mesh dan ekstensi tabrakannya (ditentukan oleh BasePart )
Contoh Kode
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
Scale
Skala dari mesh menentukan ukuran mesh relatif terhadap dimensi aslinya.
Cara menggunakan skala mesh
Properti skala bekerja sedikit berbeda tergantung pada jenis mesh yang digunakan.Perhatikan ukuran BasePart tetap tidak berubah, artinya kotak kolisi fisika bagian akan tetap sama.
- SpecialMesh objek dengan SpecialMesh.FileType diatur ke skala 'FileMesh' relatif terhadap dimensi asli mesh saat diunggah ke Roblox
- BlockMesh objek atau SpecialMesh objek dengan SpecialMesh.FileType diatur ke skala 'Bata', 'Pasak' atau 'Sfer' secara merata terhadap BasePart.Size dari orang tuanya
- CylinderMesh objek atau SpecialMesh objek dengan SpecialMesh.FileType diatur ke skala 'Silinder' relatif terhadap BasePart.Size dari orang tuanya.Sama untuk sumbu ketinggian silinder dan mempertahankan rasio 1:1 untuk panjang dan lebar silinder, menggunakan nilai terendah.
- SpecialMesh objek dengan SpecialMesh.FileType diatur ke 'Kepala' saat ini skala dalam cara yang tidak standar.Pengembang tidak boleh mengandalkan ini karena ada rencana untuk mengubah perilaku ini.
- SpecialMesh objek dengan SpecialMesh.FileType diatur ke skala 'Torso' dengan cara yang tidak standar.Pengembang tidak boleh mengandalkan ini karena ada rencana untuk menghapus ketikmesh ini.
Demonstrasi skala mesh
Perilaku di atas dapat dilihat dalam gambar demonstrasi berikut.
Skalarisasi linier terhadap ukuran bagian untuk 'Bata', 'Pasak' dan 'Sfera' meshes.
Skalierung linier terhadap mesh asli yang diunggah untuk 'FileMesh' meshes
Skala terbatas tidak seragam untuk 'Cylinder' meshes
Penggunaan lain untuk skala mesh
Ada beberapa penggunaan menarik untuk properti offset mesh.
- DataModelMesh.Offset dan Skala dapat dianimasikan menggunakan TweenService relatif murah karena mesin tidak perlu melakukan perhitungan fisika/tabrakan apa pun karena BasePart tidak diubah.
- Mengubah hubungan antara mesh dan ekstensi tabrakannya (ditentukan oleh BasePart )
Contoh Kode
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
VertexColor
Warna Vertex menentukan perubahan warna dari Texture dari sebuah FileMesh .Perhatikan bahwa properti ini adalah Vector3 bukan Color3 ; untuk dikonversi, gunakan properti Color3.R , Color3.G , dan Color3.B .
Meskipun properti ini memungkinkan modifikasi dasar pada tekstur, mengubah seluruh tekstur memberikan lebih banyak kontrol. Lihat MeshPart untuk lebih banyak rincian.