- CreateShapeFromPolygon 사용법
- vector3 포인트들 기반으로 오브젝트를 생성하는 방식
- using UnityEngine.ProBuilder.MeshOperations; 을 반드시 추가해야함
- 인자값 설명
- points (iList) : Vector3로 구성된, 폴리곤 생성 좌표
- extrude (float) : 높이값
- flipNormals (bool) : 그리는 면을 반전하여 그릴지 여부
//예제 코드 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;
- 스크립트에서 기본 쉐이프 생성 방법
- 기본적으로 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 : 회전, 크기 조절, 스케일 수정 시 기준이 되는 값.
- 예 : 중심점 기준 회전, 첫번째코너 기준 회전
- Pivot : 회전, 크기 조절, 스케일 수정 시 기준이 되는 값.
- PivotLocation : Center, FirstCorner 2개의 옵션이 있음.
- 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 |