PerspectiveCamera์ PointsMaterial์ ์ฌ์ฉํ๋ ์ผ๋ถ Points๋ฅผ ํฌํจํ๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํฌ๊ณ ๋ณต์กํ ๋ชจ๋ธ์ ๋ณผ ์ ์๋๋ก OrbitControls.js์ ์ฌ์ฉ์ ์ง์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ ์ค ํ๋๋ ์ค ๊ธฐ๋ฅ์ด ์นด๋ฉ๋ผ๋ฅผ ๋ ๊ฐ๊น์ด ์ด๋ํ๋ ๋์ ์นด๋ฉ๋ผ์ FOV๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ ๋๋ค. ์นด๋ฉ๋ผ๊ฐ ์์ง์ฌ ๋ชจ๋ธ์ ํน์ ๋ถ๋ถ์ ๋ณด์ฌ์ค๋๋ค. ์นด๋ฉ๋ผ๊ฐ ๋ชจ๋ธ์ ๋ ๊ฐ๊น์ ์ง ๋ PointsMaterial ๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์ง๋ง FOV๊ฐ ๋ณ๊ฒฝ ๋ ๋๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
ํฌ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ด FOV๊ฐ ์๋ ์นด๋ฉ๋ผ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๊น? ๋๋ ์ ์์ด ์ ์ฅ์์ ๊ฒ์ ํ ์ ์ด ์์ผ๋ฏ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๋์น ๊ฒฝ์ฐ ์ค๋กํฉ๋๋ค. IE๋ก ํ ์คํธ๋ฅผ ์๋ํ์ง๋ง ํ์ฌ ํ์ด์ง๋ฅผ๋ก๋ ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ ํํ ์ด๋ค ๋ฒ์ ์ Three์ธ์ง ํ์คํ์ง ์์ง๋ง ์๋ ์ ์์ต๋๋ค.
PointsMaterial์ ์์ฑํ๋ ์ฝ๋ :
var texFlame = new THREE.TextureLoader().load("textures/flame.png");
mtlFlame = new THREE.PointsMaterial ({size: 2, sizeAttenuation: true, color: 0xffffff, transparent: true, blending: THREE.AdditiveBlending, depthWrite: false, map: texFlame});
FOV๋ฅผ ๋ณ๊ฒฝํ๋ ์ฝ๋๋ ๋น์ทํ๊ฒ ํฅ๋ฏธ๋กญ์ง ์์ต๋๋ค.
this.camera.fov = fov;
this.camera.updateProjectionMatrix ();
์ด๊ฒ์ด ํ๋์จ์ด์ ๊ด๋ จ๋ ๊ฒ์ธ์ง๋ ๋ชจ๋ฅด์ง๋ง ๊ทธ๋ด ๊ฒ ๊ฐ์ง๋ ์์ต๋๋ค. Windows 10์์ GeForce GTX950์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
PointsMaterial.size
์๋ ์ธ๊ณ ๋จ์๊ฐ ์๋ ํฝ์
๋จ์๊ฐ ์์ต๋๋ค. ํฌ๊ธฐ๋ฅผ ์ง์ ์กฐ์ ํด์ผํฉ๋๋ค.
์ด ๊ด๋ จ ๊ฒ์๋ฌผ์ ์ ์ต ํ ์ ์์ต๋๋ค : https://github.com/mrdoob/three.js/issues/10385#issuecomment -267789138.
gl_PointSize
์ ์ ํ ๋ ์ ์์ผ๋ฏ๋ก ์์ฒญํ ํฌ๊ธฐ๊ฐ ์ํ๋ ํฌ๊ธฐ๊ฐ ์๋ ์ ์์ต๋๋ค.
@WestLangley. FOV๋ฅผ ๋ณ๊ฒฝํ ๋ PointsMaterial์ ํฌ๊ธฐ ์์ฑ์ ๋ณ๊ฒฝํด์ผํฉ๋๊น?
๋ฌผ์ด๋ณด๊ธฐ ์ ์ ๊ทธ ๊ฒ์๋ฌผ์ ์ฐพ์์ง๋ง ์ ๊ทธ๋ ๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํฌ๊ธฐ๋ ํฝ์ ์ด์ง๋ง ๊ฐ์ ๋ ์ด๋ฏธ ์ฅ์น ํฝ์ ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ ํด๋น ํ๋ก์ธ์ค๋ ์ด๋ค ์๋ฏธ์์ FOV์ ๊ด๋ จ๋์ด์ผํ๋ ์๊ทผ๊ณผ ๊ด๋ จ๋์ด์ผํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ด ์์ ์ ์ดํด ๋ถ์กฑ์ ์ค๋ช ํ๋ ๊ฒ์ ๋๋ค. ๋๋ ๋น์ ์ด ์ ๊ณตํ๋ ์๋ฃจ์ ์ ์๋ฒฝํ๊ฒ ๋ง์กฑํฉ๋๋ค. ๊ฐ์ฌ.
PointsMaterial.size
์ (๋) ํฝ์
๋จ์๋ก ์ ์ง ๋ ๊ฒ์ผ๋ก ์์ํ๋ฏ๋ก ์ฐธ์กฐ๋ฅผ ์ํด์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
์ด stackoverflow ๋ต๋ณ์ ๊ธฐ๋ฐ์ผ๋ก camera.fov
์ ํฉ๋ฆฌ์ ์ธ ๊ฐ์ ๋ํด ์๋ํ๋ ๋ค์ ํจํด์ ์ฌ์ฉํ์ฌ ํฌ์ธํธ๋ฅผ ํ์ฅ ํ ์ ์์ต๋๋ค.
var defaultSize = 10;
points.material.size = defaultSize / Math.tan( ( Math.PI / 180 ) * camera.fov / 2 );