본문 바로가기
개발/Unity

유니티 - 세 점을 지나는 평면 구하기 (Creating a Plane from 3 Dots)

by 피로물든딸기 2023. 3. 27.
반응형

Unity 전체 링크

 

참고

- 평면과 직선의 접점 좌표 구하기

- 3차원 세 점의 좌표로 삼각형의 넓이 구하기

- 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에서 확인 가능하다.

PlaneWith3Dots.unitypackage
0.04MB

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

 

반응형

댓글