์๋ ํ์ธ์ ์ ๋ ์ปค์คํ ์ ฐ์ด๋๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋๋ฐ ๋จธํฐ๋ฆฌ์ผ์ด ์๋ ๋ฒํ ์ค ์์น ๋ง ์์ ํ๊ณ ์ถ์ต๋๋ค. MeshLambert๋ ์ด๋ฏธ ๋น, ์ง๊ฐ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์์ง๋ง ์ ์ ์ ์์ ํ๋ฉด ๊ฐ์ฒด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ๋ณด์ ๋๋ค.
๋๊ตฐ๊ฐ ๋์๊ฒ ๋ฐฉํฅ์ ์ค ์ ์์ต๋๊น?
๊ฐ์ฌ !!
์ด๋ค ์ฌ๋?
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ์ ์
ฐ์ด๋์ ์ฌ์ฉ์ ์ง์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ lambert์ ๊ฐ์ ์ฌ์ฉ์ ์ง์ ShaderMaterial
๋ง๋๋ ๊ฒ์
๋๋ค.
๋ด๋ถ์ ์ผ๋ก ํ์ค ๋จธํฐ๋ฆฌ์ผ์ ShaderMaterial๊ณผ ๋๊ฐ์ ๊ธฐ๊ณ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ฌ๊ธฐ์์ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLShaders.js#L1187
์๋ ํ์ธ์ @alteredq ์๋ต
์ด๊ฒ์ด ๋น์ ์ด ์ธ๊ธ ํ ๊ฒ์
๋๊น?
http://www.interactiveuniverse.net/Shaders.js
lambert ์ ฐ์ด๋์์ ์ ๊ณต๋๋ ๋ฐฐ์ด์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ ShaderMaterial ์ธ์คํด์ค๋ก ์ ๋ฌํฉ๋๋ค.
๊ทธ๋ ๊ฒํ๋ฉด ํฌ์ธํธ ๋ผ์ดํธ์ ์ํฅ์๋ฐ์ง ์๊ณ ๊ฒ์ ์ ์ฌ์ง์ด๋ฉ๋๋ค.
๊ฑฐ์ ๋ค ์์ด ;)
ํ์ค ์ฌ์ง์ ๊ธฐ๋ฅ์ด ShaderMaterial
ํ๋ ค๋ฉด ์ฌ์ง ํ๋๊ทธ (๋ผ์ดํธ, ์๊ฐ ๋ฑ)๋ ์ค์ ํด์ผํฉ๋๋ค.
https://github.com/mrdoob/three.js/blob/master/src/materials/ShaderMaterial.js#L40
shaderMaterial = new THREE.ShaderMaterial( {
uniforms: uniforms,
vertexShader: vertexShader,
fragmentShader: fragmentShader,
lights: true
});
์๋ํ์ต๋๋ค !!! ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ์์ ์ด ๋๋๋ฉด ์ฌ๋ฌ๋ถ๋ค๊ณผ ๋๋๊ฒ ์ต๋๋ค.
@alteredq ์ ๋ง์ง๋ง ์ง๋ฌธ์ ๊ฐ์ฒด์ ํ๊ฒฝ ๋งต์ ์ฌ์ฉํ์ฌ ํ ์ค์ฒ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ์์ต๋๋ค. MeshLambertMaterial์ ํฌํจ ๋ ์ด๋ฌํ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํฉ๋๊น?
ํ . ์ ์ ํ uniform ( envMap
)์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํด์ผํ๋ฉฐ ๋ฒํ
์ค ๋ฐ ํ๋๊ทธ๋จผํธ ์
ฐ์ด๋ #define USE_ENVMAP
๋ชจ๋ ์๋จ์ ๊ณ ์ ํด์ผํฉ๋๋ค.
uniforms[ "envMap" ].texture = myCubeTexture;
vertexShader= [
"#define USE_ENVMAP",
"varying vec3 vLightWeighting;",
THREE.ShaderChunk[ "map_pars_vertex" ],
THREE.ShaderChunk[ "lightmap_pars_vertex" ],
...
fragmentShader = [
"#define USE_ENVMAP",
"uniform float opacity;",
...
์ ฐ์ด๋์์ ์ ์ ์์น๋ฅผ ์์ ํ๋ฉด ์ ์ ์ง์ค๋ฉํธ๋ฆฌ์์ ๋์ค๋ ๋ฒ์ ์ด ๋ ์ด์ ์ ํํ์ง ์๊ณ ๋ชจ๋ ๊ฒ์ด ์ฌ์ ํ ์ด์ ์์น์ ๋ฐ๋ผ ์์ ์ฒ๋ฆฌ๋๋ค๋ ์ ์ ์ ์ํ์ญ์์ค.
๊ทธ๊ฒ์ ์ผํ๋ค : D
์ฌ๋ฌ๋ถ์ ์ ๋ง ๋๋์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด์์ํ๋์ง๋ณด๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ณง ํ๋ก์ ํธ๋ฅผ ์๋ฃ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค (์ด๋ ์ ๊ฐ์ธ ํฌํธํด๋ฆฌ์ค์ด๋ฉฐ ์น ์์ผ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ์ธํฐํ์ด์ค์์ ์ฌ์ฉ์๋ฅผ ๊ตฌ์ฒด์ ์ฐ๊ฒฐํ๊ณ ์์ต๋๋ค. (๊ฐ๊ฐ ๋ค๋ฅธ ํ๋ก์ ํธ) ์ฌ์ฉ์๋ ๊ณต๊ฐ์ ํ์ํ๊ณ ๊ฐ ์ฌ์ฉ์๋ ๋ด ์์ ์ ๊ฐ๋ก ์ง๋ฌ ์์ง์ด๋ ๋ค๋ฅธ ๋์ ํฌ์ธํธ ๋ผ์ดํธ์ ๋๋ค.
์์ง์ ๊ฝค ๊ธฐ๋ฅ์ ์ ๋๋ค. ์ด์ ๋ ๋ง์ ๊ฒ์ ๋์์ธํด์ผํฉ๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@maurrubio ํ๋ก์ ํธ๋ฅผ ๋ง์ณค์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@maurrubio ํ๋ก์ ํธ๋ฅผ ๋ง์ณค์ต๋๊น?