Three.js: ๋ ˆํ‹ฐ ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ ํ…์Šค์ฒ˜๋ฅผ ์„ ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

๊ทธ๋ž˜์„œ ๋ฐฉ๊ธˆ ๋žฉํ†ฑ์„ ๋ ˆํ‹ฐ ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด ๋งฅ๋ถ์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์œผ๋ฉฐ ๊ณ ํ•ด์ƒ๋„ ํ…์Šค์ฒ˜๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋งค์šฐ ํ๋ฆฟํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

Question

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

์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋‹ต์„ ์ฐพ์œผ๋ ค๊ณ  ๊ฑฐ์˜ ํ™”๊ฐ€ ๋‚ฌ๊ณ  Google์ด ๊ณ„์† ์ €๋ฅผ ์—ฌ๊ธฐ๋กœ ๊ฐ€์ ธ ์™”๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ €๋„ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ €์—๊ฒŒ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ devicePixelRatio ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋Ÿฌ์—์„œ

renderer.setPixelRatio(window.devicePixelRatio ? window.devicePixelRatio : 1);

_ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ devicePixelRatio ์„ค์ •์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒŒ๋ ˆ์ผ๊นŒ์š”? _

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

์ด๋ฐฉ์„ฑ์€ ์•„๋งˆ๋„ ๋‹น์‹ ์ด ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
http://mrdoob.github.com/three.js/examples/webgl_materials_texture_anisotropy.html

์ข‹์•„ ์ด๊ฒƒ์€ ๋ฐ˜๋ณต๋˜๋Š” ํ…์Šค์ฒ˜์— ๋Œ€ํ•œ ๋‚ด ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. :) ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ํ…์Šค์ฒ˜์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋งˆ๋„ ๋‘ ํ…์Šค์ฒ˜์˜ ๊ฑฐ๋“ญ ์ œ๊ณฑ์ด์–ด์•ผํ•ฉ๋‹ˆ๊นŒ?

๊ธ€์Ž„, ํ…์Šค์ฒ˜์˜ ํ•ด์ƒ๋„๋ฅผ ๋†’์ด๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ฐœ์„ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฆ๊ฐ€ ๋œ ๋ฐ€๋„๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹ค์ œ๋กœ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„, ํ…์Šค์ฒ˜๊ฐ€ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฉด์˜ ์ ์ ˆํ•œ ํ”ฝ์…€ ํฌ๊ธฐ๋กœ ์ถ•์†Œ๋˜๊ณ  ์žˆ์ง€๋งŒ ๋””์Šคํ”Œ๋ ˆ์ด์˜ ๋ฐ€๋„์— ๋งž๊ฒŒ ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ๋‹ค์‹œ ํ™•์žฅ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋˜๋Š” ํ…์Šค์ฒ˜๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ์ด๋ฐฉ์„ฑ์„ ์ตœ๋Œ€๋กœ ์„ค์ •ํ•˜๋Š” ๋™์•ˆ ํ’ˆ์งˆ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์ง€๋งŒ ํ…์Šค์ฒ˜๊ฐ€ ์—ฌ์ „ํžˆ ์„ ๋ช…ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ๋‚˜ ์ ์–ด๋„ ์Šคํฌ๋ฆฐ ์ƒท์„ ๋ณด์ง€ ์•Š๊ณ ๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋งํ•˜๊ธฐ๋Š” ์–ด๋ ต์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด๋ณด๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

http://www.khronos.org/webgl/wiki/HandlingHighDPI

๋ฉ‹์ง„ ๋งํฌ @alteredq ! ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ด์ œ ์„ ๋ช… ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. :)

์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋‹ต์„ ์ฐพ์œผ๋ ค๊ณ  ๊ฑฐ์˜ ํ™”๊ฐ€ ๋‚ฌ๊ณ  Google์ด ๊ณ„์† ์ €๋ฅผ ์—ฌ๊ธฐ๋กœ ๊ฐ€์ ธ ์™”๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ €๋„ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ €์—๊ฒŒ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ devicePixelRatio ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋Ÿฌ์—์„œ

renderer.setPixelRatio(window.devicePixelRatio ? window.devicePixelRatio : 1);

_ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ devicePixelRatio ์„ค์ •์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒŒ๋ ˆ์ผ๊นŒ์š”? _

_ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ devicePixelRatio ์„ค์ •์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒŒ๋ ˆ์ผ๊นŒ์š”? _

๊ทธ๊ฒƒ์€ ์–ผ๋งˆ ์ „์— ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@mrdoob , @greggman : ์ฐธ๊ณ ๋กœ, renderer.setPixelRatio _before_๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ renderer.setSize ๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ „ํ˜€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@mietek ์‚ฌ์‹ค,์ด ๋ฌธ์ œ๊ฐ€ ์ด๋ฏธ dev ์‹ค์ˆ˜๋กœ ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ...

renderer.setSize๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— renderer.setPixelRatio๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ „ํ˜€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„์›€์ด๋˜์ง€๋„ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌํŒŒ๋ฆฌ ์ฝ˜์†”์—์„œ ์–ป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

screen shot 2016-01-24 at 19 15 50

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ipad์—์„œ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์ž…๋‹ˆ๋‹ค :

screen shot 2016-01-24 at 19 21 05

๋ณด์‹œ๋‹ค์‹œํ”ผ ์ง์‚ฌ๊ฐํ˜•์€ ์˜ฌ๋ฐ”๋ฅธ ํฌ๊ธฐ๋กœ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ ๋ทฐํฌํŠธ๋Š” 2 ๋ฐฐ ๋” ํฝ๋‹ˆ๋‹ค.

dpr = 2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋กฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ์ œ๋Œ€๋กœ ๋ณด์ด์ง€๋งŒ ipad์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@makc ๋‹น์‹ ์€ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

[์‚ญ์ œ๋จ]

๋‹ค๋ฅธ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ...

screen shot 2016-01-24 at 19 12 49

Safari์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ style="width: 418px ๋ฅผ style="width: 408px ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค๊ฐ€ ์›๋ž˜๋Œ€๋กœ ๋˜๋Œ ๋ ธ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌผ๊ฑด์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๋‹ค๋ฅธ CSS ๊ทœ์น™์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๊ฑด์„ ์•ž๋’ค๋กœ ๊ธฐ์šธ์ด๋ฉด์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

        setTimeout (function () {
            renderer.domElement.style.width = (parseInt (renderer.domElement.style.width) - 1) + 'px';
            setTimeout (function () {
                renderer.domElement.style.width = (parseInt (renderer.domElement.style.width) + 1) + 'px';
            }, 0);
        }, 0);

์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ธฐ ๋ณด๋“œ๋กœ ...

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