EditableMesh

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立

EditableMesh 改變鏈接到 MeshPart 的視覺網格,讓您可以在 Studio 和體驗中兩者的網格進行查詢和修改。

Class.EditableMesh 可以從 ContentMeshPart 或網格 ID 使用

Class.EditableMesh 會顯示在通過 MeshPart 連接到新 AssetService:CreateMeshPartAsync() 的鏈接上。 您可以通過 1>Class.EditableMesh1> 更多例子,或

要重新計算衝突和流體 геометria後,您可以再次呼叫 AssetService:CreateMeshPartAsync()MeshPart:ApplyMesh() 來更新現有 MeshPart 。 一般來說,建議您在

啟用已發佈的體驗編輯網格

為了安全目的,使用 EditableMesh 對發佈的體驗會因預設而失敗。若要啟用使用,請 EditableMesh 必須是 13+ 歲,並且身份驗ID 驗證。在您被��

許可

為了防止濫用,AssetService:CreateEditableMeshAsync() 只允許您載入和編輯網格資產:

  • 那些是擁有體驗的創作者的 (如果體驗屬於個人).
  • 那些是由群組所擁有的 (如果體驗屬於群組)。
  • 那些是由已登入的 Studio 使用者擁有的(如果該位置檔案尚未儲存或發佈到 Roblox)。

使用 APIs 載入資產,不符合上述條件,將會發生錯誤。

固定尺寸網格

從現有網格資產( via EditableMesh )創建新的 AssetService:CreateEditableMeshAsync() 時,結果的編輯網格會以預設大小固定。 編輯網格的大小會在記憶體上更有效率,但您無法編輯特徵、面或屬性。 僅能編輯值的網格屬性和位置。

穩定的頂點/面 ID

很多 EditableMesh 方法會取

注意,ID 不能保證是順序,因此當你在垂直或面上移動時,你應該在 GetVertices()GetFaces() 的表中移動時,你應該移動到表。

分割垂直領域屬性

vertex 是面的角,並且上下文結合面。vertex 可以有多個屬性:位置、正常、uv坐標、顏色和2>透明度2>。

有時候會有用於所有接觸樹角的面使用相同的屬性值,但有時候您可能想要不同的面使用不同的屬性值在同一個樹角上。例如,在平滑球上,每個樹角只會有一個普通。 與此相反,在方塊角的角落,樹角將有 3 個不同的普通值 (一個為每個鄰近面)。

當創建面時,每個邊緣將預設有一個屬性:一個正常,一個 UV 坐標和一個顏色/透明度。如果您想要創建一個縫隙,您應該創建新屬性並將它設置在面上。例如,此代碼將創建一個鋒利的方塊:


local AssetService = game:GetService("AssetService")
-- 提供 4 個邊緣 ID,並且增加 2 個三角形,以形成銳利的四角形
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- 這會創建一個正常的 ID,該 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 邊間的增加邊來製作方塊
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

臉周圍的垂直排列是否表示您正在查看前方或返回方。臉前方的垂直排列會顯示,當垂直排列的角度向前或向後移動。

Order of the vertices around the face
限制

EditableMesh 目前有 60,000 個邊緣和 20,000 個三角形的限制。嘗試添加太多邊緣或三角形會導致錯誤。

概要

屬性

方法

屬性

FixedSize

唯讀
未複製
Roblox 安全性
平行讀取

SkinningEnabled

平行讀取

方法

AddColor

新增一個顏色至幾何圖形,並且返回一個穩定的顏色 ID。

參數

color: Color3

新的顏色。

alpha: number

顏色 alpha (透明度)。


返回

新顏色的穩定顏色 ID。

AddNormal

新增一個新的正常值至 геометrie,並且返回一個穩定的正常ID。如果未指定正常值,則會自動計算。

參數

normal: Vector3

正常向向量力。如果未指定正常值,將自動計算。


返回

新正常的標識ID。

AddTriangle

新增新三角形到網格,並且返回一個穩定的面ID。

參數

vertexId0: number

三角形的第一個 вер節ID。

vertexId1: number

三角形的第二個 вершина的 ID。

vertexId2: number

三角形的第三個 вер節的 ID。


返回

新面的穩定面ID。

AddUV

新增一個新的 UV 至 геометria,並且返回一個穩定的 UV ID。

參數

新的 UV 坐標。


返回

新的 UV 的穩定 UV 身份。

AddVertex

新增一個新節點到 геометrie,並且返回一個穩定的節點 ID。

參數

位置在網格的本地對象空間。


返回

新垂直的穩定範圍 ID。

Destroy

void

立即摧毀網格的內容,並且立即重新佔領使用的內存。


返回

void

FindClosestPointOnSurface

在網格表面上找到最近的點。返回面部 ID、指向本地對象空間中的網格、和位置內面的 barycentric 坐標。請參閱 RaycastLocal() 以取得更多關於 barycentric 坐標的資訊。

參數

point: Vector3

指向網格的本地對象空間。


返回

面 ID 的複素,指向本地對象空間中的網格,並且位置內的位置中心坐標。

FindClosestVertex

找到空間中的最接近點,並且返回一個穩定的vertex ID。

參數

toThisPoint: Vector3

指向網格的本地對象空間。


返回

最接近空間指定點的 stabile 垂直 ID。

FindVerticesWithinSphere

在特定球體內尋找所有角色,並且返回一個穩定的角色 ID 列。

參數

center: Vector3

網格的本地對象空間中的球中心。

radius: number

球體的範圍。


返回

在要求的球體內的穩定範圍 ID 列表。

GetAdjacentFaces

提供一個穩定的面 ID 時,返回一個列表的鄰近面。

Adjacent faces indicated around requested face

參數

faceId: number

返回

列出顔面 ID 鄰近指定顔面。

GetAdjacentVertices

提供一個穩定的垂直 ID 時,返回一個列表的鄰近垂直。

Adjacent vertices indicated around requested vertex

參數

vertexId: number

Vertex ID 在哪裡可以取得鄰近的邊緣。


返回

提供鄰近垂直 ID 的列 of IDs 。

GetCenter


返回

EditableMesh 的中心。

GetColor

返回指定的顏色 ID 的顏色。

參數

colorId: number

取得顏色的 ID。


返回

顏色為所要求的穩定顏色 ID。

GetColorAlpha

返回指定的顏色 ID 上的顏色 alpha (透明度)。

參數

colorId: number

可取得 alpha 的顏色 ID。


返回

在要求的穩定顏色 ID 上變更顏色。

GetColors

將網格的所有顏色變成一個穩定的顏色列表。


返回

一覽表示穩定顏色 ID。

GetFaceColors

返回面的顏色 ID 為面上的垂直。

參數

faceId: number

面部ID,用於取得顏色ID。


返回

使用指定面上的垂直所使用的顏色 ID 列表。

GetFaceNormals

返回面的正常 ID 為面上的垂直。

參數

faceId: number

面部 ID 可取得正常的 ID。


返回

使用指定面上的垂直的 ID 列表。

GetFaceUVs

返回面的 UV 標識,對面上的垂直。

參數

faceId: number

面部ID,用於取得 UV ID。


返回

使用指定面上的 UV 標識的方法列表。

GetFaceVertices

返回面的頂點 ID。

參數

faceId: number

返回

提供面頰的垂直 ID 清單。

GetFaces

將網格的所有面返回作為一個穩定的面ID列表。


返回

一覽穩定面孔 ID 的清單。

GetFacesWithAttribute

返回使用指定 вер維 ID、普通 ID、UV ID 或顏色 ID 的面。

參數

id: number

屬性 ID 可以找到使用它的面。


返回

使用指定屬性 ID 的面部 ID 清單。

GetNormal

返回指定的普通 ID 的普通 vector。

參數

normalId: number

一般ID,用於取得一般量向量力。


返回

要求的普通值。

GetNormals

將網格的所有普通值作為穩定的普通ID列表返回。


返回

一覽穩定的普通 ID 列表。

GetPosition

取得網格的本地對象空間中的位置。

參數

vertexId: number

可取得位置的穩定範圍。


返回

位置在網格的本地對象空間中的垂直。

GetSize


返回

EditableMesh 的大小。

GetUV

返回指定的 UV ID 上的 UV 坐標。

參數

uvId: number

擁有此 ID 的 UV 可獲得擁有此 ID 的 UV 坐標。


返回

在要求的 UV ID 上輸入 UV 坐標。

GetUVs

將網格中的所有 UV 返回為一個穩定的 UV 列表。


返回

列出穩定的 UV 標識。

GetVertices

返回所有垂直為穩定垂直 ID 列表。


返回

一覽可見的 стабильный верши ID。

GetVerticesWithAttribute

返回使用指定面 ID、普通 ID、UV ID 或顏色 ID 的邊緣列表。

參數

id: number

屬性 ID 可以找到使用它的垂直。


返回

使用指定屬性 ID 的頂點列表。

IdDebugString

返回一個包含類型、ID 號碼和版本的描述式字串,例如 f17v12,包含類輸入、ID 號碼和版本。

參數

id: number

一個可以返回調試資訊字串的 ID。


返回

一個人類可以讀取的格式描述 ID 的字串。

MergeVertices

Map

結合相觸的邊緣,以使用單個邊緣 ID ,但保留其他原始屬性 ID。

參數

mergeTolerance: number

垂直邊緣之間的距離。


返回

Map

將舊的垂直 ID 重新分配到新的垂直 ID 以對合併後的垂直重新分配。

RaycastLocal

投射一個光束,並且返回一個交叉點、面部 ID 和對稱點。這個方法的輸入和輸出在網格的本地對象空間中。

barycentric coordinate 是指定面內點的重量化組合 3 邊的方法。這是一種用於一般方法的擬合方法的方法。請參閱此方法的代碼示例作為說明。

參數

origin: Vector3

網格的本地對象空間中的射線的原始。

direction: Vector3

射線的方向。


返回

交叉點、臉部 ID 和楔形坐標的樣本。

範例程式碼

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

使用其穩定的面ID移除一個面。

參數

faceId: number

返回

void

RemoveUnused

移除所有不在任何臉部使用的邊緣、輻射、 UV 和顏色,並且返回已移除的 ID。


返回

所有已移除的穩定 ID。

ResetNormal

void

將此普通 ID 重設,以自動計算網格的形狀,而不是手動設定。

參數

normalId: number

提供正常的 ID 來重置。


返回

void

SetColor

void

設定顏色以取得顏色 ID。

參數

colorId: number

可設定顏色的穩定顏色 ID。

color: Color3

顏色設設定。


返回

void

SetColorAlpha

void

設定顏色 ID 的顏色 alpha (透明度)。

參數

colorId: number

可設定顏色 alpha 的穩定顏色 ID。

alpha: number

Alpha 設定。


返回

void

SetFaceColors

void

設定面的頂點顏色為新的顏色 ID。

參數

faceId: number

面部 ID 可更新顔色。

ids: Array

提供臉部垂直的新穩定顏色 ID 清單。


返回

void

SetFaceNormals

void

設定面的頂點正常值為新的正常 ID。

參數

faceId: number

面部 ID 可更新邊緣正常。

ids: Array

提供面垂直使用的新普通 ID 清單。


返回

void

SetFaceUVs

void

將面的 UV 設為新的 UV ID。

參數

faceId: number

面部 ID 可更新垂直霂巢 UV。

ids: Array

提供給面垂直使用的新穩定 UV 標識。


返回

void

SetFaceVertices

void

將面的垂直設為新的垂直 ID。

參數

faceId: number

面部 ID 以更新垂直。

ids: Array

提供面部所使用的新 стабиль вер弧 ID 列表。


返回

void

SetNormal

void

設定正常ID的正常值。這會改變使用正常ID的每個面頰。

參數

normalId: number

可設定的普通 向量力ector 的正常 ID。

normal: Vector3

一般向量設定。


返回

void

SetPosition

void

設定網格的本地對象空間中的垂直位置。

參數

vertexId: number

您的位置的垂直圖形 ID。

位置在網格的本地對象空間。


返回

void

SetUV

void

設定 UV 坐標以取得 UV ID。

參數

uvId: number

設定 UV 坐標的 UV ID。

UV 坐標。


返回

void

Triangulate

void

將網格上的所有面分為三角形。目前,這並不會發生任何效果,因為只有三角形才能創建,但如果您的代碼使用三角形,建議您在 AssetService:CreateEditableMeshAsync() 之後呼叫此方法。


返回

void

活動