EditableMesh
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
EditableMesh cambia el malla visual aplicada cuando se enlaza a un MeshPart, permitiendo la consulta y modificación del malla tanto en Studio como en la experiencia.
Un EditableMesh se puede crear a partir de un existente Content de un Class.MeshPart o un ID de malla utilizando
Un EditableMesh se muestra cuando está vinculado a un nuevo MeshPart, a través de AssetService:CreateMeshPartAsync(). Puedes crear más instancias de 2>Class.MeshPart2> que se refieren a el mismo 5>EditableMesh
Llamar a AssetService:CreateMeshPartAsync() recalculará la colisión y geometría de fluido con cualquier edición y actualizará la existente MeshPart . Generalmente se recomienda hacer esto al final de una operación de edición conceptual. Class.MeshPart:ApplyMesh() actualizará la geometría de colisión y fluido del objetivo 1> Class.MeshPart
ID de verátebra/cara estable
Muchos métodos de EditableMesh toman vértice ,
Tenga en cuenta que los ID no se garantizan de estar en orden y puede haber huecos en el número, por lo que cuando itera a través de los vértices o caras, debe itera a través de la tabla devuelta por GetVertices() o GetFaces() .
Atributos de vertex dividido
Un nodo es una esquina de una cara, y conecta topológicamente las caras juntas. Los nodos pueden tener varios atributos: posición, normal, coordenada de UV, color y transparencia.
A veces es útil para todas las caras que tocan un vértice para usar los mismos valores de atributos, pero a veces querrás que diferentes caras usen diferentes valores de atributos en el mismo vértice. Por ejemplo, en una esfera lisa, cada vértice solo tendrá un valor normal único. En cambio, en la esquina de un cubo, la válvula tendrá 3 valores normales diferentes (uno para cada cara adyacente). También puedes tener aristas en
Al crear caras, cada vértice por defecto tendrá una de cada atributo: un normal, un coordenado de UV y un color/transparencia. Si desea crear uniones, debe crear nuevos atributos y establecerlos en la cara. Por ejemplo, este código creará un cubo afilado:
local AssetService = game:GetService("AssetService")
-- Dado 4 ID de vértice, agrega un nuevo normal y 2 triángulos, haciendo un cuádruple afilado
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Esto crea una identificación normal que se calcula automáticamente
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
-- Hace un cubo con bordes crecidos entre los 6 lados
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) -- Delante
addSharpQuad(eMesh, v1, v3, v4, v2) -- Atrás
addSharpQuad(eMesh, v1, v5, v7, v3) -- Izquierda
addSharpQuad(eMesh, v2, v4, v8, v6) -- Derecha
addSharpQuad(eMesh, v1, v2, v6, v5) -- Inferior
addSharpQuad(eMesh, v3, v7, v8, v4) -- Superior
eMesh:RemoveUnused()
return eMesh
end
Envolviendo
Las caras de malla tienen una parte delantera y una parte trasera. Cuando se dibujan las meshes, solo se dibuja la parte delantera de las caras por defecto, aunque puede cambiar esto estableciendo la propiedad de la malla a DoubleSided .
El orden de los vértices alrededor de la cara determina si estás mirando hacia delante o hacia volver. La parte frontal de la cara es visible cuando los vértices van en sentido contrario alrededor de ella.
Limitaciones
EditableMesh actualmente tiene un límite de 60,000 vértices y 20,000 triángulos. Intenta agregar demasiados vértices o triángulos para causar un error.
Resumo
Métodos
Añade un nuevo color a la geometría y devuelve un ID de color estable.
Añade un nuevo normal a la geometría y devuelve un ID de normal estable.
Añade un nuevo triángulo a la malla y devuelve una ID de cara estable.
Añade un nuevo UV a la geometría y devuelve un ID de UV estable.
Añade un nuevo vértice a la geometría y devuelve un ID de vértice estable.
Encuentra el punto más cercano en la superficie de la malla.
Encuentra el vértice más cercano a un punto específico en el espacio.
Encuentra todos los vértices dentro de un cierto espacio.
Regresa una lista de caras adyacentes a una cara específica.
Devuelve una lista de vértices adyacentes a un vértice dado.
Devuelve el color para el ID de color proporcionado.
Devuelve el color alpha (transparencia) en el ID de color dado.
Devuelve todos los colores de la malla.
Devuelve los ID de color de la cara para los vértices de la cara.
Devuelve los ID normales de la cara para los vértices de la cara.
Devuelve los ID de UV de la cara para los vértices de la cara.
Regresa todas las caras de la malla.
Devuelve una lista de caras que usan un ID de atributo especificado.
Devuelve el vértice normal para el ID normal dado.
Devuelve todos los valores de la malla.
Obtiene la posición de un vértice.
Devuelve los valores de coordenadas de UV en el ID de UV proporcionado.
Devuelve todos los UV de la malla.
Devuelve todos los vértices como una lista de ID de vértice estable.
Devuelve una lista de vértices que usan un ID de atributo especificado.
Regresa una cadena que describe un ID estable, útil para propósitos de depósito.
Une los vértices que se tocan.
Elimina una cara usando su ID de cara estable.
Elimina todos los vértices no utilizados, normalizaciones, UV y colores, y devuelve los ID eliminados.
Restablece este ID normal para que se cálcule automáticamente.
Establece el color para un ID de color.
Establece el color alpha (transparencia) para un ID de color.
Establece los colores de vértice de la cara a los ID de color nuevos.
Establece las normales de vértice de la cara a nuevos ID de normales.
Establece los UV del vértice de la cara a nuevos ID de UV.
Establece los ID de los vértices de la cara en los ID de vértice nuevos.
Establece el normal para una identificación normal.
Establece una posición de vértice en el espacio de objetos locales del malla.
Establece coordenadas UV para una ID de UV.
Divide todas las caras en la mesa a ser triángulos.
Propriedades
Métodos
AddColor
Añade un nuevo color a la geometría y devuelve un ID de color estable.
Parâmetros
Devolução
ID de color estable de el nuevo color.
AddNormal
Añade un nuevo valor normal a la geometría y devuelve un ID de valor normal estable. Si no se especifica el valor normal, el valor se calculará automáticamente.
Parâmetros
El fuerza vectorialnormal. Si no se especifica el valor normal, se calculará automáticamente.
Devolução
ID establecido de la nueva normal.
AddTriangle
Añade un nuevo triángulo a la malla y devuelve una ID de cara estable.
Parâmetros
ID de la primera vereda del triángulo.
ID del segundo vértice del triángulo.
ID del tercer vértice del triángulo.
Devolução
AddUV
Añade un nuevo UV a la geometría y devuelve un ID de UV estable.
Parâmetros
La nueva coordenada UV.
Devolução
ID de UV estable del nuevo UV.
AddVertex
Añade un nuevo vértice a la geometría y devuelve un ID de vértice estable.
Parâmetros
Posición en el espacio de objeto local de la malla.
Devolução
ID de vértice estable del nuevo vértice.
Destroy
Devolução
FindClosestPointOnSurface
Encuentra el punto más cercano en la superficie de la malla. Restablece la ID de la cara, apunta a la malla en el espacio de objeto local y la coordenada bárica de la posición dentro de la cara. Vea RaycastLocal() para más información sobre las coordenadas báricas.
Parâmetros
Posición de punto en el espacio de objetos locales del malla.
Devolução
Tiple de la ID de la cara, apunte en el espacio de objeto local y la coordenada barycentrica de la posición dentro de la cara.
FindClosestVertex
Encuentra el vértice más cercano a un punto específico en el espacio y devuelve un ID de vértice estable.
Parâmetros
Posición de punto en el espacio de objetos locales del malla.
Devolução
ID de vértice estable más cercano al punto especificado en el espacio.
FindVerticesWithinSphere
Encuentra todos los vértices dentro de una específica esfera y devuelve una lista de ID de vértice estable.
Parâmetros
Centro del mallade la esfera en el espacio de objeto local.
Radio de la esfera.
Devolução
Lista de ID de vértice estable dentro de la solicitud de esfera.
GetAdjacentFaces
Al proporcionar una ID de cara estable,返回 una lista de caras adyacentes.
Parâmetros
Devolução
GetAdjacentVertices
Al proporcionar una ID de vértice estable,返回 una列 de vértices adyacentes.
Parâmetros
ID de vertebrado alrededor de cual para obtener vértices adyacentes.
Devolução
Lista de ID de los vértices adyacentes al ID de vértice dado.
GetColor
Devuelve el color para el ID de color proporcionado.
Parâmetros
ID de color para obtener el color.
Devolução
Color para el ID de color estable solicitado.
GetColorAlpha
Devuelve el color alpha (transparencia) en el ID de color estable dado.
Parâmetros
ID de color para obtener la alfa.
Devolução
Color alpha en el ID de color estable.
GetColors
Devuelve todos los colores del malla como una lista de ID de color estable.
Devolução
Lista de ID de color estable.
GetFaceColors
Devuelve los ID de color de la cara para los vértices de la cara.
Parâmetros
ID de la Cara para obtener los ID de color.
Devolução
Lista de ID de color usados para los vértices en la cara dada.
GetFaceNormals
Devuelve los ID normales de la cara para los vértices de la cara.
Parâmetros
ID de la Cara para obtener las ID normales.
Devolução
Lista de ID normales usados para los vértices en la cara dada.
GetFaceUVs
Devuelve los ID de UV de la cara para los vértices de la cara.
Parâmetros
ID de la Cara para obtener los ID de UV.
Devolução
Lista de ID de UV usados para los vértices en la cara dada.
GetFaces
Devuelve todas las caras de la máscara como una lista de ID de cara estable.
Devolução
GetFacesWithAttribute
Regresa una lista de caras que usan un ID de vértice dado, un ID de ID normal, un ID de UV o un ID de color.
Parâmetros
ID de atributo para encontrar caras que lo usen.
Devolução
Lista de ID de cara que usan el ID de atributo proporcionado.
GetNormal
Devuelve el vértice normal para el ID normal dado.
Parâmetros
ID de normal para obtener el fuerza vectorialnormal.
Devolução
Vectores normales en el ID de normales solicitado.
GetNormals
Devuelve todos los valores de la matriz como una lista de ID de normal estable.
Devolução
Lista de ID de normal estable.
GetPosition
Obtiene la posición de un vértice en el espacio de objetos local del malla.
Parâmetros
ID de vértice estable para obtener la posición.
Devolução
Posición de un vértice en el espacio de objetos local del malla.
GetUV
Devuelve los valores de coordenadas de UV en el ID de UV proporcionado.
Parâmetros
ID de UV para obtener la coordenada de UV.
Devolução
Coordenadas UV en el ID de UV solicitado.
GetUVs
Devuelve todos los UV de la máscara como una lista de ID de UV estable.
Devolução
Lista de ID de UV estable.
GetVertices
Devuelve todos los vértices como una lista de ID de vértice estable.
Devolução
Lista de ID de vértice estable.
GetVerticesWithAttribute
Devuelve una lista de vértices que usan una ID de cara determinada, ID de ID normal, ID de UV o ID de color.
Parâmetros
ID de atributo para encontrar vértices que lo usen.
Devolução
Lista de ID de vértice que usan el ID de atributo dado.
IdDebugString
Regresa una cadena que describe un ID estable, útil para propósitos de diagnóstico, como f17 o v12, que contiene el introducir, el número de ID y la versión.
Parâmetros
ID para el cual se返a una cadena de información de diagnóstico.
Devolução
Cadena que describe el ID en formato humano-legible.
MergeVertices
Une los vértices que se tocan, para usar un ID de vértice único, pero mantener los demás ID de atributos originales.
Parâmetros
La distancia en la que los vértices se consideran para tocarse entre sí.
Devolução
Un mapa de la antigua ID de vértice a la nueva ID de vértice para los vértices que se han fusionado.
RaycastLocal
Lanza un rayo y devuelve un punto de intersección, ID de cara y coordenadas de interfеренcias. Las entradas y salidas de este método están en el espacio de objeto local de la máquina de malla.
Un coordenada barycentrica es una manera de especificar un punto dentro de una cara como una combinación de peso de los 3 vértices de la cara. Esto es útil como una manera general de mezclar atributos de vértice. Vea el ejemplo de código de este método como una ilustración.
Parâmetros
El origen del rayo en el espacio local del objeto del malla.
Dirección de la rayo.
Devolução
Triple del punto de intersección, ID de la cara y coordenadas barycentricas.
Amostras de código
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
RemoveUnused
Elimina todos los vértices, normal, UV y colores que no se usan en ninguna cara, y devuelve los IDs eliminados.
Devolução
Todos los ID de estabilidad eliminados.
ResetNormal
Restablece este ID normal para que se cálcule automáticamente en función de la forma de la malla, en lugar de establecerlo manualmente.
Parâmetros
ID de normal estable para restablecer.
Devolução
SetColor
Establece el color para un ID de color.
Parâmetros
Devolução
SetColorAlpha
Establece el color alpha (transparencia) para un ID de color.
Parâmetros
ID de color estable para el que se establece el color alpha.
Alfa para establecer.
Devolução
SetFaceColors
Establece los colores de vértice de la cara a los ID de color nuevos.
Parâmetros
ID de la cara para actualizar los colores del vértice.
Lista de nuevos ID de color estable para usar para los vértices del rostro.
Devolução
SetFaceNormals
Establece las normales de vértice de la cara a nuevos ID de normales.
Parâmetros
ID de la cara para actualizar las normales del vértice.
Lista de nuevas ID de normal estable para usar para los vértices del rostro dado.
Devolução
SetFaceUVs
Establece los UV del vértice de la cara a nuevos ID de UV.
Parâmetros
ID de la cara para actualizar los UV del vértice.
Lista de nuevas ID estables de UV para usar para los vértices del rostro dado.
Devolução
SetFaceVertices
Establece los ID de los vértices de la cara en los ID de vértice nuevos.
Parâmetros
ID de cara para actualizar los vértices.
Lista de nuevas ID de vértice estable para usar para la cara dada.
Devolução
SetNormal
Establece el valor normal para un ID normal. Esto cambiará el valor normal para cada vértice de cara que está usando el ID normal.
Parâmetros
ID establecido para el cual se establece el normal fuerza vectorial.
Vectores de normal para establecer.
Devolução
SetPosition
Establece una posición de vértice en el espacio de objetos locales del malla.
Parâmetros
ID de vértice estable del vértice para colocar.
Posición en el espacio de objeto local de la malla.
Devolução
SetUV
Establece coordenadas UV para una ID de UV.
Parâmetros
Devolução
Triangulate
Divide todo los rostros en la máscara para que sean triángulos. Actualmente esto no hace nada, ya que solo se pueden crear triángulos, pero si su código se basa en triángulos, se recomienda que llame a este método después de llamar AssetService:CreateEditableMeshAsync() .