EditableMesh
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
EditableMesh , bağlandığında bir MeshPart ile ilişkili uygulanan görsel şemayı değiştirir, bu sayede Studio ve deneyimdeki şemayi sorgulama ve değiştirmeyi sağlar.
Bir EditableMesh ın veya bir Content kaydından bir MeshPart o
Yeni bir EditableMesh ile bağlandığında, aracılığıyla MeshPart ile daha fazla AssetService:CreateMeshPartAsync() instansı oluşturabilirsiniz. Aynı içeriğ
Çağırmak AssetService:CreateMeshPartAsync() ile çarpışma ve sıvı geometrisiyle herhangi bir düzenlemeleri yeniden hesaplayacak ve mevcut MeshPart ile güncellenecektir. Genellikle bunu bir kavramsal düzenleme işleminin sonunda yapmanız ö
Yayınlanmış Deneyimler için Etkileşimli Görüntü Oluşturma'yı Etkinleştirme
Güvenlik amaçlı olarak, EditableMesh kullanımı, yayınlanmış deneyimler için varsayılan olarak EditableMesh için görünmez. 1> Class.EditableMesh1> kullanımını etkinleştirmek için 1
İzinler
Abus için önlemek için, AssetService:CreateEditableMeshAsync() sadece şeffaf malzeme erişimini yükleme ve düzenlemeye izin verir:
- Bu, deneyimin sahibi olan kişinin sahibidir (deneyim bir kişi tarafından sahiplenmişse).
- Bu bir grubun ( deneyim grupsahibi ise ) sahibidir.
- Bu, giriş yapılmış Studio kullanıcısı tarafından sağlanır (yerleşim dosyası Roblox'a henüz kaydedilmedi veya yayınlanmadıysa).
Yukarıdaki kriterlere uymayan bir varlığı yüklemeye çalışırsa API'ler bir hata oluşturur.
Sabit Vertex/Yüz Kimlikleri
Birçok EditableMesh yöntemi vezir , <
Not that the IDs are not guaranteed to be in order and there may be holes in the numbering, so when iterating through vertices or faces, you should iterate through the table returned by GetVertices() or GetFaces() .
Vertex'in Parçalarına Ayrıcalık
Bir aze bir yüzün bir köşesidir ve yüzleri üstel olarak birbirine bağlar. Aşağıda yüzlerin üstlendiği renkleri gösteren birkaç özellik vardır: konum, normal, UV koordinatı, renk ve transparans.
Bazen bir köşede bir atribut değerini kullanmak için aynı öznitelik değerlerini kullanan tüm yüzler için yararlıdır, ancak bazen farklı yüzlerin aynı öznitelik değerlerini kullanmasını isteyebilirsiniz. Örneğin, düz bir kürede her köşedeki tek bir normal olacaktır.
Yüzleri oluştururken, her kenarın varsayılan olarak bir özellik vardır: bir normal, bir UV kodu ve bir renk/geçiş. Eğer bir kesme oluşturmak istiyorsanız, yeni özellikler oluşturmalı ve yüzünüzde ayarlanmalıdır. Örneğin, bu kod bir keskin kübe oluşturacaktır:
local AssetService = game:GetService("AssetService")
-- 4 köşe ID'si verildiğinde, yeni bir normal ve 2 üçgen ekler, böylece keskin bir dörtlü oluşturur
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Bu, otomatik olarak hesaplanan bir normal kimlik oluşturur
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
-- 6 taraftaki kenarlarda artan küpler oluşturur
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) -- Ön
addSharpQuad(eMesh, v1, v3, v4, v2) -- Geri
addSharpQuad(eMesh, v1, v5, v7, v3) -- Sol
addSharpQuad(eMesh, v2, v4, v8, v6) -- Sağ
addSharpQuad(eMesh, v1, v2, v6, v5) -- Alt
addSharpQuad(eMesh, v3, v7, v8, v4) -- Üst
eMesh:RemoveUnused()
return eMesh
end
Sarış
Meshes'in bir yüzü vardır ve bir yüzün arkası vardır. Mesh'leri çizarken, yüzlerin sadece ön kısmı görüntülenir, ancak bunu değiştirmek için meshenin DoubleSided özelliğini true olarak ayarlanır.
Yüzün etrafındaki köşelerin sırası, cepheyi mi izliyorsunuz veya arkasını mı izliyorsunuz belirleyin. Yüzün arkası, köşelerin ters yönünde gittiğinde görünür.
Sınırlamalar
EditableMesh şu anda 60.000 köşe ve 20.000 üçgen sayısına sahiptir. Çok fazla köşe veya üçgen eklemek denemesi hata yaratacaktır.
Özet
Yöntemler
Geometrine bir yeni renk ekler ve istikrarlı bir renk ID'si döndürür.
Geometrine bir yeni normal ekler ve istikrarlı bir normal ID'si döndürür.
Meshede yeni bir üçgen ekler ve istikrarlı bir yüz ID'si döndürür.
Geometrine bir yeni UV ekler ve istikrarlı bir UV ID'si döndürür.
Geometrine yeni bir köşe ekler ve istikrarlı bir köşe ID'si döndürür.
En yakın noktayı meselenin yüzeyinde bulur.
Uzaydaki belirli bir noktaya en yakın köşeyi bulur.
Belirli bir küre içinde tüm kenarları bulur.
Verilen yüzün yanındaki yüzlerin bir listesini iade eder.
Verilen köşeye yakın bir dizi köşe döndürür.
Verilen renk ID'si için rengi iade eder.
Verilen renk ID'indeki renk alfa'sını (opaklık) iade eder.
Meshenin tüm renklerini iade eder.
Yüzün köşeleri için yüzün renginin ID'lerini döndürür.
Yüzün normal ID'lerini yüzün kenarları için yüzün normal ID'lerini iade eder.
Yüzün kenarları için yüzün UV kimliklerini iade eder.
Yüzün köşe ID'lerini iade eder.
Meshenin tüm yüzlerini iade eder.
Verilen bir özellik ID'sini kullanan yüzlerin bir listesini iade eder.
Verilen normal ID için normal vektörü döndürür.
Mesh'in tüm normalilerini iade eder.
Bir köşenin konumunu alır.
Verilen UV ID'sindeki UV koordinatlarını iade eder.
Mesh'in tüm UV'lerini iade eder.
Tüm kenarları istikrarlı kenar kimlikleri olarak listeler.
Verilen bir özellik ID'sini kullanan köşelerin bir listesini iade eder.
Hata ayıklama amaçları için kullanışlı bir ID'yi tanımlayan bir dize döndürür.
Birbirine dokunan köşeleri birleştirir.
Sabit yüz kimliğini kullanarak bir yüzü kaldırır.
Tüm kullanılmayan kenarları, normalleri, UV'leri ve renkleri kaldırır ve kaldırılan ID'leri döndürür.
Bu normal ID'yi otomatik olarak hesaplanmak için sıfırlayın.
Bir renk ID'si için rengi ayarlar.
Bir renk ID'si için renk alfa (opaklık) değerini ayarlar.
Yüzün kümes renklerini yeni renk kodlarına ayarlar.
Yüzün normal kümesini yeni normal kimliklere ayarlar.
YüzünUV'lerini yeni UV ID'lerine ayarlar.
Yüzün köşelerini yeni köşe ID'lerine ayarlar.
Normal bir kimliğin için normali ayarlar.
Mesh'in yerel objesi alanında bir köşe belirler.
Bir UV ID için UV koordinatlarını ayarlar.
Üstel bir kümeye sahip tüm yüzleri üçgen olarak bölür.
Etkinlikler
Özellikler
Yöntemler
AddColor
Geometrine bir yeni renk ekler ve istikrarlı bir renk ID'si döndürür.
Parametreler
Dönüşler
Yeni rengin istikrarlı renk kimliği.
AddNormal
Geometrine bir yeni normal ekler ve istikrarlı bir normal ID'si döndürür. Normal değeri belirtilmediyse, normal otomatik olarak hesaplanır.
Parametreler
Normal bir vektör. Normal değer belirtilmediyse, normal otomatik olarak hesaplanır.
Dönüşler
Yeni normalin istikrarlı normal ID'si.
AddTriangle
Meshede yeni bir üçgen ekler ve istikrarlı bir yüz ID'si döndürür.
Parametreler
Üçgenin ilk köşesinin kimliği.
Üçgenin ikinci köşesinin kimliği.
Üçgenin üçüncü köşesinin kimliği.
Dönüşler
Yeni yüzün stabil yüz kimliği.
AddUV
Geometrine bir yeni UV ekler ve istikrarlı bir UV ID'si döndürür.
Parametreler
Yeni UV koordinatı.
Dönüşler
Yeni UV'nin istikrarlı bir UV kimliği.
AddVertex
Geometrine yeni bir köşe ekler ve istikrarlı bir köşe ID'si döndürür.
Parametreler
Meshenin yerel objesi alanındaki konum.
Dönüşler
Yeni köprünün istikrarlı kenar ID'si.
Destroy
Dönüşler
FindClosestPointOnSurface
Mesh'in yüzeyindeki en yakın noktayı bulur. Yüz ID'sini, yerel nesne alanındaki meshedeki noktayı işaret eder ve yüzün içindeki konumun baryantik kodunu içerir. Baryantik kodlar için bakın RaycastLocal().
Parametreler
Nesnenin yerel nesne alanındaki nokta konumu.
Dönüşler
Yüzün ID'si, yerel nesne alanındaki meshedeki işaretleyin ve yüzün içindeki pozisyonun baryantik koordinatı.
FindClosestVertex
Yakın bir köşeyi uzayda belirli bir nokta ile bulur ve istikrarlı bir köşe ID'si döndürür.
Parametreler
Nesnenin yerel nesne alanındaki nokta konumu.
Dönüşler
Yerleştirilen noktaya en yakın istikrarlı veri kümesi kimliği.
FindVerticesWithinSphere
Belirli bir küre içindeki tüm kenarları bulur ve bir liste güvenli kenar kimlikleri içerir.
Parametreler
Dönüşler
İstek edilen küre içindeki sabit veri kimlikleri listesi.
GetAdjacentFaces
Sabit bir yüz kimliği verildiğinde, yan yüzlerin bir listesini iade eder.
Parametreler
Dönüşler
Verilen yüzün yanındaki yüz kimliklerinin listesi.
GetAdjacentVertices
Verilen sabit bir верit ID'si, yanındaki köşelerin bir listesini iade eder.
Parametreler
Yakın köşeleri almak için Vertex ID'si.
Dönüşler
Verilen köşe ID'sindeki yakın köşe ID'lerinin listesi.
GetColor
Verilen renk ID'si için rengi iade eder.
Parametreler
Renk alınacak renk kodu.
Dönüşler
İstek edilen sabit renk kodu için rengi.
GetColorAlpha
Verilen sabit renkli ID'de renk alfa'sını (opaklık) iade eder.
Parametreler
Alpha'yı almak için renk kimliği.
Dönüşler
İstek stabil renk ID'inde renk alfa.
GetColors
Meshenin tüm renklerini bir liste olarak sabit renk ID'leri olarak iade eder.
Dönüşler
Sabit renk kimliklerinin listesi.
GetFaceColors
Yüzün köşeleri için yüzün renginin ID'lerini döndürür.
Parametreler
Renk kodlarını almak için yüz kimliği.
Dönüşler
Verilen yüzün köşeleri için kullanılan renk kodlarının listesi.
GetFaceNormals
Yüzün normal ID'lerini yüzün kenarları için yüzün normal ID'lerini iade eder.
Parametreler
Normal Kimlikleri almak için yüz kimliği.
Dönüşler
Verilen yüzün üzerindeki köşeler için kullanılan normal ID'lerin listesi.
GetFaceUVs
Yüzün kenarları için yüzün UV kimliklerini iade eder.
Parametreler
UV Kimlikleri almak için yüz kimliği.
Dönüşler
Verilen yüzün kenarları için kullanılan UV Kimliklerinin listesi.
GetFaceVertices
Yüzün köşe ID'lerini iade eder.
Parametreler
Dönüşler
Verilen yüzün etrafındaki köprü kimliklerinin listesi.
GetFaces
Meshenin tüm yüzlerini istikrarlı yüz kimlikleri olarak listeler.
Dönüşler
Sabit yüz kimliklerinin listesi.
GetFacesWithAttribute
Verilen bir köşe ID'si, normal ID, UV ID'si veya renk ID'si kullanan yüzlerin bir listesini iade eder.
Parametreler
Kullananlarınızı bulmak için özellik kimliği.
Dönüşler
Verilen özellik kimliğini kullanan yüzlerin listesi.
GetNormal
Verilen normal ID için normal vektörü döndürür.
Parametreler
Normal vektörü almak için normal kimlik.
Dönüşler
İstek normal ID'de normal vektör.
GetNormals
Mesh'in tüm normalilerini istikrarlı normal ID'leri bir list olarak döndürür.
Dönüşler
Sabit normal kimliklerin listesi.
GetPosition
Meshenin yerel objes alanındaki bir köşenin konumunu alır.
Parametreler
Position alınacak istikrarlı köşe ID'si.
Dönüşler
Mesh'in yerel objes alanındaki bir köşenin konumu.
GetUV
Verilen UV ID'sindeki UV koordinatlarını iade eder.
Parametreler
UV koordinatını almak için kullanılan UV kimliği.
Dönüşler
UV kodları istenen UV ID'de.
GetUVs
Mesh'in tüm UV'lerini bir dizi sabit UV ID'leri olarak iade eder.
Dönüşler
Sabit UV Kimliklerinin Listesi.
GetVertices
Tüm kenarları istikrarlı kenar kimlikleri olarak listeler.
Dönüşler
Sabit köşe kimliklerinin listesi.
GetVerticesWithAttribute
Verilen bir yüz kimliği, normal kimliği, UV kimliği veya renk kimliğini kullanan köşelerin bir listesini iade eder.
Parametreler
Bunu kullanan köşeleri bulmak için özellik kimliği.
Dönüşler
Verilen özellik kimliğini kullanan kök sayılarının listesi.
IdDebugString
Hızlı depresyon için kullanışlı bir ID'yi tanımlayan bir yuva döndürür, bunlar f17 veya v12 gibi, yaz, kimlik numarası ve sürüm içeren.
Parametreler
Hata ayıklama bilgisi için dönüştürülmesi gereken kimliği.
Dönüşler
İnsan okunabilir biçimdeki ID'yi tanımlayan yapı.
MergeVertices
Birbirini dokunan köşeleri birleştirir, tek bir köşe ID'si kullanır ancak diğer özellik atributlarını korur.
Parametreler
Kenarların birbirine dokunması için düşünülen mesafe.
Dönüşler
Yuvarlakların birleştirildiği köşeler için eski köşe ID'sine yeni köşe ID'sine harita.A mapping of old vertex ID to new vertex ID for垂直leri birleştirildiği köşeler için eski köşe ID'sine yeni köşe ID'sine harita.
RaycastLocal
Bir ışın oluşturur ve bir kesişim noktası, yüz tanıyıcısı ve baryant merkez koordinatlarını iade eder. Bu yöntemin giriş ve çıkışları meselenin yerel objesi alanındadır.
Bir barycentric coordinate bir yüzün 3 köşesinin ağırlık kombinasyonu olarak bir nokta içinde belirtmenin bir yoludur. Bu, genel bir şekilde köşe özelliklerini karıştırmak için bir yöntem olarak yararlıdır. Bu yöntemin kod örneğini gösteren yüz metodunu görün.
Parametreler
Dönüşler
Kavşak noktası, yüz tanıma ve baryant merkez koordinatlarının çarpıntısı.
Kod Örnekleri
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
Sabit yüz kimliğini kullanarak bir yüzü kaldırır.
Parametreler
Dönüşler
RemoveUnused
Yüzünde kullanılmayan tüm kenarları, normalleri, UV'leri ve renkleri kaldırır ve kaldırılan ID'leri döndürür.
Dönüşler
Tüm kaldırılmış istikrarlı kimlikler.
ResetNormal
Bu normal ID'yi, manuel olarak ayarlanmış olarak yerleşik ağın şekline göre otomatik olarak hesaplama için sıfırlayın.
Parametreler
sıfırlaiçin istikrarlı normal bir kimlik.
Dönüşler
SetColor
Bir renk ID'si için rengi ayarlar.
Parametreler
Dönüşler
SetColorAlpha
Bir renk ID'si için renk alfa (opaklık) değerini ayarlar.
Parametreler
Dönüşler
SetFaceColors
Yüzün kümes renklerini yeni renk kodlarına ayarlar.
Parametreler
Veritabanı Renkleri'ni güncellemenin için yüz kimliği.
Verilen yüzün kenarları için kullanılan yeni sabit renk kimliklerinin listesi.
Dönüşler
SetFaceNormals
Yüzün normal kümesini yeni normal kimliklere ayarlar.
Parametreler
Veri kümesini güncellemenin için yüz kimliği.
Verilen yüzün köşeleri için kullanılan yeni sabit normal kimliklerin listesi.
Dönüşler
SetFaceUVs
YüzünUV'lerini yeni UV ID'lerine ayarlar.
Parametreler
Veritabanını güncellemenin için yüz kimliği.
Verilen yüzün kenarları için kullanılan yeni sabit UV Kimliklerinin listesi.
Dönüşler
SetFaceVertices
Yüzün köşelerini yeni köşe ID'lerine ayarlar.
Parametreler
Kenarları güncellemenin için yüz kimliği.
Verilen yüz için kullanılacak yeni sabit veri kimliklerinin listesi.
Dönüşler
SetNormal
Normal bir kimliğin için normali ayarlar. Bu, normal kimliği kullanan her yüz kısmı için normal değerleri değiştirecektir.
Parametreler
Normal vektörün ayarlanacağı için istikrarlı normal bir ID.
Belirlenen normal vektör.
Dönüşler
SetPosition
Mesh'in yerel objesi alanında bir köşe belirler.
Parametreler
Yerleştirilecek verinin sabit köşe ID'si.
Meshenin yerel objesi alanındaki konum.
Dönüşler
SetUV
Bir UV ID için UV koordinatlarını ayarlar.
Parametreler
Dönüşler
Triangulate
Meshes'teki tüm yüzleri üçgen olarak bölür. Şu anda, bu sadece üçgenler oluşturulabilir, ancak kodunuz üçgenleri oluşturduğunda, AssetService:CreateEditableMeshAsync() çağrıldıktan sonra bu yöntemi çağırmanız önerilir.