DataModelMesh
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
O DataModelMesh é uma classe abstrata a partir da qual as classes de malha descendem.
As classes de malha são objetos que, quando parentadas para BaseParts alteram a aparência da peça para a de uma malha predefinida.Observe, eles só alteram a aparência da peça e não os limites de física/colisão da peça.Desenvolvedores que desejam aplicar uma malha a uma peça que altera a colisão da peça devem usar MeshParts .
Observe que as classes MeshPart e CharacterMesh não descendem do DataModelMesh.
Resumo
Propriedades
O deslocamento de uma malha determina a posição relativa a partir do BasePart.Position de uma BasePart que a malha será exibida.
A escala de um mesh determina o tamanho do mesh em relação às suas dimensões originais.
Muda a tonalidade da textura de uma malha, usada com FileMesh.TextureId.
Propriedades
Offset
O deslocamento de uma malha determina a distância a partir do BasePart.Position de uma BasePart que a malha será exibida.
Como usar o deslocamento de malha
A propriedade Offset altera a posição relativa em que o mesh será renderizado.Por exemplo, um deslocamento de 0, 5, 0 fará com que a malha seja exibida a 5 metros acima da posição do BasePart.
A posição do BasePart permanece inalterada, o que significa que a caixa de colisão física da peça permanecerá no mesmo local.Isso é demonstrado na imagem abaixo, onde o contorno verde (um SelectionBox ) mostra as extremidades do BasePart .
Outros usos para deslocamento de malha
Há uma série de usos interessantes para a propriedade de deslocamento de malha.
- Deslocamento e DataModelMesh.Scale podem ser animados usando TweenService relativamente barato, pois o motor não precisa fazer nenhum cálculo de física/colisão, pois o BasePart não é movido.
- Mudando a relação entre a malha e seus extremos de colisão (determinados pelo BasePart )
Amostras de código
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are 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.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
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()
Scale
A escala de um mesh determina o tamanho do mesh em relação às suas dimensões originais.
Como usar a dimensionar/escalonarde malha
A propriedade de escala funciona de forma ligeiramente diferente dependendo do tipo de malha que está sendo usada.Observe que o tamanho do BasePart permanece inalterado, o que significa que a caixa de colisão física da peça permanecerá a mesma.
- SpecialMesh objetos com SpecialMesh.FileType setados para escala 'FileMesh' em relação às dimensões originais da malha quando foi carregada no Roblox
- BlockMesh objetos ou SpecialMesh objetos com SpecialMesh.FileType definidos para escala 'Tijolo', 'Cunha' ou 'Esfera' uniformemente em relação ao BasePart.Size de seu pai
- CylinderMesh objetos ou SpecialMesh objetos com SpecialMesh.FileType definido para escala 'Cilindro' em relação ao BasePart.Size de seu pai.Uniformemente para o eixo de altura dos cilindros e mantendo uma proporção de 1:1 para o comprimento e a largura do cilindro, usando o menor valor.
- SpecialMesh objetos com SpecialMesh.FileType definidos como 'Cabeça' atualmente escalam de maneira não padrão.Desenvolvedores não devem confiar nisso, pois há planos para alterar esse comportamento.
- SpecialMesh objetos com SpecialMesh.FileType definidos para escala 'Torso' de maneira não padrão.Desenvolvedores não devem confiar nisso, pois há planos para depreciar esse digitarde malha.
Demonstração de escala de malha
O comportamento acima pode ser visto nas seguintes imagens de demonstração.
Escala linear em relação ao tamanho da peça para malhas 'Tijolo', 'Fatia' e 'Esfera'.
Escala linear em relação ao mesh original carregado para malhas 'FileMesh'
Escalação não uniforme restrita para malhas de 'Cilindro'
Outros usos para dimensionar/escalonarde malha
Há uma série de usos interessantes para a propriedade de deslocamento de malha.
- DataModelMesh.Offset e Escala podem ser animados usando TweenService relativamente barato, pois o motor não precisa fazer nenhum cálculo de física/colisão, pois o BasePart não é alterado.
- Mudando a relação entre a malha e seus extremos de colisão (determinados pelo BasePart )
Amostras de código
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are 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.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
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()
VertexColor
Cor do vértice determina a mudança de tom do Texture de um FileMesh .Observe que esta propriedade é um Vector3 em vez de um Color3 ; para converter, use as propriedades Color3.R, Color3.G e Color3.B.
Embora esta propriedade permita a modificação básica de uma textura, mudar uma textura inteira fornece mais controle. Veja MeshPart para mais detalhes.