EditableMesh

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.

Tidak Dapat Dibuat

EditableMesh mengubah visualitas visual yang diterapkan ketika dikaitkan dengan MeshPart, memungkinkan untuk mengekstraksi dan modifikasi mesh baik di Studio maupun dalam pengalaman.

An EditableMesh dapat dibuat dari Content yang ada dari

Sebuah EditableMesh ditampilkan ketika terhubung ke MeshPart baru, melalui AssetService:CreateMeshPartAsync(). Anda dapat menciptakan lebih banyak 2>Class.Ed

Untuk menghitung ulang ketidakсовatan dan geometri cair setelah mengedit, Anda dapat sekali lagi memanggil AssetService:CreateMeshPartAsync() dan MeshPart:ApplyMesh() untuk menyelesaikan Class.MeshPart</

Mengaktifkan EditableMesh untuk Pengalaman Terbit

Untuk tujuan keamanan, menggunakan EditableMesh gagal secara default untuk pengalaman yang diterbitkan. Untuk mengaktifkan penggunaan, EditableMesh , Anda harus berusia 13+ dan ID terverifikasiyang diverifikasi

Izinkan

Untuk mencegah penyalahgunaan, AssetService:CreateEditableMeshAsync() hanya akan memungkinkan Anda untuk memuat dan mengedit aset mesh:

  • Itu dimiliki oleh pembuatnya pengalaman (jika pengalaman dimiliki oleh seorang individu).
  • Itu dimiliki oleh kelompok (jika pengalaman dimiliki oleh grup).
  • Itu dimiliki oleh pengguna Studio yang masuk (jika file tempat belum disimpan atau diterbitkan ke Roblox).

API menyebabkan kesalahan jika mereka digunakan untuk memuat aset yang tidak memenuhi kriteria di atas.

Meshes Tetap Ukuran

Ketika membuat EditableMesh dari aset mesh yang ada (melalui AssetService:CreateEditableMeshAsync()), mesh yang dihasilkan adalah ukuran tetap secara default. Mesh ukuran tetap lebih efisien dalam hal memori tetapi Anda tidak dapat mengubah jumlah sudut, wajah, atau属ribut. Hanya nilai vertikal dan posisi

ID Vertex/Wajah Stabil

Banyak metode EditableMesh mengambil u

Catat bahwa ID tidak dijamin untuk berada dalam urutan dan mungkin ada lubang dalam penghitungan, jadi ketika beriterasi melalui vertikal atau wajah, Anda harus beriterasi melalui tabel yang dikembalikan oleh GetVertices() atau GetFaces() .

Attribut Vertex Berpisah

Sebuah vertex adalah sudut wajah, dan secara topologis menghubungkan wajah bersama-sama. Vertik dapat memiliki beberapa属性: posisi, normal, koordinat UV, warna, dan transparansi.

Terkadang itu berguna untuk semua wajah yang menyentuh vertiks untuk menggunakan nilai属性 yang sama, tetapi kadang-kadang Anda ingin wajah yang berbeda untuk menggunakan nilai属性 yang berbeda di vertiks yang sama. Misalnya, di sebuah kubus halus, setiap vertiks hanya akan memiliki satu normal. Di sisi lain, di sudut cube

Ketika membuat wajah, setiap ujung akan secara default memiliki satu dari setiap属性: satu normal, satu koordinat UV, dan satu warna / transparansi. Jika Anda ingin membuat tampan, Anda harus membuat属性 baru dan menetapkannya di wajah. Misalnya, kode ini akan membuat kubus tajam:


local AssetService = game:GetService("AssetService")
-- Diberikan 4 ID sudut, menambahkan 2 segi baru, dan membuat quad yang tajam
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Ini menciptakan ID normal yang otomatis dihitung
local fid1 = eMesh:AddTriangle(vid0, vid1, vid2)
eMesh:SetFaceNormals(fid1, {nid, nid, nid})
local fid2 = eMesh:AddTriangle(vid0, vid2, vid3)
eMesh:SetFaceNormals(fid2, {nid, nid, nid})
end
-- Membuat kubus dengan ujung yang dibuat antara 6 sisi
local function makeSharpCube()
local eMesh = AssetService:CreateEditableMesh()
local v1 = eMesh:AddVertex(Vector3.new(0, 0, 0))
local v2 = eMesh:AddVertex(Vector3.new(1, 0, 0))
local v3 = eMesh:AddVertex(Vector3.new(0, 1, 0))
local v4 = eMesh:AddVertex(Vector3.new(1, 1, 0))
local v5 = eMesh:AddVertex(Vector3.new(0, 0, 1))
local v6 = eMesh:AddVertex(Vector3.new(1, 0, 1))
local v7 = eMesh:AddVertex(Vector3.new(0, 1, 1))
local v8 = eMesh:AddVertex(Vector3.new(1, 1, 1))
addSharpQuad(eMesh, v5, v6, v8, v7) -- Depan
addSharpQuad(eMesh, v1, v3, v4, v2) -- Kembali
addSharpQuad(eMesh, v1, v5, v7, v3) -- Kiri
addSharpQuad(eMesh, v2, v4, v8, v6) -- Kanan
addSharpQuad(eMesh, v1, v2, v6, v5) -- Bawah
addSharpQuad(eMesh, v3, v7, v8, v4) -- Atas
eMesh:RemoveUnused()
return eMesh
end
Menyusul

Wajah meshes memiliki sisi depan dan sisi belakang. Saat mengecualikan meshes, hanya bagian depan wajah yang ditunjukkan secara default, meskipun Anda dapat mengubah ini dengan menetapkan propinsi mesin peta DoubleSided ke true .

Urutan vertikal di sekitar wajah menentukan apakah Anda melihat ke depan atau ke kembali. Bagian depan wajah terlihat ketika vertikal bergerak terbalik di sekitarnya.

Order of the vertices around the face
Keterbatasan

EditableMesh saat ini memiliki batas 60.000 vert dan 20.000 segi tiga. Mencoba menambahkan terlalu banyak vert atau segi tiga akan menyebabkan kesalahan.

Rangkuman

Properti

Metode

Properti

FixedSize

Hanya Baca
Tidak Direplikasi
Keamanan Roblox
Baca Paralel

SkinningEnabled

Baca Paralel

Metode

AddColor

Menambahkan warna baru ke geometri dan mengembalikan ID warna yang stabil.

Parameter

color: Color3

Warna baru.

alpha: number

Warna alfa (transparansi).


Memberikan nilai

ID warna yang stabil dari warna baru.

AddNormal

Menambahkan normal baru ke geometri dan mengembalikan ID normal yang stabil. Jika nilai normal tidak ditentukan, normal akan dihitung secara otomatis.

Parameter

normal: Vector3

Vektor normal. Jika nilai normal tidak ditentukan, normal akan dihitung secara otomatis.


Memberikan nilai

ID normal yang stabil dari baru normal.

AddTriangle

Menambahkan segi baru ke mesh dan mengembalikan ID wajah yang stabil.

Parameter

vertexId0: number

ID dari vertiks pertama dari segi tiga.

vertexId1: number

ID dari vertiks kedua dari segi tiga.

vertexId2: number

ID dari sudut ketiga dari segi tiga.


Memberikan nilai

ID wajah yang stabil dari wajah baru.

AddUV

Menambahkan UV baru ke geometri dan mengembalikan ID UV yang stabil.

Parameter

Koordinat UV baru.


Memberikan nilai

ID UV yang stabil dariUV baru.

AddVertex

Menambahkan vertikal baru ke geometri dan mengembalikan ID vertikal yang stabil.

Parameter

Posisi di ruang lokal objek meshes.


Memberikan nilai

ID vertiks yang stabil dari vertiks baru.

Destroy

void

Menghancurkan konten mesh, segera mengklaim kembali memori yang digunakan.


Memberikan nilai

void

FindClosestPointOnSurface

Menemukan titik terdekat di permukaan mesh. Mengembalikan ID wajah, poin di permukaan mesh, dan koordinat barycentric dari posisi di wajah. Lihat RaycastLocal() untuk lebih banyak informasi tentang koordinat barycentric.

Parameter

point: Vector3

Posisi titik dalam ruang lokal objek.


Memberikan nilai

Templat ID wajah, poin pada mesh dalam ruang lokal objek, dan koordinat barysentris dari posisi dalam wajah.

FindClosestVertex

Menemukan vertiks terdekat ke titik tertentu dalam ruang dan mengembalikan ID vertiks yang stabil.

Parameter

toThisPoint: Vector3

Posisi titik dalam ruang lokal objek.


Memberikan nilai

ID vertiks stabil terdekat ke titik yang ditentukan dalam ruang.

FindVerticesWithinSphere

Menemukan semua sudut dalam satu sphere spesifik dan mengembalikan daftar ID sudut yang stabil.

Parameter

center: Vector3

Pusat dari bola di ruang lokal mesin.

radius: number

Radius dari bola.


Memberikan nilai

Daftar ID vertikal yang stabil dalam lingkup yang diminta.

GetAdjacentFaces

Memberikan ID wajah yang stabil, mengembalikan daftar wajah yang berdekatan.

Adjacent faces indicated around requested face

Parameter

faceId: number

Memberikan nilai

Daftar ID wajah yang berdekatan dengan wajah yang diberikan.

GetAdjacentVertices

Memberikan ID vertiks tunggal yang stabil, menghasilkan daftar vertiks tetangga.

Adjacent vertices indicated around requested vertex

Parameter

vertexId: number

ID Vertex di sekitar yang akan mendapatkan vertiks tetangga.


Memberikan nilai

Daftar ID vertiks tetangga di sekitar ID vertiks yang diberikan.

GetCenter


Memberikan nilai

Pusat dari kotak batas EditableMesh .

GetColor

Mengembalikan warna untuk ID warna yang diberikan.

Parameter

colorId: number

ID warna untuk mendapatkan warna.


Memberikan nilai

Warna untuk ID warna yang diminta.

GetColorAlpha

Mengembalikan warna alpha (transparansi) pada ID warna yang diberikan.

Parameter

colorId: number

ID warna untuk mendapatkan alpha.


Memberikan nilai

Warna alpha pada tawaran warna yang stabil.

GetColors

Mengembalikan semua warna dari mesh sebagai daftar ID warna yang stabil.


Memberikan nilai

Daftar ID warna yang stabil.

GetFaceColors

Mengembalikan ID warna wajah untuk vertikal di wajah.

Parameter

faceId: number

ID Wajah untuk mendapatkan ID Warna.


Memberikan nilai

Daftar ID warna yang digunakan untuk vertikal di wajah yang diberikan.

GetFaceNormals

Mengembalikan ID wajah normal untuk vertikal di wajah.

Parameter

faceId: number

Wajah ID untuk mendapatkan ID yang normal.


Memberikan nilai

Daftar ID biasa yang digunakan untuk vertikal di wajah yang diberikan.

GetFaceUVs

Mengembalikan ID UV wajah untuk vertikal di wajah.

Parameter

faceId: number

ID Wajah untuk mendapatkan ID UV.


Memberikan nilai

Daftar ID UV yang digunakan untuk vertikal di wajah yang diberikan.

GetFaceVertices

Mengembalikan ID vertikal wajah.

Parameter

faceId: number

Memberikan nilai

Daftar ID vertex di sekitar wajah yang diberikan.

GetFaces

Mengembalikan semua wajah dari mesh sebagai daftar ID wajah yang stabil.


Memberikan nilai

Daftar ID wajah yang stabil.

GetFacesWithAttribute

Mengembalikan daftar wajah yang menggunakan ID sudut tertentu, ID normal, ID UV, atau ID warna.

Parameter

id: number

IDribut ID untuk menemukan wajah yang menggunakannya.


Memberikan nilai

Daftar ID wajah yang menggunakan ID属性 yang diberikan.

GetNormal

Mengembalikan vektor normal untuk ID yang diberikan.

Parameter

normalId: number

ID normal untuk mendapatkan vektor normal.


Memberikan nilai

Vektor normal pada ID normal yang diminta.

GetNormals

Mengembalikan semua normal dari mesh sebagai daftar ID normal yang stabil.


Memberikan nilai

Daftar ID normal yang stabil.

GetPosition

Mendapatkan posisi vertiks di ruang lokal objek.

Parameter

vertexId: number

ID vertiks yang stabil untuk mendapatkan posisi.


Memberikan nilai

Posisi vertiks di ruang lokal mesin.

GetSize


Memberikan nilai

Ukuran EditableMesh .

GetUV

Mengembalikan koordinat UV diberikan ID UV.

Parameter

uvId: number

ID UV untuk mendapatkan koordinat UV.


Memberikan nilai

Menghasilkan koordinat UV di ID UV yang diminta.

GetUVs

Mengembalikan semua UV dari mesh sebagai daftar ID UV yang stabil.


Memberikan nilai

Daftar ID UV yang stabil.

GetVertices

Mengembalikan semua sudut sebagai daftar ID sudut yang stabil.


Memberikan nilai

Daftar ID vertikal yang stabil.

GetVerticesWithAttribute

Mengembalikan daftar vertikal yang menggunakan ID wajah yang diberikan, ID normal, ID UV, atau ID warna.

Parameter

id: number

IDribut ID untuk menemukan vertikal yang menggunakannya.


Memberikan nilai

Daftar ID vertex yang menggunakan ID属性 yang diberikan.

IdDebugString

Mengembalikan string yang menggambarkan ID yang stabil, berguna untuk tujuan debug, seperti f17 atau v12 , mengandung ketik, nomor ID, dan versi.

Parameter

id: number

ID untuk mengembalikan string informasi debug.


Memberikan nilai

String yang menggambarkan ID dalam bentuk yang dapat dibaca manusia.

MergeVertices

Map

Menggabungkan vertiks yang berhubungan bersama, untuk menggunakan ID vertiks tunggal tetapi menyimpan ID属性 asli lainnya.

Parameter

mergeTolerance: number

Jarak di mana vertikal dianggap berjatuhan satu sama lain.


Memberikan nilai

Map

Peta tata ID lama untuk ID vertex baru untuk vertex yang telah digabung.

RaycastLocal

Mengirimkan sinar dan mengembalikan ruang objek persimpangan, ID wajah, dan koordinat barysentris. Masukan dan keluar dari metode ini berada di ruang objek lokal.

Sebuah koordinat barycentric adalah cara untuk menentukan titik dalam wajah sebagai kombinasi berat dari 3 vert wajah. Ini berguna sebagai cara umum untuk mencampur属ribut vertiks. Lihat sampel kode metode ini sebagai ilustrasi.

Parameter

origin: Vector3

Asal dari sinar di ruang lokal mesin.

direction: Vector3

Arah dari sinar.


Memberikan nilai

Tiple dari titik persimpangan, ID wajah, dan koordinat barycentric.

Contoh Kode

EditableMesh:RaycastLocal()

local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
local success, editableMesh = pcall(function()
return AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success then
local initialSize = Vector3.new(1, 1, 1)
meshPart = editableMesh:CreateMeshPartAsync(initialSize)
meshPart.Parent = workspace
end
local function castRayFromCamera(position)
if not meshPart then return end
-- Create ray from camera along the direction of a clicked point
local camera = workspace.CurrentCamera
local ray = camera:ScreenPointToRay(position.X, position.Y)
-- Convert to object space to use with RaycastLocal()
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin)
local relativeDirection = meshPart.CFrame:VectorToObjectSpace(ray.Direction)
local triangleId, point, barycentricCoordinate
triangleId, point, barycentricCoordinate = editableMesh:RaycastLocal(relativeOrigin, relativeDirection * 100)
if not triangleId then
-- Didn't hit any triangles
return
end
-- Interpolate UVs within the triangle
local vert1, vert2, vert3 = editableMesh:GetTriangleVertices(triangleId)
local uv0 = editableMesh:GetUV(vert1)
local uv1 = editableMesh:GetUV(vert2)
local uv2 = editableMesh:GetUV(vert3)
local u = (barycentricCoordinate.x * uv0.x) + (barycentricCoordinate.y * uv1.x) + (barycentricCoordinate.z * uv2.x)
local v = (barycentricCoordinate.x * uv0.y) + (barycentricCoordinate.y * uv1.y) + (barycentricCoordinate.z * uv2.y)
return Vector2.new(u, v)
end

RemoveFace

void

Menghapus wajah menggunakan ID wajahnya yang stabil.

Parameter

faceId: number

Memberikan nilai

void

RemoveUnused

Menghapus semua sudut, normal, UV, dan warna yang tidak digunakan di wajah mana pun, dan mengembalikan ID yang dihapus.


Memberikan nilai

Semua dari ID stabil yang dihapus.

ResetNormal

void

Atur ulang ID ini untuk dihitung secara otomatis berdasarkan bentuk mesh, bukan secara manual.

Parameter

normalId: number

ID normal yang stabil untuk reset.


Memberikan nilai

void

SetColor

void

Tetapkan warna untuk ID warna.

Parameter

colorId: number

ID warna yang stabil untuk warna yang akan ditetapkan.

color: Color3

Warna untuk diatur.


Memberikan nilai

void

SetColorAlpha

void

Tetapkan warna alpha (transparansi) untuk ID warna.

Parameter

colorId: number

ID warna yang stabil untuk diatur warna alpha.

alpha: number

Alpha untuk diatur.


Memberikan nilai

void

SetFaceColors

void

Tetapkan warna vertikal wajah ke ID warna baru.

Parameter

faceId: number

ID Wajah untuk diperbarui warna vértice.

ids: Array

Daftar ID warna baru yang stabil untuk digunakan untuk vertikal wajah yang diberikan.


Memberikan nilai

void

SetFaceNormals

void

Tetapkan normalitas vertikal wajah ke ID normal baru.

Parameter

faceId: number

ID Wajah untuk diperbarui norma vértice.

ids: Array

Daftar ID normal baru yang dapat digunakan untuk vertikal wajah yang diberikan.


Memberikan nilai

void

SetFaceUVs

void

Tetapkan UV vertikal wajah ke ID UV baru.

Parameter

faceId: number

ID Wajah untuk diperbarui dari UV vertikal.

ids: Array

Daftar ID UV baru yang stabil untuk digunakan untuk vertikal wajah yang diberikan.


Memberikan nilai

void

SetFaceVertices

void

Tetapkan ID vertikal wajah ke ID vertikal baru.

Parameter

faceId: number

ID Wajah untuk diperbarui vertikal.

ids: Array

Daftar ID vertikal baru yang dapat digunakan untuk wajah yang diberikan.


Memberikan nilai

void

SetNormal

void

Tetapkan normal untuk ID normal. Ini akan mengubah nilai normal untuk setiap sudut wajah yang menggunakan ID normal.

Parameter

normalId: number

ID normal yang stabil untuk diatur untuk menetapkan vektor normal.

normal: Vector3

Vector normal untuk diatur.


Memberikan nilai

void

SetPosition

void

Tetapkan posisi vertiks di ruang objek lokal mesin.

Parameter

vertexId: number

ID vertiks yang stabil untuk posisi.

Posisi di ruang lokal objek meshes.


Memberikan nilai

void

SetUV

void

Tetapkan koordinat UV untuk ID UV.

Parameter

uvId: number

ID UV untuk menetapkan koordinat UV.

Koordinat UV.


Memberikan nilai

void

Triangulate

void

Membagi semua wajah di meshes menjadi segi tiga. Saat ini, ini tidak berfungsi karena hanya segi tiga yang dapat dibuat, tetapi jika kode Anda mengandalkan segi tiga, disarankan agar Anda menyebut metode ini setelah memanggil AssetService:CreateEditableMeshAsync() .


Memberikan nilai

void

Acara