๋๋ ๋ ๊ฐ์ง ์ด์ ๋ก Blender, 3DS Max ๋ฐ Maya JSON ๋ด๋ณด๋ด๊ธฐ์ ์ฌ์ฉ ์ค๋จ(์ ๊ฑฐ)์ ์ ์ํ๊ณ ์ถ์ต๋๋ค.
FBXLoader
๋ฐ GLTFLoader
)์ ํ์ง๊ณผ ์์ฑ๋๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํฌ๊ฒ ํฅ์๋์๋ค๋ ๊ฒ์
๋๋ค. ์ฆ, ์ ์ ํ ๊ฒฐ๊ณผ๋ก FBX
๋๋ glTF
ํ์ผ์ ๋ก๋ํ ๊ฐ๋ฅ์ฑ์ด ํจ์ฌ ๋ ๋์ต๋๋ค. ๊ฒ๋ค๊ฐ, ์ด๋ฌํ ๋ก๋๋ ํ๋ก์ ํธ ํ๋ ฅ์๋ค์ ์ํด ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค.๋ฐ๋ผ์ ์ฌ์ฉ์๋ JSON ํ์์ผ๋ก ๋ด๋ณด๋ด๋ ๋์ FBX
๋๋ glTF
์ ๊ฐ์ ๋ค๋ฅธ ํ์์ ์ง์คํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฐ ์ ๋ฌ์ ๋งฅ๋ฝ์์ ํนํ glTF
๋ (์์ถ๋์ง ์์) JSON๋ณด๋ค ํจ์ฌ ๋ ๋์ ํ์์
๋๋ค.
์ด์ ๋ํด +1 - ์ ์ฅ์์ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ ๋๋ก ๋์ง ์๊ณ ์ค๋๋ ์์ถ์ ์ฒด๊ฐ ์๋ค๋ ์ฌ์ค์ ํนํ @Mugen87์ด ์ง์ ํ ๊ฒ์ฒ๋ผ ์ด์ ํจ์ฌ ๋ ๋์ ์ต์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ ๊ท ์ด๋ฏผ์์๊ฒ ๋ถํ์ํ ํผ๋์ ์ผ๊ธฐํฉ๋๋ค.
์ฐธ๊ณ : ๊ณต์ GLTF Blender ๋ด๋ณด๋ด๊ธฐ(https://github.com/KhronosGroup/glTF-Blender-Exporter)๋ ํ์ฌ ์ ์ ํ ์ ๋๋ฉ์ด์
๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค(ํ์ฌ ๊ฐ์ฒด๋น ํ๋์ ์ ๋๋ฉ์ด์
๋ง ์ง์๋จ).
https://github.com/KhronosGroup/glTF-Blender-Exporter/issues/112
@Usnul ์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์ Blender JSON ๋ด๋ณด๋ด๊ธฐ์ ๋น๊ตํ๋ฉด ์ด๋ป์ต๋๊น?
@loeeee
Blender JSON ๋ด๋ณด๋ด๊ธฐ๋ ์ ๋๋ฉ์ด์
์ ์ ๋ด๋ณด๋
๋๋ค. GLTF ๋ด๋ณด๋ด๊ธฐ์๋ ์๋ ํน์ ์กฐ๊ฑด์์ UV ๋๋ ์ ์ ๋ฒ์ ์ ์ด์ํ ๊ฒฐํจ์ด ์์ง๋ง ๊ทธ๊ฒ์ ๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ์
๋๋ค.
์๊ฒ ์ต๋๋ค. ๋ธ๋ ๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ด์ ๋ํด ๋ ์ด์ ์ธ๊ธํ์ง ์๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ช ๋
๋์ ์
๋ฐ์ดํธ๋์ง ์์ 3DS Max ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ ์๋๋ ๋์๋ ๊ณจ์นซ๊ฑฐ๋ฆฌ์ด๋ฉฐ FBX ํ์์ ์ํด ์ ์ฅ์์์ ์ ๊ฑฐํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ์ง์งํฉ๋๋ค.
3DS Max FBX ๋ด๋ณด๋ด๊ธฐ์์ ๋ด๋ณด๋ธ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ์ด์ FBXLoader์์ ์ง์๋๋ฉฐ ํด๋น ๋ด๋ณด๋ด๊ธฐ๋ AutoDesk์์ ์ ์ง ๊ด๋ฆฌํ๋ฏ๋ก ์ต์ ์ํ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
Maya FBX ๋ด๋ณด๋ด๊ธฐ์ ์ ์ฌํ์ง๋ง FBXLoader๋ ์ฌ์ ํ ํผ๋ฒ ํฌ์ธํธ๋ฅผ ์ ์ ํ๊ฒ ์ง์ํ๋๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ ๋ BufferGeometry
์ ์ ํํ๋ฉด Blender์์ ์ ๋๋ฉ์ด์
์ ๋ด๋ณด๋ด์ง ์์ต๋๋ค. ๋ชจํ ํ๊ฒ์๋ ํ์คํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. #10932๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ฒ๋ค๊ฐ ๋ด๋ณด๋ด๊ธฐ๋ ํ์ฌ ์ ๋๋ฉ์ด์
์์คํ
์ด ์๋ "์ด์ " ์ ๋๋ฉ์ด์
๊ณ์ธต ํ์์ ์ฌ์ฉํฉ๋๋ค.
Revit ๋ด๋ณด๋ด๊ธฐ README๋ ์ ๊ฑฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ์ง๋ ๋ช ๋ ๋์ ๊ฑฐ์ ๊ฑด๋๋ฆฌ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ณ๋์ ์ ์ฅ์์ ์ฐ๊ฒฐ๋ ๋ฟ์ ๋๋ค.
์ด์ ๊ฐ์ด ์ฐ๊ฒฐํ ์ ์๋ three.js ๋๊ตฌ๊ฐ ์๋ฐฑ ๊ฐ ์์ ์ ์์ง๋ง ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ง ์๋ ํ ์ฌ๊ธฐ์ ํด๋น ๋๊ตฌ์ ๋ํ ๋งํฌ๋ฅผ ํฌํจํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"three.js revit exporter '์ ๋ํ ์ธํฐ๋ท ๊ฒ์์ ์ด์จ๋ ์ ์ฅ์๋ฅผ ์ ์ฐพ์ต๋๋ค.
Revit ๋ด๋ณด๋ด๊ธฐ README๋ ์ ๊ฑฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ์ง๋ ๋ช ๋ ๋์ ๊ฑฐ์ ๊ฑด๋๋ฆฌ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ณ๋์ ์ ์ฅ์์ ์ฐ๊ฒฐ๋ ๋ฟ์ ๋๋ค.
๐
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋๋ก ์ ์ง ๊ด๋ฆฌ๋์ง ์๊ณ ์ค๋๋ ์์ถ์ ์ฒด๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์ ๊ท ์ด๋ฏผ์์๊ฒ ๋ถํ์ํ ํผ๋ ์ง์ ์ ๋๋ค.
three.js
๋งค์ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด ์ง์ ์ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฌํ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ํ ๋ ์ ๋๋ก ์๋ํ๋ ๋๊ตฌ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํผ๋์ค๋ฌ์ํ๊ณ ์ ์ฒด ํ๋ก์ ํธ์ ๋ํ ๋์ ์ธ์์ ์ค ์๋ ์์ต๋๋ค. ๊ทธ๊ฑด ์ข์ง ์์. ๐ข
๋ฌด๊ณ ํ ์ฌ์ฉ์๋ก์ ๊ฐํ ๋๊ธ์ ๋ฌ ์ ์์ต๋๋ค ...
๋ธ๋ ๋์ ๊ดํ์ฌ:
three.js์ ๊ธฐ๋ณธ .blend ํ์ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ์๋ ๊ฒฝ์ฐ
๋ถ๋ช
ํ ์์ถ์
์๊ฐ ํ์ํ์ง ์์ ๊ฒ์
๋๋ค.
๋ธ๋ ๋ ์ธก์์ ์ค์น ๋
ธ๋ ฅ์ด ํ์ํ์ง ์์ต๋๋ค.
๋ธ๋ ๋ API/๊ตฌ์กฐ์ฒด์์ ํ์ด์ฌ ์ฝ๋๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ์์ ...
JSON ์ต์คํฌํฐ๋ฅผ ํ์ด์ฌ์ผ๋ก ์์ฑํ๊ธฐ ์ํ ์์ฒญ๋ ๋
ธ๋ ฅ์ด ์์๊ณ ,
์ ํ๋ ฅ์๋ค์ด ์ด๋ฐ ๋ฐฉ์์ ์ ํํ์ง ์์๋์ง ๊ถ๊ธํฉ๋๋ค...?
@wolfgangvonludwigsburg
๋๋ตํ ์ ์๋ ์๋นํ ๊ฐ๋จํ ์ง๋ฌธ์
๋๋ค. ๋ธ๋ ๋ ํ์์ three.js ๋ด๋ถ ํํ์ ๊ฐ๊น์ง ์์ผ๋ฏ๋ก ์ฝ๊ฐ์ ๋ณํ์ด ํ์ํฉ๋๋ค. three.js์ JSON ํ์์ ๋ด๋ถ ํํ์ ๋งค์ฐ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ ๋ธ๋ ๋ ํํ์์ three.js๋ก์ ๋ณํ ์์
์ ๋ด๋ณด๋ด๊ธฐ ๋๋ ๋ก๋ ์ค ๋ฌด์์ ์ ํํ๋ ์๊ด์์ด ์์ต๋๋ค. ์ฆ, .blend๋ ์ผ๋ฐ์ ์ธ ์ ์ก ํ์์ด ์๋๋ฉฐ, ๋ธ๋ ๋๋ฅผ ์ ์ธํ๊ณ ๋ ์ค์ ๋ก ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋ธ๋ ๋๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ฌ๋๋ค๋ ๋ค๋ฅธ ์ํํธ์จ์ด๋ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์๊ธฐ ๋๋ฌธ์ ๋ก๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋นํ ์ ์ ์์ ์ฒญ์ค์ ๋ง์กฑ์ํฌ ์ ์์ต๋๋ค. ๊ตํ ํ์์ผ๋ก ์ ํํ ํ์์ด ์๋๋๋ค. ์ผ๋ฐ์ ์ผ๋ก obj, fbx ๋๋ gltf ๋๋ collada์ ๊ฐ์ ์ผ๋ถ ๊ณต๊ฐ ํ์ค์
๋๋ค.
@wolfgangvonludwigsburg .blend ํ์ผ ๋ก๋๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ _
https://raginggazebo.com/parsing-blender-3d-files-blend-1-of-3/
๊ทํ์ ์๊ฒฌ์ ๋ํ ๋ง์ THX!
๊ทธ๋ฌ๋ ์ Blender JSON ๋ด๋ณด๋ด๊ธฐ๋ ๊ทธ๋ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด๊ฐ์?
=> ์ด๊ฒ์ Blender API์ ์์กดํ๊ณ , Python์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ, Blender ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ three.js๊ฐ ๋ด๋ถ๋ก ๋ค์ ๋ณํํ๋ JSON ํ์์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค.
์ฃผ๋ก ๋ธ๋ ๋ ๋ฒ์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ชจ๋ ์คํจํ ์ ์๋(์ค์ ๋ก!) ๋ง์ ์์
์ด ์คํจํฉ๋๋ค.
๊ธ์, ๋๋ "์ง์ ๋ฐ์ดํฐ ์ปดํ์ผ"๋ฐฉ์์ ์ ํธํฉ๋๋ค ...
๊ธ์, ๋๋ "์ง์ ๋ฐ์ดํฐ ์ปดํ์ผ"๋ฐฉ์์ ์ ํธํฉ๋๋ค.
์ข์ ์ ๊ทผ ๋ฐฉ์์ด ์๋๋๋ค. blend
ํ์ผ์ ์ฑ์ ์ง์ ๋ก๋ํ๋ ๊ฒ์ ์ผ์ข
์ ์ค์ฉ์
๋๋ค. ๋์ ๋ฐ์ดํฐ ์ ์ก ๋ฐ ์์ฐ ์ ๋ฌ์ ์ํ ํ์ผ ํ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. glTF
๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ด์ ์์ ์ด ์ธก๋ฉด์ ์ด์ ์ ๋ง์ถ ์ต์ด์ ํ์คํ๋ ํ์์
๋๋ค. ์ ๊ฐ glTF
๋ฅผ ์ฌ๋ฌ ๋ฒ ํ๋ณดํ๋ ์ด์ ์ค ํ๋์
๋๋ค ๐ . ์ด๋ ๊ณง ์ถ์๋ ๋ชจ๋ 3D ์ฑ์ ํ์ค์ด ๋์ด์ผ ํฉ๋๋ค.
๊ธ์, ๋๋ "์ง์ ๋ฐ์ดํฐ ์ปดํ์ผ"๋ฐฉ์์ ์ ํธํฉ๋๋ค ...
๋ถํํ๋ ์ด๋ฐ ์์ผ๋ก .blend
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ํธ์ง ๊ธฐ๋ก, ๋ธ๋ ๋ UI์ ํ์ฌ ์ํ, ๋ธ๋ ๋ ์ ๋์จ ๋ฐ์ดํฐ์ ๊ฐ์ ๊ฒ์ ์ ์ฅํฉ๋๋ค. ์๋ก์ด Blender ๋ฆด๋ฆฌ์ค๊ฐ ๋์ค๋ฉด ํ์์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ผ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ํด ์ ์์ผ๋ฏ๋ก ๊ณ ํ์ง 3D ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ํฉํ์ง ์์ต๋๋ค. ๋ธ๋ ๋์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ธ๋ ๋์ ๋ด๋ถ .blend
ํ์์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํ๋ ๋์ ๋ธ๋ ๋์ API(FBX ๋ฐ glTF ๋ด๋ณด๋ด๊ธฐ๊ฐ ํ๋ ๊ฒ์ฒ๋ผ)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
์๋ ์ง๋ฌธ์ ๋ํด ๋๋ 3D ์ ์ ์ํฌํ๋ก์ ์ต์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์/์๋์ค ํฌํ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฑด๋๋ธ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ฉ์ธํ ์ด๋์ด์ ์ฃผ๋ก JS ๊ฐ๋ฐ์๋ก์ ์ 3์ ์ ์ ๋๊ตฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌํด ์จ FBX ๋ฐ glTF์ ๊ฐ์ ํ์์ ๋ํ ๋ก๋ ๋ฐ ์ง์์ ์ง์คํ ์ ์๋ค๋ ๊ฒ์ ์ ๋ขฐํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋ค๊ณ ๋๋๋๋ค.
์ ์ณ๋๊ณ , ํ์ฌ glTF ์ํ๊ณ์ ์ด๋ฌํ ์ ํ์ ์๊ตฌ๋ฅผ ํด๊ฒฐํ๊ธฐ์ ์ถฉ๋ถํ ์ํฌํ๋ก๊ฐ ๋์ง ๋ชปํ๊ฒ ํ๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ ์ฉํ ํผ๋๋ฐฑ์ ๋๋ค. ๐
๋๋ Blender .blend ํ์์ ์ผ๋ฐ์ ์ธ ๊ตํ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ๋
ผ์ํ์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ Blender์ three.js ๊ฐ์ ํ์
์ ๋จ์ํํ ์ ์์ต๋๋ค ...
๋ธ๋ ๋ ํ๋ ์์ํฌ์์ Python ๋ด๋ณด๋ด๊ธฐ + GUI๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋
ธ๋ ฅ์ ์์ธกํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด๊ฒ์ ์ฝ๊ฒ ๊ณตํฌ๊ฐ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค ... ;-)
@donmccurdy
BTW, Wavefront .obj, 3D Studio .3ds๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํ์์
๋๋ค...
BTW, Wavefront .obj, 3D Studio .3ds๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํ์์ ๋๋ค...
์, ํ์์ด ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ์ผ๋ถ ์ธ๊ธฐ ์๋ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ OBJ๊ฐ ์ฌ๊ธฐ์์ ์ธ๊ธ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์คํ three.js๋ ๋งค์ฐ ์ค๋ซ๋์ OBJ๋ฅผ ๊ณ์ ์ง์ํ ๊ฒ์ ๋๋ค. ์ด๋ ๊ณ ์ ์ ์ด๊ณ ์์ ์ ์ธ ํ์์ ๋๋ค.
3DS Max์ .3ds
๋ Blender์ .blend
๋๋ Maya์ .mlt
๋๋ Cinema4D์ .c4d
์ ๊ฐ์ ๋ฒ์ฃผ์ ์์ต๋๋ค. ๊ฐ ํธ์ง๊ธฐ์๋ ๊ณ ์ ํ ๋ด๋ถ ํ์์ด ์์ผ๋ฉฐ ์ด๋ฌํ ํ์์ ์ํํธ์จ์ด์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ชจ๋ ๋ชจ๋ธ๋ง ๋๊ตฌ์ ๊ฐ์ธ ๋ด๋ถ ํ์์ ๋ํ ๋ก๋๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ํธ์ง๊ธฐ ์์ฒด ๊ฐ๋ฐ์๊ฐ ์ ๊ณตํ ๋ด๋ณด๋ด๊ธฐ ํ์์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ด๋ ต๊ณ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. 3DS์ Blender ๋ชจ๋ ์์ฑ์๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ FBX ๋ด๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ผ๋ฉฐ Blender๋ ํฅํ ๋ฒ์ ์์๋ ๋ด์ฅ glTF ๋ด๋ณด๋ด๊ธฐ ๊ธฐ๋ฅ์ ๊ฐ๊ฒ ๋ ๊ฒ์
๋๋ค.
๋ง์ง๋ง ํฌ๊ตฌ...
์ฐ๋ฆฌ๋ ์ด๋ฏธ ํ๋์ ๋
๋ฆฝ์ ์ธ ์ /์์
์
์ฒด์ธ ๋ชจ๋ธ๋ง ๋๊ตฌ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค: Collada,
๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ๋ ์ด๊ฒ๋ค์ ๊ทธ๋ค์ง ๋ฐ์ ๋ค์ฌ์ง์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋์งํ๊ฒ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌํ์ ์ผ๋์ ๋์์ต๋๋ค.
Google ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ก๋ฉ ์๋ฃจ์
https://developers.google.com/protocol-buffers/
๊ทธ๊ฒ์
... ์ธ์ด ์ค๋ฆฝ์ , ํ๋ซํผ ์ค๋ฆฝ์ , ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ง๋ ฌํ๋ฅผ ์ํ ํ์ฅ ๊ฐ๋ฅํ ๋ฉ์ปค๋์ฆ โ XML์ ์๊ฐํ์ง๋ง ๋ ์๊ณ ๋น ๋ฅด๊ณ ๊ฐ๋จํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํด์ผ ํ๋ 2D/3D ๋ฒกํฐ ๋ฐ์ดํฐ๋ ๋ณธ์ง์ ์ผ๋ก ๋๋ฌด ๋ณต์กํ์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ธ๋ ๋ ๋ฐ์ดํฐ ํ์ผ ์คํค๋ง๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ์ ๊ฐ๋จํ๊ฒ ์คํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค...
์๋ฐ์คํฌ๋ฆฝํธ์๋ ์ค์ ๋ก ํผํฉ ํ์ผ ํ์๊ฐ ์์ต๋๋ค ๐
https://github.com/Galactrax/js.blend
์ด, ์ง์์ ๋ฐ์ต๋๋ค... - ๊ฐ์ฌํฉ๋๋ค mrdoob ;-))
๊ฐ์ฅ ํฐ(Terrabyte ์ธก๋ฉด์์) 3D ๋ชจ๋ธ ์ ํ๋ฆฌ์ผ์ด์ (Google Maps 3D)์ ์ด ํจ์จ์ ์ธ ์ข ๋ฅ(protobufs)์ ๊ตฌํ์ ์ฌ์ฉํฉ๋๋ค.
.blend๋ฅผ ๋ก๋ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ ์ ์ ์ ์ด ์๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก .dae ๋ฐ .fbx๋ฅผ ๋ก๋ํ๋ ๊ฒ๊ณผ ๋ค๋ฅด์ง ์์ต๋๋ค...
์ด์จ๋ , ๋๋ ์์ถ์
์๋ฅผ ๋น์ถ์ฒํ๋ค๋ ์๊ฐ์ ๋์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ gltf๊ฐ ์กฐ๊ธ ๋ ์ฑ์ํ๊ณ ํ
์คํธ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ์
๋๋ค. 2018๋
์ฌ๋ฆ?
ํด๋น ์์ถ์ ์ฒด๋ ์ญ์ ํ๋ ๋ฐ ๋์ํฉ๋๋ค. RIPํ ์ ์๋ ๋ค๋ฅธ ์ ์ฅ์๋ก ์ด๋ํ ์๋ ์์ต๋๋ค. :)
๊ทธ๋ฌ๋ ๋๋ gltf๊ฐ ์กฐ๊ธ ๋ ์ฑ์ํ๊ณ ํ ์คํธ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค. 2018๋ ์ฌ๋ฆ?
๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ ๋๋ค. ํนํ glTF์ ๊ฒฝ์ฐ ๋จผ์ ๋ช ๊ฐ์ง ์ฌํญ์ ์ค๋นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
2018๋ ์ฌ๋ฆ์ ์ง๋ฌธ์ ๋ค์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ด ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ gltf๊ฐ ์กฐ๊ธ ๋ ์ฑ์ํ๊ณ ํ ์คํธ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค. 2018๋ ์ฌ๋ฆ?
๋ธ๋ ๋ ์์ถ์ ์ฒด์ ๊ฒฝ์ฐ ๋์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ FBX์ ์ด๋ฏธ ์ฑ์ํ๊ณ ํจ์ฌ ๋ ๋์ ๋์์ด ์์ผ๋ฏ๋ก ์ต์ํ 3DS Max ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฆ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ฌ๋ FBX์ ์ด๋ฏธ ์ฑ์ํ๊ณ ํจ์ฌ ๋ ๋์ ๋์์ด ์์ผ๋ฏ๋ก ์ต์ํ 3DS Max ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฆ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋์๊ฒ ์ข์ ์๋ฆฌ ๐
์, 3DS Max ๋ด๋ณด๋ด๊ธฐ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค. ๋ช ๋ฌ ํ์ ๋ค๋ฅธ ์์ถ์ ์ฒด(Blender ๋ฐ Maya)๋ฅผ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋๋ ๊ทธ ์๊ฐ์ Maya ์์ถ์ ์์ ๊ดํด ๋ง์ ๊ฒ์ด ๋ฐ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ง๊ธ ๊ทธ๊ฒ์ ํ๊ฐํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ํ ์คํธํ๊ณ ์์ผ๋ก ๋ฉฐ์น ๋์ ๋ณด๊ดํ ๊ฐ์น๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
์ข์ ์ ์ ๐ .
์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ ์๋ ํ https://github.com/mrdoob/three.js/tree/dev/utils/converters/fbx ์ ์ํ๋ ์ด๋ป์ต๋๊น? THREE.FBXLoader๋ฅผ ์ฌ์ฉํ๊ณ ๋ง์ง๋ง์ ์ง๋ ฌํํ๋ฉด obj2three ๋ณํ๊ธฐ์ ๊ฐ์ node.js ์คํฌ๋ฆฝํธ๋ก ๋์ฒด๋ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ๋ณํ๊ธฐ์๋ ๋ง์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
No animation support
Only Lambert and Phong materials are supported
Some camera properties are not converted correctly
Some light properties are not converted correctly
Some material properties are not converted correctly
Textures must be put in asset's folder, and use relative path in the material
๋ํ msgPack, UTF8 ๋ฐ CTM ๋ณํ๊ธฐ - ๋ช ๋ ๋์ ๊ฑด๋๋ฆฌ์ง ์์์ต๋๋ค.
๊ทธ๋ค์ ์ฌ์ ํ โโ๋๊ตฐ๊ฐ์๊ฒ ์ ์ฉํฉ๋๊น?
@donmccurdy DOM์ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์ node.js ์คํฌ๋ฆฝํธ ๋ด์์ FBXLoader
์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ฉ ๋ชจ๋ ๋ก๋ TextureLoader
์ ๋ํ ์์กด์ฑ์ด ImageLoader
๋ฐ๋ผ์์ document
. ReferenceError: document is not defined
์ ๊ฐ์ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. FileLoader
์์ ์ก์ธ์คํ๋ window
๊ฐ์ฒด์ ๋ํด์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก fbx2three.js
ํ์ผ์์ ImageLoader
๋ฐ FileLoader
๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๊น?
fbx2three.js ํ์ผ์์ ImageLoader์ FileLoader๋ฅผ ์ฌ์ ์ํ ์ ์์๊น์?
๋๋ ์ด๊ฒ์ด ์ถฉ๋ถํ ๊ฐ๋จํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ฌ์ ํ ํ์ด์ฌ ๋ณํ๊ธฐ๋ณด๋ค ํจ์ฌ ์ ์ ์ฝ๋๋ฅผ ํ์๋ก ํฉ๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
fbx2three.js ํ์ผ์์ ImageLoader์ FileLoader๋ฅผ ์ฌ์ ์ํ ์ ์์๊น์?
์ข์ ์๊ฐ : ํ๋น๋ฌด:
3DS Max์ .3ds๋ Blender์ .blend ๋๋ Maya์ .mlt ๋๋ Cinema4D์ .c4d์ ๊ฐ์ ๋ฒ์ฃผ์ ์์ต๋๋ค.
์ด๊ฒ์ ์์ ํ ์ฌ์ค์ด ์๋ ์๋ ์์ต๋๋ค. .max๋ ๋์ผํ ๋ฒ์ฃผ์ ๋ ๊ฐ๊น๊ณ .3ds๋ ์๋นํ ์ ๊ฑฐ๋ฉ๋๋ค.
๋๋ ๋ด๋ณด๋ด๊ธฐ ์์ฑ ๋ฐฉ๋ฒ์ ์๋ก์ 3ds max ๋ด๋ณด๋ด๊ธฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ํ๊ณ , maxscript์์๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค. ๋๋ fbx๋ฅผ ํตํด 3ds max์์ ์ฌ๋ฐ๋ฅธ ์ ์ ๊ณต๊ฐ์ ๋ด๋ณด๋ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. maxscript๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ๊ฒ์ ์ฝ๊ฒ ์คํํ๊ณ ์ก์ ์ ์์ต๋๋ค.
์ ์ ํ ๋ฉด์ฑ ์กฐํญ๊ณผ ํจ๊ป ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฃ์ ๊ฐ์น๊ฐ ์์ต๋๊น? ๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ ์์ฑ ๋ฐฉ๋ฒ์ ๋ํ ์์ ๋๋ค. ํ์ง๋ง ์ ์ง ๊ด๋ฆฌ๋์ง ์๊ณ FBXLoader๊ฐ ๋ ์์ ์ ์ด๋ผ๋ฉด ์ฌ๋๋ค์ด ์ด๊ฒ์ด 3DS Max์ ์์ฐ์ three.js๋ก ๊ฐ์ ธ์ค๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
์, ๊ทธ๋ ๋ค๋ฉด ๋๋ ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํํฉ๋๋ค.
json ํ์์ ์์ ํ ํฌ๊ธฐํ๊ธฐ ์ ์ ์ถ๊ฐํ๊ณ ์ถ์์ต๋๋ค. ์ฅ๋ฉด ๋ด๋ณด๋ด๊ธฐ์ ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก). ์ด๊ฒ์ '๊ทธ๋ฅ' json์ด๋ฏ๋ก js์์ ๋ด์ฑ ๋ฐ ์์ ํ๊ณ ์ด๋ฌํ ์ข ๋ฅ์ ์์ ์ ์ํํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ์๋ฅผ ๋ค์ด glTF(์ ์ด๋ ํ์ฌ ํ์์์๋)๊ฐ ์ฅ๋ฉด ํ์์ผ๋ก ์ ๋ง๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋์ ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ์ json ํ์์ด ์กฐ๊ธ ๋ ์ค๋ ์ ์ง๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@pjoe JSON ํ์๊ณผ Blender ๋ด๋ณด๋ด๊ธฐ๊ฐ ์ด ์ค๋ ๋์์ ์ธ๊ธ๋ ๋ค๋ฅธ ๊ฒ๋ค(์: 3DS Max + Maya ๋ด๋ณด๋ด๊ธฐ)๋ณด๋ค ๊ฐ๊น์ด ์์ผ ๋ด์ ๊ณ์ ์ ์ง๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ง์ฐฌ๊ฐ์ง๋ก, glTF ๋ฐ Blender ๋ด๋ณด๋ด๊ธฐ ์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ธ๊ธํ ๋ชจ๋ ๊ฒ์ด ์ง์๋ฉ๋๋ค.
@donmccurdy ๋ (์ ์ด๋ ์์ง๊น์ง๋) glTF์ ๋ํ ๋ง์ ๊ฒฝํ์ด ์์์ ์ธ์ ํด์ผ ํฉ๋๋ค. - ๋น๋ก ์ฌ์์ ์ฝ์ผ๋ ค๊ณ ํ์ง๋ง :)
๋ด ์๊ฐ์ glTF์ ์ฃผ์ '์ ๊ณ ๊ธฐ'(์ด๋ ํ๋ฅญํ ์ ์ก ํ์์ด๋ฉฐ GPU ๋ฒํผ์ ๊ฐ๋ฅํ ํ ๋น ๋ฅด๊ณ ์ง์ ์ ์ผ๋ก '๋ฐ์ดํธ'๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ๋ ์ข์ต๋๋ค)๋ ๋ชจ๋ ์ฐธ์กฐ๊ฐ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ข์ง ์์ต๋๋ค. ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ฅ๋ฉด ํ์์ ์ ํฉํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ํญ๋ชฉ์ ์ญ์ ํ๊ฑฐ๋ ์ค๊ฐ์ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ํด๋น ์์น ๋ค์ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ธ๋ฑ์ค๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ์ด '์ธ๋ฑ์ค ๊ด๋ฆฌ'๋ฅผ ์ํํ๋ฉด ๋งค์ฐ ์ง์ ๋ถํด์ง๋๋ค.
๋ธ๋ ๋ glTF ์์ถ์ ์ฒด์ ํจ๊ป ๋ณด๋ธ ์งง์ ์๊ฐ๋ถํฐ(์ฝ 2๊ฐ์ ์ ) ๋น์์๋ ์๋นํ ๋ฏธ์ํด ๋ณด์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ทธ๊ฒ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ ์ฃผ์ด ๋ถ๋ช ํ ๊ณ ์น ์ ์์ต๋๋ค. :)
... ๋ชจ๋ ์ฐธ์กฐ๋ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ด๋ฏ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ฅ๋ฉด ํ์์ ์ ํฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ํญ๋ชฉ์ ์ญ์ ํ๊ฑฐ๋ ์ค๊ฐ์ ํญ๋ชฉ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ํด๋น ์์น ๋ค์ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ธ๋ฑ์ค๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
์, ๊ทธ๋ฐ ์๋ฏธ์์ ์๋ ํธ์ง์ ์ํด ์ค๊ณ๋์ง ์์์ผ๋ฉฐ ๋ฐํ์/์ ์ก ํ์์ผ๋ก์ ์๋ง๋ ์ ๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค. ๋์์ด ๋ ์ ์๋ ์์ ์ ์ํ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก glTF ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๋ค๋ฅธ ๋ธ๋ ๋ ์ถ๋ ฅ๋ณด๋ค ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์์์ง๋ง ํน์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ์ญ์์ค. :)
@donmccurdy ๋ glTF๊ฐ ์ ์ก/๋ฐํ์์ ์ถฉ์ค
์ฐ๋ฆฌ๋ ์๊ณ ๋นจ๋ผ์ผ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํ ๋ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณํ ์ค๋ฒํค๋๋ฅผ ํผํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ง๊ธ๊น์ง๋ three.js JSON ํ์์ด ์ด ์ฌ์ฉ ์ฌ๋ก์ ์ฅ๋ฉด ํ์์ผ๋ก ์ ํฉํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์นด๋ฉ๋ผ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ธ๋ ๋์์ ์ ์ฒด ์ฅ๋ฉด์ ์ค์ ํ ์ ์๋ ๊ฒ์ ๋ด๋ณด๋ด๊ธฐ, ๋ก๋ ๋ฐ ๋ฐํ์์ ๋์ ์ผ๋ก ๋ชจ๋ธ์ ๊ต์ฒดํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค(์ด๋ ์๋ง๋ ์กฐ๋ง๊ฐ glTF๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ ๋๋ค) - ์ด ๋ชจ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ๋ก ๋ถ๋๋ฌ์ด ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค. ์ฐ๋ฆฌ๋ฅผ ์ํด :)
์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๋ ๋ํ webpack json ๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฅ๋ฉด ํ์ผ์ ๋ฉ์ธ ๋ฒ๋ค์ ํฌํจํฉ๋๋ค.
๋๋ ๊ทธ ์๊ฐ์ Maya ์์ถ์ ์์ ๊ดํด ๋ง์ ๊ฒ์ด ๋ฐ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ง๊ธ ๊ทธ๊ฒ์ ํ๊ฐํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ํ ์คํธํ๊ณ ์์ผ๋ก ๋ฉฐ์น ๋์ ๋ณด๊ดํ ๊ฐ์น๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
@looeeee ๊ถ๊ธํ๋ฐ ์ด๊ฑฐ ์์์๋์ ๐ ? ์ง๊ธ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๋์ FBX
๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๊น?
์ด์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๋์ FBX๋ฅผ ์ฐธ์กฐํ ์ ์๋ค๊ณ ์๊ฐํ์ญ๋๊น?
์ ์ ์์ ํ ์คํธ๋ง ํ๊ณ ๋ ํด๋ณผ ๊ณํ์ด์ง๋ง ์๊ฐ์ด ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๊ณ FBXLoader๊ฐ Maya๋ฅผ ์์ ํ ์ง์ํ๋๋ก ๋ ธ๋ ฅํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์์ Blender ๋ด๋ณด๋ด๊ธฐ์ ์ฌ์ฉ์๋ก ์ฐธ์ฌํ์ญ์์ค. JSON์ ์ฌ์ฉํ๋ ๊ฒ์ ํ ๊ฐ์ง ์ด์ ์ ๋ด๋ณด๋ด๊ธฐ ํ ์์ ์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ๊ฒ์ ๋๋ค. Blender๋ ์๋ํ๋ ๋๊ตฌ ์ฒด์ธ์ ์ผ๋ถ์ผ ๋ฟ์ด๋ฉฐ ์น ๋ทฐ์ด๋ก ์ด๋ํ ์ค๋น๊ฐ ๋๊ธฐ ์ ์ ๋ด๋ณด๋ธ JSON์ ๋ํด ๋ง์ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ๋ด๋ถ threejs ํ์์ ๋งค์ฐ ๊ฐ๊น์ด ์ ์ก ํ์์ ๊ฐ๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํฐ ๋ณด๋์ค์ ๋๋ค.
๋ํ ๋ค๋ฅธ ๋ด๋ณด๋ด๊ธฐ ํ์์ผ๋ก ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์ํํ์ผ๋ฉฐ JSON ํ์์ด ์๋ฅผ ๋ค์ด Collada ๋๋ FBX๋ณด๋ค ํจ์ฌ ๋ ์ ์์ถ๋๋ฉด ์ ์ก ํฌ๊ธฐ ๋ฉด์์ ๊ทธ๋ ๊ฒ ๋์์ง ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋น ๋ฅธ protobuffers ๊ธฐ๋ฐ ์ํ์ ์ํํ๊ณ ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก ์กฐ๊ธ ๋ ์๊ฒ ๋ง๋ค ์ ์์์ง๋ง ๋ฒ๊ฑฐ๋กญ๊ฒ ํ ๊ฐ์น๋ ์์์ต๋๋ค.
ํฐ ์ฅ๋ฉด๊ณผ ๋๋ฆฐ ํด๋ผ์ด์ธํธ์ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ๋ด๋ถ ThreeJS ๋ชจ๋ธ๋ก ๋ณํํ๋ ์๋๋ ์ค์ํฉ๋๋ค. JSON ๊ตฌ๋ฌธ ๋ถ์์ ๋ธ๋ผ์ฐ์ ์์ ํฌ๊ฒ ์ต์ ํ๋๊ณ ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ ๋งค์ฐ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ JSON ํ์์ด ์ด์ ๊ด๋ จํ์ฌ ๊ฝค ์ํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ต๋๋ค. ์ค์ ๋ก ์ด๊ฒ์ ํ ์คํธํ์ง ์์์ต๋๋ค.
Soft8Soft ๋ 3ds Max์ฉ glTF ๊ธฐ๋ฐ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ถ์
@alexkowel ๊ฐ์ฌํฉ๋๋ค. ์ด ์ค๋ ๋์ ๋งํฌ๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฉด ๋ค๋ฅธ glTF ๋ฆฌ์์ค์ ํจ๊ป ๋์ดํฉ๋๋ค. ๐
@dherben ์ข์ ์ , ๊ฐ์ฌํฉ๋๋ค โ
๊ตฌ๋ฌธ ๋ถ์ ์๋์ ๋ํด์๋ glTF๊ฐ ํจ์ฌ ๋ ๋น ๋ฅผ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์ฐจ์ด์ ์ ๋ฉํ๋ฐ์ดํฐ๋ ์ฌ์ ํ "JSON"์ธ ๋ฐ๋ฉด ํ์ด๋ก๋์ ํฐ ๋ถ๋ถ(์ ์ ์์น, ์ ๋๋ฉ์ด์
๋ฐ์ดํฐ)์ THREE.BufferAttribute
์์ฑ์๋ฅผ ์ํ ํ์ํ๋ ๋ฐฐ์ด์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ArrayBuffer ์ฒญํฌ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์์ ํ ์ต์ ํ๋ ๋ก๋(THREE.GLTFLoader๊ฐ ์์ง ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค)์์๋ JS์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ๋ณต์ฌํ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ดํ๋ผ์ธ์ ์ผ๋ถ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ ๋ง์ํ์ ๋๋ก ์ผ๋ฐ JSON์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฝ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. glTF ์์ ์ ์ํ ๋ค์ํ ์ธ์ด๋ก ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ง๋ง ๋๊ตฌ๋ ์์ง ์ฑ์ํ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ํ์ฌ ์ํ:
์์ถ์ ์ฒด:
๋ณํ๊ธฐ:
ํธ์ง: 2018๋ 5์ ์ ๋ฐ์ดํธ๋จ.
@donmccurdy glTF Blender ๋ด๋ณด๋ด๊ธฐ ๋ฐ Three.js ๋ก๋๋ก ๋ ๋ง์ ์คํ์ ํ ํ ๋์๊ฐ๊ณ ์ถ์์ต๋๋ค. ์ค์ ๋ก ์ง๊ธ๊น์ง ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์ฅ๋ฉด ํ์์ด ๊ฝค ์ ์๋ํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ด๊ฐ ์ง๊ธ ํ๊ณ ์๋ ์ผ์ ๋ด๋ณด๋ธ glTF ํ์ผ์ Three.js ์ฅ๋ฉด์ ๋ก๋ํ ๋ค์ ์ฒซ ๋ฒ์งธ ๋ ๋๋ง์ ์ํํ๊ธฐ ์ ์ Three.js ์ฅ๋ฉด ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ๋๋ค(์๋ฆฌ ํ์์๋ฅผ ๋์ ๋ก๋๋ ํญ๋ชฉ์ผ๋ก ๊ต์ฒด).
glTF ๋ด๋ณด๋ด๊ธฐ์์ ๋ณด๊ณ ์ถ์ ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์์ ๊ฒ์ ๋๋ค. ๋๊ธ์ ๋ฌ๊ฑฐ๋ PR์ ํ๋ ค๊ณ ํ ๊ฒ์ ๋๋ค. :)
glTF ๋ด๋ณด๋ด๊ธฐ์์ ๋ณด๊ณ ์ถ์ ๊ธฐ๋ฅ์ด ์ฌ์ ํ ์์ ๊ฒ์ ๋๋ค. ๋๊ธ์ ๋ฌ๊ฑฐ๋ PR์ ํ๋ ค๊ณ ํ ๊ฒ์ ๋๋ค. :)
๊ต์ฅํฉ๋๋ค, ํด์ฃผ์ธ์! ๐
๋ธ๋ ๋ ์ต์คํฌํฐ๋ ํ์ฌ ์๋ฌด๋ฐ๋ ๊ฐ์ง ์๊ณ ํฅํ ๋ค์ ๋ฐฉ๋ฌธํ ์ ์์ต๋๋ค.
ํ์ฌ ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ ๋ฒ๊ทธ์ ๋ํด ์์ ํ ์ฌ๋์ด ์์ต๋๊น? ๋๋ ๋๋ต์ด ์๋์ค๋ผ๊ณ ์์ํฉ๋๋ค. ๊ทธ๋ด ๋ ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ๋งํด์ผ ํฉ๋๋ค.
๋๋ณด๋ค ๋จผ์ ํ๋ ์ฌ๋์ด ์๋ค๋ฉด... ์ ์ด๋ ๋กํ ์ด์ ๋ฌธ์ ๋ ํด๊ฒฐํ๊ณ ์ถ์ต๋๋ค. #13130
ํ์ฌ ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ ๋ฒ๊ทธ์ ๋ํด ์์ ํ ์ฌ๋์ด ์์ต๋๊น? ๋๋ ๋๋ต์ด ์๋์ค๋ผ๊ณ ์์ํฉ๋๋ค.
๋๋ ์ ์ฒด ํ ๋ก ์ ์ฝ์ง ์์์ง๋ง ๋ด ๋ ์ผํธ๋ฅผ ์ฝ์์ต๋๋ค.
์ง๋ ์ฃผ์ ์ ๋ ์์ค ์ ์ ๋ด์์ ์ปจํ ์ธ ์ ๋ฌ์ Three.js๋ฅผ ์ฌ์ฉํ๋ ์๋ฃจ์ ์ ๊ฐ์ง๊ณ ์๋ ํ์ฌ๋ฅผ ๋์๋ฌ๋ผ๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ํ๊ณ ์ํธ ์์ฉํ ์ ์๋ 3D ๋ชจ๋ธ์ด ์๋ ์ฌ์ด๋์ง. ์ค๋ ์ ์ ์ฌ๋ผ์ง ์๋ ๊ฐ๋ฐ์๋ Three.js JSON ํ์์ ์ฌ์ฉํ์ต๋๋ค . ๋ฐํ์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ์กฐ๊ฑด์์ ์ ๋ชจ๋ธ์ ์ค๋นํ๊ณ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ ๋ง ์ ๋ชฝ์ ๋๋ค.
IMHO Three.js ๋ FBX ๋ฐ glTF ์ ๊ฐ์ด ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ํ์๋ฟ๋ง ์๋๋ผ ๊ธฐ์กด ํ์์ ์ง์ํ๋ ๋ฐ ์ค์ ์
๋ธ๋ ๋์ ๋ฌผ๊ฑด์ด ๋๊ฐ๋ ์ํฌ ํ๋ก์ฐ๋ฅผ ์์ํด๋ณด์ญ์์ค.
1) ์น์ง์
ํ์คํ Three.js ๐
2) OpenGL 3.3+
์/์ ๋
3) RISC์ OpenGL ES 2.0
์ค๋งํธํฐ์์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด๋ก
4) ๊ฒ์ ์์ง
5) ๋ฏธ๋์ด ์๋ฒ์ ํตํฉ๋ ์ค์๊ฐ ๊ทธ๋ํฝ ์ฑ(Hippo, D3 disguise)
VFX ๋
์๋ค์ด ์ฌ์ฉํ๋ ๋ฌด๋.
๋ค๋ฅธ ์ถ๋ ฅ์ ๋ํด ๋ง์ ๋ค๋ฅธ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ชฉํ๋ ์ต๋ 1๊ฐ, ์ต๋ 2๊ฐ ํ์์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ฒ์ 3๊ฐ์ง ๊ฒฝ์ฐ์ OGL์ ์์ฑํ ๋... ๋์ผํ ๋ชจ๋ธ ํ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ง์ง๋ง ๋ ์ง์ ์์ FBX๋ ์์ด๋ฉฐ(ํจํค์ง ๊ฐ์ COLLADA์ ๋ํ ๋ค๋ฅธ ๊ตฌํ์ ์์
ํ๊ธฐ ์ด๋ ต๊ฒ ํจ) ์ค์ ๋ก ๋ชจ๋ธ์ "๋
ธ์ถ"๋์ง ์์ต๋๋ค.
๋๋ Three.js JSON ํ์ ์ด๋ ๋ธ๋ ๋ ์ ๋์จ( @mrdoob ๐ ๐ )์
์
๊ณ ๋ด์์ ๋ค์ํ ์ถ๋ ฅ์ ์ง์์ ์ผ๋ก ์ ๊ณตํด์ผ ํ๋ ๊ด์ ์์ Three.js JSON ํ์ ์ด ํ๊ฒฝ์ ๋ง์ง ์๊ณ ๋ถํ์ํ๋ค๋ ์ ์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค.
@kroko๋ ํ์คํ ๋์ํฉ๋๋ค ๐
ํ์์ ํ๊ฒฝ์ด ๋ ๋ช ํํด์ง๊ธฐ ์์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. three.js json ํ์์ ๋น์์ json ํ์์ด ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฃจ์ด์ก์ต๋๋ค. ํ์ผ ํ์์ ์ ์ํ๋ ๊ฒ์ ์ด๋ฏธ ๋ ๋๋ง ์์ง๊ณผ API๋ฅผ ์ํํ ๋ ํ๊ณ ์ถ์๋ ๋ง์ง๋ง ์์ ์ด์์ต๋๋ค ๐ฉ
์ด๋ณด์๋ก์ Three.js JSON ๋ด๋ณด๋ด๊ธฐ๋ ์์ ๋ฐ์ดํฐ์ ์ถ๋ ฅ ์ง์ค๋ฉํธ๋ฆฌ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํด์ฃผ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ต์ก์ ์ด์์ต๋๋ค. ๋ค๋ฅธ ๋ด๋ณด๋ด๊ธฐ ํ๋ก๊ทธ๋จ์ ํจ์จ์ฑ์ด ๋์ง๋ง ๋๋ถ๋ถ ์ด์ง ํ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ค๋๋ ์ต์ ์ ์ ํ์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฐฐ์น๋ ์ ์์ต๋๋ค.
๋๋ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ ์์ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ค๋๋ ์ต์ ์ ์ ํ์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฐฐ์น๋ ์ ์์ต๋๋ค.
http://threejs.org/editor/ ์์ JSON์ผ๋ก ๋ด๋ณด๋ด๋ ์ต์ ์ด ํญ์ ์์ต๋๋ค.
๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ ๋ซ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋์?
๋๊ตฐ๊ฐ๊ฐ 3D ๋ชจ๋ธ ๋ด๋ณด๋ด๊ธฐ/๊ฐ์ ธ์ค๊ธฐ(๊ธฐ๋ณธ ๋ฐ ํน์ ๊ธฐ๋ฅ์ฉ), ์ผ๋ฐ์ ์ธ ๋ฌธ์ ํด๊ฒฐ, ๋ชจ๋ ์ค๋๋ ๋ฌธ์ ๋ฐ ์์ ๋ฅผ ์๋ผ๋ด๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ธฐ ์ํ "๊ณต์" ๋ฌธ์/ํ์ดํ๋ผ์ธ์ ์์ฑํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. EG Knight ์์ ๋ ๋ ์ด์ ๋ธ๋ ๋ json ๋ด๋ณด๋ด๊ธฐ๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๋งค์ฐ ํผ๋์ค๋ฝ์ต๋๋ค. 3d ๋ชจ๋ธ์ฉ JSONLoader๋ ํธํ์ฑ์ ์ํด ์ ์งํด์ผ ํ์ง๋ง ์ฝ์ด์ผ ํฉ๋๋ค.
@stmaccarelli ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์๋ก์ด ๋ฌธ์๊ฐ ์์ต๋๋ค: https://threejs.org/docs/#manual/introduction/Loading -3D-models, ํ์ง๋ง ์, ๋์์ด ๋ ๋ค๋ฅธ ๊ฒ์ด ๋ฌด์์ธ์ง ์๋ ค์ฃผ์ญ์์ค!
@donmccurdy ๊ทธ ์ข
์ด๊ฐ
๋ฌธ์, ์์ ๋ฐ ๋ค์ํ ์๋์ ์ธํฐ๋ท์์ ์ฐพ์ ์ ์๋ ๊ฒ๋ค์ด ํผํฉ๋์ด ์๋ ํ์ฌ ์ ์ฒด 3d ๊ฐ์ ธ์ค๊ธฐ/์ ๋๋ฉ์ด์
์์คํ
์ ํผ๋์ค๋ฝ์ต๋๋ค.
๋ง์คํฐ ์ ๋๋ฉ์ด์
์์คํ
๋ฌธ์๋ ๋จ์ผ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ ์ ํํ๋ค๋ฉด ๊ด์ฐฎ์ ๊ฒ์
๋๋ค.
AnimationClip ์ฐธ์กฐ๋ฅผ ๊ฐ์ ธ ๊ฐ์. morphTargets๋ฅผ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ด๋ณด๋ด๊ณ ์๋์ง ํ์คํ์ง ์์ง๋ง ์ฌ๊ธฐ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ์์ต๋๋ค.
_.CreateClipsFromMorphTargetSequences ( name : String, morphTargetSequence : Array, fps : Number, noLoop : Boolean ) : Array
"Walk_001, Walk_002, Run_001, Run_002 ..."์ ๊ฐ์ ์ ๋๋ฉ์ด์
๊ทธ๋ฃน ๊ธฐ๋ฐ ํจํด์ผ๋ก ๋ชจํ ๋์ ์ด๋ฆ์ ์ ๋ ฌํ๋ ค๊ณ ์๋ํ๋ ์ง์ค๋ฉํธ๋ฆฌ์ ๋ชจํ ๋์ ์ํ์ค์์ ์์ฑ๋ ์๋ก์ด AnimationClip ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
๋ฌธ์ ๋ glTF ํ์ผ์ ๊ฐ์ ธ์ค๋ฉด morphTargetSequence ๋ฐฐ์ด์ด ์๋ค๋ ๊ฒ์ ๋๋ค... ์ฌ๊ธฐ์ ๊ธฐ์ morphTargetSomething ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์์ง๋ง ๋ฌด์์ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋งค์ฐ ๊ฐ๋จํ ์์ ํจ๊ป 3D ๋ชจ๋ธ ๊ด๋ฆฌ/์ํฌํ๋ก๋ฅผ ์ค๋ช
ํ๋ ๋ฌธ์๊ฐ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 3D ๋ก๋ ์ฐธ์กฐ๋ ๋ชจ๋ ๋์ผํ ํ
ํ๋ฆฟ์ ์ค์ํด์ผ ํฉ๋๋ค.
์ ๋ง์ํ์
1- ๊ฐ๋จํ 3D ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ
2- ์ฌ๋ฃ ๊ฐ์ ธ์ค๊ธฐ(๋ค๋ฅธ ๋งต, ๋งต ๋งค๊ฐ๋ณ์, ๋ค์ค ์ฌ๋ฃ ๊ด๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ ๋ชจ๋ ์ข
์๋ฆฌ์ ํจ๊ป)
3- ์ ์ฒด ์ฅ๋ฉด ๊ฐ์ ธ์ค๊ธฐ(์: glTF์์ ๊ฐ์ ธ์จ ์ฅ๋ฉด์ ํธ๋๋ฒ์ค/๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ)
4- ๊ณจ๊ฒฉ ์ ๋๋ฉ์ด์
๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๊ด๋ฆฌ
5-๋ชจํ ์ ๋๋ฉ์ด์
๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๊ด๋ฆฌ
๋ํ 3D ๋ชจ๋ธ ๋ก๋ฉ์ ํน์ง์ผ๋ก ํ๋ ๋ชจ๋ ์์ ๊ฐ ๋์ผํ ํจํด์ ์ค์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์ ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๊ณ , ๊ฐ๋ฅํ์ง๋ ์์ง๋ง ์ผ๋ถ ๋ถ๋ถ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ฌด์์ (์: ๊ธฐ์ฌ ์์ ์์... ) ๋ช ํํ๊ฒ ์์ฑํด์ผ ํฉ๋๋ค.
_EG- 3D ๋ชจ๋ธ์ฉ JSON ํ์ผ ํ์์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๊ณ glTF๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ ๊ณจ๊ฒฉ ์ ๋๋ฉ์ด์ ๊ณผ ๋ชจํ ๋์์ ๋ชจ๋ ํฌํจํ๋ ์ ์ผํ ์ ๋๋ฉ์ด์ ์์ ๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ๋ 10 ๋ฒ์ ์ด์ ์ JSON ๋ชจ๋ธ._
@stmaccarelli ๊ถ์ฅ๋๋ ์ข ๋จ ๊ฐ ์ํฌํ๋ก๋ ์์ต๋๋ค. ๋ค์ํ ๊ธฐ์ ์์ค, ๋ฌด๋ฃ ๋ ์ ๋ฃ ๋ชจ๋ธ๋ง ๋๊ตฌ์ ๋ํ ์ ํธ๋ ๋ฐ ํน์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ํ ๋ ์ด๋ฅผ ์ ๊ณตํ๊ธฐ๊ฐ ์ด๋ ค์ ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋น์ ์ด ์ผ๋ฐ์ ์ผ๋ก ๊ทธ CreateClipsFromMorphTargetSequences
๋ฐฉ๋ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์์ ๋ฌธ์๋ ํน์ ๋ก๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์ค๋ช
ํ์ง ์์์ง๋ง(๋น์ ์ด ์ธ๊ธ ํ๋ฏ์ด , ๊ทธ๊ฒ๋ค์ ์ผ๊ด์ฑ์ด ์์ต๋๋ค),
loader.load('foo.glb', function(gltf) {
const clips = gltf.clips; // Array<THREE.AnimationClip>
const model = gltf.scene; // THREE.Scene
...
});
์ด ๊ฒฝ์ฐ ํด๋ฆฝ์ด TRS, ์คํจ ๋๋ ๋ชจํ ๋์์ธ์ง ์ฌ๋ถ๋ ์ค์ํ์ง ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ์ ๋ชจ๋ ๋๊ฐ์ด ์ฌ์ํ ์ ์์ต๋๋ค. Mixamo์ Blender๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ๊ฐ๋ฅํ ์ํฌํ๋ก๋ฅผ ์์ฑํ์ต๋๋ค. ๋ค์์ Maya๋ฅผ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ ์ ๋๋ค.
๋ํ 3D ๋ชจ๋ธ ๋ก๋ฉ์ ํน์ง์ผ๋ก ํ๋ ๋ชจ๋ ์์ ๊ฐ ๋์ผํ ํจํด์ ์ค์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 3D ๋ก๋ ์ฐธ์กฐ๋ ๋ชจ๋ ๋์ผํ ํ ํ๋ฆฟ์ ์ค์ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ๊ณต์ ํ ์ง์ ์ด๋ฉฐ ์ฌ๊ธฐ์์ ๊ฐ์ ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.
์ค์ผ๋ ํ ์ ๋๋ฉ์ด์ ๊ณผ ๋ชจํ ํ๊ฒ์ ๋ชจ๋ ์ ๊ณตํ๋ ์ ์ผํ ์ ๋๋ฉ์ด์ ์์ ๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ฅํ๋ 10๊ฐ ๋ฒ์ ์ด์ ์ JSON ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ์ค๋๋ ๊ธฐ์ฌ ์์ ๋ผ๋ ๊ฒ์ ๋ง์ด ๋์ง ์์ต๋๋ค.
์๋ฐํ ๋งํ๋ฉด JSON ํ์๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ์ฅ๋ฉด์ [์ญ์ง๋ ฌํ]ํ๋ ๋ฐ ์ฌ์ ํ ์์ ํ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ด์ง๋ง ์์ ์ด ์์ต๋๋ค. @mrdoob ์ผ๋ถ ์ ๋๋ฉ์ด์ ์์ ๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ฐ์:
animation / keyframes / json
animation / scene
animation / skinning / blending
animation / skinning / morph
์ ๋๋ฉ์ด์ ์์ ์ค ์ผ๋ถ๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
์ด๊ฒ์ ๋ํด +1. ๋๋ animation / skinning / blending
a์ ๊ตฐ์ธ์ ๋ค์๊ณผ ๊ฐ์ Mixamo์ ๋ณด๋ค ํ๋์ ์ธ ๋ชจ๋ธ๋ก ๊ต์ฒดํ๋ ๋ฐ ํฌํํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ ํด/๊ฑท๊ธฐ/๋ฌ๋ฆฌ๊ธฐ๋ฅผ ํผํฉํ ์ ์์ผ๋ฉฐ, ์ ํธํ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ glTF๋ก ๋ณํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ ๋๋ค.
๋ชจ๋ธ ํฌ๊ธฐ๋ ์ฝ 9mb์ด๊ณ ๋ชจ๋ ๊ด๋ จ ํ์ผ๊ณผ ํจ๊ป ํ์ฌ ๋ชจ๋ธ์ 71mb์ ๋๋ค!!
animation / skinning / morph
๊ฒฝ์ฐ FBX ๋ชจํ ํ๊ฒ์ ํ
์คํธํ ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ๊ธฐ์ฌ ๋ชจ๋ธ๊ณผ ํฌ๊ธฐ๊ฐ ๊ฑฐ์ ๊ฐ์ง๋ง ๋ชจํ ๋์์ด ์ผ๊ตด ํ์ ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ๋ค์ ๋งํ์ง๋ง, ํ์ฌ FBX ํ์์ด์ง๋ง ์ํ๋ ๊ฒฝ์ฐ glTF๋ก ๋ณํํ ์ ์์ต๋๋ค.
๋ค์์ ๊ณ ๋ คํด์ผ ํ ๋ช ๊ฐ์ง ์์ ๋๋ค.
| ์คํฌ๋ฆฐ์ท | ๋งํฌ | ํฌ๊ธฐ |
|---|---|--|
| | ๋งํฌ | 6MB |
| | ๋งํฌ | 3MB |
| | ๋งํฌ | 5MB |
| | ๋งํฌ | 12MB |
๊ทธ๊ฒ๋ค์ ๋ชจ๋ ์ ๋๋ฉ์ด์ ๋๊ณ three.js์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ฉฐ Sketchfab ๋ค์ด๋ก๋ ๋ฒ์ ๋ณด๋ค ์ฝ๊ฐ ๋ ์์ถ๋๊ฑฐ๋ ์ต์ ํ๋ ์ ์์ต๋๋ค. ๋๋ ๋ฌ๋ฆฌ๊ธฐ/๊ฑท๊ธฐ ์ฌ์ดํด์ด ์ข์ ์กฐ์๋ ์บ๋ฆญํฐ๊ฐ ์์ง๋ง Mixamo->glTF ์ํฌํ๋ก ๋ ๋์์ง ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
three.js
๋งค์ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด ์ง์ ์ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฌํ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ํ ๋ ์ ๋๋ก ์๋ํ๋ ๋๊ตฌ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํผ๋์ค๋ฌ์ํ๊ณ ์ ์ฒด ํ๋ก์ ํธ์ ๋ํ ๋์ ์ธ์์ ์ค ์๋ ์์ต๋๋ค. ๊ทธ๊ฑด ์ข์ง ์์. ๐ข