Unity

(Unity) Probuilder 사용법

Dean83 2023. 10. 18. 21:35

 

  1. CreateShapeFromPolygon 사용법
    //예제 코드
    using UnityEngine.ProBuilder.MeshOperations;
    ...
    
    List<Vector3> ilist = new List<Vector3>();
    
    for (int i = 0, c = 32; i < c; i++)
    {
        float angle = Mathf.Deg2Rad * ((i / (float)c) * 360f);
        Vector3 temp = new Vector3(Mathf.Cos(angle), 0f, Mathf.Sin(angle)) * Random.Range(1.5f, 2f);
    
        ilist.Add(temp);
    }
    
    UnityEngine.ProBuilder.ProBuilderMesh mesh = UnityEngine.ProBuilder.ProBuilderMesh.Create();
    mesh.CreateShapeFromPolygon(ilist, 1, false);
    
    mesh.transform.parent = this.transform;
    MeshRenderer rend = mesh.gameObject.GetComponent<MeshRenderer>();
    rend.sharedMaterial = material;
    
  2. 스크립트에서 기본 쉐이프 생성 방법
    • 기본적으로 GameObject 생성 후 AddComponent를 이용하여 추가하나, 기본쉐이프는 자동으로 오브젝트가 생성됨
    • 기본 쉐이프 목록 만들수 있는 Shape
    • 오브젝트 생성 코드 예시 (각 오브젝트 생성시, 함수명 및 인자값만 변경하면 됨)
    • //예시 UnityEngine.ProBuilder.ProBuilderMesh mesh = UnityEngine.ProBuilder.ShapeGenerator.GenerateArch(UnityEngine.ProBuilder.PivotLocation.FirstCorner, 180, 10, 10, 10, 16, true, true, true, true, true); mesh.transform.parent = this.transform; MeshRenderer rend = mesh.gameObject.GetComponent<MeshRenderer>(); rend.sharedMaterial = material;
    • 공통으로 사용되는 1번째 인자값 설명
      • PivotLocation : Center, FirstCorner 2개의 옵션이 있음.
        • Pivot : 회전, 크기 조절, 스케일 수정 시 기준이 되는 값.
          • 예 : 중심점 기준 회전, 첫번째코너 기준 회전
    • Arch
      • 아치형 오브젝트
      • 인자값 설명 (순서 순)
        • PivotLocation
        • angle (single 타입) : Arch 각도
        • radius (single 타입) : 외경의 길이 (렌더링 하는 영역)
        • width (single 타입) : 내경 (렌더링을 하지 않는 영역)
          • radius와 width가 같으면 꽉채워서 렌더링, radius - width를 뺀 만큼 렌더링 함
        • depth (single 타입) : 오브젝트의 z축 길이.
        • radialCuts (int32 타입) : arch 생성의 블록개수. 많을수록 원에 가까움
        • insideFaces (bool) : 내부 면을 렌더링 할지 말지 여부
        • outsideFaces (bool) : 외부 면을 렌더링 할지 말지 여부
        • frontFaces (bool) : 앞쪽 면을 렌더링 할지 말지 여부
        • backFaces (bool) : 뒤쪽 면을 렌더링 할지 말지 여부
        • endCaps (bool) : 렌더링의 변화가 없음. 아치 끝부분에 face를 추가. 360도일때는 무시된다 함
    • Cone
      • 다각뿔 오브젝트
      • 인자값 설명 (순서 순)
        • PivotLocation
        • radius (single 타입) : 바닥면의 크기
        • height (single 타입) : 높이값
        • subdivAxis (int32) : 바닥면의 꼭지점 개수. 예 : 4로 설정시 사각뿔. 값이 클수록 원뿔에 가까워짐
    • Cube
      • 사각형 오브젝트

      • 인자값 설명 (순서 순)
        • PivotLocation
        • size (Vector3) : 큐브의 크기. x, y, z 값으로 구성
    • CurvedStair
      • 회전 계단 오브젝트. 원형의 계단을 그림

      • 인자값 설명 (순서 순)
        • PivotLocation
        • stairWidth (single) : 계단의 너비
        • height (single) : 계단의 높이
        • innerRadius (single) : 회전 계단의 내경. 내경의 바깥쪽으로 원을 두르듯이 계단을 그림
        • circumference (single) : 계단을 그리는 호의 길이. 내부 원의 바깥쪽에 계단을 그리므로, 이 값이 클수록 원형의 모습이 됨. 360 입력시 원 모양의 계단 생성
        • steps (int32) : 계단의 개수
        • buildSides (bool) : 계단의 옆, 뒷면 모두 렌더링 할지, 아니면 앞면만 렌더링 할지 여부
    • Cylinder
      • 기둥형태의 오브젝트
      •  
      • 인자값 설명 (순서 순)
        • PivotLocation
        • axisDivisions (int32) : 각의 개수. 값이 클수록 원형에 가까움
        • radius (single) : 반경 (크기)
        • height (single) : 높이
        • heightCuts (int32) : 층의 개수 (별 의미가 없는듯 1로 설정하는게 좋아보임)
        • smoothing (int32) : 필수값 아님. 면이 만나는 선을 부드럽게 해줌. (값의 큰 차이는 없어보임)
    • Door
      • 사각형 오브젝트에서 문 부분을 제외한 오브젝트
      •  
      • 인자값 설명 (순서 순)
        • PivotLocation
        • totalWidth (single) : 너비
        • totalHeight (single) : 높이
        • ledgeHeight (single) : 문 천장의 높이. totalHeight - ledgeHeight 값이 문의 높이가 됨
        • legWidth (single) : 문의 왼, 오른쪽 벽면 길이. totalWidth - legWidth * 2가 문의 너비가 됨
        • depth (single) : 문의 깊이
    • Icosahedron
      • 구체 생성. 완전구체 생성시 렌더링 속도가 현저히 느리므로 적절하게 사용 (1분이상 소요)
      •  
      • 인자값 설명 (순서 순)
        • PivotLocation
        • radius (single) : 반경
        • subdivisions (int32) : 이 값이 증가할 수록 원에 가까워지나, radius 값과 같아질 경우 렌더링 속도가 현격히 떨어짐 (완전 구체)
        • weldVertices (bool) : 기본값 true, false로 설정시 렌더링 속도가 빨라짐
        • manualUvs (bool) : 기본값 true, 자동으로 지정된 값을 사용하려면 false 설정(true 가 렌더링이 더 빠름)
    • Pipe
      • 속이 비어 있는 관 형태의 오브젝트
      •  
      • 인자값 설명 (순서 순)
        • PivotLocation
        • radius (single) : 반경
        • height (single) : 높이
        • thickness (single) : 벽면의 두께
        • subdivAxis (int32) : 값이 클수록 원에 가까워짐. 바닥면의 꼭지점 개수
        • subdivHeight (int32) : y축의 층을 나누는 값. 1로 해도 무방해 보임
    • Plane
      • 설정값의 위치에 평면을 그림
      •  
      • 인자값 설명 (순서 순)
        • PivotLocation
        • width (single) : 가로 길이
        • height (single) : 세로 길이
        • widthCuts (int32) : x 축을 구성할 개수. 1로 설정하면 될듯 함
        • heightCuts (int32) : y축을 구성할 개수. 1로 설정하면 될듯 함
        • axis (Axis) : ProBuilder.Axis.Up,Left,Down,Foward,Backward,Right 바닥, 천장, 양쪽 측면, 정면, 후면 설정
          • up : 바닥면
          • right : 렌더링은 좌측면이 됨
          • left : 렌더링은 우측면이 됨
          • down : 천장면
          • foward : 후면
          • backward : 전면
  • Prism
    • 삼각기둥을 눕혀 놓은 형태의 오브젝트

    • 인자값 설명 (순서 순)
      • PivotLocation
      • size (Vector3) : 프리즘의 크기. x, y, z 값으로 구성
  • Stair
    • 직선 계단 오브젝트

    • 인자값 설명 (순서 순)
      • PivotLocation
      • size (Vetor3) : 계단의 크기. x, y, z 값으로 구성
      • steps (int32) : 계단의 개수
      • buildSides (bool) : true로 설정시 측벽과 뒷벽을 생성, false로 설정시 계단만 생성
  • Torus
    • 도넛 형태의 오브젝트

    • 인자값 설명 (순서 순)
      • PivotLocation
      • rows (int32) : 도넛의 가로선의 개수, 3이 최소이고 값이 증가할 수록 옆에서 봤을 때 원형처럼 보임
      • colums (int32) : 도넛의 세로선의 개수, 3이 최소이고 값이 증가할 수록 위에서 봤을 때 원형처럼 보임, 3일 땐 삼각형의 도넛처럼 보임

      • innerRadius (float) : 오브젝트의 중심에서 내부 경계까지의 거리 설정, 값이 클수록 도넛의 크기가 커짐
      • outerRadius (float) : 도넛 내부 중심에서 외부 경계까지의 거리 설정, 값이 클수록 도넛이 두꺼워짐
      • smooth (bool) : rows와 colums의 각각의 면에서 둥글게 표현하려면 true, false로 설정시 각져있는 도넛 모양
      • horizontalCircumference (float) : 수평 둘레를 도 단위로 설정, 최대 360도이며 90도는 ㄱ자형, 180도는 U자형 도넛 형태, 0도 설정시 오류발생
      • verticalCircumference (float) : 세로 둘레를 도 단위로 설정, 최대 360도이며 180도는 아치형 도넛이 됨, 0도 설정시 오류발생

      • horizontalCircumference = 180 verticalCircumference = 180

      • horizontalCircumference = 90 verticalCircumference = 90
      • maualUvs (bool) : 기본값은 false, ProBuilder가 텍스쳐에 자동 UV래핑 해줌, ture로 설정시 수동으로 UV 설정해야함
    •  

'Unity' 카테고리의 다른 글

Probuilder CSG 사용  (0) 2023.10.18
DXF 캐드파일 불러오기  (0) 2023.10.18
텍스쳐 다운로드 하여 실시간 반영  (0) 2023.10.18
카메라 이동 및 각도변경  (0) 2023.10.18
메쉬 생성(vector3 기반)  (1) 2023.10.18