728x90
https://catlikecoding.com/unity/tutorials/mesh-deformation/
여기서 있는 코드를 변형했습니당
방법은 초간단
3D 프로젝트 빌드 후, 위의 사이트에서 패키지를 받아주고, 임포트해줍니다
저는 Move Vertices 를 변형해서 써보겠습니다
패키지 받고 더블클릭하면 자동으로 유니티에서 화면이 뜹니다.
그리고 해당 패키지에서 제공하는 샘플 Scene 을 켜줍니다
이름은 그냥 Scene 이라고 돼있음
여기서 MeshDeformer.cs 코드를 아래와 같이 수정합니다
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
public class MeshDeformer : MonoBehaviour
{
Mesh deformingMesh;
Vector3[] originalVertices, displacedVertices;
Vector3[] vertexVelocities;
void Start()
{
deformingMesh = GetComponent<MeshFilter>().mesh;
originalVertices = deformingMesh.vertices;
displacedVertices = new Vector3[originalVertices.Length];
for (int i = 0; i < originalVertices.Length; i++)
{
displacedVertices[i] = originalVertices[i];
}
vertexVelocities = new Vector3[originalVertices.Length];
}
void Update()
{
for (int i = 0; i < displacedVertices.Length; i++)
{
UpdateVertex(i);
}
deformingMesh.vertices = displacedVertices;
deformingMesh.RecalculateNormals();
}
void UpdateVertex(int i)
{
Vector3 velocity = vertexVelocities[i];
displacedVertices[i] += velocity * Time.deltaTime;
// 감속을 통해 변위가 천천히 멈추도록 함
vertexVelocities[i] *= 0.9f; // 감속 계수, 0.9로 설정해 조금씩 느려지게 함
}
public void AddDeformingForce(Vector3 point, float force)
{
point = transform.InverseTransformPoint(point);
for (int i = 0; i < displacedVertices.Length; i++)
{
AddForceToVertex(i, point, force);
}
}
void AddForceToVertex(int i, Vector3 point, float force)
{
Vector3 pointToVertex = displacedVertices[i] - point;
float attenuatedForce = force / (1f + pointToVertex.sqrMagnitude);
float velocity = attenuatedForce * Time.deltaTime;
vertexVelocities[i] += pointToVertex.normalized * velocity;
}
}
// 사용 예시:
// 특정 지점에 힘을 가하려면, 다른 스크립트에서 AddDeformingForce 메서드를 호출하여 변형시킬 수 있습니다.
// 예: meshDeformer.AddDeformingForce(충돌 지점, 힘 크기);
728x90
'HCI > Unity' 카테고리의 다른 글
[Geomagic Touch] Unity 환경에서 Open Haptics를 활용해 지오매직 터치 사용하기 (2) Unity Asset 설치하기 (0) | 2024.11.26 |
---|---|
[Geomagic Touch] Unity 환경에서 Open Haptics를 활용해 지오매직 터치 사용하기 (1) Haptics Device 연결하기 (0) | 2024.11.26 |
[Unity] Meta quest 3 (메타 퀘스트3)- AR 프로젝트 생성하기 / 메타 퀘스트3 (1) | 2024.11.05 |
[Unity] 3D 프로젝트로 AR 구현 (0) | 2024.11.04 |
[Unity] Meta Quest 3 Qculus 연결하기 (1) | 2024.10.29 |