반응형
참고
- Vector3.Cross로 평면 위에서 시계 방향 판단하기
세 점의 좌표를 지나는 평면을 만들어보자.
먼저 투명한 평면과 임의의 세 점(Sphere)를 만든다.
유니티 오브젝트 Plane의 노멀 벡터는 transform.up이다.
그리고 유니티에서 제공하는 Plane으로 매우 쉽게 임의로 평면을 만들 수 있다.
여기서 normal 벡터를 유니티 오브젝트 평면의 transform.up으로 설정하면 된다.
이 평면은 세 점 중 하나를 지나기만 하면 되므로 position은 적절히 설정하면 된다.
void setPlane(Vector3 a, Vector3 b, Vector3 c)
{
Plane p = new Plane(a, b, c);
this.transform.position = a;
this.transform.up = p.normal;
}
Update에서 setPlane을 계속 호출해보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlaneWith3Dots : MonoBehaviour
{
public Transform a, b, c;
void setPlane(Vector3 a, Vector3 b, Vector3 c)
{
Plane p = new Plane(a, b, c);
this.transform.position = a;
this.transform.up = p.normal;
}
void Update()
{
setPlane(a.position, b.position, c.position);
}
}
그리고 게임을 실행하고 점의 위치를 바꾸더라도 평면은 세 점을 항상 지나는 것을 알 수 있다.
위의 실행결과는 아래의 unitypackage에서 확인 가능하다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 쿼터니언으로 구현한 단진자의 운동 확장 (Expanded Simple Pendulum with Unity Quaternion) (0) | 2023.03.29 |
---|---|
유니티 - 쿼터니언으로 구현한 단진자의 운동 (Simple Pendulum with Unity Quaternion) (0) | 2023.03.29 |
유니티 - 스트로보 효과 (Stroboscopic Effect with Unity) (0) | 2023.03.26 |
유니티 - Unity에서 리액트로 이벤트 호출하기 (Communication from Unity to React) (0) | 2023.03.25 |
유니티 - 리액트에서 Unity 오브젝트 컨트롤하기 (Communication from React to Unity) (0) | 2023.03.23 |
댓글