檔案網格對象會將紋理網格應用到BasePart時,其屬性會被SpecialMesh對物件繼承。
什麼是檔案網格?
檔案網格允許使用者上傳的網格應用到 BasePart 。應用的網格取決於 FileMesh.MeshId 屬性。也可以使用 FileMesh.TextureId 將紋理應用到此網格上。
雖然它不是抽象類別,並且可以由開發人員使用,但所有 FileMesh 屬性都會被 SpecialMesh 對物件繼承。當 SpecialMesh 設為 SpecialMesh.MeshType 'FileMesh' 時,它的行為與 FileMesh 對象相同。雖然兩個對象都有功能,但 SpecialMesh 對象是官方支持的類別。
有關使用網格的更多資訊,請參閱SpecialMesh。
範例程式碼
In this code sample a BasePart is instanced with a FileMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the FileMesh are then animated using TweenService.
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("FileMesh") -- advised to use SpecialMesh instead
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
part.Parent = workspace
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
概要
屬性
MeshId 是要顯示的網格ID的內容ID。
紋理ID是指要應用於網格的紋理的內容ID。
網格的偏移決定網格將顯示在哪個 上的相對位置。
網格的尺寸決定網格與原始尺寸相對的大小。
變更網格紋理的顏色,使用 FileMesh.TextureId 。
屬性
MeshId
MeshId 是要顯示的網格ID的內容ID。
當開發者上傳網格到 Roblox 時,網格的內容 ID 會生成。
範例程式碼
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end
TextureId
TextureId 是指要應用到網格紋理上的圖像的內容ID。當紋理ID屬性設為空字串時,紋理將不會應用到網格。
我如何變更網格的紋理?
使用 TextureId 屬性,網格的紋理可以無需重新上傳網格即更改。要執行此操作,新圖像將需要上傳到 Roblox 以指定的紋理。原始的紋理圖像檔案可以使用 Roblox Studio 的「匯出選擇」選項來匯出網格,以取得。圖像檔案將與匯出的 .obj 檔案一起保存。
新的紋理可以重新上傳到 Roblox 作為裝飾,其內容ID可以使用 TextureId 屬性來應用到網格。
我如何製作紋理網格?
網格只能被紋理化,如果網格已被UV映射。UV映射指將紋理地圖投射到網格上的做法。這不能使用 Roblox Studio 進行,必須使用外部 3D 建模應用程式,例如 Blender 。
範例程式碼
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end