Three.js 강좌 #3 Geometry part-2

zzzzsb·2021년 12월 14일
0

Three.js

목록 보기
3/5

CircleGeometry

  • 원판 모양의 geometry

  • 02-geometry.js 코드에서 _setupModel의 BoxGeometry를 CircleGeometry로 변경

  • const geometry = new THREE.CircleGeometry();

생성자에 4개의 인자를 받음

1. 원판의 크기인 반지름(기본값 1)


2. 원판을 구성하는 분할 개수(Segment)(기본값 8)

  • Segment: 3일때
  • Segment: 8일때(기본값)
  • Segment: 32일때

    - Segment 값이 클수록 좀더 완전한 원의 형태가 됨

3. 시작 각도

  • 각도에 대한 단위는 radian
  • 기본값 0

4. 연장 각도

  • 각도에 대한 단위는 radian

  • 기본값 2PI(360도)

    • 시작각도 0, 연장각도 PI/2(90도)일때

    • const geometry = new THREE.CircleGeometry(0.9, 16, 0, Math.PI/2);

    • 시작 각이 0이기 때문에 기준이되는 3시 방향에서 반시계 방향으로 90도만큼 연장되어 원판 구성됨

    • 시작각도 PI/2(90도), 연장각도 PI/2(90도)일때
      const geometry = new THREE.CircleGeometry(0.9, 16, Math.PI/2, Math.PI/2);

    • 시작 각이 90, 기준이 되는 12시 방향에서 연장각인 90도만큼 연장되어 원판 구성됨

    • 시작각도 PI/2(90도), 연장각도 PI(180도)일때
      const geometry = new THREE.CircleGeometry(0.9, 16, Math.PI/2, Math.PI);

    • 시작각 90도(기준 12시 방향) 연장각인 180도 만큼 연장되어 원판 구성됨


ConeGeometry

  • 원뿔 모양의 geometry
  • const geometry = new THREE.ConeGeometry();


생성자에 7개의 인자를 받음

1. 밑면에 해당되는 원의 반지름 크기(기본값 1)

  • 반지름 크기 0.3일때
    -const geometry = new THREE.ConeGeometry(0.3);
  • 원뿔의 밑면 크기가 변경됨

2. 원뿔의 높이(기본값 1)

  • 반지름 크기 0.5, 높이 크기 0.5일때
  • const geometry = new THREE.ConeGeometry(0.5, 0.5);


3. 원뿔의 둘레 방향에 대한 분할 개수(기본값 8)

  • 둘레방향 분할개수가 기본값 8일때
  • 원뿔의 둘레 방향에 대해 8개의 삼각형으로 분할되어져 있음
  • 반지름 크기 0.5, 높이 크기 0.5, 둘레방향 분할개수 3일때
  • const geometry = new THREE.ConeGeometry(0.5, 1.6, 3);


4. 원뿔의 높이 방향에 대한 분할 개수(기본값 1)

  • 높이방향 분할개수가 9일때
  • const geometry = new THREE.ConeGeometry(0.5, 1.6, 16, 9);


5. 원뿔 밑면을 열어 놓을 것인지에 대한 여부

  • 기본값 false(밑면 닫혀있음)
  • 밑면 true로 해줬을 때
  • const geometry = new THREE.ConeGeometry(0.5, 1.6, 16, 9, true);
    • 밑면이 개방됨

6. 원뿔의 시작 각도(기본값 0)

7. 원뿔의 연장 각도(기본값 2PI(360도))

  • CircleGeometry 개념과 동일

  • 시작각도 0, 연장각도 PI/2(90도)일때


CylinderGeometry

  • 원통 모양의 Geometry
  • const geometry = new THREE.CylinderGeometry();


생성자에 8개의 인자를 받음

1. 윗면 원 반지름 크기(기본값 1)

2. 밑면 원 반지름 크기(기본값 1)

  • 윗면 원 반지름 크기 0.3, 밑면 원 반지름 크기 0.7일때
  • const geometry = new THREE.CylinderGeometry(0.3, 0.7);


3. 원통의 높이(기본값 1)

  • 원통 높이 0.5일때
  • const geometry = new THREE.CylinderGeometry(0.3, 0.7, 0.5);


4. 원통 둘레 방향에 대한 분할 개수(기본값 8)

  • 둘레 방향에 대한 분할 개수 3일때
  • const geometry = new THREE.CylinderGeometry(0.3, 0.7, 0.5, 3);

  • 둘레 방향에 대한 분할 개수 32일때
  • const geometry = new THREE.CylinderGeometry(0.3, 0.7, 1.6, 32);


5. 원통 높이 방향에 대한 분할 개수(기본값 1)

  • 높이 방향에 대한 분할 개수 2일때

  • 높이 방향에 대한 분할 개수 12일때


6. 원통 윗면, 밑면을 열어놓을 것인지에 대한 여부

  • 기본값 false(닫힘)
  • true로 지정했을 때
    - const geometry = new THREE.CylinderGeometry(0.9, 0.9, 1.6, 32, 12, true);
    • 윗면, 밑면이 개방됨

7. 원뿔의 시작 각도(기본값 0)

8. 원뿔의 연장 각도(기본값 2PI(360도))

  • 이전 Circle/ConeGeometry 개념과 동일
    - 시작 각도 0, 연장각도 PI일때


SphereGeometry

  • 구 형태의 geometry
  • const geometry = new THREE.SphereGeometry();


생성자에 7개의 인자를 받음

1. 구의 반지름 크기(기본값 1)

  • 반지름 크기 0.5일 때
  • const geometry = new THREE.SphereGeometry(0.5);


2. 수평 방향에 대한 분할 수(기본값 32)

  • 수평 방향에 대한 분할 수가 6일 때
  • const geometry = new THREE.SphereGeometry(0.9,6);

    - 구가 수평 6개 방향으로 분할되어 구성됨

3. 수직 방향에 대한 분할 수(기본값 16)

  • 수직 방향에 대한 분할 수가 3일 때
  • const geometry = new THREE.SphereGeometry(0.9, 6, 3);

    - 수직 3방향으로 구가 분할되어 구성됨
  • 수직 방향에 대한 분할 수가 12일 때
  • const geometry = new THREE.SphereGeometry(0.9, 32, 12);


4. 수평 방향에 대한 구의 시작 각도(기본값 0)

5. 수평 방향에 대한 구의 연장 각도(기본값 2PI)

  • 수평 방향에 대한 구의 시작 각도 0, 연장각도 PI(180도)일때
  • 반구로 표현하기 위해서 연장각도를 기본값의 절반인 PI로 지정함

    - 구가 수평방향으로 절반만 표현됨

4. 수직 방향에 대한 구의 시작 각도(기본값 0)

5. 수직 방향에 대한 구의 연장 각도(기본값 PI)

  • 수직 방향에 대한 구의 시작 각도 0, 연장각도 PI/2(90도)일때
  • 위에서 수평 방향에 대해 연장각도를 PI로 하여 반구로 만든 오브젝트를, 다시 수직방향으로 절반만 표현하기 위해 수직방향 연장각도를 PI/2로 지정함

RingGeometry

  • 2차원 형태의 반지 모양
  • const geometry = new THREE.RingGeometry();

생성자에 6개의 인자를 받음

1. 내부 반지름 값(기본값 0.5)

  • 내부 반지름 크기 0.2일때
  • const geometry = new THREE.RingGeometry(0.5);


2. 외부 반지름 값(기본값 1)

  • 외부 반지름 크기 0.7일때
  • const geometry = new THREE.RingGeometry(0.2, 0.7);


3. 가장자리 둘레방향으로의 분할 수(기본값 8)

  • 가장자리 둘레방향 분할 수 3일때
  • const geometry = new THREE.RingGeometry(0.2, 1, 3);


4. 내부 방향에 대한 분할 수(기본값 1)

  • 내부 방향 분할 수 4일때
  • const geometry = new THREE.RingGeometry(0.2, 1, 6, 4);


5. 시작 각도(기본값 0)

6. 연장 각도(기본값 2PI)

  • 현재 상태에서 반절만 표현하고자 한다면 연장각을 PI로 변경해주면 됨
  • const geometry = new THREE.RingGeometry(0.2, 1, 6, 2, 0, Math.PI);

    `

PlaneGeometry

  • 평면 모양의 사각형
  • const geometry = new THREE.PlaneGeometry();

생성자에 4개의 인자를 받음

1. 너비 길이(기본값 1)

2. 높이 길이(기본값 1)

  • 너비 0.4, 높이 0.8일때
  • const geometry = new THREE.PlaneGeometry(0.8, 0.4);


3. 너비 방향에 대한 분할 수(기본값 1)

  • 너비방향 분할 수 4일 때
  • const geometry = new THREE.PlaneGeometry(1, 1.4, 4);


4. 높이 방향에 대한 분할 수(기본값 1)

  • 높이 방향 분할 수 4일 때
    -const geometry = new THREE.PlaneGeometry(1, 1.4, 1, 4);

PlaneGeometry는 지리정보시스템(GIS)에서 3차원 지형 등을 표현하는데 유용하게 쓰임


TorusGeometry

  • 3차원 반지 모양 geometry
  • const geometry = new THREE.TorusGeometry();

생성자에 5개의 인자를 받음

1. Torus의 반지름(기본값 1)

  • 반지름 크기 0.6일 때
  • const geometry = new THREE.TorusGeometry(0.6);


2. Torus 원통의 반지름(기본값 0.4)

  • Torus는 긴 원통으로 한바퀴, 즉 360도 한바퀴 돌아서 이어지는 형태

  • 원통 반지름 크기 0.2일때

  • const geometry = new THREE.TorusGeometry(0.6, 0.2);


3. Torus 방사 방향에 대한 분할 수(기본값 8)

  • 방사 방향 분할 수 2일때
  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 2);
  • 방사 방향 분할 수 4일때

  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 4);

  • 방사 방향 분할 수 24일때

  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 24);


4. Torus 긴 원통의 분할 수(기본값 6)

  • 원통 분할 수 3일때

  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 24, 3);

  • 원통 분할 수 32일때

  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 24, 32);


5. Torus 연장 각도 길이(기본값 2PI)

  • 다른 geometry와 다르게 시작각도 따로 없고, 연장각도 길이만 인자로 받음
  • 연장 각도 PI(180도)일 때
  • const geometry = new THREE.TorusGeometry(0.6, 0.2, 24, 32, Math.PI);

TorusKnotGeometry

  • 모양은 멋지지만 활용도는 떨어짐 (ㅎㅎ;;)
  • const geometry = new THREE.TorusKnotGeometry();


6개의 인자값을 가짐

1. TorusKnotGeometry의 반지름

2. TorusKnotGeometry를 구성하는 원통의 반지름 크기

3,4. 분할 수

5,6. TorusKnotGeometry를 구성하는데 사용되는 어떤 반복 수

  • const geometry = new THREE.TorusKnotBufferGeometry(0.6, 0.1, 64, 32, 3, 4);
profile
성장하는 developer

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN