EditableMesh

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável

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.

Order of the vertices around the face

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

Propriedades

Métodos

Propriedades

FixedSize

Somente leitura
Não replicado
Ler Parallel
Segurança Roblox

SkinningEnabled

Ler Parallel

Métodos

AddColor

Añade un nuevo color a la geometría y devuelve un ID de color estable.

Parâmetros

color: Color3

El nuevo color.

alpha: number

El color alpha (transparencia).


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

normal: Vector3

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

vertexId0: number

ID de la primera vereda del triángulo.

vertexId1: number

ID del segundo vértice del triángulo.

vertexId2: number

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

void

Devolução

void

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

point: Vector3

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

toThisPoint: Vector3

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

center: Vector3

Centro del mallade la esfera en el espacio de objeto local.

radius: number

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.

Adjacent faces indicated around requested face

Parâmetros

faceId: number

Devolução

GetAdjacentVertices

Al proporcionar una ID de vértice estable,返回 una列 de vértices adyacentes.

Adjacent vertices indicated around requested vertex

Parâmetros

vertexId: number

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.

GetCenter


Devolução

GetColor

Devuelve el color para el ID de color proporcionado.

Parâmetros

colorId: number

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

colorId: number

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

faceId: number

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

faceId: number

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

faceId: number

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.

GetFaceVertices

Parâmetros

faceId: number

Devolução

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: number

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

normalId: number

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

vertexId: number

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.

GetSize


Devolução

GetUV

Devuelve los valores de coordenadas de UV en el ID de UV proporcionado.

Parâmetros

uvId: number

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: number

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: number

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

Map

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

mergeTolerance: number

La distancia en la que los vértices se consideran para tocarse entre sí.


Devolução

Map

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

origin: Vector3

El origen del rayo en el espacio local del objeto del malla.

direction: Vector3

Dirección de la rayo.


Devolução

Triple del punto de intersección, ID de la cara y coordenadas barycentricas.

Amostras de código

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

Elimina una cara usando su ID de cara estable.

Parâmetros

faceId: number

Devolução

void

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

void

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

normalId: number

ID de normal estable para restablecer.


Devolução

void

SetColor

void

Establece el color para un ID de color.

Parâmetros

colorId: number

ID de color estable para establecer el color.

color: Color3

Color para establecer.


Devolução

void

SetColorAlpha

void

Establece el color alpha (transparencia) para un ID de color.

Parâmetros

colorId: number

ID de color estable para el que se establece el color alpha.

alpha: number

Alfa para establecer.


Devolução

void

SetFaceColors

void

Establece los colores de vértice de la cara a los ID de color nuevos.

Parâmetros

faceId: number

ID de la cara para actualizar los colores del vértice.

ids: Array

Lista de nuevos ID de color estable para usar para los vértices del rostro.


Devolução

void

SetFaceNormals

void

Establece las normales de vértice de la cara a nuevos ID de normales.

Parâmetros

faceId: number

ID de la cara para actualizar las normales del vértice.

ids: Array

Lista de nuevas ID de normal estable para usar para los vértices del rostro dado.


Devolução

void

SetFaceUVs

void

Establece los UV del vértice de la cara a nuevos ID de UV.

Parâmetros

faceId: number

ID de la cara para actualizar los UV del vértice.

ids: Array

Lista de nuevas ID estables de UV para usar para los vértices del rostro dado.


Devolução

void

SetFaceVertices

void

Establece los ID de los vértices de la cara en los ID de vértice nuevos.

Parâmetros

faceId: number

ID de cara para actualizar los vértices.

ids: Array

Lista de nuevas ID de vértice estable para usar para la cara dada.


Devolução

void

SetNormal

void

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

normalId: number

ID establecido para el cual se establece el normal fuerza vectorial.

normal: Vector3

Vectores de normal para establecer.


Devolução

void

SetPosition

void

Establece una posición de vértice en el espacio de objetos locales del malla.

Parâmetros

vertexId: number

ID de vértice estable del vértice para colocar.

Posición en el espacio de objeto local de la malla.


Devolução

void

SetUV

void

Establece coordenadas UV para una ID de UV.

Parâmetros

uvId: number

ID de UV para el cual se establecen las coordenadas de UV.

Coordenadas UV.


Devolução

void

Triangulate

void

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() .


Devolução

void

Eventos