Three.js: ๋‚ด ๊ฐœ์ฒด์˜ ํ”ผ๋ฒ— ์ ์„ ๋ณ€๊ฒฝ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

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

๋‚˜๋Š”์ด ๋ถ„์•ผ์—์„œ ์•„์ฃผ ์ƒˆ๋กญ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์ด ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์ด๋ผ๋ฉด ๋ณ€๋ช…ํ•˜๋ผ.

๋‚ด ๋ฌธ์ œ:

ํ”„๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค (ํด๋ฆฌ๊ณค์€ 24 ๊ฐœ์˜ ํ‰๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋จ). ๊ทธ๋ž˜์„œ ์ €๋Š” 24 ๊ฐœ์˜ ํ‰๋ฉด์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ๋“ค ๋ชจ๋‘๋Š” ์„œ๋กœ 15 ยฐ ๊ฐ๋„๋กœ ๊ทธ๋ฃนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. x์™€ z ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ํ”ผ๋ฒ— ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋” ์‰ฌ์šธ๊นŒ์š”? ๊ถŒ๋ฆฌ? ํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ? ์•„๋‹ˆ๋ฉด ํ‰๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋œ ์›์„ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ํ•˜์ฐฎ์€ ์˜์–ด ์‹ค๋ ฅ์— ์ฃ„์†กํ•˜๋‹ค๋Š” ๋ง์”€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค :-/

Question

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

๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ์ •์  ์˜คํ”„์…‹ :

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

ํ”ผ๋ฒ— ์—ญํ• ์„ ํ•  ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

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

๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ์ •์  ์˜คํ”„์…‹ :

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

ํ”ผ๋ฒ— ์—ญํ• ์„ ํ•  ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

geometry.applyMatrix (new THREE.Matrix4 (). setTranslation (0, 10, 0));

์ง€๊ธˆ

geometry.applyMatrix (new THREE.Matrix4 (). makeTranslation (0, 10, 0));

https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834

applyMatrix makeTranslation ์ผ์ด ์ œ ๊ฒฝ์šฐ์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
ํ”ผ๋ฒ— ๊ฐœ์ฒด๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. IMHO๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.
๋…ธํŠธ:
์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค

mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;

๋Œ€์‹ ์—:

mesh.position.set(###,###,###);

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @placegraphichere , ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์›ํ•œ๋‹ค๋ฉด ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด three.js v78์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์‹ฌ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฐœ์ฒด ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค.

.js mesh.geometry.translate( -myObjectWidth/2, 0, 0 );

๊ทธ๋Ÿฌ๋‚˜ geometry.translate() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ •์ ์˜ ์œ„์น˜๊ฐ€ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ํ”ผ๋ฒ—์„ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ด์—†๋Š” ํ•œ ์ข‹์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๋ฉ”์‹œ (3d ์ƒ์ž ์ปจํ…Œ์ด๋„ˆ) ์›์ ์„ ์ค‘์•™์—์„œ ์™ผ์ชฝ ํ•˜๋‹จ ๋ชจ์„œ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ ๋ฉ”์‰ฌ ์•ˆ์— ๋‹ค๋ฅธ ์ž‘์€ ๋ฉ”์‰ฌ ์ƒ์ž๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๋Š” ๋Œ€์‹  ์™ผ์ชฝ ํ•˜๋‹จ ๋ชจ์„œ๋ฆฌ์— ๋ฐฐ์น˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

mesh.geometry.translate (-myObjectWidth / 2, 0, 0);

์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฉ”์‰ฌ ์œ„์น˜๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

@imguccho ์ œ๋ฐœ, ํฌ๋Ÿผ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„์›€์„ ๋ฐ›์œผ์„ธ์š” .

ArrowHelper์˜ ํฌ์ธํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฒˆ์—ญ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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