概要
方法
继承成员
6 个继承自 Object
API 参考
属性
方法
AddTriangle
Destroy
EditableMesh:Destroy():()
返回
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetFacesWithAttribute
GetFacsPose
GetVertexBoneWeights
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaceUV
GetVerticesWithAttribute
GetVerticesWithNormal
RaycastLocal
返回
代码示例
可编辑网格:射线局部()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- 在空间中初始化可编辑网格
local editableMesh = nil
local success, errorMsg = pcall(function()
editableMesh = AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success and editableMesh then
meshPart = AssetService:CreateMeshPartAsync(
Content.fromObject(editableMesh),
{ CollisionFidelity = Enum.CollisionFidelity.Hull }
)
meshPart.Parent = Workspace
else
warn(errorMsg)
end
-- 该函数将从给定点发射一条射线,返回命中的世界点和UV坐标
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- 计算对象在每个维度上的缩放比例
local renderScale = meshPart.Size / meshPart.MeshSize
-- 从相机创建一条射线,方向指向点击的点
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- 转换为对象空间以与RaycastLocal()一起使用
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin) / renderScale
local relativeTarget = meshPart.CFrame:PointToObjectSpace(ray.Origin + ray.Direction * 100) / renderScale
local relativeDirection = relativeTarget - relativeOrigin
local faceId, point, barycentricCoordinate, vertId1, vertId2, vertId3 =
editableMesh:RaycastLocal(relativeOrigin, relativeDirection)
if not faceId then
-- 未命中任何面
return
end
-- 计算世界空间中的命中点
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- 获取面上的UV
local uvId1 = editableMesh:GetVertexFaceUV(vertId1, faceId)
local uvId2 = editableMesh:GetVertexFaceUV(vertId2, faceId)
local uvId3 = editableMesh:GetVertexFaceUV(vertId3, faceId)
local uv1 = editableMesh:GetUV(uvId1)
local uv2 = editableMesh:GetUV(uvId2)
local uv3 = editableMesh:GetUV(uvId3)
-- 根据重心坐标在面内插值UV
local u = (barycentricCoordinate.x * uv1.x) + (barycentricCoordinate.y * uv2.x) + (barycentricCoordinate.z * uv3.x)
local v = (barycentricCoordinate.x * uv1.y) + (barycentricCoordinate.y * uv2.y) + (barycentricCoordinate.z * uv3.y)
return worldHitPoint, Vector2.new(u, v)
endSetBoneCFrame
SetBoneIsVirtual
SetBoneParent
SetColorAlpha
SetFaceVertices
SetFacsBonePose
参数
返回
()
SetFacsCorrectivePose
SetFacsPose
参数
返回
()
SetNormal
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
返回
()