EditableMesh

Pokaż przestarzałe

*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.

Brak możliwości tworzenia

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.

Order of the vertices around the face
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

Właściwości

Metody

Właściwości

FixedSize

Tylko do odczytu
Bez replikacji
Zabezpieczenia na platformie Roblox
Odczyt równoległy

SkinningEnabled

Odczyt równoległy

Metody

AddColor

Dodaje nowy kolor do geometrii i zwraca stabilny identyfikator koloru.

Parametry

color: Color3

Kolor nowy.

alpha: number

Kolor alpha (przezroczystość).


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

normal: Vector3

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

vertexId0: number

Id pierwszego wierzchołka trójkatu.

vertexId1: number

Id drugiego wierzchołka trójkatu.

vertexId2: number

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

void

Niszczy zawartość siatki, natychmiastowo odsysając używany pamięci.


Zwroty

void

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

point: Vector3

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

toThisPoint: Vector3

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

center: Vector3

Centrum kuli w lokalnej przestrzeni obiektu.

radius: number

Okrągłość kuli.


Zwroty

Lista stabilnych identyfikatorów węzła w obszarze wymaganym.

GetAdjacentFaces

Dane ID stałego twarzy, zwraca listę sąsiadujących twarzy.

Adjacent faces indicated around requested face

Parametry

faceId: number

Zwroty

Lista twarzy ID w pobliżu podanego twarzy.

GetAdjacentVertices

Dane ID stabilnego wierzchołka zwraca listę sąsiadujących wierzchołków.

Adjacent vertices indicated around requested vertex

Parametry

vertexId: number

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.

GetCenter


Zwroty

Centrum pola wyboru EditableMesh .

GetColor

Zwraca kolor dla podanego ID koloru.

Parametry

colorId: number

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

colorId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

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

normalId: number

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

vertexId: number

Stabilna ID węzła, dla której uzyskać pozycję.


Zwroty

Pozycja węzła w przestrzeni lokalnego obiektu sieci.

GetSize


Zwroty

Rozmiar EditableMesh .

GetUV

Zwraca koordynaty UV podanych ID.

Parametry

uvId: number

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

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

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

Map

Połącza wierzchołędy, które dotykają się nawzajem, aby użyć jednego ID wierzchołędu, ale zachować pozostałe oryginalne ID cech.

Parametry

mergeTolerance: number

Dystans, w którym krawędzie są uważane za dotykanie się nawzajem.


Zwroty

Map

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

origin: Vector3

Pochodzenie promienia w lokalnej przestrzeni obiektu sieci.

direction: Vector3

Kierunek promienia.


Zwroty

Materiały punktu interwału, ID twarzy i barycentryczne koordynaty.

Przykłady kodu

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

Usuwa twarz używającą jej stabilnej ID twarzy.

Parametry

faceId: number

Zwroty

void

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

void

Zresetuj ten zwykły identyfikator, aby zostać automatycznie ustawiaćw zależności od kształtu siatki, zamiast ustawić go ręcznie.

Parametry

normalId: number

Stabilny identyfikator normalny do resetować.


Zwroty

void

SetColor

void

Ustawia kolor dla ID koloru.

Parametry

colorId: number

Stabilny identyfikator koloru do ustawienia koloru.

color: Color3

Kolor do ustawiać.


Zwroty

void

SetColorAlpha

void

Ustawia kolor alpha (przezroczystość) dla ID koloru.

Parametry

colorId: number

Stabilny identyfikator koloru do ustawienia koloru alfy.

alpha: number

Alpha do ustawiać.


Zwroty

void

SetFaceColors

void

Ustawia kolory wierzchołków twarzy na nowe ID kolorów.

Parametry

faceId: number

ID twarzy do którego należy aktualizacja kolorów wierzchołków.

ids: Array

Lista nowych stabilnych ID kolorów do użycia dla wierzchołków danej twarzy.


Zwroty

void

SetFaceNormals

void

Ustawia normalne wierzchołki twarzy na nowe normalne identyfikatory.

Parametry

faceId: number

ID twarzy do którego należy aktualizować wszystkie wartości węzła.

ids: Array

Lista nowych, stałych, normalnych identyfikatorów do użycia dla wierzchołków danej twarzy.


Zwroty

void

SetFaceUVs

void

Ustawia wartości węzły UV twarzy na nowe ID UV.

Parametry

faceId: number

ID twarzy do którego należy aktualizować wierzchołkowe UV.

ids: Array

Lista nowych stabilnych ID UV do użycia dla wierzchołków danej twarzy.


Zwroty

void

SetFaceVertices

void

Ustawia wierzchołki twarzy na nowe ID wierzchołków.

Parametry

faceId: number

ID twarzy do którego należy aktualizować wierzchołki.

ids: Array

Lista nowych stabilnych ID węzła do użycia dla podanego twarzy.


Zwroty

void

SetNormal

void

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

normalId: number

Stabilny identyfikator normalny do ustawienia normalnego wektora.

normal: Vector3

Normalny wektor do ustawiać.


Zwroty

void

SetPosition

void

Ustawia pozycję wierzchołka w przestrzeni lokalnego obiektu sieci.

Parametry

vertexId: number

Stabilne ID węzła do umieszczenia.

Pozycja w przestrzeni lokalnej sieci.


Zwroty

void

SetUV

void

Ustawia koordynaty UV dla ID UV.

Parametry

uvId: number

UV ID do ustawienia koordynat UV.

Koordynaty UV.


Zwroty

void

Triangulate

void

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() .


Zwroty

void

Zdarzenia