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 wizualną mieszę, do której powiązany jest, gdy powiązany z MeshPart, umożliwiając zapytanie i modyfikację mieszę zarówno w Studio, jak i w doświadczeniu.
Class.EditableMesh może być stworzony z istniejącego Content z MeshPart lub
Class.EditableMesh jest wyświetlany, gdy jest powiązany z nowym MeshPart poprzez AssetService:CreateMeshPartAsync(). Możesz stworzyć więcej instancji 1>Class.MeshPart1>, które
Aby ponownie obliczyć kolidencję i geometrię płynów po edytowaniu, możesz ponownie wywołać AssetService:CreateMeshPartAsync() i MeshPart:ApplyMesh() aby aktualizować istniejące MeshPart
Włącz EditableMesh dla opublikowanych doświadczeń
Ze względów bezpieczeństwa używanie EditableMesh dla opublikowanych doświadczeń jest domyślnie dla publikowanych doświadczeń. Aby włączyć używanie, EditableMesh , musisz mieć 13+ lat
Permisje
Aby zapobiec nadużyciom, AssetService:CreateEditableMeshAsync() pozwoli tylko na ładowanie i edytowanie zasobów sieciowych:
- To należy do twórcy doświadczenia (jeśli doświadczenie należy do osoby).
- To należy do grupy (jeśli doświadczenie należy do grupa).
- To należy do użytkownika Studio zalogowanego (jeśli plik miejsca nie został jeszcze zapisany lub opublikowany na Roblox).
Interfejsy rzucają błąd, jeśli zostaną użyte do ładowania zasobu, który nie spełnia wymagań powyżej.
Mesze wielkości ustalonej
Podczas tworzenia EditableMesh z istniejącej kuli polikształtnej (przez AssetService:CreateEditableMeshAsync()), wynikująca edytowalna kula polikształtowa jest zmierzona domyślnie. Kule polikształtowe są bardziej wydajne pod względem pamięci, ale nie można zmienić liczby krawędzi, twarzy lub cech. T
Stabilne ID węzła / twarzy
Wiele metod EditableMesh wziąć vertex
Uwaga, że ID nie są gwarantowane w porządku i może być dziury w liczeniu, więc gdy przetwarzasz przez wierzchołki lub oblicza, powinieneś przetwarzać przez tabelę zwróconą przez GetVertices() lub GetFaces() .
Podział cech wierzchołków
Wierzchołek jest kątem twarzy i połącza go topologicznie z innymi twarzami. Wierzchołki mogą mieć kilka atrybutów: pozycję, normal, kody UV, kolor i przejrzystość.
Czasami jest to użyteczne dla wszystkich twarzy, które dotykają wierzchołka, aby użyć tych samych wartości cech, ale czasami chcesz, aby różne twarze używały różnych wartości cech na tym samym wierzchołku. Na przykład, na gładkiej kuli każdy wierzchulec będzie miał tylko jeden normal. W przeciwieństwie, w kącie kostki
Podczas tworzenia twarzy każdy węzeł będzie domyślnie miał jeden z każdej cechy: jeden normalny, jeden kod URL i jeden kolor/przezroczystość. Jeśli chcesz stworzyć spójny, powinieneś tworzyć nowe atrybuty i ustawić je na twarzy. Na przykład ten kod stworzy ostry kost:
local AssetService = game:GetService("AssetService")
-- Dane 4 ID węzłów, dodaje nowy normalny i 2 trójkąty, co tworzyostro trójką kwasową
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- To tworzy 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 zeszytymi krawędziami pomię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) -- Przód
addSharpQuad(eMesh, v1, v3, v4, v2) -- Powrót
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
Zakręt
Mieszki twarzy mają stronę przednią i stronę tylną. Gdy rysujesz mieszki, tylko strona przednia jest rysowana domyślnie, choć możesz to zmienić ustawiając właściwość mieszki DoubleSided na true .
Rząd wierzchołków wokół twarzy określa, czy patrzysz na przód czy na wstecz. Przed twarzy jest widoczny, gdy wierzchołki pójść przeciwkołóżniczo wokół niego.
Ograniczenia
EditableMesh ma obecnie limit 60 000 węzłów i 20 000 trójkątów. Spróbuj dodać zbyt wiele węzłów lub trójkątów, aby powodować błąd.
Podsumowanie
Metody
Dodaje nowy kolor do geometrii i zwraca stabilny identyfikator koloru.
Dodaje nowy normal do geometrii i zwraca stabilny identyfikator normalny.
Dodaje nowy trójkąt do sieci i zwraca stabilną ID twarzy.
Dodaje nowy kolor dla geometrii i zwraca stabilny identyfikator UV.
Dodaje nowy węzeł do geometrii i zwraca stabilny identyfikator węzła.
Zniszcza siatkę.
Znajduje najbliższy punkt na powierzchni siatki.
Znajduje najbliższy węzeł do określonego punktu w przestrzeni.
Znajduje wszystkie wierzchołki w określonej kuli.
Zwraca listę twarzy sąsiadujących z podaną twarzą.
Zwraca listę węzłów sąsiadujących z podanym węzłem.
Zwraca kolor dla podanego ID koloru.
Zwraca kolor alpha (przezroczystość) przy podanym ID koloru.
Zwraca wszystkie kolory sieci.
Zwraca ID koloru twarzy dla węzłów na twarzy.
Zwraca normalne ID twarzy dla węzłów na twarzy.
Zwraca ID UV twarzy dla wierzchołków twarzy.
Zwraca ID węzłów twarzy.
Wywraca wszystkie oblicza siatki.
Wyświetla listę twarzy, które używają podanego ID atrybutu.
Zwraca normalny wektor dla podanego normalnego ID.
Zwraca wszystkie normalne z wierzchownika.
Zdobywa pozycję wierzchołka.
Zwraca koordynaty UV podanych ID.
Zwraca wszystkie UV z siatki.
Wyświetla wszystkie wierzchołki jako listę stałych ID wierzchołków.
Zwraca listę węzłów, które używają podanego ID atrybutu.
Zwraca strungę opisującą stabilny identyfikator, użyteczny do celów debugowania.
Połącza wierzchołędy, które dotykają się nawzajem.
Usuwa twarz używającą jej stabilnej ID twarzy.
Usuwa wszystkie nieużywane wierzchowce, normalne, UВ, i kolory, a zwraca usunięte ID.
Zresetuj ten normalny identyfikator, aby być automatycznie obliczanym.
Ustawia kolor dla ID koloru.
Ustawia kolor alpha (przezroczystość) dla ID koloru.
Ustawia kolory wierzchołków twarzy na nowe ID kolorów.
Ustawia normalne wierzchołki twarzy na nowe normalne identyfikatory.
Ustawia wartości węzły UV twarzy na nowe ID UV.
Ustawia wierzchołki twarzy na nowe ID wierzchołków.
Ustaw normalny dla zwykłego ID.
Ustawia pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.
Ustawia koordynaty UV dla ID UV.
Podziela wszystkie oblicza na siatce, aby były trójkąty.
Właściwości
Metody
AddColor
Dodaje nowy kolor do geometrii i zwraca stabilny identyfikator koloru.
Parametry
Zwroty
Stabilny identyfikator koloru nowego koloru.
AddNormal
Dodaje nową normalność do geometrii i zwraca stabilną normalną ID. Jeśli wartość normalna nie jest określona, zostanie automatycznie obliczona.
Parametry
Normalny wektor. Jeśli nie zostanie określony normalny wartości, zostanie on automatycznie obliczony.
Zwroty
Stabilny identyfikator normalny nowej normalnej.
AddTriangle
Dodaje nowy trójkąt do sieci i zwraca stabilną ID twarzy.
Parametry
Id pierwszego wierzchołka trójkatu.
Id drugiego wierzchołka trójkatu.
Id trzeciego wierzchołka trójkatu.
Zwroty
Stabilna identyfikator twarzy nowego twarzy.
AddUV
Dodaje nowy kolor dla geometrii i zwraca stabilny identyfikator UV.
Parametry
Nowy kod UV.
Zwroty
Stabilny identyfikator UV nowego UV.
AddVertex
Dodaje nowy węzeł do geometrii i zwraca stabilny identyfikator węzła.
Parametry
Pozycja w przestrzeni lokalnej sieci.
Zwroty
Stabilny identyfikator węzła nowego węzła.
Destroy
Niszczy zawartość siatki, natychmiastowo odsysając używany pamięci.
Zwroty
FindClosestPointOnSurface
Znajduje najbliższy punkt na powierzchni siatki. Wynika ID twarzy, wskazuje na siatkę w lokalnym przestrzeń obiektu i koordynatę barycentryczną pozycji w twarzy. Zobacz RaycastLocal() dla więcej informacji na temat koordynat barycentrycznych.
Parametry
Pozycja punktu w przestrzeni lokalnej sieci.
Zwroty
Tpul liczby ID twarzy, wskaż na siatkę w lokalnym przestrzeń obiektu, i koordynatę barycentryczną pozycji w twarzy.
FindClosestVertex
Znajduje najbliższy węzeł do określonego punktu w przestrzeni i zwraca stabilny identyfikator węzła.
Parametry
Pozycja punktu w przestrzeni lokalnej sieci.
Zwroty
Najbliższy stały identyfikator węzła do określonego punktu w przestrzeni.
FindVerticesWithinSphere
Znajduje wszystkie wierzchołki w określonej kuli i zwraca listę stabilnych identyfikatorów wierzchołków.
Parametry
Zwroty
Lista stabilnych identyfikatorów węzła w obszarze wymaganym.
GetAdjacentFaces
Dane ID stałego twarzy, zwraca listę sąsiadujących twarzy.
Parametry
Zwroty
Lista twarzy ID w pobliżu podanego twarzy.
GetAdjacentVertices
Dane ID stabilnego wierzchołka zwraca listę sąsiadujących wierzchołków.
Parametry
ID węzła, pod którym można uzyskać sąsiednie węzły.
Zwroty
Lista ID sąsiadujących wiertnic wokół podanego ID wierzchołka.
GetColor
Zwraca kolor dla podanego ID koloru.
Parametry
ID koloru, dla którego należy uzyskać kolor.
Zwroty
Kolor dla wskazanego stabilnego koloru ID.
GetColorAlpha
Zwraca kolor alpha (przezroczystość) na podany identyfikator koloru.
Parametry
Id koloru, dla którego uzyskać alfę.
Zwroty
Kolor alpha przy ID stabilnego koloru.
GetColors
Zwraca wszystkie kolory sieci jako listę stabilnych identyfikatorów kolorów.
Zwroty
Lista stabilnych identyfikatorów kolorów.
GetFaceColors
Zwraca ID koloru twarzy dla węzłów na twarzy.
Parametry
Twarz ID, dla której można uzyskać ID kolorów.
Zwroty
Lista kolorów ID używanych do wierzchołków na podanym obliczu.
GetFaceNormals
Zwraca normalne ID twarzy dla węzłów na twarzy.
Parametry
Face ID, dla którego uzyskać normalne ID.
Zwroty
Lista zwykłych identyfikatorów używanych do węzłów na podanym obliczu.
GetFaceUVs
Zwraca ID UV twarzy dla wierzchołków twarzy.
Parametry
Twarz ID, dla której należy uzyskać ID UV.
Zwroty
Lista ID UV używanych do wierzchołków na podanym obliczu.
GetFaceVertices
Zwraca ID węzłów twarzy.
Parametry
Zwroty
Lista ID węzłów wokół danej twarzy.
GetFaces
Wyświetla wszystkie oblicza siatki jako listę stabilnych identyfikatorów twarzy.
Zwroty
Lista stabilnych identyfikatorów twarzy.
GetFacesWithAttribute
Zwraca listę twarzy, które używają podanego identyfikatora wierzchołka, zwykłego identyfikatora, ID UV lub koloru.
Parametry
ID atrybutu, dla którego należy znaleźć twarze, które go używają.
Zwroty
Lista twarzy, które używają podanego ID atrybutu.
GetNormal
Zwraca normalny wektor dla podanego normalnego ID.
Parametry
Normalna identyfikator dla którego uzyskać normalny wektor.
Zwroty
Normalny wektor przy zaznaczonym normalnym ID.
GetNormals
Zwraca wszystkie normalne węzły jako listę stabilnych identyfikatorów normalnych.
Zwroty
Lista stabilnych normalnych identyfikatorów.
GetPosition
Zdobywa pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.
Parametry
Stabilna ID węzła, dla której uzyskać pozycję.
Zwroty
Pozycja węzła w przestrzeni lokalnego obiektu sieci.
GetUV
Zwraca koordynaty UV podanych ID.
Parametry
UV ID, dla którego należy uzyskać koordynatę UV.
Zwroty
Koordynaty UV w wymaganym ID UV.
GetUVs
Wyświetla wszystkie UV w siatce jako listę stabilnych ID UV.
Zwroty
Lista stabilnych identyfikatorów UV.
GetVertices
Wyświetla wszystkie wierzchołki jako listę stałych ID wierzchołków.
Zwroty
Lista stabilnych identyfikatorów węzłów.
GetVerticesWithAttribute
Zwraca listę węzłów, które używają podanego ID twarzy, normalnego ID, UV ID lub kolorowego ID.
Parametry
ID atrybutu, dla którego należy znaleźć wierzchołki używające go.
Zwroty
Lista węzłów ID, które używają podanego ID atrybutu.
IdDebugString
Zwraca stronę opisującą stabilny identyfikator, użyteczny do celów debugowania, takich jak f17 lub v12, zawierający wpisywać, numer identyfikatora i wersję.
Parametry
ID dla którego należy zwrócić ciąg znaków informacji o debugingu.
Zwroty
String, który opisuje ID w postaci ludzkiej.
MergeVertices
Połącza wierzchołędy, które dotykają się nawzajem, aby użyć jednego ID wierzchołędu, ale zachować pozostałe oryginalne ID cech.
Parametry
Dystans, w którym krawędzie są uważane za dotykanie się nawzajem.
Zwroty
Mapowanie starej ID węzła do nowej ID węzła dla węzłów, które zostały połączone.
RaycastLocal
Rzuca promieni i zwraca punkt intersekcji, ID twarzy i barycentryczne koordynaty. Wejścia i wyjścia tej metody są w przestrzeni lokalnej sieci.
A barycentryczna koordynata jest sposobem określenia punktu w obliczu jako kombinacji wagi 3 wierzchołków oblicza. Jest to użyteczne jako ogólny sposób mieszania cech wierzchołków. Zobacz przykład kodu tego metody jako ilustrację.
Parametry
Pochodzenie promienia w lokalnej przestrzeni obiektu sieci.
Kierunek promienia.
Zwroty
Materiały punktu interwału, ID twarzy i barycentryczne koordynaty.
Przykłady kodu
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
RemoveUnused
Usuwa wszystkie wierzchołędy, normalny, UV i kolory, które nie są używane na żadnej twarzy, i zwraca usunięte ID.
Zwroty
Wszystkie usunięte stabilne ID.
ResetNormal
Zresetuj ten zwykły identyfikator, aby zostać automatycznie ustawiaćw zależności od kształtu siatki, zamiast ustawić go ręcznie.
Parametry
Stabilny identyfikator normalny do resetować.
Zwroty
SetColor
Ustawia kolor dla ID koloru.
Parametry
Zwroty
SetColorAlpha
Ustawia kolor alpha (przezroczystość) dla ID koloru.
Parametry
Stabilny identyfikator koloru do ustawienia koloru alfy.
Alpha do ustawiać.
Zwroty
SetFaceColors
Ustawia kolory wierzchołków twarzy na nowe ID kolorów.
Parametry
ID twarzy do którego należy aktualizacja kolorów wierzchołków.
Lista nowych stabilnych ID kolorów do użycia dla wierzchołków danej twarzy.
Zwroty
SetFaceNormals
Ustawia normalne wierzchołki twarzy na nowe normalne identyfikatory.
Parametry
ID twarzy do którego należy aktualizować wszystkie wartości węzła.
Lista nowych, stałych, normalnych identyfikatorów do użycia dla wierzchołków danej twarzy.
Zwroty
SetFaceUVs
Ustawia wartości węzły UV twarzy na nowe ID UV.
Parametry
ID twarzy do którego należy aktualizować wierzchołkowe UV.
Lista nowych stabilnych ID UV do użycia dla wierzchołków danej twarzy.
Zwroty
SetFaceVertices
Ustawia wierzchołki twarzy na nowe ID wierzchołków.
Parametry
ID twarzy do którego należy aktualizować wierzchołki.
Lista nowych stabilnych ID węzła do użycia dla podanego twarzy.
Zwroty
SetNormal
Ustaw normalny dla zwykłego ID. To zmieni wartość normalną dla każdej węzły twarzy, które używają zwykłego ID.
Parametry
Stabilny identyfikator normalny do ustawienia normalnego wektora.
Normalny wektor do ustawiać.
Zwroty
SetPosition
Ustawia pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.
Parametry
Zwroty
SetUV
Ustawia koordynaty UV dla ID UV.
Parametry
Zwroty
Triangulate
Podziela wszystkie oblicza na siatce, aby były trójkąty. Obecnie nic się nie dzieje, ponieważ tylko trójkąty można tworzyć, ale jeśli twój kod opiera się na trójkątach, zaleca się, abyś nazwał ten metodę po nazwaniu AssetService:CreateEditableMeshAsync() .