Hey im rigging and animating my character with mixamo ... ๊ทธ๋ฐ ๋ค์ FBX๋ฅผ ํตํด ๋ธ๋ ๋๋ก ๊ฐ์ ธ์ต๋๋ค ... ๋๋ ๋ด๋ณด๋ด๊ธฐ์ ํจ๊ป js๋ก ๋ด ๋ณด๋ ๋๋ค (๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์๋ํ์ต๋๋ค ...๋ง๋ค).
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://instagram.com/p/y8NQjQkk9-/?modal=true
ํญ์ ์ด๋ ๊ฒ ์๊ณก ๋ ๊ฒ ๊ฐ๊ณ ์ดํด๊ฐ ์๋๋ ๊ฒ ๊ฐ๋ค์ ... ํญ์ ์์ด ... ๋ผ ์๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ด์ฃ . mixamo๋ 16 ๋๋ sth๊ฐ ์์ต๋๋ค. 50 ๊ฐ ์ด์์ ์์ ์์ ๋์จ marine_anim.
ํ์ ๋ฅผ ๋์์ฃผ์ธ์ ... 3 ์ผ ํ ๋ด ์งํ์ ๋์ ์ |
์ด PR https://github.com/mrdoob/three.js/pull/6052 ๊ฐ ๋ณํฉ ๋ ํ dev ๋ธ๋์น์์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. POSE
๋ฐ REST
๋ํด ๋ ๊ฐ์ง ํฌ์ฆ ์์น ์ต์
์ด ์์ต๋๋ค. ๋ผ๋๋ฅผ ๋ ์ค ํ๋๋ก ์ค์ ํ ๋ค์ ๋ด๋ณด๋ด๊ธฐ ์ค์ Skeletal animation
์์ฑ์ด ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. ๋ ๋ค ์๋ํ๊ณ ๋ ์ค ํ๋๊ฐ ๋์์ด๋๋์ง ํ์ธํ์ญ์์ค. ์ด๋ค ์ฌ๋๋ค POSE
์๋ํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ REST
์
๋๋ค.
์ค์ผ ๋ ํ ์ ๋๋ฉ์ด์ ๋ ์คํธ์ ํฌ์ฆ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ณด๋์ต๋๋ค.
์ด๊ฒ์ ๋ด ํ์ผ์
๋๋ค http://we.tl/CNM5qEmBMs
์ค๋ฆฌ์ง๋ ํผ๋ ๋ ์ ๋ ๊ฐ์ง ์์ถ์ ํฌํจํ์ฌ ...
ํด์ ๋ชจ๋ = ์ ํ ์์ง์ด์ง ์์
ํฌ์ฆ ๋ชจ๋ = ์ด์ํ ์๊ณก
u๋ "POSE์ REST์ ๋ํด ๋ ๊ฐ์ง ํฌ์ฆ ์์น ์ต์ ์ด ์์ต๋๋ค. ๋ผ๋๋ฅผ ํ๋ ๋๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ค์ ํ์ญ์์ค."... ๋ด ์๋ง์ถ์ด๋ฅผ ํฌ์ฆ ๋๋ ํด์์ผ๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ธ๋ ๋๋ฅผ a mixamo์์ threejs๋ก ๋ฒ์ญ ... ๋ด ์ง๋ฌธ์ด ๋ฉ์ฒญ์ด๋ผ๋ฉด ์ฃ์กํฉ๋๋ค.
๊ฐ์ฒด์ ๋ํ ํธ์ง ๋ชจ๋ ํฌ์ฆ ๋ฐ ํธ์ง ๋ชจ๋๋ฅผ ์๋ฏธ ํ์ต๋๊น?
Ok ํฌ์ฆ ๋ชจ๋ --- ๋์ผํ ์๊ณก
ํธ์ง ๋ชจ๋ ๋ค์ ์ค๋ฅ ๋ก๊ทธ :
์ด ์ค๋ฅ๋ฅผ ์ฌํ ํ ์๋ ์์ง๋ง ํธ๋ ์ด์ค ๋ฐฑ์ ์ค ๋ฒํธ๋ฅผ ์ดํด๋ณด๋ฉด dev
์์ ์ฐพ์ ๊ฒ๊ณผ ๋์ผํ (์ต์ ) ๋ฒ์ ์ด ์๋ ๊ฐ๋ฅ์ฑ์ด ์์์ ์์์ต๋๋ค. ๋ํ์ด ์์ฐ์ผ๋ก Scene
๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ํํ๊ณ ์์ง ์์์ง ํ์ธํ์ญ์์ค. ์ง๊ธ์ ๋จ์ผ ์ง์ค๋ฉํธ๋ฆฌ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ํํ์ญ์์ค (ObjectLoader๋ ์์ง ์คํค๋ ๋ ๋ฉ์์์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค).
๊นจ์ง ์ ๋๋ฉ์ด์ ์ ๊ดํ ํ; ๊นจ์ง ์ ๋๋ฉ์ด์ ๊ณผ ๋๋ฝ ๋ ์ ๋๋ฉ์ด์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ ์ฌํ ํ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ๋ด๋ณด๋ด๊ธฐ (์ : https://github.com/mrdoob/three.js/issues/5582#issuecomment-73444737)๋ฅผ๋ฐ๋ ์ฌ๋๋ค์ด ์์ผ๋ฏ๋ก FBX ๊ฐ์ ธ ์ค๊ธฐ ํ๋ก์ธ์ค์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ต์คํฌํฐ์ธ์ง FBX ์ํฌํธ์ธ์ง ๊ฒฐ์ ํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ๋ผ์ ์ ์ฉํด์ผ ํ ๋ณํ์ด ์๋์ง ๊ถ๊ธํ์ง๋ง ์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๊ฐ๊ณผ ํต์ฐฐ๋ ฅ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋น์ ์ dev์์๋ ๊ฒ๊ณผ ๊ฐ์ (์ต์ ) ๋ฒ์ ์ด ์๋ ์๋ ์์ต๋๋ค.
ํฌ์ฆ์ ํด์์ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ์ ์ผ๋ก ์์
ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"์ ๋๋ฉ์ด์
์ต์
์ ์ด์ ์ฌ์ฉ์๊ฐ POSE์ REST ์ค์์ ์ ํํด์ผํ๋ ์ด๊ฑฐ ํ์
๋๋ค."
ObjectLoader๋ ์์ง ์คํค๋ ๋ ๋ฉ์์์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์
๋ด ๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ ๊ทธ๊ฒ์ ํ ๋์ง ์์ต๋๋ค ... ๊ฐ์ฒด ๋ก๋๊ฐ์๋ ๊ธฐํํ๊ณผ ์ฅ๋ฉด์ threejs์๋ก๋ํ์ต๋๋ค. ๋ค์ ์ค๋ฅ๋ Objectloader๋ก ์์ฑ๋๋ฉฐ ์ด์ Geometrie ๋ด๋ณด๋ด๊ธฐ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊นจ์ง ์ ๋๋ฉ์ด์ ๊ณผ ๋๋ฝ ๋ ์ ๋๋ฉ์ด์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ ์ฌํ ํ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ฌํ ํ ์ ์๋ค๋ฉด ์ ๋ง ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค ...
๋ฐ๋ผ์ ๋ชจ๋ธ์ threejs๋ก ๋ด๋ณด๋ผ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
mixamo์ ๋ชจ๋ธ ์์ถํ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ํฅ๋ฏธ ๋กญ์ต๋๋ค. ์ด ๋ชจ๋ธ์ด ์๋ํ๋ฉด ๋ชจ๋ mixamo ๋ชจ๋ธ์ด ์๋ํฉ๋๋ค. (์ด๋ก ์ ์ํ๋ฉด ;))
์ด์จ๋ ๊ทธ๊ฒ์ ์กฐ์ฌํ๊ธฐ ์ํด thx.
ํ์ฌ ๋ฒ์ ์ Blender์ ์ง์ค๋ฉํธ๋ฆฌ ๋ง ์๊ณ ์ฅ๋ฉด ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์ผ๋ฉด ํฌ์ฆ ๋ชจ๋๊ฐ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด์ ๋ชจ๋
๊ตฌ๋ฉ ์ฅ๋ฉด์ ๋ด๋ณด๋ด๋ ๊ฒฝ์ฐ์๋ง ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
์ข์, ๋ด๊ฐ ์ฐพ์ ๊ฒ ๊ฐ์ ... ์ง์ค๋ฉํธ๋ฆฌ์ ์ ์ ๊ณผ ์ ๋๋ฉ์ด์ ๋ผ ์ฌ์ด์ ์ฐธ์กฐ์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค ... ๋ฉ์ฌ์ ์ค์ผ ๋ ํธ๊ฐ ๊บผ์ ธ ์์ต๋๋ค.
์ด์ ๊ฐ์ด ์ค์ผ๋ ํค์ชฝ์ผ๋ก ๋ฉ์๋ฅผ ์๋์ผ๋ก ์ค์ผ์ผ๋งํ๊ณ ํ์ ์ํจ ํ
for (var i = 0; i < geometry.children[0].geometry.vertices.length; i++) {
vector = geometry.children[0].geometry.vertices[i];
var axis = new THREE.Vector3(0, 1, 0);
var angle = Math.PI / 2;
geometry.children[0].geometry.vertices[i].applyAxisAngle(axis, angle);
geometry.children[0].geometry.vertices[i].multiplyScalar(0.01);
}
๋๋ ๊ฝค ๊ด์ฐฎ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค.
๊ทธ๋์ ์ฐ์ -์ ๋ฉ์๋ฅผ ํ์ ํด์ผํฉ๋๊น? mixamo๋ก ์ํฌํธ ํ ๋ ๋ชจ๋ธ์ ์ ํํ 90๋ ํ์ ํด์ผํ๋ ๊ฒ์ ๊ธฐ์ตํฉ๋๋ค.
ํ์ฅํด์ผํ๋ ์ด์ ์ค๋ง๋ฆฌ ์์...
์ด์ ๋ด ๋ชจ๋ธ์ด ์๋ฒฝํ TPos๋ฅผ ๊ฐ์ง ๋ชปํ ๋ฒ๊ธฐ ์ ํ์ด ๋์ต๋๋ค ... ํ์ด ๋ฎ์์ด์ ... ๋ฏน ์ฌ๋ชจ๋ก ๋ฆฌ๊น
ํ๊ณ ๋์ค์๋ ์๋ฒฝํ์ต๋๋ค ... ๋ธ๋ ๋์์ ๋ดค์ด์ ... ๊ทธ๋ฆฌ๊ณ ์๋ฒฝํ์ต๋๋ค ... ๋งฅ์ค์์ ๋ดค๋๋ฐ๋ ์๋ฒฝํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ Threejs๋ก ๋ด๋ณด๋ด๊ณ ๋ผ์ ๋ชธ์ฒด ์ฌ์ด์ ๋งคํ์ max์์ ์๋ ์์ฑ ๋ ๋ชธ์ฒด์ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ณํ ๋งคํธ๋ฆญ์ค์์ ์ ์ ๊ณผ ๋ผ๋ฅผ ์ฐธ์กฐํ๋ ๋ฐ ์ํ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
์ค์ ๋ก ๋ฒ๊ทธ์ธ์ง ์๋๋ฉด ์ ํ์ ๊ธฐ๋ฅ์ธ์ง ๊ถ๊ธํฉ๋๋ค. ์ด๊ฒ์ ๋น์ ์ด ๊ฐ์ง๊ณ ์๋ ๋ฌธ์ ๋ฅผ ์์ฃผ ์ ๊ณ ์น ์ ์์ง๋ง FBX ์ ์ ์ ์ํฌํธ ํ ํ์๊ฐ์๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๋ฅผ ์ํด ์ต์คํฌํธ๋ฅผ ์ค๋จ ํ ์ ์์ต๋๋ค (์ด์ ์ ์ด๋ฏธ POSE์ REST ์ ๋๋ฉ์ด์ ์์ ๋ณธ ๊ฒ์ ๋๋ค). ์ฌ์ฉ๋๋ ๋ ผ๋ฆฌ (๋ผ์ ์ ์ ์ ๋ํด)๋ ํ๋์ ์ ์๋ฆฌ์ ์์์ผ๋ฉฐ (์ด์ ๋ด๋ณด๋ด๊ธฐ์์ ๋ณต์ฌ ๋จ) ์๋ฒฝํ๊ฑฐ๋ ๊ฒฐํจ์ด ์๋ค๊ณ ๋งํ๋ ๊ฒ์ ์๋์ง๋ง ์ด๊ฒ์ด ์ํ์ ๋ฒ๊ทธ๋ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ณด์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ๋ ๋ง์ ๋ฌธ์ . ์ฝ๋ ์์ ๋ฅผ ๋ด๋ณด๋ด๊ธฐ์ ์ ์ฉํ ๋ค์ ๋ง์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ๋ง์ ํ ์คํธ๋ฅผ ์คํํด์ผํฉ๋๋ค (๋ด๊ฐ ๊ฑฐ์ง๋ง์ํ๋ ๊ฒ์ ์๋).
๋๋ ์์ฐ์ด ์ฌ๋ฌ ํ๋ก๊ทธ๋จ๊ณผ ์์ถ์ ์๋ฅผ ํตํด ์ฌ๋ฌ ๋ฒ์ ์ฌํ์ํ๋ ์์ฐ์์ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ๋ณด์์ต๋๋ค. ์ด ๋ฐฉ์ ์์ ์ถ ๋ฐฉํฅ ์ฌ ์ง์ ์ ์ถ๊ฐํ๋ฉด ์ธ์ฆ ๊ฐ๋ฅํ ํ์๋ฆฌ์ ๋ํ ๋ ์ํผ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ต์คํฌํฐ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ์ ์๋ค๋ฉด ์ฝ๋ ์ผ์ด์ค๊ฐ ์๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ค์ ๋ก ์ ์ฉ๋๋ค๋ ๊ฒ์ด ํจ์ฌ ๋ ํ์คํด์ง ๋๊น์ง๋ง ์ต์ ์ด ๋ ๊ฒ์ ๋๋ค.
ํ์ฌ ๋ฒ์ ์ Blender์ ์ง์ค๋ฉํธ๋ฆฌ ๋ง ์๊ณ ์ฅ๋ฉด ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์ผ๋ฉด ํฌ์ฆ ๋ชจ๋๊ฐ๋ฉ๋๋ค.
์ค๋ฅ๋ ๊ตฌ์ฒด์ ์ผ๋ก "์ ํจํ ๋ฉ์ฌ ๊ฐ์ฒด๊ฐ ์๋๋๋ค"๋ผ๊ณ ๋งํฉ๋๋ค. ์ง์ค๋ฉํธ๋ฆฌ ๋ด๋ณด๋ด๊ธฐ๋ ์ ํ ๊ธฐ๋ฐ์ด๋ฉฐ ๋ฉ์๊ฐ ์๋ ๋ผ๋๊ฐ ์ ํ๋์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๋ค์ ํ๋ฒ ์กฐ์ฌํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ด ์ฝ๋๊ฐ ๋ด๋ณด๋ด๊ธฐ์ ๋ค์ด๊ฐ์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ์ง ์์์ต๋๋ค. ๋ด๊ฐ ์ง์ ํ๊ณ ์ถ์ ๊ฒ์ max์์ mixamo, blender์ ์ด๋ฅด๋ ์ฒด์ธ ๋ด์์ ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ์์ผ๋ก ํ ๋น๋๋ค๋ ๊ฒ์
๋๋ค. ์ผ๋จ ๊ทธ๊ฒ์ด threeJs์ ๋๋ฌํ๋ฉด-์ค๋ฅ๋ฅผ ์ผ์ผํค๋ ๊ฐ๋จํ ๋ณํ ์คํ์
์ด ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ mixamo ...ํ์ง๋ง ์์ถ ์ค์ ๋ถํํ์ต๋๋ค.
์ํ๊น๊ฒ๋ ๋ด๊ฐ ๋งคํธ๋ฆญ์ค ๋ง์ ์ฌ๊ฐ ์๋๋ผ๋ ์ฌ์ค์ ์ธ์ ํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋ฌ๋ถ๋ค์ด ์ด์ฌํ ์ผํ๋ ๋์ ๋์์ ์๊ธธ์์ฃผ๊ณ ์ถ์ต๋๋ค. ๊ทํ์ ํต์ฐฐ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ mixamo๋ฅผ ์ฌ์ฉํ ์ ์ด ์์ต๋๋ค. Y-up์ ์ฌ์ฉํฉ๋๊น? ๋ฌด์จ ์ผ์ด ์ผ์ด ๋ฌ๋์ง ๊ถ๊ธํ ๊ฒ์ maximo๊ฐ Y-up์ด๋ฉด FBX ์ํฌํธ๋ ์์ฐ์ Z-up์ผ๋ก ๋ฐฉํฅ์ ๋ฐ๊พธ๊ณ ๋ด๋ณด๋ด๊ธฐ๋ Y-up์ ๋ํด ๋ค์ three
๋ฐฉํฅ์ ์กฐ์ ํด์ผํ๋ค๋ ๊ฒ์
๋๋ค. three
์ฌ๋ฐ๋ฅด๊ฒ ๋ด๋ณด๋ผ ์ ์๋ค๋ฉด ์ํฌํธ์ ๋ธ๋ ๋์์ ์์ฐ์ ๋ณํ์ ์ ์ฉํด์ผํ๋์ง ๊ถ๊ธํฉ๋๋ค.
ํ ํ๋ซํผ / ํ์์์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๋ฆฌ๊ทธ๋ฅผ ๋ฒ์ญํ๋ ๊ฒ์ ๋ ๋ฒ ์ด์์ ๋ฐ๋ณต ํ์ ์ถ์ ํด์ง๋๋ค. ๋ด๊ฐ ์ฌ์ฉ ํด๋ณธ ๊ฐ์ฅ ์ง๋ณด ๋ ํ์ดํ ๋ผ์ธ๊ณผ ๋๊ตฌ์์๋ ๋ฆฌ๊น ๋ ์์ฐ์ด ํต๊ณผ ํ ์์๋ ๊ฒ์ ํญ์ ํ๊ณ๊ฐ์์์ต๋๋ค. ๋น์ ๊ณผ ๋ชจ๋ ์ฌ๋์๊ฒ ํจ๊ณผ๊ฐ์๋ ์๋ฃจ์ ์ด์์ ์ ์์ง๋ง ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์ฆ์ ๋ช ํํ์ง ์์ต๋๋ค.
๋ด ์ฝ๋๊ฐ ๋ด๋ณด๋ด๊ธฐ์ ๋ค์ด๊ฐ์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ์ง ์์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ถ ๊ฐ๋๋ฅผ ์ ์ ์์น์ ์ ์ฉํ๋ ค๋ ๊ฒ์ ์ธ๊ธํ์ต๋๋ค.
vector = geometry.children[0].geometry.vertices[i];
var axis = new THREE.Vector3(0, 1, 0);
var angle = Math.PI / 2;
geometry.children[0].geometry.vertices[i].applyAxisAngle(axis, angle); <-- would need something like this as well
๊ทธ๋ฌ๋ ๋๋ ๋ํ ์ฝ๊ฐ ํ์ ํ๊ณ ์์ผ๋ฉฐ ์๋ง๋ ์ด๊ฒ์ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๋๋ฌด ๋ง์ ๋ณ์๋ฅผ ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค๋ ค๋ ๊ฒ์ ๋๋ค.
FBX์ ๊ดํ ํฅ๋ฏธ๋ก์ด ์๊ฒฌ
https://github.com/mrdoob/three.js/issues/2803#issuecomment -11458920
๋ชจ๋ธ๊ณผ ๋ธ๋ ๋ ํ์ผ ๋ด๋ถ์ ๋ผ๋์ ๋ง๋ ํ์ ์ ์ ์ฉ ํ์ต๋๊น? ๊ฐ์ฒด ๋ชจ๋์์ Ctrl + A> ํ์ ๋ฐ ํฌ๊ธฐ ์กฐ์ ์ ์ฌ์ฉํ๋ฉด๋ฉ๋๋ค. ๋๋ ๊ทธ๋ ๊ฒํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ ์ฌํ ์ผ์ด ์ผ์ด๋๋ ๊ฒ์ ๋ณด์๋ค. ๋ฟก๋ฟก
๋ด ๋ฉ์๊ฐ ๊ณ์ ์๊ณก๋๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. Blender 2.73a์์๋ ์ ์๋ํ๋ r69 ๋ด๋ณด๋ด๊ธฐ๋ก ๋ค์ ์ ํํ์ต๋๋ค.
@ please-wait ... ์๋ ์ค์ ๋ก ๋๋ํ์ง ์์๋ค ... ๊ทธ๋ฌ๋ ์๋ง๋ mixamo์์ ๋ธ๋ ๋๋ก ...
@kimasendorf threejs ์์ ๋ฉ์ฌ๋ฅผ ์๋์ผ๋ก ๋ค์ ๋ง๋ค๋ ค๊ณ ํ์ต๋๊น?
๋ฉ์๋ Blender์์ ๋ชจ๋ธ๋ง๋์์ต๋๋ค. ๋ฎ์ ํด๋ฆฌ ์บ๋ฆญํฐ์ด์ง๋ง threejs์์ ์๋์ผ๋ก ๋ฉ์๋ฅผ ๋ค์ ๋ง๋๋ ๊ฒ์ ํ์คํ ๋ณต์กํฉ๋๋ค. ๊ทธ๊ฒ ์ด๋ป๊ฒ ๋์์ด ๋ ๊น์?
์ ๊ฒฝ์ฐ์๋ ๋ฉ์ฌ์ ๋ผ๊ฐ ์๋ก ์ ๋ ฌ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ด ๋ผ์ ๋ง๋๋ก ๊ตฌ๋ถ๋ฌ์ก์ต๋๋ค ... ๋ผ๊ฐ ์๋ค๋ฉด ์ด๊ฒ์ ๊ทธ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค ...
btw ... ๋๋ "์ฌ์ฐฝ์กฐ"๋ฅผ ์๋ฏธํ์ง ์๋๋ค lol ... ๋ฏธ์ํด ๋ด๊ฐ ๋ชจ๋ธ์ "์ฌ์ ๋ ฌ"ํ๋ ค๊ณ ์ผ๋ค ...
์ง๊ธ๊น์ง ์๋ํ ๋ชจ๋ ๋ณต์กํ ๊ณจ๊ฒฉ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. three.js ๋ฆฌํฌ์งํ ๋ฆฌ์ ํฌํจ๋๊ณ ์์ ์ ํฌํจ ๋ ํด์์ ํฌํจํฉ๋๋ค. ํฌ์ฆ ์ค์์น๋ฅผ ์ฌ์ฉํ์ฌ ์ป๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ง๋ฆฐ ํฌ์ฆ :
https://antont.github.io/three.js/examples/webgl_animation_skinning.html
ํด๋น ๋ด๋ณด๋ด๊ธฐ๋ ๋ค์ ์์น์ ์์ต๋๋ค.
https://github.com/antont/three.js/blob/blenderexport_buggy_marineskinning/examples/models/skinned/marine/marine_anims-pose.json
๋ด๋ณด๋ด๊ธฐ ํ ์คํธ์ ์ต์ ์์ ๊ฐ ์๋ํฉ๋๋ค. ์ค์ผ๋ ํค ๋์ฐ๋ฏธ๋ ํฌ์ฆ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๋ ๋ชจ๋ธ๊ณผ ์ผ์นํฉ๋๋ค.
๋ค์์๋ ์ด๋ฏธ ๋ค๋ฅธ ๋ฌธ์ (# 4660)๋ฅผ ์ข ๊ฒฐ ํ ํธ๋ฆญ ์ค ์ผ๋ถ๋ฅผ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
- ๋ด๋ณด๋ด๋ ค๋ ๋ชจ๋ ๋ผ์ ํค ํ๋ ์์ด ํ์ํฉ๋๋ค.
- ๋ฉ์๋ T- ํฌ์ฆ์ ์์ด์ผํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. T-pose ํ๋์ ์ทจํ์ญ์์ค. ์ด ์ก์ ์๋ ๋ชจ๋ ๋ผ๋์ ํธ๋์ค ํผ์ด ์ง์์ง ํ๋ ์์ด ํ์ํฉ๋๋ค. ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ ํํ ๋ ํ์ฌ ํ๋ ์์ด์ด์ผํฉ๋๋ค. ๋น. ๋ด๋ณด๋ด๊ธฐ ์ง์ ์ ๋ฉ์์์ Armature ์์ ์๋ฅผ ์ญ์ ํฉ๋๋ค. ํ์ผ์ ๋ด ๋ณด๋ธ ํ ์์ ์๋ฅผ ๋ค์ ๊ฐ์ ธ ์ค๋ ค๋ฉด ๋ง์ง๋ง ์์ ์ ์คํ ์ทจ์ํฉ๋๋ค.
๊ณผ:
Armature ์์ ์๋ฅผ ์ ์งํ์ ๋๋ง์ด ์์ ์ ์ํ ํ ์ ์์์ง๋ง ์ ์ ๊ทธ๋ฃน๊ณผ ๋ผ ๋ดํฌ๋ฅผ ๋ชจ๋ ๋นํ์ฑํํ์ต๋๋ค (๋ด ๋ณด๋ธ ํ ๋ค์ ํ์ฑํ). ์ ๊ฒฝ์ฐ์๋ ์์ ์๋ฅผ ์ญ์ ํด๋ ๋์์ด๋์ง ์์์ต๋๋ค.
์๋ง๋ :
๋ชจ๋ธ๊ณผ ๋ธ๋ ๋ ํ์ผ ๋ด๋ถ์ ๋ผ๋์ ๋ง๋ ํ์ ์ ์ ์ฉ ํ์ต๋๊น? ๊ฐ์ฒด ๋ชจ๋์์ Ctrl + A> ํ์ ๋ฐ ํฌ๊ธฐ ์กฐ์ ์ ์ฌ์ฉํ๋ฉด๋ฉ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๊ทธ ์์ ๋ธ๋ ๋์์ ์์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ป๋ ๋ฐ ๋๋ฅผ ์ด๊ธฐ๊ณ ํ์ํ ๊ฒ์ด ๋ฌด์์ธ์ง ์๋ ค ์ฃผ๋ฉด .. ๋ง์ ๊ฐ์ฌํฉ๋๋ค! :)์ด ๋ธ๋ ๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค : https://github.com/mrdoob/three.js/blob/master/examples/models/skinned/marine/marine_anims.blend
Ok ์ง๊ธ ์๋ํ๊ณ https://antont.github.io/three.js/examples/webgl_animation_skinning.html ์ ๋ฐ์ดํธ๋์์ต๋๋ค (๋๊ตฐ๊ฐ๊ฐ ์ด์ ์ ๋ฒ๊ทธ๊ฐ์๋ ๋ฒ์ ์ ๋ณธ ๊ฒฝ์ฐ ์ง๊ธ ์บ์์์ ๊ฐ์ ธ ์ค์ง ๋ง์ญ์์ค)
๋ง์ ๊ฒ์ ์๋ค๋ก ์๋ํ๊ณ ๋ชจ๋ ๋ผ๊ฐ ํค๊ฐ ์ง์ ๋์๋์ง ํ์ธํ๊ณ ๋๋จธ์ง ๋ฐ ํฌ์ฆ ์ต์
๋ฑ์ ํ์ธํ์ง๋ง ๊ฒฐ๊ตญ์๋ apply modifiers
์ ์ด์ํ ๋ณํ์ด ์๊ฒผ์ ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ผ๋ ์์ ์๊ฐ ๋ด๋ณด๋ผ ๋ ๊ธฐ๋ณธ ํ์์ ์ ์ฉ๋ ๋ค์ three.js์ skel anim์ ์ํด ๋ ๋ณํ ๋์๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ https://github.com/antont/three.js/blob/example_skinning/examples/models/skinned/marine/marine_anims.json ์์ ์์ ๋์ง ์์ ํด์ ๋ธ๋ ๋๋ฅผ ์ ๋ด๋ณด๋ด๊ธฐ์ ํจ๊ป ๋ด๋ณด๋ด๋ ์์ ์ด
ํ์ง๋ง ์ ๋๋ฉ์ด์ ์ค ํ๋๋ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ก์ด ๋ด๋ณด๋ด๊ธฐ๋ก ๋ชจ๋ ์ ๋๋ฉ์ด์ ์ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์์ ์์๋ผ ํ์๊ฐ ์์ต๋๋ค.
์ฌ์ฉ ๋ ์ต์
์ ์คํฌ๋ฆฐ ์ท :
@antont ์กฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
realxtend / chesapeake bay์ ์ฌ์ด๋ ์๋ํฉ๋๋ค. :)
๋์ผํ ์ต์ .
๋ฐ๋ชจ : https://antont.github.io/three.js/examples/webgl_animation_skinning-deer.html
๋ด๋ณด๋ด๊ธฐ : https://github.com/antont/three.js/tree/example_skinning_deer/examples/models/skinned/deer
์ถ์ฒ : https://github.com/realXtend/chesapeakebay/blob/master/objects/White_Tailed_Deer/White_Tail_Deer_all.blend
์ฃผ๋ก ์ ๋๋ฉ์ด์ ๋ฌธ์ ์ ๋ํ ์์ ์ ์ํด three.js์ ๋ํ Slack ํ ์ฑ๋์ ์ค์ ํ์ง๋ง ๊ด๋ จ ์ธ ๊ฐ์ง ๋ชจ๋ ์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ์ธ ํ ์ฑ๋์ด๋ฏ๋ก ์ฌ๋๋ค์ ์ด๋๋ฅผ ํตํด์๋ง ์ฐธ์ฌํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์ฐพ๊ณ ์์ด์:
์ด๊ฒ์ ์๋ฆฌํธ์ฃผ์์ ์ธ ๊ฒ์ด ์๋๋๋ค. ๋๋ ์๊ฐ์ด ์ ํ๋์ด ์๊ณ ๋๊ตฐ๊ฐ์๊ฒ ํ์ด์ฌ์ด๋ ๋ธ๋ ๋๋ฅผ ๊ฐ๋ฅด ์น ์์๋ ๋์ญํญ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ด๋ณด์์๊ฒ ์น์ํ์ง ์์ ๊ฒ ๊ฐ๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก ์ด๊ฒ์ ์๋ฉ์ด์์ ๋ฏ์ด ๋ด๊ณ ๊ธฐ์ฌํ ์ ์ฉํ ๊ธฐ์ ์ด์๋ ์ฌ๋๋ค์์ํ ๊ฒ์ ๋๋ค. IRC๋ ๋๋ฅผ ์ง์ฆ๋๊ฒํ๊ณ ์ฌ์ง์ด github ์ค๋ ๋๋ ํ์ ์์ํ ๊ฐ์ฅ ์ข์ํ๋ ์ฅ์๊ฐ ์๋๋๋ค. ๋ค๋ฅธ ๊ทธ๋ฃน๊ณผ ํจ๊ป Slack์ ์ฌ์ฉํด ์์ผ๋ฉฐ ํ๋ฅญํ์ต๋๋ค.
์ด๋๋ฅผ ์ํด ์ ์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด์ญ์์ค (๊ทธ๋ฆฌ๊ณ github ํธ๋ค๋ ์ฐธ๊ณ ํ์ญ์์ค).
ed [dot] caspersen [at] gmail [dot] com
์ต์ ๋ธ๋ ๋ API์ ๋ณ๊ฒฝ์ผ๋ก ๋ด๋ณด๋ด๊ธฐ๊ฐ ๋ฉ์์์ ์์ ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ๋ณด๊ณ ์๋ ๋์ (์์ ํ ํ์ธ๋์ง ์์)์ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๋ด๋ณด๋ด๋ ๊ฒ์ ๋๋ค.
๋ธ๋ ๋์ ์ต๊ทผ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ก์ ๋ณ๊ฒฝ์ด ์ค์ ๋ก ์ ์ฉ ๋๋ ค๋ฉด ๋ผ๋๊ฐ 3D ๋ทฐ์์ ์ค์ ์ ํ๋ ๊ฐ์ฒด๊ฐ๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋ฉ์ฌ ๋์ ์ ๋ผ๋๋ฅผ ๋ด๋ณด๋ด๊ธฐ ์ํด ์ ํํ๋๋ก ๋ด๋ณด๋ด๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐํ ์ ์์ผ๋ฉฐ ์คํฌ๋ฆฝํธ์์ ์ํ ๋ ๋์ ๋ณ๊ฒฝ์ด ์๋ ํ ์ ์์ต๋๋ค.
๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ์ ๋ํด ๋ ๋ง์ ๋์์ด ํ์ํ๋ฉด ์๋ ค์ฃผ์ธ์. 2.6 ์ด์ ์คํฌ๋ฆฝํ ์ ๋ํ ์ ์ ํ ๋ฐฐ๊ฒฝ ์ง์์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์คํฌ๋ฆฝํธ ๋งค๊ฐ ๋ณ์์ ๋ผ๋ ๋ชจ๋์์ "rest"์ ์ฌ๋ฐ๋ฅธ ์กฐํฉ์ ์ ํํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ๊นจ์ง๊ธฐ ์ฌ์ด ..
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ "์์ ์ ์ ์ฉ"์
๋๋ค ...
๋ด๊ฐ ์ ์ ์๋ฏ์ด, ์คํค๋ ๋ ๋ฉ์๋ฅผ ๋ด๋ณด๋ด๋ ์ ์์ ์ธ ์ํฉ์์๋ ์ ๋๋ก ์๋๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์๊ฑฐ๋ ์คํค๋ ๋ ๋ฉ์๋ฅผ ์ ์ธํ๋ ๋ณ๋์ ํ ๊ธ์ด ์์ด์ผํฉ๋๋ค.
์์ ์๋ฅผ ์ ์ฉํ๋ฉด ๋ผ๋๊ฐ ํ์ฌ ์ค์ ๋ ํ๋ ์์ผ๋ก ๋ฉ์๋ฅผ ๋ณํํฉ๋๋ค.
์ด๊ฒ์ ๋ฉ์ฌ์ ๋ํ ๋ฐ์ธ๋ฉ์ ํธ์ค๋ก ์ฐ๊ฒฐํ๊ณ ์ด ์ค๋ ๋์ ๋ค๋ฅธ ๋ถ๋ถ์ ํ์๋ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ด๋ฌํ ๋จ๊ณ๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
๋ฐฉ๊ธ ๋ช ๊ฐ์ง ํ ์คํธ๋ฅผ ์คํํ๊ณ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๋ด๋ณด๋ด๋ ๊ฐ ์ ๋๋ฉ์ด์ ์ ๋ํด ๋์ผํ ์ ๋๋ฉ์ด์ ์ ํ๋ ์์ ๋ด๋ณด๋ด๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๊ทธ๋์ "walk"์ก์
์ ์ ํํ ์ํ๋ก ๋ฉ์ฌ๋ฅผ ๋ด ๋ณด๋๊ธฐ ๋๋ฌธ์ ...
ํ์ผ์ ๋ชจ๋ ์ ๋๋ฉ์ด์
์ ์ด๋ฆ๊ณผ ๊ธธ์ด๊ฐ ๋ค๋ฅธ "๊ฑท๊ธฐ"์ ๋๋ฉ์ด์
์ ๋ณต์ฌ๋ณธ์
๋๋ค.
ํ์ผ์ ๋ค๋ฅธ ์ ๋๋ฉ์ด์ ๋ณด๋ค ๋ ๋ง์ ํ๋ ์์ด์๋ ์์ ์ด์๋ ๊ฒฝ์ฐ ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์ ํ ์ถฉ๋ํ์ง ์๋ ๊ฒ์ด ๋๋์ต๋๋ค.
์ด ๋ฒ๊ทธ์ ๋ํ ๊ฐ๊ฒฐํ ์ค๋ช :
๋ด ๋ณด๋ธ ๋ชจ๋ ์ ๋๋ฉ์ด์ ํค ํ๋ ์์ ์์ฒด ํค ํ๋ ์์ด ์๋๋ผ ์ ํํ ์ ๋๋ฉ์ด์ ์ ํค ํ๋ ์์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํ ์ ์ด๋ ๋ถ๋ถ์ ์ธ ์์ ์ ์ฐพ์์ต๋๋ค ...
"io_three \ exporter \ api \ animation.py"์์
"parse_pose_action"์์ ๋ถ๋ถ (183 ํ ์ฃผ๋ณ)
๋ผ์ ๋ฃ๋ค:
context.scene.objects.active = armature
์ด ๋ณ๊ฒฝ์ผ๋ก ์ด์ ๊ณ ์ ํ ์ ๋๋ฉ์ด์ ์ด ๋ด๋ณด๋ด์ง๋๋ค.
์๋
ํ์ธ์, ํผ๋๋ฐฑ๊ณผ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋ ๊ถ์ฅ ๋ณ๊ฒฝ์ํ๊ณ "ํฌ์ฆ"์ "์์ ์ ์ ์ฉ"= off๋ก ๋ด ๋ณด๋๊ณ ์ด๊ฒ์ ํ๋ฅญํ๊ฒ ์๋ํ๋ค !!
๊ฐ์ฌ
context.scene.objects.active = ๋ผ๋
์ด๊ฒ์ ์๋ํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋ด๊ฐ ์ ๊ธฐ ํ ๋์ผํ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
https://github.com/mrdoob/three.js/issues/7165
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ์ค์ ๋ก ์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ ์งํํ ์์์ด์ ๊ธฐ์ฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
ํฐ! ๋์ ๋๋ฆด ์์์ด์ ๊ธฐ์ฉ๋๋ค!
๋๋ ์ด๊ฒ์ ๋ฐํ ์ผ ์์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ์ด ์ค๋ ๋์ ๋ค์ ์ฐ๊ฒฐํ์ต๋๋ค.
@manthrax (๋ถ๋ถ ์์ ํฌํจ)๋ '๊ณจ๊ฒฉ ์ ๋๋ฉ์ด์
: ํฌ์ฆ'๋ฅผ ๋ด๋ณด๋ด๊ณ ๋ผ๋ ์์ ์์์ '๋ ๋ ์ค ์์ ์ ์ฌ์ฉ'์ ์ ํ ์ทจ์ํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
3 ๊ฐ์ ์ ๋๋ฉ์ด์ ์ด ์๋ํ๋ ์บ๋ฆญํฐ ๋ฐ๋ชจ> http://unboring.net/lab/6326/hero_72/
'ํด์ ๋ชจ๋'๋ก ์ ๋๋ฉ์ด์
์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ด๋ณด๋ด๊ณ ์คํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ฑฐ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
์ด ๊ฒฝ์ฐ ๋ด๋ณด๋ด๊ธฐ๋ ๋ชจ๋ ํ๋ ์์ด ์๋ ํค ํ๋ ์ ๋ง ์์ฑํ๊ณ json ํ์ผ์ 873kb์์ 174kb๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
Slack ์ด๋์ฅ์ ๋ณด๋์ต๋๋ค. ๋ด์ผ ์ด๋ค ์๊ฐ์ด ์์์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ์์ผ์ ๋ช ์๊ฐ์ด ์์ด์ผํฉ๋๋ค.
@arturitu ๋๋ ๊ทธ๊ฒ์ ์กฐ์ฌ ํ ์ ์์ต๋๋ค ... ํ์ฌ ์๋ชป๋ rest_mode ํฌ์ฆ์ ๋์์ ๋ฌด์์
๋๊น?
๊ฐ์ ๋ฌธ์ ์ฒ๋ผ ๋ณด์
๋๊น?
@repsac :
ํ์ฌ ๋ด ์ปดํจํฐ์์ ํฐ ์ ๋๋ฉ์ด์ ์ ๋ด๋ณด๋ด๋ ค๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค ...
๋๋ถ๋ถ์ ์๊ฐ์ ๋ก๊ทธ ์คํธ์ผ๋ก ์ธํ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค.
๋ก๊ฑฐ๋ฅผ ๋๋ ๊ฒ๋ง์ผ๋ก๋์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ๊ฒ์
๋๋ค. ๊ณผ๊ฑฐ์ ํ์ด์ฌ ์คํฌ๋ฆฝํธ์์ด ๋ฌธ์ ๊ฐ์์์ต๋๋ค ... ๋ก๊น
์ถ๋ ฅ์ด ๋นํ์ฑํ ๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์์ด ์์ฑ์ ๋ก๊น
๋ฌธ์์ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
"if (logging) log.debug ("blah ");"์ ๊ฐ์ ์์
์ ์ํํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ ์์ฑํด์ผํฉ๋๋ค. ๋ชจ๋ ๋ฉ์์ง๋ฅผ ํ์ํํ๋ ์ค๋ฒ ํค๋๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋ชจ๋ ๋ก๊น
๋ช
๋ น๋ฌธ์์.
์ ๋๋ฉ์ด์ / ํค ํ๋ ์ ๋ด๋ณด๋ด๊ธฐ์์ ๋ณธ ๋ก๊น ๋ฉ์์ง๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ ๋งํ๋ฉด ๋ด๋ณด๋ด๊ธฐ ์๊ฐ์ด 2 ๋ถ์์ ์ฝ 5 ์ด๋ก ๋จ์ถ๋์์ต๋๋ค.
@arturitu rest_pose ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์๋ํ์ต๋๋ค ... ์์ ํ์ผ์ ์ป์์ง๋ง ์ฌ์์ ์๋ ํ ๋ ์ค์ผ๋ ํค ๋ฐ์ธ๋ฉ์ด ๋ง๊ฐ์ก์ต๋๋ค ... ์์ด๋์ด๊ฐ ์์ต๋๊น?
๋ค๋ฅธ ๋ฉ์์ ๋ฐ์ธ๋ฉ ๋ ํด์ ๋ธ๋ ๋ ํ์ผ๋ก ํ ์คํธ ์ค์ ๋๋ค ...
์ค์ผ ๋ ํ ์ ๋๋ฉ์ด์ : ํด์
์ค์ผ ๋ ํ ์ ๋๋ฉ์ด์ : ํฌ์ฆ
@manthrax ์ ๋ Rest์์ JSON์ ๋ผ ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ ๋ผ๊ฐ "parent": null์ ๋ง์ด ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด Pose์์๋ ๋ผ๊ฐ ์ฌ๋ฐ๋ฅธ ๋ถ๋ชจ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ์ ์๋ ๋ค๋ฆ ๋๋ค (์ ๊ฒฝ์ฐ์๋ Pose์์ 38์ ์ฐ๊ณ Rest์์๋ 28์ ์ฐ์ญ์์ค)
ํ์ง๋ง ์ฌ๋ฐ๋ฅธ ์ ๋๋ฉ์ด์ ์ ํ์ํ๊ธฐ ์ํด ๋ค๋ฅธ ์ข ๋ฅ์ BlendCharacter.js๊ฐ ํ์ํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
"if (logging) log.debug ("blah ");"์ ๊ฐ์ ์์ ์ ์ํํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ ์์ฑํด์ผํฉ๋๋ค. ๋ชจ๋ ๋ฉ์์ง๋ฅผ ํ์ํํ๋ ์ค๋ฒ ํค๋๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋ชจ๋ ๋ก๊น ๋ช ๋ น๋ฌธ์์.
์๋ง๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๋ก๊น ๋ชจ๋ ์์ฒด ๋ด์์ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ์ง๊ธ ๋ด
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์คํฌ๋ฆฝํธ ๋งค๊ฐ ๋ณ์์ ๋ผ๋ ๋ชจ๋์์ "rest"์ ์ฌ๋ฐ๋ฅธ ์กฐํฉ์ ์ ํํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ๊นจ์ง๊ธฐ ์ฌ์ด ..
๊ทธ๊ฒ์ ๊ณผ๊ฑฐ์ ์ด๊ฒ์ ํด๊ฒฐํ๋ ค๊ณ ์๋ํ์ต๋๋ค. ์ฃผ์ ์ฒ๋ฆฌ ๋ ์น์ ์ด ์์ต๋๋ค.
armature.data.pose_position =
์จํต. Blender์ ์ ธ์์ ์๋ํ๋ฉด ์๋ํ์ง๋ง ๋ด๋ณด๋ด๊ธฐ ์ค์๋ ์๋ํ์ง ์์์ต๋๋ค. ์ต๊ทผ ๋ธ๋ ๋ ๋ฒ์ ์์ ์๋ํ์ง ์์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ ์ ์์ต๋๋ค (๋ค์ ๊ณ ์ฅ๋ ๋๊น์ง).
์ด ๋ณ๊ฒฝ์ผ๋ก ์ด์ ๊ณ ์ ํ ์ ๋๋ฉ์ด์ ์ด ๋ด๋ณด๋ด์ง๋๋ค.
์ ์ก์์ต๋๋ค. ๋ธ๋ ๋๊ฐ ํ์๋กํ๋ ์ํฉ ์ธ์์ ๋๋๋ก ๋๋ฌด๋ ์๋ฌต์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ํ๋ค์ด์ง๋๋ค.
๋ก๊ทธ ๋นํ์ฑํ๋ ์ฌ์ ์ต๋๋ค. 3์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋๋ฌด ์ปค์ ์ต์คํฌํฐ์๋ง ๊ด๋ จ๋ ์์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์์ผ๋ฏ๋ก ๊ฒฐ๊ตญ ๋ชจ๋ ๊ฒ์ด ๋ค์ ๋ณํฉ๋ฉ๋๋ค.
https://github.com/repsac/io_three
๋ด๊ฐ ์ ์ ์๋ฏ์ด, ์คํค๋ ๋ ๋ฉ์๋ฅผ ๋ด๋ณด๋ด๋ ์ ์์ ์ธ ์ํฉ์์๋ ์ ๋๋ก ์๋๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์๊ฑฐ๋ ์คํค๋ ๋ ๋ฉ์๋ฅผ ์ ์ธํ๋ ๋ณ๋์ ํ ๊ธ์ด ์์ด์ผํฉ๋๋ค.
์ ๊ณ์ ์ผ์ ธ ์์ด์ผํ๋์ง ์ข์ ์ฌ๋ก๋ฅผ ๋ง๋ค ์ ์๋ค๋ฉด ์ ๋๋ฉ์ด์
์ด ํ์ฑํ๋์ด ์์ผ๋ฉด False
๋ก ์ค์ ํ๋๋ก ์ ํํฉ๋๋ค. ์ ์ผํ ๋ฌธ์ ๋ ์ฌ ๋ด๋ณด๋ด๊ธฐ์์์ ์ ์์ต๋๋ค. ์ฌ ๋ด๋ณด๋ด๊ธฐ๊ฐ ์ด์จ๋ ์ ๋๋ฉ์ด์
์ ์ง์ํด์ผํ๋ ๊ฒฝ์ฐ ์ ๋ ์ธํ๋ฆฌ์ ์์ต๋๋ค. Blender๊ฐ ํ๋ ์๋์์ ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์ ๊ฐ์์ด ๋งค์ฐ ์ทจ์ฝ ํด ๋ณด์
๋๋ค.
@repsac ๊ทธ๋ฅ ๋งํ๊ณ ์ถ์์ต๋๋ค .. ์์ถ์ ์๋ ๊ต์ฅํฉ๋๋ค. ๋ด ์๊ฒฌ์ด ๋นํ์ผ๋ก ๋์ค์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ณผ๊ฑฐ์ ํจ์ฌ ๋ ์์์ ์ธ ๋ธ๋ ๋ ์์ถ์ ์๋ฅผ ์ผ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ฒ์์ ๋ํด์๋ ์๋ฌด ๊ฒ๋ ์์ฑํ์ง ์์์ผ๋ฏ๋ก ํฐ ์ฑ๊ณผ๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
๋ค์ ๋ก๊น : ๋ก๊น ํ๋ ์ ์ํฌ์์ ์ถ๋ ฅ์ ๋นํ์ฑํํ์ฌ ๋ก๊ทธ ๋ฉ์์ง ํ์์ ์ค๋ฒ ํค๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ๋ ์ ์ํฌ์ ๋์์ค๋ฅผ ์ดํดํ์ง ๋ชปํ ์๋ ์์ต๋๋ค.
๋ด๊ฐ ์ ์ ์๋ฏ์ด "someLoggingFunction ("formatted text : xyz ")"ํ์์ ๋ก๊น ์ ํจ์๊ฐ ๋ด๋ถ์ ์ผ๋ก ํ ์คํธ๋ฅผ ๋ด ๋ณด๋ด์ง ์๋๋ผ๋ ํญ์ ๋ฉ์์ง์ ํ ์คํธ ๋ณํ / ํฌ๋งท์ ๋ฐ์์ํต๋๋ค.
์ ๋ก ์ค๋ฒ ํค๋ ๋ก๊น ์ ๊ฒฝ์ฐ "Logger.log (function () {return SomeFormattedText;}) ํ์์ ์ทจํด์ผํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ๋ฌ ๋ ํจ์๋ ๋ก๊น ์ด ํ์ฑํ ๋ ๊ฒฝ์ฐ์๋ง ํธ์ถ๋ฉ๋๋ค.
. ์ง์ ์ผ๋ก ์ปดํ์ผ๋๊ณ ์ต์ ํ ๋ ์ธ์ด์์ ์ปดํ์ผ๋ฌ๋ ํจ์๊ฐ ์๋ํ์ง ์์์ ๊ฐ์งํ๊ณ ํฌ๋งทํ ํธ์ถ์ sklp ํ ์ ์์ง๋ง, ๊ทธ๋๋ ํฌ๋งทํ ํธ์ถ์ ๋๋จธ์ง ํ๋ก๊ทธ๋จ์ ๋ํด ๋ถ์์ฉ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ ํ ํฌํจ๋ฉ๋๋ค.
re : ์ ๋๋ฉ์ด์
์ ์ง์ํ๋ ์ฅ๋ฉด ๋ด๋ณด๋ด๊ธฐ ...
๊ฐ๊น์ด ์์ผ ๋ด์ ๊ทธ ๊ธธ๋ก ๊ฐ๊ธฐ์๋ ๋๋ฌด ์ด๋ฅด๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.ํ์ง๋ง ๊ทธ๊ฒ์ด ์๋ ํ ์์๋ ์ง์ ์ ๋๋ฌํ๋ฉด .. ์ ๋๋ฉ์ด์
์ผ๋ก ์ ์ฒด ๋ ๋ฒจ์ ๋น๋ํ๊ณ ๋ด๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ๊ฝค ๋๋์ต๋๋ค. WYSIWYG to three.js ํ์ฐจ๋ ํ์ ํ ๊ฒ์
๋๋ค ... ๊ฐ๊ณผ ํญํฌ๋ UV ์ ๋๋ฉ์ด์
์ ๋ง๋ค ์ ์์ต๋๋ค. ํ๋ซํผ์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ ์ ๋ค๋ ์ ์์ต๋๋ค. ์ธ์ ๊ฐ ... : D
๋ด๊ฐ ์ ์ ์๋ฏ์ด "someLoggingFunction ("formatted text : xyz ")"ํ์์ ๋ก๊น ์ ํจ์๊ฐ ๋ด๋ถ์ ์ผ๋ก ํ ์คํธ๋ฅผ ๋ด ๋ณด๋ด์ง ์๋๋ผ๋ ํญ์ ๋ฉ์์ง์ ํ ์คํธ ๋ณํ / ํฌ๋งท์ ๋ฐ์์ํต๋๋ค.
๋ก๊น ํธ์ถ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ด์ด์ผํฉ๋๋ค.
logger.info("foo bar %s", arg)
๋ฐ๋ผ์ ๋ก๊น
API๊ฐ ๋ด๋ถ์ ์ผ๋ก *args
ํต๊ณผ ํ ๋๊น์ง ๋ฌธ์์ด ํ์์ด ์ง์ ๋์ง ์์ต๋๋ค. ๋ก๊น
๋
ผ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
https://github.com/repsac/io_three/blob/master/addons/io_three/exporter/__init__.py
level = options.get(constants.LOGGING, constants.DISABLED)
version = options.get('addon_version')
if level != constants.DISABLED:
logger.init('io_three.export.log', level=level)
https://github.com/repsac/io_three/blob/master/addons/io_three/logger.py
def _logger(func):
def inner(*args):
if LOGGER is not None:
func(*args)
return inner
<strong i="18">@_logger</strong>
def info(*args):
LOGGER.info(*args)
<strong i="19">@_logger</strong>
def debug(*args):
LOGGER.debug(*args)
<strong i="20">@_logger</strong>
def warning(*args):
LOGGER.warning(*args)
<strong i="21">@_logger</strong>
def error(*args):
LOGGER.error(*args)
<strong i="22">@_logger</strong>
def critical(*args):
LOGGER.critical(*args)
๋ฉ์์ง๋ฅผ ํ์ํํ์ง ์์์ผํฉ๋๋ค. ๋๋ ํฐ ์ฅ๋ฉด์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ํ ์คํธ ํ ์๋ ์์ง๋ง ์ด๋ก ์ ์ผ๋ก๋ํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋๋ฐ์ ์ซ์ดํ๋ ์ด์ # 4576์ด๋ฉ๋๋ค.
๋ด ๋๊ธ์ด ๋นํ์ผ๋ก ๋์ค์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฌ๊ธฐ SF (์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ ํฌํจ)์์๋ ๋ธ๋ก ๊ทธ๋๋จธ๋ก ๊ฐ๋ ์ฐฌ ๊ธฐ์ ํ์ฌ์ VFX ์ ๊ณ ์ฌ์ด์์ ์ธํฐ๋ทฐ์์ ๋ ๋์๊ฒ ๋งํ ์ ์ด ์์ต๋๋ค.
ํ์ฌ์ด ์ ์ฒด ์ค๋ ๋๋ฅผ ์ดํด๋ณด๊ณ ๊ตฌ์ฒด์ ์ผ๋กํด์ผ ํ ์ผ์ ๋ํ ๊ธ ๋จธ๋ฆฌ ๊ธฐํธ ๋ชฉ๋ก์ ์์ฑํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ๊น์ด ์๋์ง ํ์ธํ ์ ์๋๋ก ๋ญ๊ฐ ์์ผ๋ฉด ๊ฒ์ํฉ๋๋ค.
์ค ํ๋ฅญ ํด์! ๋ก๊น ์ ๋ค๋ฃฌ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ํ์ด์ฌ์ ์๋ฃจ์ ์ ๋์์ค๋ฅผ ์ดํดํ๊ธฐ์๋ ์ฝ๊ฐ ์ฝํ์ต๋๋ค.
์์ ์ธ์, ์ ๋ SF์ ์์ด์!
๋งค์ฐ ๋ฉ์ง๋ค ...์ด ์ค๋ ๋์์ ์ป์ ์์๋ ํ, ๋๋ถ๋ถ์ ํ ์ค๋ก ์์ ํ ๋ค์ "ํด์"๋ชจ๋์ ๋ชจํธ์ฑ์ ํด๊ฒฐํ๋ ๊ฒ์ ๋๋ค ... ์ฌ์ ํ ์ฌ์ฉ ์ฌ๋ก ํด์ง ๋ชจ๋์ ์ด๋ค ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. .. ์๊ณ ๊ณ์๋ค๋ฉด ์ดํด ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ...
ํน์ ๋งํฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ชจ๋ ์ด์ ๋ฌธ์ ๋ฅผ ํํค์ณ ์ผํ์ง๋ง ์ฌ๊ธฐ์์ ๋น ๋ฅธ ์๋ต์ ์ํด ๋ถ๋ฅ ํ ์ ์์ต๋๋ค.
์ง๊ธ๊น์ง ํด๊ฒฐํด์ผ ํ ๋ ๊ฐ์ง ํญ๋ชฉ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.
1) ๋ผ๋์ ํ์ฑ ์ปจํ ์คํธ ์ค์
context.scene.objects.active = armature
2) ์คํค๋ ๋ ๋ฉ์์ ์์ ์๋ฅผ ์ ์ฉํ์ง ๋ง์ญ์์ค
์๋ ํฌ์ฆ ์ ํ์ ๋ค์ ํ ์คํธํ๊ฒ ์ต๋๋ค. ๋๊ตฐ๊ฐ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์์ ๋ธ ๊ฒ์ด ์์ง๋ง ๊ทธ ๋น๋ฐ ์์ค๊ฐ ์์ถ์ ์๋ก ๋ค์ด ๊ฐ์ง ์์๋ค๊ณ ๋งํ์ต๋๋ค.
@manthrax ๋ด ์ง์ ์ ํ์ธํ๊ณ ์ด๊ฒ์ด ๋น์ ์ ์ํด ์๋ํ๋์ง ๋ณผ ์ ์์ต๋๊น?
https://github.com/repsac/three.js/tree/anim_fix
์ฒซ ๋ฒ์งธ ํค ํ๋ ์์ ๋ผ๋๊ฐ ๋ฉ์์ ์ ํํ ๋์ผํ๊ฒ ๊ตฌ์ฑ๋์ด์๋ ํ ํฌ์ฆ ๋ชจ๋์ ์ ๋๋ฉ์ด์ ์์ ์ ์๋ํฉ๋๋ค. ํฌ์ฆ ๋ชจ๋์์ ์์น / ํ์ / ๋ฐฐ์จ ๋ณํ์ ์ถ๊ฐํ๊ณ ์ฒซ ๋ฒ์งธ ํค ํ๋ ์์ผ๋ก ํ ๋นํ๋ ค๊ณ ํ๋ฉด ๋ชจ๋ธ์ด ์๊ณก๋์ด ๋ ๋๋ง๋ฉ๋๋ค.
REST / POSE ๋ฌธ์ ๋ ๋ฐ์ํ์ต๋๋ค (์ต์ dev-branch). ์ด ๋ชจ๋ธ์๋ 40 ๊ฐ ์ด์์ ๋ผ์ 7 ๊ฐ์ ๋์์ด ์์ต๋๋ค. POSE๋ ์ ์๋ํ์ง๋ง ๋ด ๋ณด๋ธ ํ์ผ์ ํฝ๋๋ค. REST๋ ์ ๋๋ฉ์ด์ ์ ์์ ํ ์๊ณกํ์ต๋๋ค.
๋ด ๋ณด๋ธ _skinIndices_ ๋ฐฐ์ด์ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค. POSE ๋๋ REST ๋ชจ๋์ ๊ด๊ณ์์ด _skinIndices_ ๋ฐฐ์ด์ ๋์ผํ์ง๋ง ๋ด ๋ณด๋ธ _bones_ ๋ฐฐ์ด์ ์์์ ์ธ๋ฑ์ค๋ ์์ ํ ๋ค๋ฆ ๋๋ค. __rest_bones () _๋ ๋ผ๋ฅผ ์ธ๋ฑ์ฑํ๊ธฐ ์ํด _armature.data.bones_๋ฅผ ์ฌ์ฉํ๊ณ __pose_bones_๋ _armature.pose.bones_ (api / mesh.py)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋์ค์ __skinning_data () _๋ REST / POSE ์ค์ ์ ๊ด๊ณ์์ด ํญ์ _armature.pose.bones_๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น ๋ฅธ ํ ์คํธ๊ฐ ์ด๊ฒ์ ํ์ธํ๋ ๊ฒ ๊ฐ์ต๋๋ค. __skinning_data () _์์ _armature.data.bones_๋ฅผ ์ฌ์ฉํ๋ฉด REST ๋ชจ๋์์ ๋ด ๋ชจ๋ธ๊ณผ ์ ๋๋ฉ์ด์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ด ๋ณด๋ ๋๋ค.
์ด ์ง๋ฌธ์ ๋ตํ๊ณ ์์ ์ฌํญ์ ์ ์ถํ ์์์๋งํผ three.js๋ฅผ ์ ๋ชจ๋ฅด์ง๋ง ์ค์ ๋ก _skinIndices_ ๋๋ _bones_์ ์์๊ฐ ์๋ชป๋ ๊ฒ์ ๋ฌด์์ ๋๊น? REST์์ _bones_์ ์์๋ Blender ์ ์ ๊ทธ๋ฃน์ ์ธ๋ฑ์ค์ ๋์ผํ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ์๋ง๋ ์ข์ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์,์ด ๋ฌธ์ ๋ ์ข ๊ฒฐ๋์ง ์์๊ณ ์ง๊ธ์ ๋ฌด์์ ๋ํด ๊ฒฐ๋ก ์ ๋ด๋ฆฌ์ง ์์์ต๋๊น? ๊ทธ๋์์ด ๋ฌธ์ ์ ๋ํด ๋ ๋ค๋ฅธ ์ฐ๋ ค๊ฐ ์์ต๋๋ค. 2 ๊ฐ์ ์ ๋๋ฉ์ด์ ์ ๋์์ ํ๋ ์ด ํ ์ฌ๋์ด ์์ต๋๊น? ๋ด ์ํ์ ์๋ํ์ง ์์ง๋ง 3D ๊ฐ์ฒด์ ํ์ง์ ๋ํด ํ์ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํํธ์ผ๋ก ์์์ ์ฝ์ ๋ด์ฉ์ด ์ค์ ๋ก ๊ฐ๋ฅํ์ง ๊ถ๊ธํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด : ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ NLA๋ฅผ ํ์ฉํฉ๋๊น?
@Derived yes ๋ค์ค ์ ๋๋ฉ์ด์ ๋ธ๋ ๋ฉ ๋ฐ ์ฌ์์ ์ต์ three.js์์ ์๋ํฉ๋๋ค.
๋ ์ผ๋ฐ์ ์ผ๋ก Nla๋ ๋ผ AFAIK์ ๋ํด์๋ง ์ง์๋ฉ๋๋ค.
์๋ ํ์ธ์,์ด ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์, ์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ ์คํํ ์ ์์ผ๋ฉฐ ์ ๋๋ฉ์ด์ "ํผํฉ"์ด ์์ต๋๋ค. ๋๋ v71์ ์ฌ์ฉํ์ง๋ง ์ ๋ฐ์ดํธ ๋ ๋ธ๋ ๋ ๋ด๋ณด๋ด๊ธฐ ๋ฒ์ (์์์ ๋ ผ์ํ ๋ฐ์ ๊ฐ์ด)์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ด์ฐฐ์ ๋ ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ด ๋ชจ๋ธ์๋ (A1) ํ์ ๋ค์ด ์ฌ๋ฆฌ๊ณ (A2) ๋จธ๋ฆฌ๋ฅผ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ๋ ๊ฐ์ง ์กฐ์ ๋ ์ ๋๋ฉ์ด์ ์ด ์์ต๋๋ค.
1) ์ฌ์ (A1) "ํ์ ๋ค์ด ์ฌ๋ฆฐ ๋ค์"์ ๋๋ฉ์ด์
์ ์ ๋ฐ์์ ๋ฉ ์ถฅ๋ ๋ค (ํ์ด ์ ๋ฐ์ ์์).
2) ์ฌ์ (A2) "๋จธ๋ฆฌ๋ฅผ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๊ธฐ"=> ๋จธ๋ฆฌ๋ฅผ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ์ง ๋ง ํ์ ์๋ ์์น์ ๋จธ ๋ฌด๋ฅด์ง ์๊ณ ์๋ ์์น๋ก ๋์๊ฐ๋๋ค.
3) ๋ง์ง๋ง์ผ๋ก 2๋ฅผ ํจ๊ป ์ฐ์ฃผํ๋ฉด ๋จธ๋ฆฌ๊ฐ ์ผ์ชฝ์ผ๋ก ๋์๊ฐ๊ณ ํ์ด ๋ค์ด ์ฌ๋ ค ์ง์ง๋ง ์๋ฆฌ๊ฐ ๋๋ ๊ฒ์ฒ๋ผ ์๋๋ผ (A1) (๋ค์ด ์ฌ๋ฆฌ๊ธฐ)์ (A2) (ํ์ ์์ง์ด์ง ์์)๊ฐ ์์ง์ด์ง ์๋ ๋ผ์ ์ํฅ์ผ๋ก ํผํฉ๋ฉ๋๋ค. (A1)์ (A2)์ ์์ง์ด๋ ๊ฒ๋ค๊ณผ ๋ฐ๋์ชฝ.
๋ฐ๋ผ์ json ํ์ผ์ ์ดํด๋ณด๋ฉด ์ ๋๋ฉ์ด์
์ด ๊ฐ ์ ๋๋ฉ์ด์
์ ๋ชจ๋ ๋ผ์ ๋ํ ๋ผ ์์น๋ฅผ ์ค๋ช
ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ (A2) "๋จธ๋ฆฌ๋ฅผ ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๊ธฐ"์ ๊ฒฝ์ฐ ์ ๋๋ฉ์ด์
์๋ ๋ณ๊ฒฝ๋์ง ์๋ ํ์ ๋ผ ์์น๊ฐ ํฌํจ๋ฉ๋๋ค (์ค๋ฅธ์ชฝ, A2๋ A2์์ ์์ง์ด์ง ์์). ๊ทธ๋ฌ๋ three.js๋ ์ด๋ฌํ ๋ผ ์์น๊ฐ ์ค์ํ์ง ์์ผ๋ฉฐ (A1) ์คํ์ ์ํฅ์์ฃผ์ง ์์์ผํ๋ค๊ณ ์ด๋ป๊ฒ ์ถ์ธกํฉ๋๊น?
์ด ์๊ฐ ์ดํดํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ ๋๋ฌธ์ ๋ง์์ ์๊ณ
๋ค์์ ๋ธ๋ ๋์ ๋ฆฌ๊น ๋ ๋ฉ์์ ๋๋ค.
์ฌ๊ธฐ threejs์ ์์ต๋๋ค.
์์ถ์๋ง 2 ์ผ์ ๋ณด๋์ต๋๋ค. ์ต์ ๋ธ๋ ๋, ์ต์ 3 ๊ฐ. ์์ถ์ ์์ ํ์ฌ ์ํ๋ ์ด๋ป์ต๋๊น?
@DelvarWorld ์ ๋๋ก ์๋ํ๋ ค๋ฉด DEV ๋ธ๋์น์์ Blender ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@arturitu ๋๋ :(
์๋ ํ์ธ์.
์์ถ์ ์์ ํ์ฌ ์ํ๋ ์ด๋ป์ต๋๊น?
๋๋ ์ด๊ฒ์ ์๊ฐ ํด์
repsac์ 2015 ๋ 12 ์ 30 ์ผ mrdoob์ ์ํด ํ ๋น๋์ง ์์์ต๋๋ค.
๋ฌธ์ ์ผ ์ ์์ต๋๋ค. ๋ถ๋ช ํ ์ฝ๊ฐ์ ์ฌ๋์ด ํ์ํฉ๋๋ค.
์ต๊ทผ์๋ณด๊ณ ๋ ๋ค์ํ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ ๋ณผ ์๋ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ฌํํ๊ธฐ ์ํด ํ์ผ์ ๊ณต์ ํ ์ ์์ต๋๊น (๊ฐ๋จํ ์๋ก ์ข์ต๋๋ค)?
ํธ์๋ฅผ ์ํด ์ฌ๊ธฐ์๋ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ํ ์คํธ ๋ชจ๋ธ ์์ @DelvarWorld ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์๋ํ๊ณ # 8412์ ๋๊ธ๊ณผ ํ๋ฉด ์บก์ฒ๋ฅผ ๊ฒ์ํ์ต๋๋ค.
ํํ
https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561 ์ด๊ฑฐ?
์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ํ๋ฅญํ ์์ : +1 :!
ํจ์น๊ฐ ์๋ฃ๋๋ฉด ์๋ก ์์ฑ๋๊ฑฐ๋ ๋ฐ๊ฒฌ ๋ ๋๋จธ์ง ๋ด๋ณด๋ด๊ธฐ ๋ฌธ์ ์ ๋ํ ์ค๋ช ์ด๋ ๋งํฌ๊ฐ ํฌํจ ๋ ์ ํฐ์ผ์ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น?
๊ธฐ์กด ํฐ์ผ ์ด๋๊ฐ์ ๊ฒ์ ๋ ๋ ํญ๋ชฉ์ ์ถ์ ํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
์ด์์ ์ผ๋ก๋ ์ผ์ด์ค ๋น ํ๋ (์์ง ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ)์ ๋ชจ๋๋ฅผ ์ฐธ์กฐํ๋ ๋ง์คํฐ "Blender Exporter Issues"(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ๋๋ค.
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์ ๋ํด ๊ธฐ์ตํ ์์๋ ๊ฒ์
๋ฌผ๋ก ์ด์ผ! ์ข์ ์์ด๋์ด์ผ. ์ด๋ฒ ์ฃผ๋ง์ ํด๋ณด๋๋กํ๊ฒ ์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์์์ผ์ ์ฌ๋ฌด์ค๋ก ๋์๊ฐ๋๋ค.
2016 ๋
4 ์ 15 ์ผ ์คํ 5์ 12 ๋ถ์ "tschw" [email protected]์ด ์์ฑํ์ต๋๋ค.
@phfatmonkey https://github.com/phfatmonkey
8412 (์ฝ๋ฉํธ)
https://github.com/mrdoob/three.js/pull/8412#issuecomment -210675561
์ด ํ๋?์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ์ต๋๋ค [image : : +1 :]!
ํจ์น๊ฐ ๋๋๋ฉด ์๋ก์ด ํฐ์ผ์ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น?
์๋ก ์์ฑ๋๊ฑฐ๋ ๋ฐ๊ฒฌ ๋ ๋๋จธ์ง์ ๋ํ ์ค๋ช ๋๋ ๋งํฌ
์์ถ ๋ฌธ์ ?๊ฒ์ ๋ ๋ ์ถ์ ํ๊ธฐ๊ฐ ์์ฒญ๋๊ฒ ์ด๋ ต์ต๋๋ค.
๊ธฐ์กด ํฐ์ผ ์ด๋๊ฐ์.์ผ์ด์ค ๋น ํ๋ (์์ง ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ)์ ๋ง์คํฐ "Blender Exporter
๋ฌธ์ "(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)๊ฐ ๋ชจ๋ ์ฐธ์กฐํฉ๋๋ค.๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์ ๋ํด ๊ธฐ์ตํ ์์๋ ๊ฒ์
- ๋ฒ์ ์ ํ์ ์ด ๋ถ์กฑํ์ต๋๋ค (๊ณ ์ ).
- ์ฅ๋ฉด ๊ณ์ธต์ ๋ด๋ณด๋ผ ๋ ์ ๋๋ฉ์ด์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ง๊ธ ์๋ํฉ๋๊น?
- ๊ทธ๋ฐ ๋ค์ ๊ฒ์๋ฌผ์ ์ธ๊ธ ๋ ๋๋จธ์ง ํฌ์ฆ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
- ๊ทธ๋ฐ ๋ค์ ์คํค๋ / ํค ํ๋ ์ ๋ฌธ์ (์ค๋ฅ ๋ฉ์์ง?)๊ฐ ์์ต๋๋ค.
- ...
โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/mrdoob/three.js/issues/6050#issuecomment -210693332
๋ธ๋ ๋์์ ํ ์์๋ ๋น์ ํ ์ ๋๋ฉ์ด์ ํธ์ง์ ์ด๋ป์ต๋๊น? ์ด ์ง๋ฌธ์ ๊ด์ฌ์๋ ์ฌ๋์ด ์์ต๋๊น? ์ด์ ๋ฉ์์ง์์ ์์ ์ ์ค๋ช ํ์ง๋ง ์๊ฒฌ์ด ์์ต๋๊น?
๋ฟก๋ฟก
์ด๋ค ๋ฉ์์ง?
์ฌ์ฉ์ ์ง์ ์ฝ๋๊ฐ ํ์ํ ๋ ๋๊ตฐ๊ฐ ์์ฑํด์ผํฉ๋๋ค. ๊ธฐ๋ถ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค ...
2 ์ 5 ์ผ์ ์์ ๋ฉ์์ง๋ ์ฌ๋ฌ ์ ๋๋ฉ์ด์
์ ๊ฒฐํฉ ํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ค๋ช
ํ์ต๋๋ค.
๊ฐ๋ฐ์ ๋๊ณ ์ถ์ง๋ง ์์ด๋์ด๋ฅผ ๊ณต์ ํ๊ณ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋
ผ์ํ๋ ค๋ฉด ๋จผ์ ๋ช ๊ฐ์ง ํ ๋ก ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ํญ๋ชฉ "๋น์ ํ ์ ๋๋ฉ์ด์
"# 7913์ ์ด์์ต๋๋ค.
์ด๊ฒ์ ๊ธด ๋ฌธ์ ์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ ์ฝ์ง ์์๋ค๊ณ ๊ณ ๋ฐฑ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๊ฐ ์ฌ์ ํ OP์ ์ค๋ช ๋๋๋ก๋ผ๋ฉด (์ฆ, Mixamo์์ ์บ๋ฆญํฐ๋ฅผ ์ ๋๋ฉ์ด์ ํ๊ณ three.js์์๋ก๋ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํจ) ๋ค์์ ์ํ ํ ์ ์์ต๋๋ค. glTF ๋ธ๋ ๋ ์ต์คํฌํฐ์ THREE.GLTFLoader๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ด ์ํฌ ํ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://medium.com/@donmccurdy/creating -animated-gltf-characters-with-mixamo-and-blender-728dc120e678
๋๋ Mixamo์์ FBX๋ก ๋ด๋ณด๋ด๊ณ FBXLoader๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ก๋ ํ ์ ์์ต๋๋ค.
๋ง์ง๋ง ๋ฆด๋ฆฌ์ค (R89)์์๋ ๋งค์ฐ ์ํํ๊ฒ ์๋ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ Mixamo์์ FBX๋ก ๋ด๋ณด๋ด๊ณ FBXLoader๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ก๋ ํ ์ ์์ต๋๋ค.
๋ง์ง๋ง ๋ฆด๋ฆฌ์ค (R89)์์๋ ๋งค์ฐ ์ํํ๊ฒ ์๋ํฉ๋๋ค.