Three.js: Mixamo ์• ๋‹ˆ๋ฉ”์ด์…˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๋กœ๋“œ

์— ๋งŒ๋“  2015๋…„ 02์›” 11์ผ  ยท  67์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mrdoob/three.js

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 ์ผ ํ›„ ๋‚ด ์ง€ํ˜œ์˜ ๋์— ์ž„ |

Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜๋Š” Mixamo์—์„œ FBX๋กœ ๋‚ด๋ณด๋‚ด๊ณ  FBXLoader๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค (R89)์—์„œ๋Š” ๋งค์šฐ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  67 ๋Œ“๊ธ€

์ด 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 ํฌ์ฆˆ ๋ชจ๋“œ --- ๋™์ผํ•œ ์™œ๊ณก
ํŽธ์ง‘ ๋ชจ๋“œ ๋‹ค์Œ ์˜ค๋ฅ˜ ๋กœ๊ทธ :

error

์ด ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ํŠธ๋ ˆ์ด์Šค ๋ฐฑ์˜ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด dev ์—์„œ ์ฐพ์€ ๊ฒƒ๊ณผ ๋™์ผํ•œ (์ตœ์‹ ) ๋ฒ„์ „์ด ์•„๋‹ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ์ž์‚ฐ์œผ๋กœ Scene ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ง€๊ธˆ์€ ๋‹จ์ผ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค (ObjectLoader๋Š” ์•„์ง ์Šคํ‚ค๋‹ ๋œ ๋ฉ”์‹œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค).

๊นจ์ง„ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ๊ด€ํ•œ ํ•œ; ๊นจ์ง„ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋ˆ„๋ฝ ๋œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋‚ด๋ณด๋‚ด๊ธฐ (์˜ˆ : https://github.com/mrdoob/three.js/issues/5582#issuecomment-73444737)๋ฅผ๋ฐ›๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์œผ๋ฏ€๋กœ FBX ๊ฐ€์ ธ ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ต์Šคํฌํ„ฐ์ธ์ง€ FBX ์ž„ํฌํŠธ์ธ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ผˆ์— ์ ์šฉํ•ด์•ผ ํ•  ๋ณ€ํ˜•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ์ง€๋งŒ ์•„์ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„๊ณผ ํ†ต์ฐฐ๋ ฅ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‹น์‹ ์€ dev์—์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ (์ตœ์‹ ) ๋ฒ„์ „์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ์ฆˆ์™€ ํœด์‹์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
"์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ต์…˜์€ ์ด์ œ ์‚ฌ์šฉ์ž๊ฐ€ POSE์™€ REST ์ค‘์—์„œ ์„ ํƒํ•ด์•ผํ•˜๋Š” ์—ด๊ฑฐ ํ˜•์ž…๋‹ˆ๋‹ค."

ObjectLoader๋Š” ์•„์ง ์Šคํ‚ค๋‹ ๋œ ๋ฉ”์‹œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—

๋‚ด ๊ฒฝํ—˜์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ ๊ทธ๊ฒƒ์€ ํ™” ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ฐ์ฒด ๋กœ๋”๊ฐ€์žˆ๋Š” ๊ธฐํ•˜ํ•™๊ณผ ์žฅ๋ฉด์„ threejs์—๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ค๋ฅ˜๋Š” Objectloader๋กœ ์ƒ์„ฑ๋˜๋ฉฐ ์ด์ „ Geometrie ๋‚ด๋ณด๋‚ด๊ธฐ์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
newerror

๊นจ์ง„ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๋ˆ„๋ฝ ๋œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ •๋ง ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...
๋”ฐ๋ผ์„œ ๋ชจ๋ธ์„ threejs๋กœ ๋‚ด๋ณด๋‚ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

mixamo์˜ ๋ชจ๋ธ ์ˆ˜์ถœํ’ˆ์œผ๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์ด ์ž‘๋™ํ•˜๋ฉด ๋ชจ๋“  mixamo ๋ชจ๋ธ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. (์ด๋ก ์— ์˜ํ•˜๋ฉด ;))

์–ด์จŒ๋“  ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•ด thx.

ํ˜„์žฌ ๋ฒ„์ „์˜ Blender์™€ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋งŒ ์žˆ๊ณ  ์žฅ๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์—†์œผ๋ฉด ํฌ์ฆˆ ๋ชจ๋“œ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

poseterror

๊ทธ๋ฆฌ๊ณ  ํœด์‹ ๋ชจ๋“œ

resterror

๊ตฌ๋ฉ ์žฅ๋ฉด์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒƒ ๊ฐ™์•„ ... ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ์ •์ ๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผˆ ์‚ฌ์ด์˜ ์ฐธ์กฐ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ... ๋ฉ”์‰ฌ์™€ ์Šค์ผˆ ๋ ˆํŠธ๊ฐ€ ๊บผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด ์Šค์ผˆ๋ ˆํ†ค์ชฝ์œผ๋กœ ๋ฉ”์‹œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์Šค์ผ€์ผ๋งํ•˜๊ณ  ํšŒ์ „์‹œํ‚จ ํ›„

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์—์„œ ์›๋ž˜ ์ƒ์„ฑ ๋œ ๋ชธ์ฒด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

tpose

๋”ฐ๋ผ์„œ ๋ณ€ํ™˜ ๋งคํŠธ๋ฆญ์Šค์—์„œ ์ •์ ๊ณผ ๋ผˆ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์ˆ˜ํ•™ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฒ„๊ทธ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์„ ํƒ์  ๊ธฐ๋Šฅ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์•„์ฃผ ์ž˜ ๊ณ ์น  ์ˆ˜ ์žˆ์ง€๋งŒ 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)๋ฅผ ์ข…๊ฒฐ ํ•œ ํŠธ๋ฆญ ์ค‘ ์ผ๋ถ€๋ฅผ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๋‚ด๋ณด๋‚ด๋ ค๋Š” ๋ชจ๋“  ๋ผˆ์— ํ‚ค ํ”„๋ ˆ์ž„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”์‹œ๋Š” 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 ์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํ•ด์–‘ ๋ธ”๋ Œ๋“œ๋ฅผ ์ƒˆ ๋‚ด๋ณด๋‚ด๊ธฐ์™€ ํ•จ๊ป˜ ๋‚ด๋ณด๋‚ด๋Š” ์ž‘์—…์ด

ํ•˜์ง€๋งŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋‚ด๋ณด๋‚ด๊ธฐ๋กœ ๋ชจ๋“  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค์Œ์— ์•Œ์•„๋‚ผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋œ ์˜ต์…˜์˜ ์Šคํฌ๋ฆฐ ์ƒท :
threejs-skelexport-marineoptions

@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 ํŒ€ ์ฑ„๋„์„ ์„ค์ •ํ–ˆ์ง€๋งŒ ๊ด€๋ จ ์„ธ ๊ฐ€์ง€ ๋ชจ๋“  ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ์ธ ํŒ€ ์ฑ„๋„์ด๋ฏ€๋กœ ์‚ฌ๋žŒ๋“ค์€ ์ดˆ๋Œ€๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ฐพ๊ณ  ์žˆ์–ด์š”:

  • ํŒŒ์ด์ฌ์„ ์•„๋Š” ์‚ฌ๋žŒ๋“ค
  • Blender์—์„œ ๋ฆฌ๊น…์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ์ดํ•ด๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค
  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฒฝํ—˜์ด์žˆ๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ์žฅ๋ฉด

์ด๊ฒƒ์€ ์—˜๋ฆฌํŠธ์ฃผ์˜์ ์ธ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๊ฐ„์ด ์ œํ•œ๋˜์–ด ์žˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ํŒŒ์ด์ฌ์ด๋‚˜ ๋ธ”๋ Œ๋”๋ฅผ ๊ฐ€๋ฅด ์น  ์ˆ˜์žˆ๋Š” ๋Œ€์—ญํญ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ดˆ๋ณด์ž์—๊ฒŒ ์นœ์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ์—‰๋ฉ์ด์—์„œ ๋œฏ์–ด ๋‚ด๊ณ  ๊ธฐ์—ฌํ•  ์œ ์šฉํ•œ ๊ธฐ์ˆ ์ด์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. IRC๋Š” ๋‚˜๋ฅผ ์งœ์ฆ๋‚˜๊ฒŒํ•˜๊ณ  ์‹ฌ์ง€์–ด github ์Šค๋ ˆ๋“œ๋Š” ํ˜‘์—…์„์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ Slack์„ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ํ›Œ๋ฅญํ–ˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๋Œ€๋ฅผ ์œ„ํ•ด ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค (๊ทธ๋ฆฌ๊ณ  github ํ•ธ๋“ค๋„ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค).
ed [dot] caspersen [at] gmail [dot] com

์ตœ์‹  ๋ธ”๋ Œ๋” API์˜ ๋ณ€๊ฒฝ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๋ฉ”์‹œ์—์„œ ์ž‘์—…์„ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์†์ƒ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€๋ณด๊ณ ์žˆ๋Š” ๋™์ž‘ (์™„์ „ํžˆ ํ™•์ธ๋˜์ง€ ์•Š์Œ)์€ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ์„ ํƒํ•œ ๋ฉ”์‹œ์˜ ๋ถ€๋ชจ ์ธ ๋ผˆ๋Œ€์—์„œ ์„ ํƒํ•œ ๋™์ž‘ ...
  2. ์„ ํƒ๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋™์ž‘ ํ‚ค ํ”„๋ ˆ์ž„์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ผˆ๋Œ€์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ 1 ๋‹จ๊ณ„์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋‹ค๋ฅธ ์•ก์…˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚ด๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค ... ๊ธฐ๊ฐ„์€ ์ •ํ™•ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์•ก์…˜ ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ Œ๋”์˜ ์ตœ๊ทผ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์•ก์…˜ ๋ณ€๊ฒฝ์ด ์‹ค์ œ๋กœ ์ ์šฉ ๋˜๋ ค๋ฉด ๋ผˆ๋Œ€๊ฐ€ 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 (๋ถ€๋ถ„ ์ˆ˜์ • ํฌํ•จ)๋Š” '๊ณจ๊ฒฉ ์• ๋‹ˆ๋ฉ”์ด์…˜ : ํฌ์ฆˆ'๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ๋ผˆ๋Œ€ ์ˆ˜์ • ์ž์—์„œ '๋ Œ๋” ์ค‘ ์ˆ˜์ • ์ž ์‚ฌ์šฉ'์„ ์„ ํƒ ์ทจ์†Œํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
image

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 ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค ... ์ž‘์€ ํŒŒ์ผ์„ ์–ป์—ˆ์ง€๋งŒ ์žฌ์ƒ์„ ์‹œ๋„ ํ•  ๋•Œ ์Šค์ผˆ๋ ˆํ†ค ๋ฐ”์ธ๋”ฉ์ด ๋ง๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค ... ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๋ฉ”์‹œ์— ๋ฐ”์ธ๋”ฉ ๋œ ํ•ด์–‘ ๋ธ”๋ Œ๋“œ ํŒŒ์ผ๋กœ ํ…Œ์ŠคํŠธ ์ค‘์ž…๋‹ˆ๋‹ค ...

image

์Šค์ผˆ ๋ ˆํƒˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ : ํœด์‹

image

์Šค์ผˆ ๋ ˆํƒˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ : ํฌ์ฆˆ

@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์— ์žˆ์–ด์š”!

๋งค์šฐ ๋ฉ‹์ง€๋‹ค ...์ด ์Šค๋ ˆ๋“œ์—์„œ ์–ป์„ ์ˆ˜์žˆ๋Š” ํ•œ, ๋Œ€๋ถ€๋ถ„์€ ํ•œ ์ค„๋กœ ์ˆ˜์ • ํ•œ ๋‹ค์Œ "ํœด์‹"๋ชจ๋“œ์˜ ๋ชจํ˜ธ์„ฑ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ... ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์‚ฌ๋ก€ ํœด์ง€ ๋ชจ๋“œ์— ์–ด๋–ค ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. .. ์•Œ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด ์ดํ•ด ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ...

ํŠน์ • ๋งํฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ด์ „ ๋ฌธ์ œ๋ฅผ ํŒŒํ—ค์ณ ์•ผํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋น ๋ฅธ ์‘๋‹ต์„ ์œ„ํ•ด ๋ถ„๋ฅ˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • r66 ์ฃผ๋ณ€์— REST ์‚ฌ์šฉ์—์„œ POSE ๋ชจ๋“œ ์‚ฌ์šฉ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๋ณ€๊ฒฝ ํ•œ ์ปค๋ฐ‹์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š”์ด์‹œ๊ธฐ์— ๋‚ด ์ž์‹ ์˜ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฒ„์ „์„ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด ์ง€๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์ด๋˜์—ˆ๊ณ , ๋‚ด ์›๋ž˜ ๋กœ์ง์„ REST ๋กœ์ง์—์„œ ๊ธฐ๋ฐ˜์œผ๋กœํ–ˆ์Šต๋‹ˆ๋‹ค.
  • r70์—์„œ ๊ด‘์‚ฐ์€ ๋Œ€์ฒด ์ˆ˜์ถœ์—…์ž์˜€์Šต๋‹ˆ๋‹ค.
  • ๋…ผ๋ฆฌ๋ฅผ POSE ์ง€์›์œผ๋กœ ๋Œ€์ฒด ํ•œ ๋‹ค์Œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋„๋Œ€์ฒด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 2 ์‚ฌ์ด์˜ ํ† ๊ธ€์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ ํ•ญ๋ชฉ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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) ์‹คํ–‰์— ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š์•„์•ผํ•œ๋‹ค๊ณ  ์–ด๋–ป๊ฒŒ ์ถ”์ธกํ•ฉ๋‹ˆ๊นŒ?
์ด ์˜ˆ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋งˆ์Œ์„ ์žƒ๊ณ 

๋‹ค์Œ์€ ๋ธ”๋ Œ๋”์˜ ๋ฆฌ๊น… ๋œ ๋ฉ”์‹œ์ž…๋‹ˆ๋‹ค.

blender-cycle

์—ฌ๊ธฐ threejs์— ์žˆ์Šต๋‹ˆ๋‹ค.

three-cycle

์ˆ˜์ถœ์—๋งŒ 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)์—์„œ๋Š” ๋งค์šฐ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰