EditableMesh
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
EditableMesh zmienia zastosowaną sieć wizualną po połączeniu z MeshPart, umożliwiając zapytanie i modyfikację siatki zarówno w Studio, jak i w doświadczeniu.
An EditableMesh można utworzyć z istniejącego Content z MeshPart lub ID siatki za pomocą AssetService:CreateEditableMeshAsync() lub pustą EditableMesh można stworzyć za pomocą AssetService:CreateEditableMesh().Można go następnie wyświetlić, zmodyfikować i zaktualizować model kolizji.Nie wszystkie kroki są konieczne; na przykład możesz chcieć utworzyć EditableMesh tylko po to, aby wysłać promieniowanie, bez wyświetlania go nigdy.
An EditableMesh jest wyświetlany, gdy jest powiązany z nowym MeshPart poprzez AssetService:CreateMeshPartAsync() .Możesz utworzyć więcej MeshPart instancji, które odwołują się do tego samego Class.EditableMesh``Datatype.Content lub łączą się z istniejącym MeshPart poprzez MeshPart:ApplyMesh() .
Aby ponownie obliczyć kolizję i geometrię płynów po edycji, możesz ponownie wezwać AssetService:CreateMeshPartAsync() i MeshPart:ApplyMesh() , aby zaktualizować istniejący MeshPart.Zaleca się ogólnie zrobić to na końcu edycji koncepcyjnej, a nie po poszczególnych wezwaniach do metod, które manipulują geometrią.Wizualne zmiany w siatce zawsze będą natychmiast odzwierciedlone przez silnik, bez potrzeby wzywania AssetService:CreateMeshPartAsync() .
Włączanie edytowalnej siatki dla opublikowanych doświadczeń
Ze względów bezpieczeństwa używanie EditableMesh nie powoduje błędu domyślnie dla opublikowanych doświadczeń.Aby włączyć użycie, EditableMesh , musisz być zweryfikowany wiek 13+ i weryfikacja tożsamościtożsamość.Po weryfikacji otwórz Ustawienia gry w Studio, wybierz Bezpieczeństwo i włącz przełącznik Pozwolenie na API siatki i obrazu .Pamiętaj o przejrzeniu Warunków użytkowania przed włączeniem przełącznika.
Uprawnienia
Aby zapobiec nadużyciu, AssetService:CreateEditableMeshAsync() pozwoli tylko na ładowanie i edytowanie zasobów siatki:
- Należą one do twórcy doświadczenia (jeśli doświadczenie należy do osoby fizycznej).
- Należące do grupy (jeśli doświadczenie należy do grupa).
- Należą one do użytkownika Studio zalogowanego (jeśli plik miejsca nie został jeszcze zapisany lub opublikowany w Roblox).
APIs rzucają błąd, jeśli są używane do ładowania zasobu, który nie spełnia kryteriów powyżej.
Naprawione siatki o stałym rozmiarze
Podczas tworzenia EditableMesh z istniejącego zasobu siatki (poprzez AssetService:CreateEditableMeshAsync() ), wynikowa edytowalna siatka jest domyślnie o stałej wielkości.Sieci o stałym rozmiarze są bardziej wydajne pod względem pamięci, ale nie możesz zmienić liczby wierzchołków, twarzy lub atrybutów.Tylko wartości atrybutów wierzchołków i pozycji mogą być edytowane.
Stabilne ID punktów/twarzy
Wiele metod EditableMesh podaje wierzchołek , normalny , UV , kolor i twarz ID.Są reprezentowane jako liczby całkowite w Luau, ale wymagają pewnej specjalnej obsługi.Główną różnicą jest to, że identyfikatory są stabilne i pozostają takie same, nawet jeśli inne części siatki zmieniają się.Na przykład, jeśli EditableMesh ma pięć wierzchołków {1, 2, 3, 4, 5} i usuniesz wierzchołek 4, nowe wierzchołki będą {1, 2, 3, 5}.
Zauważ, że identyfikatory nie są gwarantowane do porządku i mogą wystąpić przerwy w numeracji, więc podczas iteracji przez węzły lub twarze powinieneś iterować przez tabelę zwrotzoną przez GetVertices() lub GetFaces().
Rozdzielone atrybuty wierzchołka
Wierzchołek jest krawędzią twarzy i łączy twarze topologicznie .Punkty mogą mieć kilka atrybutów: pozycję, normalną, koordynaty UV, kolor i przejrzystość.
Czasami przydatne jest, aby wszystkie twarze, które dotykają wierzchołka, używały tych samych wartości atrybutów, ale czasami będziesz chciał, aby różne twarze używały różnych wartości atrybutów na tym samym wierzchołku.Na przykład, na gładkiej kuli, każdy wierzchołek będzie miał tylko jedną normalną.W przeciwieństwie do tego, na krawędzi kostki będzie mieć 3 różne normalne (po jednym dla każdej przylegającej twarzy).Możesz także mieć szwy w koordynatach UV lub ostre zmiany w kolorach wierzchołków.
Podczas tworzenia twarzy każdy wierzchołek domyślnie będzie miał jeden z każdej cechy: jeden normalny, jedną koordynatę UV i jeden kolor/przezroczystość.Jeśli chcesz stworzyć szw, powinieneś utworzyć nowe atrybuty i umieścić je na twarzy.Na przykład ten kod stworzy ostry kubeł:
local AssetService = game:GetService("AssetService")
-- Dane 4 identyfikatory wierzchołków, dodaje nową normalną i 2 trójkąty, tworząc ostry kwadra
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Tworzy to normalną identyfikator, który jest automatycznie obliczany
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
-- Tworzy kostkę z zaokrąglonymi krawędziami między 6 stronami
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) -- Pród
addSharpQuad(eMesh, v1, v3, v4, v2) -- Wróć
addSharpQuad(eMesh, v1, v5, v7, v3) -- Lewo
addSharpQuad(eMesh, v2, v4, v8, v6) -- Prawo
addSharpQuad(eMesh, v1, v2, v6, v5) -- Dół
addSharpQuad(eMesh, v3, v7, v8, v4) -- Góra
eMesh:RemoveUnused()
return eMesh
end
Windowanie
Oblicza siatki mają przód i tył.Podczas rysowania siatek tylko przednie części twarzy są rysowane domyślnie, choć możesz to zmienić, ustawiając właściwość siatki na wartość .
kolejność wierzchołków wokół twarzy decyduje, czy patrzysz na przód czy na wstecz.Przód twarzy jest widoczny, gdy wierzchołki krążą wokół niego w przeciwnym kierunku.

Ograniczenia
EditableMesh obecnie ma ograniczenie 60 000 węzłów i 20 000 trójkątów. Dodawanie zbyt wielu węzłów lub trójkątów spowoduje błąd.
Podsumowanie
Właściwości
Wyświetla true jeśli siatka jest o stałym rozmiarze.
Metody
Dodaje nowy kolor do geometrii i zwraca stabilną identyfikator koloru.
Dodaje nową normalną do geometrii i zwraca stabilną normalną identyfikator.
Dodaje nowy trójkąt do siatki i zwraca stabilną identyfikator twarzy.
Dodaje nowy UV do geometrii i zwraca stabilny identyfikator UV.
Dodaje nowy wierzchołek do geometrii i zwraca stabilną identyfikację wierzchołka.
Niszczy sieć.
Znajduje najbliższy punkt na powierzchni siatki.
Znajduje najbliższy wierzchołek do określonego punktu w przestrzeni.
Znajduje wszystkie wierzchołki w określonej sferze.
Zwraca listę twarzy przyległych do danego oblicza.
Zwraca listę wierzchołków przyległych do danego wierzchołka.
Zwraca kolor dla podanego ID koloru.
Zwraca kolor alfa (przezroczystość) przy podanym ID koloru.
Zwraca wszystkie kolory siatki.
Zwraca ID kolorów twarza dla punktów na twarzu.
Zwraca normalne identyfikatory twarza dla punktów na twarzu.
Zwraca identyfikatory UV twarza dla punktów na twarzu.
Zwraca ID krawędzi twarza.
Zwraca wszystkie twarze siatki.
Zwraca normalny wektor dla podanego normalnego ID.
Zwraca wszystkie normalne z siatki.
Zdobywa pozycję wierzchołka.
Zwraca koordynaty UV w danym ID UV.
Zwraca wszystkie UV z siatki.
Zwraca wszystkie wierzchołki jako listę stabilnych identyfikatorów wierzchołków.
Zwraca ciąg opisujący stabilny identyfikator, przydatny do celów debugowania.
Łączy wierzchołki, które się stykają.
Usuwa twarz za pomocą jej stabilnej identyfikacji twarzy.
Usuwa wszystkie niewykorzystane wierzchołki, normalne, UV i kolory i zwraca usunięte ID.
Zresetuj ten normalny ID, aby był automatycznie obliczany.
Ustawia kolor dla ID koloru.
Ustawia kolor alfa (przezroczystość) dla ID koloru.
Ustawia kolory szczytu twarza na nowe ID kolorów.
Ustawia normalne wierzchołki twarza na nowe normalne ID.
Ustawia wierzchołki UV twarza na nowe ID UV.
Ustawia wierzchołki twarza na nowe ID wierzchołków.
Ustaw normalny dla normalnego ID.
Ustawia pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.
Ustawia koordynaty UV dla ID UV.
Rozdziela wszystkie twarze na siatce na trójkąty.
Właściwości
Metody
AddColor
Dodaje nowy kolor do geometrii i zwraca stabilną identyfikator koloru.
Parametry
Nowa kolor.
Kolor alfa (przezroczystość).
Zwroty
Stabilny identyfikator koloru nowego koloru.
AddNormal
Dodaje nową normalną do geometrii i zwraca stabilną normalną identyfikator. Jeśli wartość normalna nie jest określona, normalna zostanie automatycznie obliczona.
Parametry
Normalny wektor. Jeśli normalna wartość nie jest określona, normalna zostanie automatycznie obliczona.
Zwroty
Stabilny normalny identyfikator nowej normalności.
AddTriangle
Dodaje nowy trójkąt do siatki i zwraca stabilną identyfikator twarzy.
Parametry
ID pierwszego wierzchołka trójkąta.
ID drugiego wierzchołka trójkąta.
ID trzeciego wierzchołka trójkąta.
Zwroty
Stabilna identyfikacja twarzy nowej twarzy.
AddUV
Dodaje nowy UV do geometrii i zwraca stabilny identyfikator UV.
Parametry
Nowa koordynata UV.
Zwroty
Stabilny identyfikator UV nowego UV.
AddVertex
Dodaje nowy wierzchołek do geometrii i zwraca stabilną identyfikację wierzchołka.
Parametry
Pozycja w przestrzeni obiektu lokalnego w siatce.
Zwroty
Stabilny identyfikator wierzchołka nowego wierzchołka.
Destroy
Niszczy zawartość siatki, natychmiast odzyskując używaną pamięć.
Zwroty
FindClosestPointOnSurface
Znajduje najbliższy punkt na powierzchni siatki.Zwraca identyfikator twarzy, wskazuje na siatkę w przestrzeni obiektu lokalnego i barycentryczną koordynatę pozycji w obrębie twarzy.Zobacz RaycastLocal() dla więcej informacji o koordynatach barycentrycznych.
Parametry
Pozycja punktu w przestrzeni lokalnego obiektu w siatce.
Zwroty
Para identyfikatora twarza, punkt na siatce w przestrzeni obiektu lokalnego i współrzędne barycentryczne pozycji w obrębie twarza.
FindClosestVertex
Znajduje najbliższy wierzchołek do określonego punktu w przestrzeni i zwraca stabilną identyfikator wierzchołka.
Parametry
Pozycja punktu w przestrzeni lokalnego obiektu w siatce.
Zwroty
Najbliższy stabilny ID wierzchołka do określonej punktu w przestrzeni.
FindVerticesWithinSphere
Znajduje wszystkie wierzchołki w określonej sferze i zwraca listę stabilnych identyfikatorów wierzchołków.
Parametry
Centrum kuli w przestrzeni lokalnego obiektu w siatce.
Promień sfery.
Zwroty
Lista stabilnych identyfikatorów wierzchołków w żądanej sferze.
GetAdjacentFaces
Biorąc pod uwagę stabilną identyfikator twarzy, zwraca listę sąsiednich twarzy.

Parametry
Zwroty
Lista identyfikatorów twarzy sąsiadujących z daną twarzą.
GetAdjacentVertices
Dane stabilne ID wierzchołka, zwraca listę sąsiednich wierzchołków.

Parametry
ID punktu, wokół którego uzyskać sąsiednie węzły.
Zwroty
Lista identyfikatorów sąsiednich wierzchołków wokół danego identyfikatora wierzchołka.
GetColor
Zwraca kolor dla podanego ID koloru.
Parametry
ID koloru, z którego uzyskać kolor.
Zwroty
Kolor dla żądanego ID stabilnego koloru.
GetColorAlpha
Zwraca kolor alfa (przezroczystość) przy podanym ID stabilnego koloru.
Parametry
ID koloru, z którego uzyskać alfa.
Zwroty
Kolor alfa przy żądaniu stabilnego ID koloru.
GetColors
Zwraca wszystkie kolory siatki jako listę stabilnych ID kolorów.
Zwroty
Lista stabilnych kolorów ID.
GetFaceColors
Zwraca ID kolorów twarza dla punktów na twarzu.
Parametry
ID twarza, dla którego należy uzyskać ID koloru.
Zwroty
Lista identyfikatorów kolorów używanych do punktów na danym obliczu.
GetFaceNormals
Zwraca normalne identyfikatory twarza dla punktów na twarzu.
Parametry
ID twarzy, dla którego należy uzyskać normalne ID.
Zwroty
Lista normalnych identyfikatorów używanych do punktów na danym obliczu.
GetFaceUVs
Zwraca identyfikatory UV twarza dla punktów na twarzu.
Parametry
ID twarzy, dla której należy uzyskać ID UV.
Zwroty
Lista identyfikatorów UV używanych do punktów na danym obliczu.
GetFaceVertices
Zwraca ID krawędzi twarza.
Parametry
Zwroty
Lista identyfikatorów wierzchołków wokół danego oblicza.
GetFaces
Zwraca wszystkie twarze siatki jako listę stabilnych identyfikatorów twarzy.
Zwroty
Lista stabilnych identyfikatorów twarzy.
GetNormal
Zwraca normalny wektor dla podanego normalnego ID.
Parametry
Normalny ID, dla którego należy uzyskać normalny wektor.
Zwroty
Normalny wektor przy żądanym normalnym ID.
GetNormals
Zwraca wszystkie normalne z siatki jako listę stabilnych normalnych ID.
Zwroty
Lista stabilnych normalnych ID.
GetPosition
Zdobywa pozycję wierzchołka w przestrzeni lokalnego obiektu w siatce.
Parametry
Stabilny identyfikator wierzchołka, dla którego uzyskać pozycję.
Zwroty
Pozycja wierzchołka w przestrzeni lokalnego obiektu w siatce.
GetUV
Zwraca koordynaty UV w danym ID UV.
Parametry
ID UV, dla którego należy uzyskać koordynaty UV.
Zwroty
Koordynaty UV w żądanym ID UV.
GetUVs
Zwraca wszystkie UV z siatki jako listę stabilnych ID UV.
Zwroty
Lista stabilnych ID UV.
GetVertexFaceColor
Parametry
Zwroty
GetVertexFaceNormal
Parametry
Zwroty
GetVertexFaceUV
Parametry
Zwroty
GetVertices
Zwraca wszystkie wierzchołki jako listę stabilnych identyfikatorów wierzchołków.
Zwroty
Lista stabilnych identyfikatorów wierzchołków.
IdDebugString
Zwraca ciąg opisujący stabilny identyfikator, przydatny do celów debugowania, takich jak f17 lub v12, zawierający wpisywać, numer ID i wersję.
Parametry
ID, do którego należy zwrócić ciąg informacji o debugowaniu.
Zwroty
Sznurek, który opisuje ID w formacie czytelnym dla człowieka.
MergeVertices
Łączy wierzchołki, które się stykają, aby używać jednego identyfikatora wierzchołka, ale zachować pozostałe oryginalne ID atrybutów.
Parametry
Odległość, w której uważa się, że wierzchołki się dotykają.
Zwroty
Mapowanie starych ID wierzchołków do nowych identyfikatorów wierzchołków dla wierzchołków, które zostały połączone.
RaycastLocal
Rzuca promień i zwraca punkt styku, identyfikator twarzy i koordynaty barycentryczne.Wejścia i wyjścia tej metody znajdują się w przestrzeni obiektów lokalnych siatki.
Koordynata barycentryczna jest sposobem określenia punktu w obliczu jako ważone kombinację 3 punktów oblicza.Jest to przydatne jako ogólny sposób łączenia atrybutów wierzchołków.Zobacz przykład kodu tej metody jako ilustrację.
Parametry
Pochodzenie promienia w przestrzeni lokalnego obiektu w siatce.
Kierunek promienia.
Zwroty
Para punktu styczności, identyfikator twarzy i koordynaty barycentryczne.
Przykłady kodu
This code finds the position and UV coordinates of the closest point on an EditableMesh to the input point.
local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
local editableMesh = nil
local success, errorMsg = pcall(function()
editableMesh = AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success and editableMesh then
meshPart = AssetService:CreateMeshPartAsync(
Content.fromObject(editableMesh),
{ CollisionFidelity = Enum.CollisionFidelity.Hull }
)
meshPart.Parent = workspace
else
print(errorMsg)
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
Usuwa twarz za pomocą jej stabilnej identyfikacji twarzy.
Parametry
Zwroty
RemoveUnused
Usuwa wszystkie wierzchołki, normalne, UV i kolory, które nie są używane w żadnej twarzy, i zwraca usunięte ID.
Zwroty
Wszystkie usunięte stałe ID.
ResetNormal
Zresetuj ten normalny identyfikator, aby był automatycznie obliczany na podstawie kształtu siatki, zamiast być ustawiaćręcznie.
Parametry
Stabilny normalny ID do resetować.
Zwroty
SetBoneCFrame
Parametry
Zwroty
SetBoneIsVirtual
Parametry
Zwroty
SetBoneParent
Parametry
Zwroty
SetColor
Ustawia kolor dla ID koloru.
Parametry
Stabilny identyfikator koloru, dla którego ustawia się kolor.
Kolor do ustawiać.
Zwroty
SetColorAlpha
Ustawia kolor alfa (przezroczystość) dla ID koloru.
Parametry
Stabilny identyfikator koloru, dla którego ustawić można kolor alfa.
Alpha do ustawiać.
Zwroty
SetFaceColors
Ustawia kolory szczytu twarza na nowe ID kolorów.
Parametry
ID twarzy, dla którego należy zaktualizować kolory wierzchołków.
Lista nowych, stabilnych identyfikatorów kolorów do użycia dla wierzchołków danego oblicza.
Zwroty
SetFaceNormals
Ustawia normalne wierzchołki twarza na nowe normalne ID.
Parametry
ID twarzy, dla której należy zaktualizować normy wierzchołków.
Lista nowych, stabilnych normalnych identyfikatorów do użycia dla wierzchołków danego oblicza.
Zwroty
SetFaceUVs
Ustawia wierzchołki UV twarza na nowe ID UV.
Parametry
ID twarza, dla którego należy zaktualizować wierzchołki UV.
Lista nowych stabilnych identyfikatorów UV do użycia dla wierzchołków danego oblicza.
Zwroty
SetFaceVertices
Ustawia wierzchołki twarza na nowe ID wierzchołków.
Parametry
ID twarzy, dla której należy zaktualizować wierzchołki.
Lista nowych, stabilnych identyfikatorów wierzchołków do użycia dla danego oblicza.
Zwroty
SetFacsBonePose
Parametry
Zwroty
SetFacsCorrectivePose
Parametry
Zwroty
SetFacsPose
Parametry
Zwroty
SetNormal
Ustaw normalny dla normalnego ID. Zmieni to normalną wartość dla każdego punktu na twarzy, który używa normalnego ID.
Parametry
Stabilny normalny ID, dla którego ustawiono normalny wektor.
Normalny wektor do ustawiać.
Zwroty
SetPosition
Ustawia pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.
Parametry
Stabilny identyfikator wierzchołka wierzchołka do pozycji.
Pozycja w przestrzeni obiektu lokalnego w siatce.
Zwroty
SetUV
Ustawia koordynaty UV dla ID UV.
Parametry
ID UV, dla którego ustawić należy koordynaty UV.
Koordynaty UV.
Zwroty
SetVertexBoneWeights
Parametry
Zwroty
SetVertexBones
Parametry
Zwroty
SetVertexFaceColor
Parametry
Zwroty
SetVertexFaceNormal
Parametry
Zwroty
SetVertexFaceUV
Parametry
Zwroty
Triangulate
Rozdziela wszystkie twarze na siatce na trójkąty.Obecnie nie robi to nic, ponieważ można tworzyć tylko trójkąty, ale jeśli twój kod polega na trójkątach, zaleca się, abyś wezwał tę metodę po wezwaniu AssetService:CreateEditableMeshAsync() .