EditableMesh 는 Studio 와 경험 모두에서 메쉬를 쿼리하고 수정할 수 있는 메쉬 적용 메쉬를 변경합니다.
Class.MeshPart 또는 Content의 메쉬 ID를 사용하여 메쉬 개체를 생성하거나 메��
Class.MeshPart 는 새로운 MeshPart 를 참조하는 링크가 있을 때 표시됩니다. AssetService:CreateMeshPartAsync() 는 기존 1>Class.MeshPart1> 를 참조하는 링크를
Class.AssetService:CreateMeshPartAsync()를 호출하면 충돌 및 액체 기하구조를 재계산하고 모든 편집을 업데이트하고 대상의 MeshPart를 업데이트합니다. 일반적으로 이 작업을 마감 편집 작업의 끝에 수행하는 것이 좋습
안정적인 벡스/페이스 ID
많은 EditableMesh 메서드는 버스 ,
ID가 순서대로 있는지 보장하지는 않지만 숫자 순서가 잘못 되었을 수 있으므로 직접 통과하는 경우 GetVertices() 또는 GetFaces()를 통해 테이블을 반환하거나 Class.EditableMesh:GetEditableMesh() 를 호출해야
분할 벡스 특성
얼굴의 모서리는 얼굴의 모서리이며 토폴로지적으로 얼굴을 연결합니다. 얼굴에는 몇 가지 특성이 있습니다. 위치, 일반, 자외선 좌표, 색 및 투명도입니다.
모든 얼굴에 동일한 특성 값을 사용하려면 항상 편집기에서 동일한 특성 값을 사용할 수 있지만, 때로는 특정 얼굴에서 다른 특성 값을 사용하는 것이 좋습니다. 예를 들어, 부드러운 캐리어에서 각 얼굴에 대해 하나
얼굴을 생성할 때 각 속성의 하나가 기본적으로 하나씩 있습니다. 일반적인 하나의 픽셀, 하나의 자외선 좌표 및 하나의 색/투명도입니다. 섬을 만들려면 새 속성을 만들고 얼굴에 설정해야 합니다. 예를 들어, 이 코드는 날카로운 큐브를 생성합니다:
local AssetService = game:GetService("AssetService")
-- 주어진 4개의 벡터 ID를 사용하여 새로운 일반 및 2개의 삼각형을 추가하여 밝은 쿼드를 만듭니다.
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- 이렇게 하면 자동으로 생성되는 일반 ID가 생성됩니다
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 면 사이의 크기가 큰 쿠브를 만듭니다.Makes a cube with creased edges between the 6 sides
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) -- 앞
addSharpQuad(eMesh, v1, v3, v4, v2) -- 뒤로
addSharpQuad(eMesh, v1, v5, v7, v3) -- 왼쪽
addSharpQuad(eMesh, v2, v4, v8, v6) -- 오른쪽
addSharpQuad(eMesh, v1, v2, v6, v5) -- 바닥
addSharpQuad(eMesh, v3, v7, v8, v4) -- 위로
eMesh:RemoveUnused()
return eMesh
end
종료
메쉬 얼굴은 앞면과 뒷면이 있습니다. 메쉬를 그리는 경우 메쉬의 앞면만 기본적으로 그려지지만, DoubleSided 속성을 true로 설정하면 메쉬의 뒷면도 그려집니다.
얼굴 주변의 버텍스트 순서는 앞을 보는지 아니면 뒤로보는지를 결정합니다. 얼굴의 앞쪽이 버텍스트가 반대 방향으로 순환할 때 표시됩니다.
제한
EditableMesh 현재 60,000개의 범위 및 20,000개의 삼각형 제한이 있습니다. 너무 많은 삼각형을 추가하려면 오류가 발생합니다.
요약
메서드
기하구조에 새 색을 추가하고 안정적인 색 ID를 반환합니다.
기하구조에 새로운 일반을 추가하고 안정적인 일반 ID를 반환합니다.
메쉬에 새로운 삼각형을 추가하고 안정적인 얼굴 ID를 반환합니다.
새로운 UV를 기하에 추가하고 안정적인 UV ID를 반환합니다.
기하구조에 새 버스트를 추가하고 안정적인 버스트 ID를 반환합니다.
메쉬의 표면에서 가장 가까운 점을 찾습니다.
특정 공간의 가장 가까운 벡터를 찾습니다.
특정 구의 모든 면을 찾습니다.
지정된 얼굴에 이웃한 얼굴 목록을 반환합니다.
지정된 범위에 있는 모든 면의 목록을 반환합니다.
지정된 색상 ID에 대한 색을 반환합니다.
지정된 색 ID에 색상 알파(투명도)를 반환합니다.
메쉬의 모든 색을 반환합니다.
얼굴의 색상 ID를 반환합니다.
얼굴의 벡터에 대한 얼굴의 일반 ID를 반환합니다.
얼굴의 버텍스트에 대한 얼굴의 UV ID를 반환합니다.
얼굴의 벡터 ID를 반환합니다.
메쉬의 모든 얼굴을 반환합니다.
지정된 특성 ID를 사용하는 얼굴 목록을 반환합니다.
지정된 일반 ID에 대한 일반 벡터를 반환합니다.
메쉬의 모든 정상을 반환합니다.
버스의 위치를 가져옵니다.
지정된 UV ID에서 UV 좌표를 반환합니다.
메쉬의 모든 UV를 반환합니다.
모든 면을 안정된 버스 ID 목록으로 반환합니다.
지정된 특성 ID를 사용하는 버킷 목록을 반환합니다.
디버깅 목적으로 사용할 수 있는 안정적인 ID를 설명하는 문자열을 반환합니다.
함께 터치하는 모든 면을 병합합니다.
안정적인 얼굴 ID를 사용하여 얼굴을 제거합니다.
사용되지 않은 모든 셰더, 노멀, 자외선 및 색을 제거하고 제거된 ID를 반환합니다.
이 일반 ID를 재설정하여 자동으로 계산됩니다.
색 ID에 대한 색을 설정합니다.
색 ID에 대한 색상 알파(투명도)를 설정합니다.
얼굴의 벡터 색상을 새로운 색 ID로 설정합니다.
얼굴의 벡터 정상을 새로운 벡터 ID로 설정합니다.
얼굴의 베르시티 유비를 새로운 UV ID로 설정합니다.
얼굴의 벡터를 새로운 벡터 ID로 설정합니다.
일반 ID에 대해 일반을 설정합니다.
메쉬의 로컬 개체 공간에 버스 위치를 설정합니다.
UV ID에 대한 UV 좌표를 설정합니다.
메쉬에 있는 모든 얼굴을 삼각형으로 나눕니다.
속성
메서드
AddColor
기하구조에 새 색을 추가하고 안정적인 색 ID를 반환합니다.
매개 변수
반환
새 색상의 안정된 색 ID.
AddNormal
기하구조에 새로운 일반을 추가하고 안정적인 일반 ID를 반환합니다. 일반 값이 지정되지 않으면 일반이 자동으로 계산됩니다.
매개 변수
일반 벡터입니다. 일반 값이 지정되지 않으면 일반이 자동으로 계산됩니다.
반환
새로운 일반의 안정적인 ID.
AddTriangle
메쉬에 새로운 삼각형을 추가하고 안정적인 얼굴 ID를 반환합니다.
매개 변수
삼각형의 첫 번째 버킷의 ID.
삼각형의 두 번째 벡터 ID.
삼각형의 세 번째 벡터 ID.
반환
새 얼굴의 안정적인 얼굴 ID.
AddUV
새로운 UV를 기하에 추가하고 안정적인 UV ID를 반환합니다.
매개 변수
새로운 UV 좌표.
반환
새로운 자외선의 안정적인 UV 아이디.
AddVertex
기하구조에 새 버스트를 추가하고 안정적인 버스트 ID를 반환합니다.
매개 변수
메쉬의 로컬 개체 공간에 위치.
반환
새 범위의 안정된 버스 ID.
Destroy
반환
FindClosestPointOnSurface
메쉬의 표면에서 가장 가까운 점을 찾습니다. 얼굴 ID를 반환하고, 로컬 개체 공간의 메쉬에 포인트를 지정하고, 얼굴 내의 위치에 대한 바리센트릭 좌표를 나타냅니다. 얼굴 내의 위치에 대한 자세한 내용은 RaycastLocal()
매개 변수
메쉬의 로컬 개체 공간에서 포인트 위치.
반환
얼굴 ID의 튜플, 로컬 개체 공간의 메쉬에 대한 포인트 및 얼굴 내의 위치에 대한 가변 중심 좌표입니다.
FindClosestVertex
특정 공간의 가장 가까운 벡터를 찾고 안정적인 벡터 ID를 반환합니다.Finds the closest vertex to a specific point in space and returns a stable vertex ID.
매개 변수
메쉬의 로컬 개체 공간에서 포인트 위치.
반환
공간에서 지정된 위치의 가장 가까운 안정 버전 ID입니다.
FindVerticesWithinSphere
특정 섬 내의 모든 면을 찾고 안정된 면 ID 목록을 반환합니다.
매개 변수
반환
요청된 구에 있는 안정된 벡터 ID 목록.
GetAdjacentFaces
안정적인 얼굴 ID를 제공하면 인접 얼굴 목록을 반환합니다.
매개 변수
반환
지정된 얼굴에 이웃 있는 페이스 ID 목록.
GetAdjacentVertices
안정적인 벡서 ID를 제공하면 인접 벡서의 목록을 반환합니다.
매개 변수
접촉 면을 얻을 위한 텍스트 ID 주위.
반환
지정된 버스 ID 주위의 접근 버스 ID 목록.
GetColor
지정된 색상 ID에 대한 색을 반환합니다.
매개 변수
색을 가져올 색 ID.
반환
요청된 안정적인 색상 ID에 색상을 지정합니다.
GetColorAlpha
지정된 안정된 색 ID에 색상 알파(투명도)를 반환합니다.
매개 변수
알파를 얻을 색 ID입니다.
반환
요청 안정 색상 ID에 알파 색상을 지정합니다.
GetFaceColors
얼굴의 색상 ID를 반환합니다.
매개 변수
색 아이디를 가져오는 페이스 ID.
반환
지정된 얼굴의 벡터에 사용된 색상 ID 목록.
GetFaceNormals
얼굴의 벡터에 대한 얼굴의 일반 ID를 반환합니다.
매개 변수
일반 ID를 얻을 페이스 ID.
반환
지정된 얼굴의 벡터에 사용되는 일반 ID 목록.
GetFaceUVs
얼굴의 버텍스트에 대한 얼굴의 UV ID를 반환합니다.
매개 변수
UV 아이디를 얻을 페이스 ID.
반환
지정된 얼굴의 벡터에 사용되는 UV 아이디 목록.
GetFacesWithAttribute
지정된 버스트 ID, 일반 ID, UV ID 또는 색상 ID를 사용하는 얼굴 목록을 반환합니다.
매개 변수
사용자가 사용하는 얼굴을 찾을 수 있는 특성 ID입니다.
반환
지정된 특성 ID를 사용하는 얼굴 ID 목록.
GetNormal
지정된 일반 ID에 대한 일반 벡터를 반환합니다.
매개 변수
일반적인 벡터를 얻을 수 있는 일반 ID입니다.
반환
요청된 일반 ID에 대한 일반 벡터.
GetPosition
메쉬의 로컬 개체 공간에 있는 버스의 위치를 가져옵니다.
매개 변수
위치를 가져올 스테이블 베이스 ID.
반환
메쉬의 로컬 개체 공간에서 버텍스트의 위치.
GetVerticesWithAttribute
지정된 얼굴 ID, 일반 ID, UV ID 또는 색상 ID를 사용하는 모든 면의 목록을 반환합니다.
매개 변수
사용하는 모든 버텍트를 찾기 위한 특성 ID입니다.
반환
지정된 특성 ID를 사용하는 버스트 ID 목록.
IdDebugString
f17 또는 v12와 같은 디버깅 목적으로 유용한 안정적 ID를 설명하는 문자열을 반환합니다.
매개 변수
디버깅 정보 문자열을 반환할 ID입니다.
반환
인간이 읽을 수 있는 ID를 설명하는 문자열입니다.
MergeVertices
함께 터치하는 두 개의 벡터를 병합하여 단일 벡터 ID를 사용하지만 다른 원래 특성 ID를 유지합니다.
매개 변수
각 쌍을 서로 만질 때의 거리.
반환
병합된 垂直에 대해 이전 벡터 ID를 새 벡터 ID로 맵핑합니다.A mapping of old vertex ID to new vertex ID for垂直 that have been merged.
RaycastLocal
광선을 캐스트하고 교차점, 얼굴 ID 및 가변 위치 좌표를 반환합니다. 이 메서드의 입력 및 출력은 메쉬의 로컬 개체 공간에 있습니다.
얼굴의 3개의 모서리 중 하나를 무게 순으로 결합한 점을 지정하는 방법입니다. barycentric coordinate 는 일반적인 방식으로 얼굴 특성을 혼합하는 데 유용합니다. 이 메서드의 코드 샘플을 참조하십시오.
매개 변수
반환
교차점, 얼굴 ID 및 중심 좌표의 튜플.
코드 샘플
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
SetColorAlpha
색 ID에 대한 색상 알파(투명도)를 설정합니다.
매개 변수
반환
SetFaceColors
얼굴의 벡터 색상을 새로운 색 ID로 설정합니다.
매개 변수
반환
SetFaceNormals
얼굴의 벡터 정상을 새로운 벡터 ID로 설정합니다.
매개 변수
반환
SetFaceUVs
얼굴의 베르시티 유비를 새로운 UV ID로 설정합니다.
매개 변수
반환
SetFaceVertices
얼굴의 벡터를 새로운 벡터 ID로 설정합니다.
매개 변수
반환
SetNormal
일반적인 ID에 대해 일반을 설정합니다. 이렇게 하면 일반 ID를 사용하는 모든 얼굴 벡터에 대해 일반 값이 변경됩니다.
매개 변수
반환
SetPosition
메쉬의 로컬 개체 공간에 버스 위치를 설정합니다.
매개 변수
반환
SetUV
UV ID에 대한 UV 좌표를 설정합니다.
매개 변수
반환
Triangulate
메쉬에서 모든 얼굴을 삼각형으로 나눔으로써 트라이앵ル을 만듭니다. 현재 이 메서드는 삼각형만 만들 수 있기 때문에 작동하지 않지만, 코드에서 삼각형을 기반으로 하는 경우 메쉬를 만들기 전에 AssetService:CreateEditableMeshAsync() 를 호출하는 것이 좋습니다.