CSG๋ ๋งค์ฐ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋คโฆ ๋ค๋ฅธ 3D ํ๋ ์์ํฌ๋ CSG ๋ด์ฅ( Babylon.js )์ ์ง์ํฉ๋๋ค. ๋ด๊ฐ ์ฐพ์ ์ ์๋ ์ ์ผํ CSG๋ 7๋ ๋ ์ค๋๋ ํ๋ฌ๊ทธ์ธ( https://github.com/chandlerprall/ThreeCSG )์ ๋๋ค.
์ด ํ๋ฌ๊ทธ์ธ์ด bufferGeometry์ฉ์ผ๋ก ์ ๋ฐ์ดํธ๋๊ณ CSG ์ง์์ ์ํ ๊ณต์ ํ๋ฌ๊ทธ์ธ์ผ๋ก three.js ์ฝ๋ ๋ฒ ์ด์ค์ ์ถ๊ฐ๋ ๊ฒ์ ์ ์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ณด๊ธฐ ์ํด ๊ธฐ๊ธ์ ๊ธฐ๋ถํ ์ฉ์๊ฐ ์์ต๋๋ค.
์ด๋ฒ ์ฃผ๋ง์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค... ์ด๋ป๊ฒ ๋๋์ง ๋ณด๊ฒ ์ต๋๋ค.
์, OrbitControls๋ฅผ ์ถ๊ฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ๋๋ฐ ๊ทธ๋ค์ง ์ ํํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถฉ๋ถํ ํ
์คํธ๋์์ต๋๊น?
'๋ฒํผ๋ผ์ด์ฆ'ํ๊ธฐ ์ ์ ๋ช ๊ฐ์ง ํ
์คํธ๋ฅผ ํด๋ณด์ธ์ ๐
src/
ํด๋์ ๋ฌถ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ง๋ง BufferGeometry๋ฅผ ์ง์ํ๋๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์ ์ ๋งํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ํ
์คํธ๋์๋์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. :)
ํต์ฌ ์ฝ๋ ๊ธฐ๋ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ฝ๊ฐ ๋ณต์กํ ์ ์์ต๋๋ค. ํ์ฌ ๋ฒ์ (
v1 branch
)์ TypeScript์ ์์ต๋๋ค.r100
(์ฌ์ง์ดr103
)์๋ ์ ์๋ํฉ๋๋ค: ์
๊ทธ๋์ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ ํ๊ทธ๋ฅผ ๋ณด์ง ๋ชปํ๋ค. ๊ทธ๋ฆฌ๊ณ ... v1 ํ๊ทธ๊ฐ BufferGeometry๋ฅผ ์ง์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค! @ThreeDfish
๋๋ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ CSG ๊ธฐ๋ฅ์ ํฌํจํ์ง ์๊ธฐ๋ก ํฌํํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋ ๋์ ThreeCSG
๊ฐ ์ง์๋ฉ๋๋ค.
๊ทธ๋์ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ ํ๊ทธ๋ฅผ ๋ณด์ง ๋ชปํ๋ค. ๊ทธ๋ฆฌ๊ณ ... v1 ํ๊ทธ๊ฐ BufferGeometry๋ฅผ ์ง์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค! @ThreeDfish
๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์์ต๋๋ค. ์ด๊ฒ์ v1 ๋ฒ์ ์์ BufferGeometry ์ ๋ํ
function convertGeometryToTriangles(geometry) {
if (isBufferGeometry(geometry)) {
throw new Error('threecsg: Only Three.Geometry is supported.');
}
๋๊ตฌ๋ ์ง ThreeCSG ์์ ์์๊ฒ ์ฐ๋ฝํ์ฌ ๊ณํ์ด ๋ฌด์์ธ์ง ํ์ธํ๊ฑฐ๋ BufferGeometry๋ฅผ ์ง์ํ๊ธฐ ์ํด PR์ ๋ฐ์ ์์ฌ๊ฐ ์๋์ง ํ์ธํด๋ณธ ์ฌ๋์ด ์์ต๋๊น? ์ ๋ ์ด๊ฒ์ ์ฝ๊ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
์๋ฌด๋ BufferGeometry์ ๋ํด ๋ฌป์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค ...
๋ํ๋ฅผ https://github.com/chandlerprall/ThreeCSG ๋ก @chandlerprall ์ด ๊ทธ์ ํ๋ก์ ํธ์ ๊ด์ฌ์ ๊ฐ๊ฒ ๋์ด ๊ธฐ์ ๊ฒ์ ๋๋ค ๐
FWIW์๋ ์์ ํ ์ฌ์์ฑ ๋ฐ ์ ๋ฆฌ์ธ ThreeCSG์ ์ต์ v1 ๋ถ๊ธฐ๊ฐ ์์ต๋๋ค. ํ๋ฉด ์ ํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํด์ผ npm ๊ฒ์ํ ์ค๋น๊ฐ ๋ฉ๋๋ค. ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ถ์ ์ฌ๋์ด ์๋ค๋ฉด ๊ธฐ์ ๊ฒ์ ๋๋ค(https://github.com/chandlerprall/ThreeCSG/issues/51 ์ฐธ์กฐ).
๊ทํ์ ์ ๋ณด:
https://github.com/chandlerprall/ThreeCSG ์ธ์๋ ๋ค์ CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ต๊ทผ Discourse ํฌ๋ผ ์ค๋ ๋์์ ์ธ๊ธ๋์์ต๋๋ค.
์ด ์ธ ๊ฐ์ง ์ค ์ด๋ ๊ฒ์ด three.js์ CSG ์ง์์ ์ํ ๊ธฐ๋ฐ์ด ๋์ด์ผ ํ๋์ง์ ๋ํด์๋ ์๊ฒฌ์ด ์์ต๋๋ค.
๋๋ ๋์ค์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ madebyevan CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋ค๋ฅธ ๋ณํ์ ์ํํ์ต๋๋ค. ํ์ฌ 3๊ฐ(103)์์ ์๋ํ๋ฉฐ ์ด์ ๋ชจ๋์์ ๋ฐ์ํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. ๋ฒํผ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ํ์ฉํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ์ง์ค๋ฉํธ๋ฆฌ๋ก ๋ณํํด์ผ๋ง ํฉ๋๋ค.
https://github.com/manthrax/THREE-CSGMesh
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ณ ํผ๋๋ฐฑ/์ ์์ ์์ ๋กญ๊ฒ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@manthrax ๊ทํ์ ํ๋ก์ ํธ๋ three.js
ํฌ๋ผ์ ๋ค์ ์ค๋ ๋์ ์ถ๊ฐ๋๋ฉด ํ๋ฌ๊ทธ์ธ์ ์ฐพ๋ ์ฌ๋๋ค์ด ์ค์ ๋ก ์ฐพ์ ์ ์์ ๊ฒ์
๋๋ค๐
https://discourse.threejs.org/t/looking-for-updated-plug-in-for-csg/6785
์์ฒญ๋! ์ผ๋ง๋ ์คํ ๊ฐ๋ฅํ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ํ์ฌ ๋ง์ ์์ง ํธ์ง์๋ค์ด ๊ฐ์ง๊ณ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ฑ๋ฅ๊ณผ ์ค์๊ฐ ํธ์ง ๊ธฐ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ๋ช ๊ฐ์ง ์์์ ์ด๋ฌํ ์๋ฃจ์ ์ด ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด ๊ฐ์ธ์ ์ธ ์ ํธ๋ CSG๋ฅผ โโ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ์ธํ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๋์ํ์ง๋ง "๊ด๋ จ ๋ฆฌํฌ์งํ ๋ฆฌ"์ ๊ณต์ ์ธํธ๋ฅผ ๊ฐ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ณ์ ์งํํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ์ด๋ฅผ ์ํด ์ฌ์ฉํ ์ ์๋ ์กฐ์ง์ ๋ง๋ค์์ต๋๋ค. github.com/threejs
์ @enricomarino ๊ฐ ๊ฐ์ ธ๊ฐ์ง๋ง github.com/three-js
์ด(๊ฐ) ๊ฑฐ๊ธฐ์ ์์์ต๋๋ค. ๋๋ ์์ ๊ถ์ ๋๊ตฌ์๊ฒ๋ ์๋ํ ๊ฒ์
๋๋ค. ์ด๋ฆ์ ๋ฐ์ด๋๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ์ต๋๋ค!
๋ฐ๋ผ์ ์ด ์กฐ์ง์ ์ฌ๊ธฐ์ ์ ํฉํ์ง ์์ three.js์ ๊ด๋ จ๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ three.js์ ๊ด๋ จ๋ ํ๋ก์ ํธ๋ฅผ ํธ์คํ ํ๊ธฐ ์ํด https://github.com/threejs ๋ผ๋ ์กฐ์ง์ ๋ง๋ค์์ต๋๋ค.
์ฌ์ค ๋น์์๋ "three.js" ๋ชจ๋
ธ ๋ ํฌ๋ฅผ ์ฌ๋ฌ ๋ ํฌ๋ก ๋๋ ์๊ฐ์ด์๋๋ฐ,
"threejs/core", "treejs/examples", "threejs/editor", "threejs/docs",
"mrdoob/three.js"๊ฐ ๋ค์ด๋ก๋ํ๊ธฐ์ ๋งค์ฐ ํฌ๊ณ ๋ฌด๊ฑฐ์์ก๊ธฐ ๋๋ฌธ์...
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ค๋ฅธ ์ด์ผ๊ธฐ์
๋๋ค ...
๋น์ ์ด ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์กฐ์ง์ ๋น์ ์ ์ฒ๋ถ์ ์์ต๋๋ค!
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ๋ชจ์ ์คํฌ๋ฆฐ์ท์ ์ถ๊ฐํ์ต๋๋ค.
https://github.com/manthrax/THREE-CSGMesh
๋์์ด ํ์ํ ์ฌ๋์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์!
@yomboprime @ThreeDfish
ํฌํ
ํ CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํฌ๋ฆฐ์ท๊ณผ ๋ฐ๋ชจ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด ์๋ ค์ฃผ์ญ์์ค.
https://github.com/manthrax/THREE-CSGMesh
@yomboprime @ThreeDfish
ํฌํ ํ CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํฌ๋ฆฐ์ท๊ณผ ๋ฐ๋ชจ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด ์๋ ค์ฃผ์ญ์์ค.
https://github.com/manthrax/THREE-CSGMesh
@ThreeDfish ๊ทธ๋๋ ๊ด์ฌ์ด ์๋ค๋ฉด ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ CSG.toBufferGeometry
ํจ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. CSG๋ ์ฌ์ ํ Geometry๋ฅผ ์
๋ ฅ์ผ๋ก ํ์ฉํ์ง๋ง ์ถ๋ ฅ์ Geometry(์ถ๊ฐ ๋ถ์ธ ์ฐ์ฐ์ ๊ฒฝ์ฐ) ๋๋ BufferGeometry(๋ ๋๋ง์ ์ํ ์ต์ข
์ถ๋ ฅ)์ผ ์ ์์ต๋๋ค.
@manthrax ๋ ์ด๋ป๊ฒ ์๊ฐ
@enricomarino github.com/threejs์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ค ์ ์์ต๋๊น? LWOLoader
๋ํ ํ
์คํธ ๋ชจ๋ธ๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ค์ ํ๊ณ ์ถ์ต๋๋ค. ๐ ์ฐ๋ฝ์ฒ๋ฅผ ์ฐพ๊ธฐ ํ๋ ๋ถ์ด์๊ตฐ์.
@yomboprime ๋ญ ๋ฌผ์ด
๋ด๊ฐ ํฌํ ํ ๋ฒ์ ์ BufferGeometry ๋๋ Geometry ๋ฉ์ฌ๋ฅผ ๋ชจ๋ ํ์ฉํฉ๋๋ค. BufferGeometry๋ก ๋ณํํ ์ ์๋ Geometry๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
mesh.geometry = new THREE.BufferGeometry().fromGeometry(mesh.geometry)
๊ทธ๋์ ๋ณํ์ด ๋งค์ฐ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋์ฐ๋ฏธ ๊ธฐ๋ฅ์ด ์ ๋ง๋ก ํ์ํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Geometry
-> BufferGeometry
๋ณํ์ ๋ถํํ๋ ์์ค์ด ๋งค์ฐ ํฝ๋๋ค. (ํฐ์) ๊ผญ์ง์ ์์์ ์ถ๊ฐํ๋ ๊ฒ ์ธ์๋ ์ธ๋ฑ์ค๋ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ์ธ๋ฑ์ค ํด์ ํ๊ณ ๊ผญ์ง์ ์๋ฅผ ๋๋ฆฝ๋๋ค. BufferGeometry๋ก ์ต์ข
์ถ๋ ฅํ๋ ๊ฒ์ด ์ด์์ ์ผ ๊ฒ์
๋๋ค.
CSG ์์ ์ ์ธ๋ฑ์ฑ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฌด์์ด๋ ์๊ด์์ด ์ผ๊ฐํ๋น 3๊ฐ์ ๊ณ ์ ํ ๋ฒํ ์ค์์ ์๋ํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
๋ํ ์ ์ ์์์ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค.
๊ฒฐ๊ณผ ๋ฉ์ฌ๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๋ค๋ฅธ ๋๊ตฌ/๋์ฐ๋ฏธ ๊ธฐ๋ฅ์ธ imho๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์๊ฑฐ๋ ์ํํด์ผ ํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ค์ ๋ก ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ด์ผ ํ๋ ๋ฉ์ฒญํ ๊ธฐ๋ฅ์ ๋ณต์ ํ๋ ๊ฒ์ ๋๋ค.
THREE.js์์ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ์ต์ ํํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ ์ธก๋ฉด์์ ๋ถ๋ช ํ ๊ณต๊ฐ์ด ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ฌธ์ ๋ BufferGeometry ์ด์์ ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐํ์์ js๋ฅผ ํตํด ๋ํ ๋ฒํผ์ ์ต์ ํ๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋ณต์กํ ์์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์ก์ฑ์ ์ค์ด๊ธฐ ์ํด ์ ์ฉํ๋ ๋ชจ๋ ๊ธฐ์ (์: octtree/kdtree ๋ฌด์์ด๋ .. ๊ฝค ๋นจ๋ฆฌ ๋ณต์กํด์ง๊ณ ์์ฒด ๋งค๊ฐ๋ณ์ํ ์ธํธ๊ฐ ํ์ํฉ๋๋ค.
์ฝ๋ "๋ณต์ก์ฑ/์ ์ฐ์ฑ/์ ํธ๋ฆฌํฐ"์ "gpu์ ์ต์ ํ๋ ์ธํธ๋ผ ์ต์ ํ" ์ฌ์ด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์ค์ ์์๋ ํ์์ ์ต์ ํ๋์ง๋ง js/์น ์๋๋ฆฌ์ค์์๋ ์ ์์ด๊ณ ํ์๋ฅผ ์ถ๊ตฌํด์ผ ํ๋ค๊ณ ๊ฒฐ์ ํ ๊ฒฝ์ฐ์๋ง wabasm๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋งํ ๊ฒ๋ ์์ด ์ด๋ฌํ CSG ์์ ์ ์ด๋ฏธ ๊ฝค ๋๋ฆฝ๋๋ค. ๋ด git์ ๋ฐ๋ชจ๋ ์์์ 8๊ฐ์ ํ์ ์์ญ์์ ํ๋ ์๋น 10๊ฐ์ ์์ ์ผ๋ก ๊ฑฐ์ ์ํธ ์์ฉํ์ง ์์ต๋๋ค...
์ฆ.. ๋ฐฉ๊ธ babylon csg ๋ฐ๋ชจ๋ฅผ ๋ณด์๊ณ .. ์ ํํ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํธ๋ผ๊ณ ํ์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฐ๋ชจ์์๋ ์ค์๊ฐ์ผ๋ก ์ํ๋์ง ์์ต๋๋ค.
https://www.babylonjs.com/demos/csg/
๋ค์์ ์ค์๊ฐ์ผ๋ก ๋ ๊ฐ๋จํ ์์ ๋ฅผ ์ํํ์ฌ ๋ณํํ ๋ฒ์ ์ ๋๋ค.
๋๋ CSG ์์
์ด ํนํ ์ค์๊ฐ ์นํ์ ์ด์ง ์์ผ๋ฉฐ ๋์๊ด์ด ๊ทธ๋ฐ ์ฒ ํ ํ์๊ฐ ์๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ Geometry๋ ๊ฒฐ๊ตญ three.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ฑฐ๋๊ณ examples/js/*
๋ฐ examples/jsm/*
๋ฉ๋๋ค. ๊ทธ ์์ ์์ ์ฌ์ฉ์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก BufferGeometry๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์
๋๋ค. CSG ์ฝ๋์ Geometry์ ๋ํ ๋ด๋ถ ์ข
์์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ ๋น์ฐํ ๊ด์ฐฎ์ ๋ณด์
๋๋ค.
์ด๋ ๊ฒ ๋งํ ํ ๋ฐ...
๋น์ ์ด ์
๋ ฅ, ์ฒด์ธ ์ด์ํ๋ ค๋ฉด Geometry
์ถ๋ ฅํ๋ Geometry
CSG๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์๋ง ์๋ํ๊ธฐ ๋๋ฌธ์, ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ Geometry
๋ ๊ณง ๋ ์ด์ ๋ ๋๋งํ ์ ์์ผ๋ฏ๋ก ์ต์ข
๋จ๊ณ์์ ์ถ๋ ฅ์ BufferGeometry
๋ก ๋ณํํด์ผ ํฉ๋๋ค.
@manthrax QuickHull ๊ตฌํ์ ๊ณ ์ ํ ํด๋์ค ์งํฉ์ ์ฌ์ฉํ๋ฏ๋ก ํ ํด๋ก์ง ์์
์ ๋ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํํ ์์ง ๊ตฌํ์ ์ด ์ปจํ
์คํธ์์ Geometry
๋ก ์์
ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค. Geometry
๋ ๋ ๋๋ง์ ์ค์ ์ ๋๊ณ ์์ผ๋ฏ๋ก CSG์์๋ ๋ค๋ฅธ ์ ํ์ ํด๋์ค๊ฐ ๋ ์ ์๋ํ ์ ์์ต๋๋ค.
ํผ๋๋ฐฑ @donmccurdy @WestLangley @Mugen87์ ๊ฐ์ฌ
Geometry ์ง์ ์ค๋จ์ ๋๋นํ์ฌ BufferGeometry์ ํจ๊ป ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ํ ์์ ๋ฐ ์ฌ๋ฃ/๊ทธ๋ฃน ์ง์๋ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
@enricomarino ์ฌ์ค, ๋๋ ๋ด ์ฌ์ฉ์ ์ด๋ฆ์์ ๊ทธ๊ฒ์ ์ฎ๊ธฐ๊ณ ์ผ์ ์กฐ๊ธ ๋๋๋ ๊ฒ์ ๊ณ ๋ คํ๋ฉด์ ์กฐ์ง์ผ๋ก ๋ฌด์์ ํ ๊ณํ์ธ์ง ํ์ธํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๊ณํ์ด์์ต๋๋ค. ์ด๋ป๊ฒ ๋ณด์ผ์ง ์์ง ํ์คํ์ง ์์ง๋ง ์ง๊ธ์ ์ ๋ฅผ ์กฐ์ง์ ์ถ๊ฐํ์๊ฒ ์ต๋๊น?
@mrdoob ํ์คํ!
์๋ ํ์ธ์.. CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋ฉ์ง ๋ฐ๋ชจ๋ฅผ ๋ง๋ค๊ณ ๊ด์ฌ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์ผ๋ฐ ์ธ๋์์ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค.
http://vectorslave.com/csg/CSGShinyDemo.html
๊ทธ๋ฆฌ๊ณ gh:
https://github.com/manthrax/THREE-CSGMesh
BufferGeometry ์ต์ ํ ๋ฒ์ ๊ณผ ์ ๋ ฅ ๊ฐ์ ์ฌ๋ฃ ๋ถ๋ฆฌ๋ฅผ ์ ์งํ๋ ๊ฒ์ ์ถ๊ฐํ์ฌ SCAD ์ํํธ์จ์ด์ ๊ฐ์ ๊ฒ์ ์ง์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค.
์๊ฐ์ ์ป๊ธฐ ์ํด ๊ทธ๋ฆฌ๊ณ ๋๊ตฐ๊ฐ๊ฐ ์ ๋ง๋ก ๊น์ด ํ๊ณ ์ถ์ดํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ด ๋งํฌ๋ฅผ ์ฌ๊ธฐ์ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. Unity์์ ์ ๋ง ์ธ์์ ์ธ ์ฑ๋ฅ๊ณผ ์ฝํ ์ธ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ด CSG ๋๊ตฌ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
https://assetstore.unity.com/packages/tools/modeling/realtime-csg-69542
๊ทธ๋ฆฌ๊ณ ์์ฑ์๊ฐ ๊ตฌํ์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ์ฌ๋ฅผ ์์ฑํ ๊ฒ ๊ฐ์ต๋๋ค(์ด 6๊ฐ ๋ถ๋ถ์ด ์์).
http://sandervanrossen.blogspot.com/2010/05/realtime-csg-optimizations.html
http://sandervanrossen.blogspot.com/2010/05/realtime-csg-part-5.html
csg ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ํ๊ณ ํ์ฌ ๋งค์ฐ ์ ์๋ํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์ด ํ๋ก์ ํธ๋ฅผ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
@manthrax ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค!
@๋ง์ค๋ฝ์ค
BufferGeometry ์ต์ ํ ๋ฒ์ ์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ฌ THREE.Geometry
๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ ์ฌ๊ฒ ํ ์ ์์๊ณ https://openjscad.org/ ์ ํต์ฌ CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ https://github.com/jscad/csg.js๋ฅผ ์ดํด๋ณด์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ๋ธ๋ผ์ฐ์ ํํ๊ณ ๋ด ์์ ์ 3๊ฐ์ BufferGeometry ์ด๋ํฐ๋ฅผ ์์ฑํ์ผ๋ฉฐ ์ค์ ๋ก @manthrax๊ฐ ๊ทธ์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฆ
๋๋ค. (๊ทธ๋ฆฌ๊ณ ๊ผญ์ง์ ์ฑ์์ ์ง์ํฉ๋๋ค)
32๊ฐ์ ๋ฉด์ ๊ฐ์ง ๊ตฌ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์๋ฅด๋ ๋์ผํ ์ฃผ์ฌ์์ ๊ฒฝ์ฐ,
THREE-CSGMesh๋ 112์ด๊ฐ ๊ฑธ๋ ธ๊ณ ,
jscad/csg๋ 2.5์ด ๊ฑธ๋ ธ์ต๋๋ค!!!
45๋ฐฐ ๋นจ๋ผ...
๋๋ ๊ทธ๊ฒ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ํด ์๊ฐํ๊ณ ์์ต๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ญ์์ค ...
@SebiTimeWaster
์ด๋์๋ repo์์ ์ฌ์ฉํ ์ ์์ต๋๊น? csg.js๋ MIT ๋ผ์ด์ ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@mrdoob
BufferGeometry ์ต์ ํ ๋ฒ์ ์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ฌ THREE.Geometry๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด ์ ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ฌ์ฉ ํฉ๋๋ค.
์์ง ๊ด์ฌ์ด ์๋ค๋ฉด ๋ง๋ค๊ฒ ์ต๋๋ค...
์์ง ๊ด์ฌ์ด ์๋ค๋ฉด ๋ง๋ค๊ฒ ์ต๋๋ค...
ํคํค ์ด ์ค๋ ๋๊ฐ ๊ด์ฌ์ ์ฆ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค! ๊ทธ๋ฌ๋ ์ ์ด๋ ๋ ๋น ๋ฅธ ๋ฒ์ ์ด ์๋์ง ํ์ธํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ๋ ์ด์ ๋น์ฅ์ ํ์ํ์ง ์์ง๋ง ๋์ค์ ํ์ํ ์๋ ์์ต๋๋ค. three.js์์ csg.js๋ฅผ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋จํ ์์ผ์ง๋ผ๋ CSG์ ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
์์ง ๊ด์ฌ์ด ์๋ค๋ฉด ๋ง๋ค๊ฒ ์ต๋๋ค...
์, csg์ ๋ํ ๊ณต์ ์์ /์๋ฃจ์ ์ ํ๋ฅญํ ๊ฒ์ ๋๋ค!
์๊ฒ ์ต๋๋ค...
๋๋ ๋๋ถ๋ถ @evanw ์ ๋๋ฌ ์ต๋๋ค .
์ฝ๊ฐ์ ์ ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฒ ์ฃผ์ ์๊ฐ์ ๋ด์ ์ฌ๊ธฐ์์ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
@mrdoob ์ด
@SebiTimeWaster ์ง๊ธ๊น์ง ๊ทํ์ ์๊ฒฌ์ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ ์ฆ๊ฑฐ์ด ๊ฒ ๊ฐ์์ ๐
@looeee ๋ ์ ์ฒด ํฌํธ์ ๋๊น ์๋๋ฉด ๊ทธ๋ฅ ๋ํผ์ ๋๊น? ์ด์จ๋ csg.js๋ CSG ์์ ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ง์ ๋ด๋ถ ๊ตฌ์กฐ๋ก ๋ณํํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์์ด์. ๋ง๋์? ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๊ธธ์ BufferGeometry๋ก ๋๋ BufferGeometry์์ ๋ณํํ ์ ์์ด์ผ ํ๋ ๊ฒ ๊ฐ์์ต๋๋ค.
@looeee ์ฌ๊ธฐ ์์ ์ ์ ์ฅ์๋ฅผ ์๋ฏธํฉ๋๊น?
ํฅ๋ฏธ๋กญ๊ฒ ์ง๋ง mrdoob์ด ์์ง ์ค๋น๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์ ์ฅ์๊ฐ ์ ์ฒด CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ์ ์ ํฉํ ์ฅ์์ธ์ง ํ์ ํ ์ ์์ต๋๋ค... examples/js(m)/libs/
์์ CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ์๋ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฅผ ์ถ๊ฐํ ๊น์?
๊ทธ๋์, ์ฌ๊ธฐ์ ๋ชจ๋ ๊ฒ์ ๋ํ ๋์ ๊ฒฌํด๊ฐ ์์ต๋๋ค(https://github.com/jscad/csg.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ):
https://github.com/SebiTimeWaster/three-csg
์๋ฅผ ๋ค์ด(์คํธ๋ ์ค ํ
์คํธ):
https://sebitimewaster.github.io/three-csg/examples/example2.html
@looeee ๋์ผํ ์คํธ๋ ์ค ํ ์คํธ๋ฅผ ๊ตฌํํ๋ฉด ์ฝ๋๋ฅผ ์๋ก ๋น๊ตํ๊ณ ์ต์ ํํ ์ ์์ต๋๋ค...
@looeee ๋ ์ ์ฒด ํฌํธ์ ๋๊น ์๋๋ฉด ๊ทธ๋ฅ ๋ํผ์ ๋๊น?
๋ช ๊ฐ์ง ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ csg.js์ฉ ๋ํผ์ ๋ถ๊ณผํ ๋ถ๊ธฐ๊ฐ ํ๋ ์์ต๋๋ค.
Vector3
์ฌ์ฉํ์ต๋๋ค.๊ทธ ๋ธ๋์น๋ ์์ฑ๋์๊ณ , ์กฐ๊ธ ์ ๋ฆฌ๋๋ฉด ๊ณต์ ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋, ๊ทธ๊ฒ์ ๋๋ฆฝ๋๋ค.
์๋ ๊ฐ์ ์์ ์ ํ๋ ๋ค๋ฅธ ์ง์ ์ด ์์ต๋๋ค. ๊ฐ๋ฅํ ํ ๋ง์ ์ฒ๋ฆฌ๋ฅผ ํผํ๊ธฐ ์ํด ์กฐ๊ธฐ ์ข ๋ฃ๋ฅผ ๊ณ์ฐํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ์ฌ๊ธฐ์์ ์ํํ ์ ์๋ ๋ง์ ์์ ์ด ์์ต๋๋ค.
@SebiTimeWaster , ๋๋ ๋น์ ์ ์ฝ๋๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด์๊ณ ๋น์ ์ ๋ด๊ฐ ์๊ฐํ๋ ๊ฐ ํด๋ฆฌ๊ณค์ ๋ํด ๊ฒฝ๊ณ ๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ๊ฐ์ ์ผ์ ํ๊ณ ์์ต๋๊น? ์๊ฐ์ ์ฐพ์ ๋ ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฅผ ๋ค์ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
@SebiTimeWaster csg ๊ตฌํ์ด ํ ์ค์ฒ ์ขํ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๊น?
๋ค์์ ํ ์ค์ฒ ์ขํ๊ฐ ๋ด์์ ์ด๋ป๊ฒ ๋ณด์ด๋์ง์ ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://github.com/looeee/threejs-csg
์์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ csg.js์ ๋ํผ์ ๋งค์ฐ ๊ฐ๊น์ด _master_์ _advanced_๋ผ๋ ๋ ๊ฐ์ง ๋ถ๊ธฐ๊ฐ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์์ LogicalOR
๋ฐ complement
๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ CSG ์์
์ ํํํ์ต๋๋ค.
์กฐํฉ : _(์ผ์ชฝ || ์ค๋ฅธ์ชฝ)_
๋นผ๊ธฐ : _!(!์ผ์ชฝ || ์ค๋ฅธ์ชฝ)_
๊ต์ฐจ : _!(!์ผ์ชฝ || !์ค๋ฅธ์ชฝ)_
๊ทธ๋ ๊ฒ ํ๋ฉด ์ฐ์ฐ์ ์ถ๋ก ํ๊ธฐ๊ฐ ์กฐ๊ธ ๋ ์ฌ์์ง๊ณ ๋นผ๊ธฐ์ ๊ต์ฐจ๊ฐ ์ฝ๊ฐ ๋ ๋นจ๋ผ์ง๋๋ค. ๋ํ ์ ์ฒด CSG ์์ ์ ์ํํ๊ธฐ ์ ์ ๋์ ์์ค์ ๊ฒฝ๊ณ ์์ ๊ธฐ๋ฐ ๋ณํฉ ๋ฐ ์ปฌ๋ง์ ์ํํ๋ ๋ช ๊ฐ์ง ์คํ์ด ์๋๋ฐ, ์ด๋ ํ ๋ฒ์ ๋ง์ ์์ ์ ์ํํ ๋ ์๋นํ ์๋ ํฅ์์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ค๋ฅธ ๊ตฌํ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐํ ๋ํ ๋ฐ ์์ ์ BVH๋ฅผ ๋ง๋ค๊ณ ํธ๋ฆฌ๋ฅผ ํ์ํ์ฌ ์ต์ข ๊ธฐํ ๋ํ์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
@SebiTimeWaster ์ง๊ธ์ ์ด๊ฒ์ผ๋ก ๋ ๋์๊ฐ์ง ์๊ณ ๋์ฒด CSG ๊ตฌํ์ ์กฐ์ฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ด ์ ์ฅ์์์ ์ ์ฉํ ๊ฒ์ด ์์ผ๋ฉด ์์ ๋กญ๊ฒ ๊ฐ์ ธ๊ฐ ์ ์์ต๋๋ค.
ํธ์ง: ์ด ํธ์์ ๋ด ๊ฐ์ ์ ์ ํํ ์์ฝํฉ๋๋ค
์์ ๋งํฌํ Unity์ฉ Realtime CSG ํ๋ฌ๊ทธ์ธ์ ์์ค๊ฐ Github์ ๊ฒ์๋์ด ์๊ณ ์ด์ ๋ํด ์์ธํ ์์๋ณด๋ ๋ฐ ๊ด์ฌ์ด ์๋ ์ฌ๋์ด ์๋ค๋ฉด MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ์ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/LogicalError/realtime-CSG-for-unity
๊ทธ๋ ๋ํ ์์ ์ ๋ธ๋ก๊ทธ์ CSG ํ๋ฌ๊ทธ์ธ์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ์ ์ ์ธ ๊ฒ์๋ฌผ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
https://sandervanrossen.blogspot.com/search?q=Realtime+CSG
์ฌํด 3์ CSG์ ๋ํ ์๋ก์ด GDC ์ฐ์ค๋ ์์์ต๋๋ค.
https://www.youtube.com/watch?v=Iqmg4gblreo
Unity์์ ์ง์ ์์ ํ ๊ฒ์ ์๋์ง๋ง ๋์์์ ์ฑ๋ฅ์ ํ๋ฅญํด ๋ณด์ ๋๋ค.
Unity CSG๋ฅผ โโ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง ๋ ๋ฆฝ ์คํํ C# ์ฑ์ธ ์ด ์ฑ๋ ์์ต๋๋ค. ์ดํดํ๊ธฐ ๋ ์ฌ์ธ ์ ์์ต๋๋ค. ๋ค๋ง ๋๋ฌด ์ค๋๋์ด์ ๊ฐ๋ฐ์ด ์ ๋ ์๋ ์์ต๋๋ค.
https://github.com/LogicalError/Realtime-CSG-demo
Godot ์์ง์ ๋ํ ๋ด๊ฐ ํ ์คํธํ CSG๋ฅผ โโ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋งค์ฐ ๊ด์ฐฎ์ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฌธ์ / ์ฝ๋ .
Carve CSG ๋ฐ xcsg (Carve ์ฌ์ฉ) ๋ฐ Cork ๋ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ์๋ฃจ์ ์ ์ด๋ฌํ ๊ธฐ์กด ์๋ฃจ์ (CPP์ด๊ณ ๋ค๋ฅธ ๋ง์ ํจํค์ง์์ ์ฌ์ฉ๋๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก Carve) ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Wasm์ผ๋ก ๋ณํํ๋ ๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ์๋ฃจ์ ์ ์ด๋ฌํ ๊ธฐ์กด ์๋ฃจ์ (CPP์ด๊ณ ๋ค๋ฅธ ๋ง์ ํจํค์ง์์ ์ฌ์ฉ๋๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฏ๋ก Carve) ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Wasm์ผ๋ก ๋ณํํ๋ ๊ฒ์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋๋ emscripten์ ์ต์ํ์ง ์์ง๋ง ๊ทธ๊ฒ์ ๋์ ์ ๊ทผ ๋ฐฉ์์ฒ๋ผ ๋ค๋ฆฌ์ง ์์ต๋๋ค. Carve์ Cork๋ GPL ๋ฐ LGPL ๋ผ์ด์ ์ค๋ฅผ ๋ฐ์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ์ผ๋์ ๋์ด์ผ ํ ์ฌํญ์ ๋๋ค.
๋ถ๋ช ํ Blender๋ ๋ถ์ธ ์ฐ์ฐ ๋๊ตฌ๋ฅผ ์ ๋ฐ์ดํธํ์ผ๋ฉฐ ์ด ํธ์ ์ ๋ฐ๋ฅด๋ฉด ์ด ๋ฌธ์์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๋์ค์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ madebyevan CSG ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ ๋ค๋ฅธ ๋ณํ์ ์ํํ์ต๋๋ค. ํ์ฌ 3๊ฐ(103)์์ ์๋ํ๋ฉฐ ์ด์ ๋ชจ๋์์ ๋ฐ์ํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. ๋ฒํผ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ํ์ฉํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ์ง์ค๋ฉํธ๋ฆฌ๋ก ๋ณํํด์ผ๋ง ํฉ๋๋ค.
https://github.com/manthrax/THREE-CSGMesh
์ด๊ฒ์ด ๋๊ตฐ๊ฐ๋ฅผ ๋๊ณ ํผ๋๋ฐฑ/์ ์์ ์์ ๋กญ๊ฒ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.