폴리곤 메시

Polygon mesh

점(정점)을 선(모서리)으로 잇고 그 선으로 둘러싸인 면을 채워서 3D 형태를 표현하는 가장 기본적인 방식.

다른 이름: Vertex / edge / faceMesh
···
html
<div class="pm-legend"><span><i class="v"></i>vertex</span><span><i class="e"></i>edge</span><span><i class="f"></i>face</span></div>
css
.pm-legend{position:absolute;left:50%;bottom:6%;transform:translateX(-50%);display:flex;gap:clamp(6px,2.4vmin,16px);font-size:clamp(8px,2.4vmin,12px);color:#dfe3ffdd;background:#00000055;padding:.35em .8em;border-radius:999px}
.pm-legend span{display:flex;align-items:center;gap:.4em}
.pm-legend i{width:.7em;height:.7em;border-radius:50%;display:inline-block}
.pm-legend i.v{background:#ff6ea8}.pm-legend i.e{background:#dfe3ff}.pm-legend i.f{background:#5b5bf7}
js
import * as THREE from 'three';
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setPixelRatio(Math.min(devicePixelRatio, 2));
document.body.appendChild(renderer.domElement);
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x0b0b14);
const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 100);
camera.position.set(0, 0.6, 5.2);
const geo = new THREE.IcosahedronGeometry(1.25, 1);
const faces = new THREE.Mesh(geo, new THREE.MeshBasicMaterial({ color: 0x5b5bf7, transparent: true, opacity: 0.28 }));
const edges = new THREE.LineSegments(new THREE.EdgesGeometry(geo), new THREE.LineBasicMaterial({ color: 0xdfe3ff }));
const verts = new THREE.Points(geo, new THREE.PointsMaterial({ color: 0xff6ea8, size: 0.09, sizeAttenuation: true }));
const group = new THREE.Group();
group.add(faces, edges, verts);
scene.add(group);
function resize() { renderer.setSize(innerWidth, innerHeight); camera.aspect = innerWidth / innerHeight; camera.updateProjectionMatrix(); }
addEventListener('resize', resize); resize();
renderer.setAnimationLoop((t) => {
  group.rotation.y = t * 0.00025;
  group.rotation.x = Math.sin(t * 0.00016) * 0.3;
  camera.lookAt(0, 0, 0);
  renderer.render(scene, camera);
});

모든 3D 모델은 결국 세 가지 요소로 분해됩니다 — 위치를 가진 정점(vertex), 정점 두 개를 잇는 모서리(edge), 모서리로 둘러싸인 면(face). 면이 모서리 3개로 이뤄지면 삼각형, 4개면 쿼드라고 부릅니다.

실시간 렌더러(게임 엔진, 브라우저의 WebGL·three.js 포함)는 결국 모든 면을 삼각형으로 쪼개서(triangulate) 그립니다 — GPU가 그릴 줄 아는 도형이 삼각형뿐이기 때문입니다. 그래서 모델링 도구에서 쿼드 위주로 작업하는 이유는 "GPU가 쿼드를 원해서"가 아니라, 편집·서브디비전·애니메이션이 쿼드에서 훨씬 예측 가능해서입니다.

Blender·Maya·Cinema 4D의 뷰포트는 이 세 요소를 선택 모드(버텍스/에지/페이스)로 전환해가며 편집하게 해줍니다. 데모는 한 메시 위에 세 층위를 겹쳐 그려서 — 정점은 점, 모서리는 선, 면은 반투명 채움으로 — 실제로 어떻게 쌓여 있는지 보여줍니다.

언제 쓰나

모델링 도구의 편집 모드(버텍스/에지/페이스)가 헷갈릴 때, 폴리곤 수·삼각형화가 왜 중요한지 설명할 때.