Three.js: ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ฆฝ ํ‰๋ฉด

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

์‚ฌ์šฉ์ž ์ •์˜ ํด๋ฆฌํ•‘ ํ‰๋ฉด์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
openGL์—์„œ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

glClipPlane(GL_CLIP_PLANE0, planeEq);
glEnable(GL_CLIP_PLANE0);

webGL๋กœ ์–ด๋–ป๊ฒŒ ๋˜‘๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Question

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

๋งŽ์€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !!

๊ท€ํ•˜์˜ ์ œ์•ˆ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์žฌ๊ณ ํ•˜๊ฒŒ๋˜์—ˆ๊ณ  '์ผ๋ฐ˜์ ์ธ'์ง€์—ฐ์ด ์—†์—ˆ์ง€๋งŒ ๋‹ˆ์–ด ํด๋ฆฝ ํ‰๋ฉด์ด ๋ณ€๊ฒฝ ๋  ๋•Œ๋งŒ ๊นœ๋ฐ• ๊ฑฐ๋ฆผ (๋ฏธ๋Ÿฌ๋ง ๋œ ์นด๋ฉ”๋ผ ์œ„์น˜์™€ ๋น„๊ต ํ•œ ๋ฏธ๋Ÿฌ ์œ„์น˜)์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@WestLangley : ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋ฏธ๋Ÿฌ ์นด๋ฉ”๋ผ์˜ ํ–‰๋ ฌ์ด์ง€ ์นด๋ฉ”๋ผ ์ž์ฒด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ : ๋” ์ด์ƒ '์ง€์—ฐ'์—†์Œ : http://jsfiddle.net/slayvin/PT32b/2/ : smiley :

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ž์‹ ์˜ ๊ฐ์ฒด๋กœ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ƒ๊ฐ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” new THREE.mirror() ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ...

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

renderer.context WebGL ์ปจํ…์ŠคํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๊ฑฐ๊ธฐ์—์„œ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ๊ณผ WebGL ์‚ฌ์–‘์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค :)

์ตœ๊ทผ์— three.js์— ๋ฐ˜์‚ฌ ํ‰๋ฉด (์ผ๋ช… '๊ฑฐ์šธ': smile :)์„ ๊ตฌํ˜„ํ•˜๋Š” ๋™์•ˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ์ ์–ด๋„ ๋‹น์‹ ์ด ์„ค๋ช…ํ•œ '๊ฐ„๋‹จํ•œ'openGL ๋ฐฉ์‹์œผ๋กœ๋Š” WebGL๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํด๋ฆฌํ•‘ ํ‰๋ฉด์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
ํŠธ๋ฆญ์€ "Oblique View Frustum"๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์ด ๋ฐฉ๋ฒ•์€์ด ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. http://www.terathon.com/lengyel/Lengyel-Oblique.pdf
์ด ๋ฐฉ๋ฒ•์˜ ๋ชฉ์ ์€ ๋ฏธ๋Ÿฌ ๋œ ์นด๋ฉ”๋ผ ์ ˆ๋‘์ฒด์˜ ๊ฐ€๊นŒ์šด ํด๋ฆฝ ํ‰๋ฉด์„ ๋ฐ˜์‚ฌ ํ‘œ๋ฉด์— ์˜ํ•ด ์ •์˜ ๋œ ํ‰๋ฉด์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ œ๊ณต๋œ ์†Œ์Šค ์ฝ”๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค (C ++๋กœ ์ œ๊ณต) : http://www.terathon.com/code/oblique.html

๋‚˜๋Š” ๊ทธ ๋ฐฉ๋ฒ•์„ three.js์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ํฌํŒ…ํ–ˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์— ์ด๊ฒƒ์„ ๋ผ์ด๋ธŒ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์ƒ˜ํ”Œ ์žฅ๋ฉด์ด ์žˆ์Šต๋‹ˆ๋‹ค : http://jsfiddle.net/slayvin/PT32b/

๋‚จ์€ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” renderTarget์ด ํ”„๋ ˆ์ž„ ๋’ค์— ๋ Œ๋”๋ง๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค! ์ด๋กœ ์ธํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์›€์ง์ผ ๋•Œ์™€ ๊ฑฐ์šธ์ด ๋‹ค๋ฅธ ๋ฌผ์ฒด๋ฅผ ํ†ต๊ณผ ํ•  ๋•Œ ์•ฝ๊ฐ„์˜ ๊นœ๋ฐ• ๊ฑฐ๋ฆผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ผ์ข…์˜ ๋‹ค์ค‘ ๋ฒ„ํผ๋ง ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ ์ ˆ๋‘์ฒด๋ฅผ ์ˆ˜์ • ํ•œ ํ›„ ์นด๋ฉ”๋ผ ๋งคํŠธ๋ฆญ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์Œ ... scene.autoUpdate ๋ฅผ false ํ•˜๊ณ  scene.updateMatrixWorld() ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜์—ฌ ๋ชจ๋“  ๋ Œ๋”๋Ÿฌ๊ฐ€ ๋™์ผํ•œ ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ... ๊ฑฐ๊ธฐ์—์„œ ํšŒ์ „์„ ์ถ”์ถœํ•˜๊ธฐ ์ „์— mirror.updateMatrix() ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

๊ทธ๋ž˜๋„ ๊ฝค ๋ฉ‹์ง€๋‹ค! ์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ž์‹ ์˜ ๊ฐ์ฒด๋กœ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ.

๋˜ํ•œ ๊ด€๋ จ ํ–‰๋ ฌ์ด ์ตœ์‹ ์ธ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ฐ์ด ๊ฑฑ์ •๋˜๋ฉด ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์—…๋ฐ์ดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๋น ๋ฅด๊ฒŒ ํ™•๋Œ€ / ์ถ•์†Œ ํ•  ๋•Œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

mirror.updateMatrixWorld();

camera.updateMatrixWorld();

camera.matrixWorldInverse.getInverse( camera.matrixWorld );

๋งŽ์€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !!

๊ท€ํ•˜์˜ ์ œ์•ˆ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์žฌ๊ณ ํ•˜๊ฒŒ๋˜์—ˆ๊ณ  '์ผ๋ฐ˜์ ์ธ'์ง€์—ฐ์ด ์—†์—ˆ์ง€๋งŒ ๋‹ˆ์–ด ํด๋ฆฝ ํ‰๋ฉด์ด ๋ณ€๊ฒฝ ๋  ๋•Œ๋งŒ ๊นœ๋ฐ• ๊ฑฐ๋ฆผ (๋ฏธ๋Ÿฌ๋ง ๋œ ์นด๋ฉ”๋ผ ์œ„์น˜์™€ ๋น„๊ต ํ•œ ๋ฏธ๋Ÿฌ ์œ„์น˜)์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@WestLangley : ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ๋ฏธ๋Ÿฌ ์นด๋ฉ”๋ผ์˜ ํ–‰๋ ฌ์ด์ง€ ์นด๋ฉ”๋ผ ์ž์ฒด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ : ๋” ์ด์ƒ '์ง€์—ฐ'์—†์Œ : http://jsfiddle.net/slayvin/PT32b/2/ : smiley :

์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ž์‹ ์˜ ๊ฐ์ฒด๋กœ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ƒ๊ฐ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” new THREE.mirror() ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ...

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