EditableMesh
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
EditableMesh thay đổi màn hình visual đã được áp dụng khi kết nối với một MeshPart, cho phép truy cập và sửa đổi màn hình meshes ở cả Studio và trong kinh nghiệm.
Một EditableMesh có thể được tạo từ một Content đã tồn tại của mộ
Một EditableMesh được hiển thị khi kết nối với một MeshPart mới, thông qua AssetService:CreateMeshPartAsync() . Bạn có thể tạo nhiề
Gọi AssetService:CreateMeshPartAsync() sẽ tính toán lại va chạm và hình dạng chất lỏng với bất kỳ sửa đổi và cập nhật MeshPart hiện tại. Nó được khuyến nghị để làm đi
Mở màn hình chỉnh sửa cho Các Trải Nghiệm Đã Xuất Bản
Vì mục đích an ninh, sử dụng EditableMesh bị từ chối bởi mặc định cho các trải nghiệm đã phát sóng. Để bật kull dụng EditableMesh, bạn phải được 13+ tuổi đ
Các quyền
Để ngăn chặn sử dụng sai, AssetService:CreateEditableMeshAsync() chỉ cho phép bạn tải và chỉnh sửa tài nguyên mạng:
- Đó là của người sáng tạo trải nghiệm (nếu trải nghiệm thuộc sở hữu của một cá nhân).
- Đó là sở hữu của một nhóm (nếu trải nghiệm thuộc sở hữu của nhóm).
- Đó là của người dùng đã đăng nhập Studio (nếu tập tin nơi chưa được lưu hoặc xuất bản trên Roblox).
Các API ném một lỗi nếu chúng được sử dụng để tải một tài nguyên không đáp ứng các tiêu chuẩn trên.
ID Vị Trí Đứng/Mặt Đứng Ổn Định
Nhiều phương pháp EditableMesh lấy
Lưu ý rằng các ID không được đảm bảo để được trong thứ tự và có thể có những lỗ trong số hóa, vì vậy khi lặp qua các vé trụ hoặc mặt, bạn nên lặp qua bảng được trả lại bởi GetVertices() hoặc <
Đặt tên cho các điểm dữ liệu
Một vertex là góc của một khuôn mặt, và kết nối trên cả hai mặt bằng cách định vị. Các vértice có thể có nhiều thuộc tính: vị trí, bình thường, coordenate UV, màu và transparency.
Đôi khi nó là hữu ích cho tất cả các khuôn mặt chạm vào một vértice để sử dụng cùng một giá trị đặc tính, nhưng đôi khi bạn sẽ muốn các khuôn mặt khác nhau sử dụng các giá trị đặc tính khác nhau trên
Khi tạo mặt, mỗi góc sẽ mặc định có một trong mỗi thuộc tính: một đường trung tâm thường, một đường trung tâm UV và một màu/độ trong suốt. Nếu bạn muốn tạo một mặt dưới, bạn nên tạo các đặc tính mới và đặt chúng trên mặt. Ví dụ, mã này sẽ tạo một c
local AssetService = game:GetService("AssetService")
-- Được cung cấp 4 ID vé cạnh, thêm một hình thể bình thường mới và 2 hình thể tam giác, tạo thành một quad nhọn
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Điều này tạo một ID bình thường được tính toán tự động
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
-- Tạo một khối lập phương với các cạnh bị gập giữa 6 bên
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) -- Phía trước
addSharpQuad(eMesh, v1, v3, v4, v2) -- Quay Lại
addSharpQuad(eMesh, v1, v5, v7, v3) -- Rẽ
addSharpQuad(eMesh, v2, v4, v8, v6) -- Phải
addSharpQuad(eMesh, v1, v2, v6, v5) -- Thân dưới
addSharpQuad(eMesh, v3, v7, v8, v4) -- Trên
eMesh:RemoveUnused()
return eMesh
end
Cuộn dây
Mặt lưới có một mặt trước và một mặt sau. Khi vẽ lưới, chỉ mặt trước của các khuôn mặt được vẽ bằng mặt trước của chúng, mặc dù bạn có thể thay đổi nó bằng cách thiết lập thuộc tính DoubleSided của lưới thành
Lượng trọng của các điểm trên khuôn mặt xác định liệu bạn có đang nhìn vào phía trước hay phía quay lại. Phía trước của khuôn mặt được hiển thị khi các điểm đi ngược hướng xung quanh nó.
Giới hạn
EditableMesh hiện đang có giới hạn 60.000 đỉnh và 20.000 tam giác. Cố gắng thêm quá nhiều đỉnh hoặc tam giác sẽ gây ra lỗi.
Tóm Tắt
Phương Pháp
Thêm một màu mới vào geometrical và trả một ID màu ổn định.
Thêm một bình thường mới vào geometrical và trả lại một ID bình thường ổn định.
Thêm một chiếc tam giác mới vào lưới và trả lại một ID khuôn mặt ổn định.
Thêm mộtUV mới vào geometrical và trả lại một ID UV ổn định.
Thêm một cột mới vào geometrical và trả lại một ID cột ổn định.
Tìm điểm gần nhất trên bề mặt lưới.
Tìm cạnh gần nhất đến một điểm cụ thể trong không gian.
Tìm tất cả các góc trong một cầu thể chính xác.
Trả lại một danh sách các khuôn mặt gần một khuôn mặt cụ thể.
Trả lại một danh sách các cạnh bên một cạnh cụ thể.
Trả lại màu cho ID màu đã được cung cấp.
Trả lại màu alpha (độ trong suốt) tại ID màu đã được cung cấp.
Trả lại tất cả các màu của lưới.
Trả lại ID màu của khuôn mặt cho các vép trên khuôn mặt.
Trả lại ID bình thường của khuôn mặt cho các đỉnh trên khuôn mặt.
Trả lại ID UV của mặt cho các đỉnh trên mặt.
Quay ID của các cạnh của khuôn mặt.
Quay tất cả các khuôn mặt của mạng lưới.
Trả lại một danh sách các khuôn mặt sử dụng một ID đặc tính cụ thể.
Trả lại véctor bình thường cho ID bình thường được cung cấp.
Trả lại tất cả các bình thường của mạng lưới.
Nhận vị trí của một vért.
Đoạn dấu UV tại ID UV được cung cấp.
Trả lại tất cả các UV của lưới.
Quay tất cả các góc nhìn là một danh sách các ID góc ổn định.
Trả lại một danh sách các cạnh sử dụng một ID đặc tính cụ thể.
Trả lại một chuỗi mô tả ID ổn định, hữu ích cho mục đích debug.
Hợp nhất các đỉnh nối với nhau.
Loại bỏ một khuôn mặt bằng cách sử dụng ID khuôn mặt ổn định của nó.
Loại bỏ tất cả các cạnh vuông, bình thường, UV và màu, và trả lại các ID đã xóa.
Đặt lại ID này để được tính toán tự động.
Đặt màu cho một ID màu.
Đặt màu alpha (độ trong suốt) cho một ID màu.
Đặt màu mũi tên của khuôn mặt thành các ID màu mới.
Đặt các thông số bình thường của mặt đến các ID mới.
Đặt ID UV của khuôn mặt thành các ID UV mới.
Đặt ID của các cạnh của khuôn mặt để các ID cạnh mới.
Đặt mức thường cho một ID bình thường.
Đặt vị trí một cạnh trong không gian đối tượng local của mesh.
Đặt vị trí UV cho một ID UV.
Chia tất cả các khuôn mặt trên mạng lưới thành ba góc.
Thuộc Tính
Phương Pháp
AddColor
Thêm một màu mới vào geometrical và trả một ID màu ổn định.
Tham Số
Lợi Nhuận
ID màu ổn định của màu mới.
AddNormal
Thêm một giá trị bình thường mới vào geometrical và trả một ID bình thường ổn định. Nếu giá trị bình thường không được xác định, geometrical sẽ tự động tính toán.
Tham Số
Vectơ thường. Nếu giá trị bình thường không được xác định, vectơ sẽ được tính toán tự động.
Lợi Nhuận
ID bình thường ổn định của mới bình thường.
AddTriangle
Thêm một chiếc tam giác mới vào lưới và trả lại một ID khuôn mặt ổn định.
Tham Số
ID của các góc đầu tiên của tam giác.
ID của cạnh thứ hai của tam giác.
ID của các cạnh của hình tam giác.
Lợi Nhuận
ID khuôn mặt ổn định của khuôn mặt mới.
AddUV
Thêm mộtUV mới vào geometrical và trả lại một ID UV ổn định.
Tham Số
Điểm坐标 UV mới.
Lợi Nhuận
ID UV ổn định của nuevaUV.
AddVertex
Thêm một cột mới vào geometrical và trả lại một ID cột ổn định.
Tham Số
Định vị trong không gian đối tượng local của mesh.
Lợi Nhuận
Đã đạt được ID stable vertex of the new vertex.
Destroy
Lợi Nhuận
FindClosestPointOnSurface
Tìm điểm gần nhất trên bề mặt lưới. Đưa ID mặt, điểm trên lưới trong không gian đối tượng local và坐标 barycentric của vị trí trong khuôn mặt. Xem RaycastLocal() để biết thêm thông tin về坐độ barycentric.
Tham Số
Vị trí điểm trong không gian đối tượng local của mesh.
Lợi Nhuận
Tập hợp của ID mặt, điểm vào mạng lưới trong không gian đối tượng địa phương và bản vẽ trung tâm của vị trí trong khuôn mặt.
FindClosestVertex
Tìm cạnh gần nhất đến một điểm cụ thể trong không gian và trả lại một ID cạnh ổn định.
Tham Số
Vị trí điểm trong không gian đối tượng local của mesh.
Lợi Nhuận
ID giao đỉnh ổn định gần nhất đến điểm được xác định trong không gian.
FindVerticesWithinSphere
Tìm tất cả các góc trong một cục sphere và trả lại một danh sách các ID góc ổn định.
Tham Số
Trung tâm của hình dạng trong không gian đối tượng của lưới.
Bán kính của quả cầu.
Lợi Nhuận
Danh sách các mã thức ổn định trong khu vực yêu cầu.
GetAdjacentFaces
Đưa một ID khuôn mặt ổn định, trả lại một danh sách các khuôn mặt lân cận.
Tham Số
Lợi Nhuận
Danh sách các ID khuôn mặt cạnh trước khuôn mặt được cho.
GetAdjacentVertices
Đưa một ID giao đồng ổn định, trả lại một danh sách các giao đồng bên cạnh.
Tham Số
ID Vertex xung quanh để nhận các góc cạnh bên.
Lợi Nhuận
Danh sách các ID của các góc vuông bên cạnh ID góc đó đã được cung cấp.
GetColor
Trả lại màu cho ID màu đã được cung cấp.
Tham Số
ID màu để nhận màu.
Lợi Nhuận
Màu cho màu ổn định yêu cầu.
GetColorAlpha
Trả lại màu alpha (độ trong suốt) tại ID màu ổn định được cung cấp.
Tham Số
ID màu cho nó để nhận alpha.
Lợi Nhuận
Màu alpha ở ID màu ổn định yêu cầu.
GetColors
Quay tất cả các màu của mạng lưới như một danh sách các ID màu ổn định.
Lợi Nhuận
Danh sách ID màu ổn định.
GetFaceColors
Trả lại ID màu của khuôn mặt cho các vép trên khuôn mặt.
Tham Số
ID khuôn mặt để nhận ID màu.
Lợi Nhuận
Danh sách ID màu được sử dụng cho các vép trên khuôn mặt được cho.
GetFaceNormals
Trả lại ID bình thường của khuôn mặt cho các đỉnh trên khuôn mặt.
Tham Số
ID khuôn mặt để nhận các ID thông thường.
Lợi Nhuận
Danh sách các ID thường được sử dụng cho các đỉnh trên khuôn mặt được cho.
GetFaceUVs
Trả lại ID UV của mặt cho các đỉnh trên mặt.
Tham Số
ID khuôn mặt để nhận ID UV.
Lợi Nhuận
Danh sách ID UV được sử dụng cho các vép trên khuôn mặt được cho.
GetFaceVertices
Quay ID của các cạnh của khuôn mặt.
Tham Số
Lợi Nhuận
Danh sách ID của các cạnh trên khuôn mặt được cho.
GetFaces
Quay tất cả các khuôn mặt của mạng lưới như một danh sách các ID mặt ổn định.
Lợi Nhuận
Danh sách các ID khuôn mặt ổn định.
GetFacesWithAttribute
Trả lại một danh sách các khuôn mặt sử dụng một ID ngưỡng cụ thể, ID thường, ID UV hoặc một ID màu.
Tham Số
ID đặc tính để tìm các khuôn mặt sử dụng nó.
Lợi Nhuận
Danh sách các ID khuôn mặt sử dụng ID đặc tính đã được cung cấp.
GetNormal
Trả lại véctor bình thường cho ID bình thường được cung cấp.
Tham Số
ID bình thường mà bạn có thể nhận được vektor bình thường.
Lợi Nhuận
Vector thường ở ID thường yêu cầu.
GetNormals
Trả lại tất cả các hệ số bình thường của mạng như một danh sách các hệ số bình thường ổn định.
Lợi Nhuận
Danh sách các ID bình thường ổn định.
GetPosition
Lấy vị trí của một vép trong không gian đối tượng local của mesh.
Tham Số
ID vé máy bay ổn định để nhận vị trí.
Lợi Nhuận
Vị trí của một đỉnh trong không gian đối tượng lưới.
GetUV
Đoạn dấu UV tại ID UV được cung cấp.
Tham Số
ID UV để nhậnCoordinate UV.
Lợi Nhuận
UV坐标 ở ID UV yêu cầu.
GetUVs
Quay lại tất cả các UV của mạng lưới như một danh sách các ID UV ổn định.
Lợi Nhuận
Danh sách các ID UV ổn định.
GetVertices
Quay tất cả các góc nhìn là một danh sách các ID góc ổn định.
Lợi Nhuận
Danh sách các mã thân cây ổn định.
GetVerticesWithAttribute
Trả lại một danh sách các cạnh sử dụng một ID mặt nạ, ID thường, ID UV hoặc màu sắc ID.
Tham Số
ID đặc tính để tìm các vértice sử dụng nó.
Lợi Nhuận
Danh sách ID của các thành phần dùng ID tương tự như đã đề cập.
IdDebugString
Trả lại một chuỗi mô tả một ID ổn định, hữu ích cho các mục đích debug, như f17 hoặc v12 , chứa đánh máy, số ID và phiên bản.
Tham Số
ID để trả lại một chuỗithông tin trình xử lý.
Lợi Nhuận
Chuỗi mô tả ID ở dạng đọc nhân văn.
MergeVertices
Hợp nhất các góc nhìn cùng nhau, để sử dụng một ID góc nhìn duy nhất nhưng giữ các ID đặc tính nguyên bản khác.
Tham Số
Khoảng cách mà các góc được xem xét để chạm vào nhau.
Lợi Nhuận
Một bản đồ của ID cũ của vért đến ID vért mới cho vért đã được hợp nhất.
RaycastLocal
Tạo một tia và trả lại một điểm giao thoa, ID mặt và bản vẽ barycentric. Các đầu vào và ra của phương pháp này đều ở không gian đối tượng địa lý của mesh.
Một barycentric coordinate là một cách để đặc biệt hóa một điểm trong một khuôn mặt như một kết hợp trọng số của 3 vé của khuôn mặt. Điều này hữu ích như một cách chung để hòa hợp các đặc tính vé. Xem mẫu mã mã như một hình minh họa.
Tham Số
Nguồn của các ray trong không gian đối tượng local của lưới.
Hướng của các tia.
Lợi Nhuận
Tứ trụ của điểm giao thoa, mặt ID và barycentric坐标.
Mẫu mã
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
Loại bỏ một khuôn mặt bằng cách sử dụng ID khuôn mặt ổn định của nó.
Tham Số
Lợi Nhuận
RemoveUnused
Loại bỏ tất cả các góc, bình thường, UV và màu mà không được sử dụng trên bất kỳ khuôn mặt nào và trả lại các ID bị xóa.
Lợi Nhuận
Tất cả các ID stable bị xóa.
ResetNormal
Đặt lại ID này thành một mức giá trị bình thường để được tính toán tự động dựa trên hình dạng của lưới, thay vì thiết cài đặtthủ công.
Tham Số
ID bình thường ổn định để trả về mặc định.
Lợi Nhuận
SetColor
Đặt màu cho một ID màu.
Tham Số
Lợi Nhuận
SetColorAlpha
Đặt màu alpha (độ trong suốt) cho một ID màu.
Tham Số
Lợi Nhuận
SetFaceColors
Đặt màu mũi tên của khuôn mặt thành các ID màu mới.
Tham Số
ID khuôn mặt để cập nhật màu vép.
Danh sách ID màu mới ổn định để sử dụng cho các cạnh của khuôn mặt được cho.
Lợi Nhuận
SetFaceNormals
Đặt các thông số bình thường của mặt đến các ID mới.
Tham Số
ID khuôn mặt để cập nhật các hệ số bất thường của vértice.
Danh sách ID bình thường mới để sử dụng cho các vép của khuôn mặt được cho.
Lợi Nhuận
SetFaceUVs
Đặt ID UV của khuôn mặt thành các ID UV mới.
Tham Số
ID khuôn mặt để cập nhật các UV khuôn mặt.
Danh sách ID UV mới ổn định để sử dụng cho các cạnh của khuôn mặt được cho.
Lợi Nhuận
SetFaceVertices
Đặt ID của các cạnh của khuôn mặt để các ID cạnh mới.
Tham Số
ID khuôn mặt để cập nhật các cạnh.
Danh sách các mới stablevertex IDs để sử dụng cho khuôn mặt đó.
Lợi Nhuận
SetNormal
Đặt giá trị bình thường cho một ID bình thường. Điều này sẽ thay đổi giá trị bình thường cho mỗi góc mặt sử dụng ID bình thường.
Tham Số
ID stable normal để thiết lập vektor bình thường.
Vectơ bình thường để thiết cài đặt.
Lợi Nhuận
SetPosition
Đặt vị trí một cạnh trong không gian đối tượng local của mesh.
Tham Số
ID stable của vé cầu để đặt.
Định vị trong không gian đối tượng local của mesh.
Lợi Nhuận
SetUV
Đặt vị trí UV cho một ID UV.
Tham Số
Lợi Nhuận
Triangulate
Chia tất cả các khuôn mặt trên mạng để làm thành tam giác. Hiện tại, điều này không làm gì được vì chỉ có tam giác mới có thể tạo, nhưng nếu mã của bạn sử dụng tam giác, thì được khuyến nghị bạn gọi phương thức này sau khi gọi AssetService:CreateEditableMeshAsync()