EditableMesh

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz

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.

Order of the vertices around the face

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

Özellikler

Yöntemler

Özellikler

FixedSize

Salt Okunur
Çoğaltılmamış
Roblox Güvenliği
Paralel oku

SkinningEnabled

Paralel oku

Yöntemler

AddColor

Geometrine bir yeni renk ekler ve istikrarlı bir renk ID'si döndürür.

Parametreler

color: Color3

Yeni rengi.

alpha: number

Renk alpha (opaklık).


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: Vector3

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

vertexId0: number

Üçgenin ilk köşesinin kimliği.

vertexId1: number

Üçgenin ikinci köşesinin kimliği.

vertexId2: number

Üç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

void

Dönüşler

void

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

point: Vector3

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

toThisPoint: Vector3

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

center: Vector3

Mesh'in yerel nesne alanındaki küre'nin merkezidir.

radius: number

Küre'nin çevresi.


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.

Adjacent faces indicated around requested face

Parametreler

faceId: number

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.

Adjacent vertices indicated around requested vertex

Parametreler

vertexId: number

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.

GetCenter


Dönüşler

EditableMesh 'in bağlayıcı kutusunun merkezinde.

GetColor

Verilen renk ID'si için rengi iade eder.

Parametreler

colorId: number

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

colorId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

id: number

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

normalId: number

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

vertexId: number

Position alınacak istikrarlı köşe ID'si.


Dönüşler

Mesh'in yerel objes alanındaki bir köşenin konumu.

GetSize


Dönüşler

EditableMesh 'in boyutu.

GetUV

Verilen UV ID'sindeki UV koordinatlarını iade eder.

Parametreler

uvId: number

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

id: number

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

id: number

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

Map

Birbirini dokunan köşeleri birleştirir, tek bir köşe ID'si kullanır ancak diğer özellik atributlarını korur.

Parametreler

mergeTolerance: number

Kenarların birbirine dokunması için düşünülen mesafe.


Dönüşler

Map

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

origin: Vector3

Mesh'in yerel objesi alanındaki ray'in kaynağı.

direction: Vector3

Işının yönü.


Dönüşler

Kavşak noktası, yüz tanıma ve baryant merkez koordinatlarının çarpıntısı.

Kod Örnekleri

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

Sabit yüz kimliğini kullanarak bir yüzü kaldırır.

Parametreler

faceId: number

Dönüşler

void

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

void

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

normalId: number

sıfırlaiçin istikrarlı normal bir kimlik.


Dönüşler

void

SetColor

void

Bir renk ID'si için rengi ayarlar.

Parametreler

colorId: number

Renk ayarlanacak sabit renk kimliği.

color: Color3

Renk ayarlanır.


Dönüşler

void

SetColorAlpha

void

Bir renk ID'si için renk alfa (opaklık) değerini ayarlar.

Parametreler

colorId: number

Renk alfa'sını ayarlayacak sabit renk kimliği.

alpha: number

Alpha ayarlanır.


Dönüşler

void

SetFaceColors

void

Yüzün kümes renklerini yeni renk kodlarına ayarlar.

Parametreler

faceId: number

Veritabanı Renkleri'ni güncellemenin için yüz kimliği.

ids: Array

Verilen yüzün kenarları için kullanılan yeni sabit renk kimliklerinin listesi.


Dönüşler

void

SetFaceNormals

void

Yüzün normal kümesini yeni normal kimliklere ayarlar.

Parametreler

faceId: number

Veri kümesini güncellemenin için yüz kimliği.

ids: Array

Verilen yüzün köşeleri için kullanılan yeni sabit normal kimliklerin listesi.


Dönüşler

void

SetFaceUVs

void

YüzünUV'lerini yeni UV ID'lerine ayarlar.

Parametreler

faceId: number

Veritabanını güncellemenin için yüz kimliği.

ids: Array

Verilen yüzün kenarları için kullanılan yeni sabit UV Kimliklerinin listesi.


Dönüşler

void

SetFaceVertices

void

Yüzün köşelerini yeni köşe ID'lerine ayarlar.

Parametreler

faceId: number

Kenarları güncellemenin için yüz kimliği.

ids: Array

Verilen yüz için kullanılacak yeni sabit veri kimliklerinin listesi.


Dönüşler

void

SetNormal

void

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

normalId: number

Normal vektörün ayarlanacağı için istikrarlı normal bir ID.

normal: Vector3

Belirlenen normal vektör.


Dönüşler

void

SetPosition

void

Mesh'in yerel objesi alanında bir köşe belirler.

Parametreler

vertexId: number

Yerleştirilecek verinin sabit köşe ID'si.

Meshenin yerel objesi alanındaki konum.


Dönüşler

void

SetUV

void

Bir UV ID için UV koordinatlarını ayarlar.

Parametreler

uvId: number

UV koordinatlarını ayarlanacak UV kimliği için.

UV koordinatları.


Dönüşler

void

Triangulate

void

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.


Dönüşler

void

Etkinlikler