FileMesh 对象在被父辈时应用纹理网格到 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。
网格的抵消决定了网格在显示时的相对位置,从 BasePart.Position 的 BasePart 显示网格。
网格的尺寸决定了网格相对于原始尺寸的大小。
更改网格纹理的色调,用于 FileMesh.TextureId 。
属性
MeshId
MeshId 是要显示的网格内容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