요약
메서드
상속된 멤버
API 참조
속성
메서드
AddColor
AddTriangle
Destroy
EditableMesh:Destroy():()
반환
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentVertices
GetFacesWithAttribute
GetFacsCorrectivePose
GetFacsPose
GetVertexBoneWeights
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaceUV
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
RaycastLocal
반환
코드 샘플
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- 공간에서 EditableMesh 초기화
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
SetFaceNormals
SetFaceVertices
SetFacsBonePose
매개 변수
반환
()
SetFacsCorrectivePose
SetFacsPose
매개 변수
반환
()
SetNormal
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
반환
()