ããããã§ã«èšç»ãããŠããæ©èœãªã®ããå®æããæ©èœãªã®ãããããªãã®ã§ãæåã«ã¿ã¹ã¯ã«ã€ããŠèª¬æããŸãã
éšå±ããšã«éžæçãªç §æãè¡ãå¿ èŠããããŸãã ããšãã°ãç§ã«ã¯2ã€ã®éšå±ããããŸãã 1ã€ã®ã©ã€ãã¯ã1ã€ã®éšå±ã®ãªããžã§ã¯ããšå å£ã«ã®ã¿åœ±é¿ãäžããå¿ èŠããããŸãã 2çªç®ã®éšå±ã¯ãã®å ã®åœ±é¿ãåããŠã¯ãããŸããã
çŸåšãã·ãŒã³ã«ã©ã€ããè¿œå ãããšããã®è·é¢ã«ãããã¹ãŠã®ãªããžã§ã¯ãã«åœ±é¿ããŸãã ãããŠã2çªç®ã®éšå±ã®ãå£ãéã£ãŠãå ãå ¥ããšå¥åŠãªå¹æãåŸãããŸãã
ã§ããããããå æºã®åœ±é¿ãåãããªããžã§ã¯ããšå¥ã®å æºã®åœ±é¿ãåãããªããžã§ã¯ããèšå®ã§ããããã«ãç §æã«ã¯äœããã®ã°ã«ãŒããŸãã¯ãã£ãã«ãå¿ èŠã ãšæããŸãã
ã©ã€ãã«ããªããžã§ã«ããããããã®ã¯èŠåœãããªãã®ã§ãããæ©èœãããããªããšæããŸããã
ãããŠããšããã§ããŸã å®è£ ãããŠããªãå Žåãthree.jsã®çŸåšã®ç¶æ ã䜿çšããŠãã®ãããªã¿ã¹ã¯ã解決ããããã®æšå¥šãããã¢ãããŒãã¯äœã§ããïŒ
ç§ãèšã£ãŠããããšã¯åºæ¬çã«æã£ãŠããchannel
ã§ãã£ãŒã«ããTHREE.Light
ãšlightChannel
ãã£ãŒã«ãTHREE.Mesh
ãŸãã¯ãã®ãããªäœãã åŸè
ãnullã®å Žåããã¹ãŠã®å
æºã®åœ±é¿ãåããŸãã åŸè
ãnullã§ãªãå Žåã¯ãåãå€ã®å
ãã£ãã«ã®ã¿ã«åœ±é¿ããŸãã
ãŸãã¯ãã¡ãã·ã¥èªäœã§ã¯ãªããã¡ãã·ã¥ãžãªã¡ããªã®é¢ãåé¢ããããã«è¿œå ããããšãã§ããŸãã
圱ã䜿ãããããã§ããã
ãŸããç§ã¯åœ±ã§ãã®ãããªããšãéæããããšãã§ããŸããïŒãããŠç§ã¯ãã§ã«è©ŠããŸããïŒããããã¯ç°ãªãå¯äœçšãäžããããã€ãã®ãªããžã§ã¯ããç §ãããŠãããããã«åœ±ãèœãšãå¿ èŠããªãã®ã§ãããã¯ããã¯ã ãšæããŸãã ããããç«ãã€ããŠã¯ãããŸããã
ç§ãå¿ èŠãšããŠããã®ã¯ãç¹å®ã®å æºãã¡ãã·ã¥ã®1ã€ã®ã»ããã«åœ±é¿ãäžããã®ã§ã¯ãªããä»ã®ã»ããã«åœ±é¿ãäžããããšã§ãã
éåžžãç§ã¯æ¬¡ã®ãããªææ³ã䜿çšããŠãããè¡ããŸãã
glEnable(GL_LIGHT0);
//...
glEnable(GL_LIGHTn);
// Draw the walls to room 1
DrawWalls(room[0]);
// Draw the contents of room 1
DrawContents(room[0]);
glDisable(GL_LIGHT0);
//...
glDisable(GL_LIGHTn);
// Draw the walls to room 2
DrawWalls(room[1]);
// Draw the contents of room 2
DrawContents(room[1]);
ãããã£ãŠãããã¯åãªã圱ãšã¯ç°ãªãæ©èœã®ããã«èŠããŸãã ãããšãç§ã¯äœãã足ããªãã®ã§ããïŒ
ã¯ã...ããã¯ç¢ºãã«äŸ¿å©ã ãšæããŸãã ãã ãããã®APIãã©ã®ããã«è¡šç€ºããããã¯ããããŸããã
ãã¶ããæãåçŽãªè§£æ±ºçãããã§æãå¹æçãããããŸããïŒ
channel
ïŒãŸãã¯group
ïŒãTHREE.Light
è¿œå ããŸãaffectedByLightChannel
ïŒãŸãã¯affectedByLightGroup
ïŒãTHREE.Mesh
è¿œå ããŸãïŒãŸãã¯ãžãªã¡ããªã®é¢ã«è¿œå ããããšãã§ããŸãïŒã©ãæããŸããïŒ
ãaffectedByLightChannelããé·ãããŠãlightChannelãã®ãããªãã®ã§ãããŸããŸãããã䟿å©ã ãšæããŸããå æºãšåä¿¡æ©ã®ãã£ã³ãã«çªå·ã ãã§ãã
ãã®ããã«ïŒ
light = new THREE.PointLight(0xFFF7D6, 1.0, 15)
light.channel = 123
testScene.add(light)
testScene = new THREE.Scene
geometry = new THREE.BoxGeometry(2,2,2)
material = new THREE.MeshLambertMaterial
color: 0xffffff
cube = new THREE.Mesh(geometry, material)
cube.lightChannel = 123
testScene.add(cube)
lightChannel
ã0ã«çããå Žåããã¹ãŠã®ãã£ãã«ã®åœ±é¿ãåããŸãã channel
ã0ã«çããå Žåããã¹ãŠã®ã¡ãã·ã¥ã«åœ±é¿ããŸãã
ãããã£ãŠãçŸåšã®åäœãšå®å šã«äžäœäºææ§ããããŸãã
ãããç解ããã®ã¯å°ãé£ãããããããŸãã...å€åããã¯ãã®ãããªãã®ã®æ¹ãè¯ãã§ãããïŒ
cube.lightInfluences = [ light1, light2 ];
ç§ã«ã¯çµ¶å¯Ÿã«åé¡ãªãããã§ãã
䜿çšããã®ãå°ãé£ããå ŽåããããããããŸããããæããã«ç解ããããã§ãã
ã¡ãã·ã¥ãšã©ã€ãã®åçŽãªæŽæ°ãã¹ã¯ããããã£ã¯ã©ãã§ããïŒ
light = new THREE.PointLight(0xFFF7D6, 1.0, 15)
light.mask = 0xffffffff; // default mask
testScene.add(light);
cube = new THREE.Mesh(geometry, material)
cube.mask = 0xffffffff; // default
testScene.add(cube);
ãªããžã§ã¯ãã¯ããã¹ã¯ã®è«çç©ããŒã以å€ã®å Žåã«ã®ã¿ã©ã€ãã§ç
§ããããŸãã
ããã«ããããªããžã§ã¯ãã«è¿œå ã®ã¡ãœãããè¿œå ããããšãªããã©ã€ããè€æ°ã®ãã£ãã«ã®åœ±é¿ãåããããšãã§ããŸãã
ãã¹ã¯ã®ããã©ã«ãã®0xffffffffã¯ãæ¢åã®ã³ãŒãã«åœ±é¿ãäžããŸããã
@ satori99ãèšã£ãããšã
ãã ãã mask
ã¯ã代ããã«Light
ãšMesh*Material
ããããã£ã§ããå¿
èŠããããšæããŸãã ïŒã©ã€ãã®åœ±é¿ãåãããããªã¢ã«ã®ã¿ãïŒ
ãŸããããããã£ã«ã¯ã lightMask
ã lightChannel
ããŸãã¯channel
ãšããååãä»ããããšãã§ããŸãã
ãã£ãã«/ãã¹ã¯ã¢ãããŒãã®åé¡ã¯ããŠãŒã¶ãŒããããåäœã®æäœãç解ããå¿ èŠãããããšã§ãã APIã®ä»ã®éšåãšæ¯èŒãããšãå°ã匷ãããŸãã
é åã¢ãããŒãã§ã¯ã§ããªããã¹ã¯ã§ã§ããããšã¯äœã§ããïŒ
äžèšã®2ã€ã®éšå±ã§ã®ã¿ã¹ã¯ã®äŸãæããããŸãã
ã¢ã¬ã€ã¢ãããŒãããããã£ãã«ã¢ãããŒãã䜿çšããäž»ãªãã€ã³ãã¯ãã¢ã¬ã€ã䜿çšããå Žåããlight1ãéšå±1ããéšå±2ã«ç§»åããããªã©ã®åçŽãªæäœãããè€éã«ãªãããšã§ãã
èšå®ããã ãã§ãªã
light1.channel = 2
ïŒä»¥åã¯1ã«èšå®ãããŠããŸããïŒ
以åã«lightInfluencesé åã«light1ããã£ãéšå±1ã®ãã¹ãŠã®ãªããžã§ã¯ããæ€çŽ¢ãããããã®é åããã©ã€ããåé€ããŠãããéšå±2ã®ãã¹ãŠã®ãªããžã§ã¯ãã«è¿œå ããå¿ èŠããããŸãã
ããªããžã§ã¯ã1ãéšå±1ããéšå±2ã«ç§»åãããã®ãããªç°¡åãªæäœã§åã話ã ãã®influenceChannelã1ãã2ã«èšå®ãã代ããã«ããã®éšå±ã®ãã¹ãŠã®ã©ã€ããèŠã€ããŠããã®åœ±é¿é åããããããåé€ãã次ã«éšå±2ã®ãã¹ãŠã®ã©ã€ããèŠã€ããŠè¿œå ããå¿ èŠããããŸãã
ãããã§ããªãããã§ã¯ãªãã®ã§ãlightInfluencesã®ã¢ãããŒãã¯ç§ã«ãšã£ãŠçµ¶å¯Ÿã«è¯ããšèšã£ãã®ã§ãã ãããããã£ãã«ã®ãã®ã¯ãäžè¬çãªæäœã1ã€ã®å²ãåœãŠãšåããããç°¡åã«ããããã«ãç§ããã®äžã«å®è£ ããæåã®ãã®ã«ãªããŸãã
ãã¹ã¯ãšããŠå®è£ ãã¹ãã ãšæããŸãã ïŒCPUã«å®è£ ãããŠãããGPUã«å®è£ ãããŠãããã¯ãåŸã§èª¬æããããã®åé¡ã§ããïŒ
èšå®æ¹æ³ãäŸã§ç€ºãããŠãŒã¶ãŒã¯ãã®ãã¿ãŒã³ã«åŸãããšãã§ããŸãã
ããã§ãè€éããããšæãããå Žåã¯ã THREE.Channels
APIãäœæã§ããŸãã
light.channels = new THREE.Channels();
...
light.channels.clear();
light.channels.add( channel );
light.channels.remove( channel );
light.channels.all();
Mesh*Material
ã«ã€ããŠãåãæ¹æ³ã§ãã
ç§ã¯ãã®APIã奜ãã§ã:)
ããã¯ãªããžã§ã¯ããã©ã€ãã§æ©èœããŠããããšãããããŸããããããªã¢ã«ã§ã¯ã©ã®ããã«æ©èœããŠãããšæããŸããïŒ
ææã ããå ã«åå¿ããŸãã ããã¯çŽ æã®ç¹æ§ã§ããå¿ èŠããããšæããŸãã
ç§ã¯ããã«@westlangleyã«åæããŸãã ã©ã€ãã¯çŽ æã«äŸåããŸãã
ããªããžã§ã¯ã1ãéšå±1ããéšå±2ã«ç§»åãããã®ãããªç°¡åãªæäœã§åã話ã
ãŸããããã¯åé¡ã§ãã Channels
ã¯ãªããžã§ã¯ãããŒã¹ã§ã¯ãããŸããã
ãŸããããã¯åé¡ã§ãã ãã£ãã«ã¯ãªããžã§ã¯ãããŒã¹ã§ã¯ãããŸããã
ãããããªãïŒ ããã¯æè¡çéçã§ããïŒ
ãªããªããããã¯ãã®ãã¹ãŠã®èãå šäœãç¡å¹ã«ããããã§ãã åããããªã¢ã«ãåå©çšããããŸããŸãªãªããžã§ã¯ããååšããå¯èœæ§ããããããäžæ¹ã¯ç¹ç¯ããããäžæ¹ã¯ç¹ç¯ããªãããã«ããå¿ èŠããããŸãã
ãããããªãïŒ ããã¯æè¡çéçã§ããïŒ
ãããããªããžã§ã¯ããã©ã€ãã«åå¿ããªãããã§ãã ææã ããããããŸãã
åããããªã¢ã«ãåå©çšããããŸããŸãªãªããžã§ã¯ããååšããå¯èœæ§ããããããäžæ¹ã¯ç¹ç¯ããããäžæ¹ã¯ç¹ç¯ããªãããã«ããå¿ èŠããããŸãã
ã·ãŒã³å
ã®ãã¹ãŠã®ãªããžã§ã¯ãã«åããããªã¢ã«ã䜿çšã§ããŸãããããªã¢ã«ã«ç°ãªãåäžãªå€ãå¿
èŠãªãªããžã§ã¯ãã®ãããªã¢ã«ã¯clone
ã ãã§ãã ãã¹ãŠã®äººãå
±æããã·ã§ãŒããŒããã°ã©ã ã¯1ã€ã ãã§ãã
ãã¹ã¯ãšããŠå®è£ ãã¹ãã ãšæããŸãã ïŒCPUã«å®è£ ãããŠãããGPUã«å®è£ ãããŠãããã¯ãåŸã§èª¬æããããã®åé¡ã§ããïŒ
ããã¯GPUã§çŽæ¥ç°¡åã«åŠçã§ããŸããïŒ
ããã¯GPUã§çŽæ¥ç°¡åã«åŠçã§ããŸããïŒ
ã¯ããã©ã€ããšãããªã¢ã«çšã«è¿œå ã®channels
ãŠããã©ãŒã ãæž¡ãå¿
èŠããããŸãã
ã¬ã€ã€ãŒç®¡çã·ã¹ãã ã¯ã©ãã§ããïŒ ã¡ãã·ã¥ãã¬ã€ã€ãŒã«ã°ã«ãŒãåãããããããã¹ã¯ãé©çšããŸãïŒã©ã€ããã·ã£ããŠãå¯èŠæ§ãªã©ã«åœ±é¿ãäžããå¯èœæ§ããããŸãïŒãçµ±äžã¯è¯ãäŸã§ããïŒ
圱ãé¢é£ãããã¯ã§ãã ã»ã¬ã¯ãã£ãã·ã£ããŠãã£ã¹ãã£ã³ã°ã®ãããªãã®ãããã¹ãã ãšæããŸãã 'receiveShadow = true'ã®ä»£ããã«ã 'receiveShadowFrom = ...'ïŒããã³ãœãŒã¹ã®ãªã¹ãïŒã®ããã«ã
ç¹å®ã®éšå±ã«ã®ã¿åœ±é¿ããã©ã€ããèšå®ãããšïŒç§ã®äŸã§ã¯ïŒããããã®ã©ã€ãããã®éšå±ã®ãªããžã§ã¯ãã«ã®ã¿åœ±ãèœãšãããã«ããå¿ èŠãããããã§ãã
ãã®ã¹ã¬ããã®äžèšãšåãçç±ã§ãã·ã£ããŠå±æ§ã¯å®éã«ã¯ãªããžã§ã¯ãã§ã¯ãªããããªã¢ã«ã«ããå¿ èŠããããŸãã
ãã®ã¹ã¬ããã®äžèšãšåãçç±ã§ãã·ã£ããŠå±æ§ã¯å®éã«ã¯ãªããžã§ã¯ãã§ã¯ãªããããªã¢ã«ã«ããå¿ èŠããããŸãã
ã¯ããããã¯çã«ããªã£ãŠããŸãïŒ
ãã®æ©èœãå«ããèšç»ã¯ãããŸããïŒæåã®ãã©ããã®èšç»ãããã¿ãŒã²ãããªãªãŒã¹ãªã©ïŒïŒ
åé¿çãšããŠãéšå±ïŒããã³ãã®ã©ã€ãïŒããšã«åå¥ã®ã·ãŒã³ãçšæããããšã§ãã»ãšãã©ã®èŠä»¶ãéæã§ããŸããïŒ
renderer.autoClear = false;
...
renderer.render( scene1, camera );
renderer.render( scene2, camera );
ããŒãããã®ã¢ãããŒããè©ŠããŠã¿ãŸãïŒ
éžæçãªç §æ/圱ã¯ãå°æ¥ã®ããŒãžã§ã³ã®IMOã§ã¯å¿ é ã§ãã
ããã¯BIG + 9999ã§ããããªã¢ã«ãå æºAãŸãã¯å æºBã®ã©ã¡ããã圱ãèœãšãããéžæã§ããããã«ããããšæããŸããçŸåšã2ã€ã®ã·ãŒã³ä»¥å€ã®è§£æ±ºçãæã£ãŠãã人ã¯ããŸããïŒ ããã¯ç§ã«ãšã£ãŠç©äºãããªãèŠçã«ããã§ããã...
ãªããŠãã£ããããã¯ãŸã å®è£ ãããŠããªãã®ã§ããïŒ ããŒãã³ãã+9999ã®åŸïŒ
ããç§ã®æšæž¬ã§ã¯ã @ tsoneãå®è£ ããã®ã¯æããŸããããã®ã³ãããã«é¢ããæ å ±ãæäŸã§ããŸããïŒ ä»é»è©±ã¯ã©ã€ã¢ã³ãã§ãã©ãŠãžã³ã°
ããããææã«æž¡ãããåãªããŠããã©ãŒã ã§ããå Žåãã©ã®ããã«å®è£ ããã®ãé£ããã§ããã 圌ããããªããã°ãªããªãã®ã¯ãwebglã¬ã³ãã©ãŒã®ã©ããã«ããããªã¢ã«ã§å®çŸ©ãããŠããã©ã€ãã®ãµãã¹ãã£ãã¥ãŒãã°ããŒãã«ãªã¹ããååšããå Žåã§ãã
ããã¯ãDevãã©ã³ãã®Layerså®è£
ããã¹ãããåçŽãªJSFiddleã§ãã
https://jsfiddle.net/Angrypickle/t8f7q3vo/4/
æ®å¿µãªãããçŸæç¹ã§ã¯ãæ£åžžã«æ©èœããŠããããã«ã¯èŠããŸããã ãããšãç§ã¯äœãééã£ãããšãããŠããŸããïŒ
ã¯ãã ã¬ã€ã€ãŒã¯ãŸã ã©ã€ãã§ã¯æ©èœããŸããã ãã ããã«ã¡ã©/ãªããžã§ã¯ãã§ã¯æ©èœããŸãã ð
ããžã£ãŒããµãŒïŒ ããã¯ããªãŒããŒã©ããããã«ã¡ã©ã䜿çšããŠã¬ã€ã€ãŒã䜿çšããéžæçãªç
§æãå®çŸãããæŽæ°ãããJSFiddleã§ãã
https://jsfiddle.net/Angrypickle/t4a1eusL/
ãã¹ã¯ããããšã¢ãã€ã«ã§æ£ããåäœããããã§ãã 誰ãããã®ã¢ãããŒãã§ã²ã©ãæªããã®ãèŠãŸããïŒ å°ãªããšãã©ã€ããã¬ã€ã€ãŒæ©èœã«çµã³ä»ãããããŸã§ã¯ïŒ
誰ãããã®ã¢ãããŒãã§ã²ã©ãæªããã®ãèŠãŸããïŒ
ãã¡ããæªãã§ãã ã·ãŒã³ãããã²ãŒãããåäžã®ã«ã¡ã©ãæã£ãŠããã®ã§ã¯ãªãã人ã
ã¯ä»ãããšãããªããã°ãªããªãã§ãããcamera1.add( camera2 );
ã€ãŸããç§ããããèŠããšãããã¯WTFã§ãã ã©ã®ãããªïŒ ç§ã®ã«ã¡ã©ã®ã«ã¡ã©ïŒ åå¥ã«ç
§æããå¿
èŠã®ããéšå±ãæ°åããå Žåã¯ã©ããªããŸããïŒ ã«ã¡ã©ã¯äœå°å¿
èŠã§ããïŒ ãããŠã¬ã€ã€ãŒ...æšæ¥ã¯ã¬ã€ã€ãŒããããŸããã§ããããããŠä»ç§ã¯ãããã«ã€ããŠl̲e̲a̲r̲n̲ããªããã°ãªã
èšããŸã§ããªããç§ã«ã¯ããã«å¯Ÿããå®ç§ãªè§£æ±ºçããããŸãã ããšãã°ãalternativa3dã®äººã ã¯ãã©ã€ãã®ããŠã³ãã£ã³ã°ããã¯ã¹ã«ãããã®ã«ã©ã€ããåœãŠãŠããŸããã ããã«ã¯ããšã³ããŠãŒã¶ãŒã«ãšã£ãŠæ¬¡ã®0ã®ã»ããã¢ãããšããå©ç¹ããããŸããããã©ã€ãéã®å¢çãæãã«ããå¿ èŠããããšããã©ãã©ã«ãªããŸããã ããããããã§ããå®éã®ãããžã§ã¯ãã§ãã®åé¡ãä»ãã解決ããå¿ èŠãããå Žåã¯ã䜿çšæžã¿ã®æšæºææãShaderMaterial-sã«åãåããããã«æäœæ¥ã§å¿ èŠãªã©ã€ããæž¡ãããšã解決ããå¯èœæ§ããããŸãã
@makcã¬ã€ã€ãŒã¯å®éã«ã¯éåžžã«ã·ã³ãã«ïŒãããŠåŒ·åïŒã§ãïŒ
@ Zob1ã®ã¢ãããŒãã¯ééããªãæ£ããã¢ãããŒãã§ã¯ãããŸããã ã¬ã€ã€ãŒãã©ã€ãã§ãæ©èœããããã«ãªããŸã§ãããã»ã©æéã¯ããããªãããšãé¡ã£ãŠããŸãã
ç§ãæ£ãããã©ããŒããŠããããšã確èªããããã ãã«ã¿ããªã åäžã®ã·ãŒã³ãšãã¡ã€ã³ãå æºããããšããŸãããã ãã®ææ³ã䜿çšããŠãç¹å®ã®ãããªã¢ã«ã§ãã®ã¡ã€ã³å æºãç¡èŠããå¥ã®å æºããã·ã£ããŠãæ圱ããããšã¯å¯èœã§ããïŒ
ãã®ããã«ã¯ããããªã¢ã«ã«ã¬ã€ã€ãŒãµããŒããè¿œå ããå¿ èŠããããŸãã
çŸæç¹ã§ã§ããããšã¯ãã«ã¡ã©ãããªããžã§ã¯ãã衚瀺/é衚瀺ã«ããããšã§ãã
ã²ãŒã ãå®è¡ããŠããŠããšãã£ã¿ãŒã§çã䜿çšããŠã³ã©ã€ããŒã衚瀺ãããšããŸãã ãããã®çäœã¯ã¬ã€ã€ãŒ1ã«èšå®ã§ããã«ã¡ã©ã®ãšãã£ã¿ãŒã§ã¯ã¬ã€ã€ãŒ0ãš1ãæå¹ã«ã§ããŸãããã²ãŒã ã«ã¡ã©ã¯ã¬ã€ã€ãŒ0ã«èšå®ã§ããŸãããããããšããšãã£ã¿ãŒã§ã¯ãã¹ãŠã®ãããŒã衚瀺ãããŸãããã²ãŒã ã§ã¯ãããã衚瀺ãããŸããè¡ã£ãŠããŸã£ãã
ãšãã£ã¿ãŒèªäœã«æ©èœãè¿œå ãããšãã¯ãã€ã§ããããã¯ããçã«ããªã£ãŠãããšæããŸãã ããããããã€ãã®äŸãè¡ãå¿ èŠããããŸãã
å³ïŒ ã€ãŸããåºæ¬çã«ç§ãããããã®ã¯ãThreeJSã®äžçã«2Dãã£ã©ã¯ã¿ãŒããããšããããšã§ãã ãããã®ãã£ã©ã¯ã¿ãŒã¯ãç°å¢ã®äžéšã§ãããã®ããã«èŠããããã«ãã¹ããããã·ã£ããŠãå¿ èŠã§ãã ç§ã¯çŸåšã足å ã«é 眮ãããéæãªé»ãåã®ãžãªã¡ããªãšãè§åºŠãä»ããŠæ©èœãããããã®ããªãããããŒãªãã®ã䜿çšããŠãããéæããŠããŸãã ããã§ããè€éãªè¡šé¢ã§ã¯ãŸã£ããæ©èœããŸããã
ç§ã®åœåã®ã¢ã€ãã¢ã¯ãç®ã«èŠããªãåã®ãžãªã¡ããªãåãã£ã©ã¯ã¿ãŒã®äžã«ããããŒããšããŠé 眮ããã·ãŒã³å šäœãã«ããŒããçäžãæãã©ã€ããäœæããããšã§ããã ãããã®ãããŒã¯ãã®å æºããã®ã¿åœ±ãèœãšããŸãããã·ãŒã³å ã®ä»ã®ãã¹ãŠã¯ãã¡ã€ã³ãå æºãã圱ãèœãšããŸãã
ãã®ã¢ã€ãã¢ãæ©èœããããã«ã¯ãã¬ã€ã€ãŒãå¿ èŠã ãšæããŸãããïŒ
ãããã®ãããŒã¯ãã®å æºããã®ã¿åœ±ãèœãšããŸãããã·ãŒã³å ã®ä»ã®ãã¹ãŠã¯ãã¡ã€ã³ãå æºãã圱ãèœãšããŸãã
以åã¯shadowOnly
ãªãã·ã§ã³ããããŸããããåé€ãããŸããã
FWIWã圱ãäœæããããã®ãã®ã¢ãããŒãããããŸã...
ãããã§ãshadowOnlyã¯å®éã«ã¯æ©èœããŸããããªããªãããããŒã¯äž¡æ¹ã®å æºãã圱ãèœãšãããã§ããäžæ¹ããã ã圱ãèœãšããŠã»ããã®ã§ãã
ç§ã¯ä»é»è©±ã§ãã®äŸããã§ãã¯ããŸãããææã«èŠããŸãã
ããŒãç·šéããŸããããã®çãã·ãŒã³å ã®äœçœ®ãå€æŽããå°é¢ã®ã¡ãã·ã¥ã®é«ããå€åããå Žåããã®åœ±ã¯å°é¢ã®è¡šé¢æ³ç·ãšæ£ããäžèŽããŸããïŒ
ããã...
ãããããæã£ãã ã¬ã€ã€ãŒãå¿ èŠã§ãïŒ ãã
ããã«ã¡ã¯@ rohan-deshpandeã
ã¯ãããŠãŒã¹ã±ãŒã¹ã§ã¯ãããçš®ã®ã¬ã€ã€ãŒãå¿ èŠã«ãªããŸãã ãã°ããåã«ã·ã£ããŠã¡ãã·ã¥æ©èœãå®è£ ããã®ã¯ç§ã§ãã ãããã¯åäžå¹³é¢ã®åœ±ã§ãããããå¹³ããªåºãŸãã¯å°é¢ãå«ãã·ãŒã³ã«äœ¿çšããããšãç®çãšããŠããŸããã ãã ããé«éã§å®äŸ¡ãªïŒãã ãæ£ããïŒåäžå¹³é¢ã·ã£ããŠãå¿ èŠãªå Žåãããã©ãŒãã³ã¹ã®é¢ã§ããããæã¡è² ããããšã¯å°é£ã§ãã ããããè¿œå ããçç±ã¯ãåçŽãªãã¢ã·ãŒã³ã§ããã·ã£ããŠãããã«ãã£ãŠãã¬ãŒã ã¬ãŒããå€§å¹ ã«äœäžããããã§ãã äžæ¹ãShadowmeshesã¯ãç§ã®é»è©±ã§ãé«éã«å®è¡ãããŸãã
ããªãã¯ããã§ãããã䜿çšããç§ã®ã²ãŒã ããã§ãã¯ããããšãã§ããŸãïŒ
https://github.com/erichlof/3dLightCycles
2ã€ã®ç°ãªããã¥ãŒããŒããä»ããŠã·ãŒã³ã2åã¬ã³ããªã³ã°ããŠããããã¹ãŠã®ã²ãŒã ãªããžã§ã¯ãïŒãµã€ã¯ã«ãšãã¬ã€ã«ãŠã©ãŒã«ïŒã«æ£ããã·ã£ããŠããããŸãã ããã¯ç§ã®ã¹ããŒããã©ã³ã§æ»ããã«åäœããŸããããã¯ããã¬ãŒã ããšã«2ã€ã®ã·ãŒã³ã¬ã³ããªã³ã°ã®ã·ã£ããŠãããã§ã¯äžå¯èœã§ãã
å°æ¥ã®ã¬ã€ã€ãŒã®ããã«ããã«+1 :)
@erichlofã²ãŒã ã¯ãiPhone6ã®ç·æ§ã§èŠãç®ãå®è¡ãåªããŠããŸãã
ããŠãç§ã¯ã¬ã€ã€ãŒãåŸ ã€ãšæããŸãã ãããŸã§ã¯ãç§ã®ããããŒãªãœãªã¥ãŒã·ã§ã³ã§ååã§ãã
ããã¿ããª
ããã¯å®è£
ãããŠããŸããïŒ
http://stackoverflow.com/questions/33689781/casting-shadows-based-on-a-specific-light?noredirect=1#comment55153706_33689781
ãããããŸã å®è£ ãããŠããŸããã ã¬ã€ã€ãŒãåŸ ã€ããITTã«ãªã¹ããããŠãããœãªã¥ãŒã·ã§ã³ã®1ã€ãè©Šãå¿ èŠããããŸãïŒããšãã°ãå¥ã®ã·ãŒã³ïŒã
åã³+99999
ããã¯ééããªãéåžžã«åœ¹ç«ã¡ãŸãã ããã§ã¬ã€ã€ãŒãæ©èœããããã«ãªããŸãããããã¯ããããæ¯ããŠãããã®ã®ããã§ãã ã ãããããã«ãã¬ã³ããªãŒãªãã³ãããããŸãã ;-)
@manthraxããããã§ãã¯ããŠãã ããïŒ
åã³+99999
ç§ã¯ããã倧奜ãã§ãã åã¢ãã¿ãŒãæãè¿ãã©ã€ãã ãã§ç §ããããŠããç¶æ³ããããã·ãŒã³ã«äœåãã®ã©ã€ããå ¥ããããšãã§ããã®ã§ãã¢ãã¿ãŒããšã«1ã€ã®ã©ã€ããæå®ãããšäŸ¿å©ã§ãã
ããã«ã¡ã¯ïŒ
ç§ã¯ããã®æ©èœãå¿
èŠãšããã€ããã ããšç§ã¯ãããè¡ãããšãã§ããå Žæãç§ãäœçœ®ãããšæãã®ã§ãç§ã¯ããããå®è£
ãããšèããïŒ initMaterial
ã§WebGLRenderer
ïŒãšããã䜿çšããŠéåžžã«ç°¡åããå¿
èŠããããŸãæ¢åã®ã¬ã€ã€ãŒã
ã©ã€ãåºæã®ããããã¹ã¯ïŒ Layers
ãªããžã§ã¯ããšããŠïŒãäœæããŠãç¹å®ã®ã©ã€ããªããžã§ã¯ãïŒã©ã€ãèªäœã®ãªããžã§ã¯ãã¬ã€ã€ãŒãšã¯ç¡é¢ä¿ïŒã®åœ±é¿ãåããã¬ã€ã€ãŒãéžæããã©ã€ã/ã·ã£ããŠãããããã£ã«ã¿ãªã³ã°ããããšãèããŠããŸããäžèšã®é¢æ°ã§ã¯ãåãªããžã§ã¯ãã®ãŠããã©ãŒã ãšããŠèšå®ãããŸãã
ããã¯é¢ä¿ããããŸããïŒ
ãã®åã«ä»ã®æ¹æ³ã«ãªãã€ã¬ã¯ãããªãéãããããè©ŠããŠããããéæãããããã«ãã«ãªã¯ãšã¹ããéä¿¡ããŸãã
ã¢ããããŒãïŒ
https://github.com/tiesselune/three.js/tree/selective-lighting
ç§ã¯ã©ããã«è¡ããŸãã ãããããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ãããããŸãã¯ããã©ãŒãã³ã¹ã®ããã«ã³ãŒããæé©åããæ¹æ³ã¯ããããŸããããç§ãè¡ã£ãããã€ãã®ãã¹ãã§æ©èœããŠããŸãã ã¬ã€ã€ãŒããšã®ç §æïŒ ããŒãïŒ
ãã ãããã«ãªã¯ãšã¹ããéä¿¡ããåã«ãããã«ãã¹ããè¡ããé¢é£ããäŸãäœæããå¿ èŠããããŸãã
ã¢ããããŒãïŒ
ããã«ããã€ãã®ãã¹ããè¡ããŸãããç°ãªãã¬ã€ã€ãŒã«ããïŒãããŠç°ãªãç
§æèšå®ãæã€ïŒ2ã€ã®ãªããžã§ã¯ãã«åããããªã¢ã«ããããšãç
§æèšå®ä»¥éãã¬ã³ãã©ãŒã¯åžžã«ïŒ needsUpdate
ä»ããŠïŒãããªã¢ã«ãæŽæ°ããŸãã以åã¯äžå¯èœã ã£ãã2ã€ã®ãªããžã§ã¯ãéã®ãããªã¢ã«ã®å€æŽã«ã€ããŠã ããã¯ãããã©ãŒãã³ã¹ã®å€§å¹
ãªäœäžãšèŠèŠçãªå¥åŠããæå³ããŸãïŒã¬ã³ããªã³ã°æã«æåŸã®ãããªã¢ã«ã¢ããããŒããåªå
ãããããïŒ
ãã¡ãããããã¯ãç §æèšå®ãç°ãªã2ã€ã®ãªããžã§ã¯ãã«ãŸã£ããåãã€ã³ã¹ã¿ã³ã¹ã䜿çšãã代ããã«ãæ°ãããããªã¢ã«ã€ã³ã¹ã¿ã³ã¹ãäœæããããšã§åé¿ã§ããŸãã ãããããŠãŒã¶ãŒã®ããã«ã¯ããŒã³ãäœæããããšã¯è¯ãèãã§ã¯ãããŸãããå ã®çŽ æã®å€æŽãç£èŠããŠãããããã¯ããŒã³ã«ãã©ãŒãªã³ã°ããããšãæå³ããããã§ãã
ãããç§ã䜿çšã§ãã2ã€ã®è§£æ±ºçã§ãïŒ
ç §æèšå®ãç°ãªãç°ãªãã¬ã€ã€ãŒäžã®2ã€ã®ãªããžã§ã¯ããåããããªã¢ã«ãå ±æããŠããå Žåã«èŠåã衚瀺ããã ãã§ããŠãŒã¶ãŒã¯æ°ããã¯ããŒã³ãããªã¢ã«ãèªåã§äœæããã³ç®¡çã§ããŸãã
ãªããžã§ã¯ãã®ã¬ãã«ã§ã¯ãªããããªã¢ã«ã¬ãã«ã§ã¬ã€ã€ãŒãè¿œå ããïŒãããŠã©ã€ãã®ãã©ã¬ã«ã¬ã€ã€ãŒã·ã¹ãã ãäœæããïŒããšãã§ããã®ã§ãç°ãªãã©ã€ãã£ã³ã°èšå®ãå®çŸããã«ã¯ç°ãªããããªã¢ã«ã䜿çšããå¿ èŠããããŸãã ã€ãŸããå¯èŠæ§ïŒãªããžã§ã¯ããšã«ã¡ã©ïŒçšã®çŸåšã®ã¬ã€ã€ãŒã·ã¹ãã ãšãç §æïŒãããªã¢ã«ãšã©ã€ãïŒçšã®å¥ã®ã¬ã€ã€ãŒã·ã¹ãã ãååšããããšã«ãªããŸãã
çããã¯ã©ãæããŸããïŒ
ããªãã®ã³ã¡ã³ããå ¥ã£ãŠããã®ãèŠãŠãç§ã¯ã¡ããã©ããã«ã€ããŠèããŠããŸãããå€ãã®äººããããããããèŠãªãã®ã§ãèŠåã衚瀺ããããšã¯åœ¹ã«ç«ããªããšæããŸãã 2ã€ã®ãã¡ãç§ã¯ãªããžã§ã¯ãããããããªã¢ã«ã«ã©ã€ãã¬ã€ã€ãŒãèšå®ããããšãééããªã奜ã¿ãŸãã å°ãçŽæã«åããŸãããããã§ãçã«ããªã£ãŠããŸãã
æ確ã«ããããã«ã needsUpdate
ãèšå®ãããŠããå Žåããã®å Žåã¯ãåäžãªå€ãåèšç®ããã ãã§ãããïŒ ããŸããŸãªã·ã§ãŒããŒããã¹ãŠãã£ãã·ã¥ããå¿
èŠããããããã·ã§ãŒããŒãåã³ã³ãã€ã«ããå¿
èŠã¯ãããŸããã ã©ããªããã©ãŒãã³ã¹ããããèŠãããŸããïŒ ãããã¡ã€ã©ãŒã䜿çšããŠãäœåãªèšç®ãè¡ãããŠããå Žæãæ£ç¢ºã«ç¢ºèªããŸãããïŒ
ã¡ãªã¿ã«ã filterAmbiantLights
ã¯filterAmbientLights
å¿
èŠããããŸãã
ããªãã¯ã¹ãã«ãã¹ã«ã€ããŠæ£ããã§ãã ç§ã¯å®éã«ãããééã£ãŠããããšã«æ°ä»ãåã«ãã¢ã³ããšã³ããã§ãã¹ãŠãæžããŠããŸããããããŠç§ã¯åºæ¥äºãå¿ããŸããã ð
次ã«ããããªã¢ã«ã®ã¬ã€ã€ãŒæ å ±ã移åããã€ããã§ãã ããã¯ããé¢é£æ§ãããããããæ©èœããæ¹æ³ãšäžèŽããŠããããã§ãã
ããã©ãŒãã³ã¹ã®äœäžãæ¥ãïŒãŸã æ¥ãŠïŒããinitMaterial
ïŒãã®åŸã acquireProgram
ãšgetShaderParameter
ã®ã§ãäœåããäœããã®çç±ã§éæ¹ããªãé
ãã§ãïŒãã¹ãŠã®ãã¬ãŒã ãšåŒã°ããŠããlightHash
ã¯æ¯åç°ãªãã material.needsUpdate
ãtrue
ãŸãã
ãšããã§ãç§ã¯Chromeã®ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠããŸãã ïŒã¿ã€ã ã©ã€ã³ãšãããã¡ã€ã©ãŒïŒã
ããã¯ç§ã«ã¯åé¡ãããŸãããããªãacquireProgram
ãåžžã«å®è¡ããå¿
èŠãããã®ãââããããŸããã åã¿ã€ãã®ã©ã€ãã®æ°ãããã°ã©ã ãã©ã¡ãŒã¿ã«è¿œå ãããå Žåãæ¯åã·ã§ãŒããŒãåã³ã³ãã€ã«ããå¿
èŠã¯ãããŸãããïŒ
ç§ãããããŸããã
ãããïŒãã¹ãŠã®ãã¬ãŒã ã§ã®ïŒã³ãŒã«ã¹ã¿ãã¯ãšããã«ç¶ãã²ã©ãã¡ã¢ãªãªãŒã¯ã§ãããããã«ç²ŸéããŠããå Žåã¯ãäœãåé¡ã«ãªã£ãŠããã®ããç解ããã®ã«åœ¹ç«ã¡ãŸãã ãã¬ãŒã ããšã«æ°ããWebGLProgram
äœæããŠããããã§ã...
WebGLProgramã®äœæäžã«é ç¹/ãã©ã°ã¡ã³ãã·ã§ãŒããŒã³ãŒããæŽæ°ããåã³ã³ãã€ã«ããããå¥ã®ã·ã§ãŒããŒãšèŠãªãã®ã¯replaceLightNums
ã§ããå¯èœæ§ããããŸã...ïŒ
ç·šéïŒãšã«ãããææã¬ãã«ã§ã¬ã€ã€ãŒã䜿çšãããšãæåŸ ã©ããã«åé¡ã解決ããŸãã 調æ»ããå¿ èŠã®ããã¡ã¢ãªãªãŒã¯ãã©ããã«ãããŸããããã以å€ã®å Žåã¯ããªãè¯å¥œã«èŠããŸãã
ã³ãŒããå®å šã«ç解ããæ°ãããã°ãçºçããŠããªãããšã確èªããããã ãã«ããªããããçºçããŠããã®ããç解ããããšããå§ãããŸãã ãããã¹ãããã¹ã«ãŒããŠãã·ã§ãŒããŒã³ãŒãããã¬ãŒã ããšã«å€æŽãããçç±ã確èªã§ããŸããïŒ
WebGLPrograms
äœãèµ·ãã£ãŠããã®ããååã«ç解ã§ããŠããŸãããããããã®ã·ã§ãŒããŒããã£ãã·ã¥ããå¿
èŠãããããã§ãã
å®éãããã¯éåžžã«ç°¡åã§ãã
acquireProgram
ãåŒã³åºããã©ãããç¥ãããã«ã initMaterial
ã¯ãã£ãã·ã¥ããã·ã§ãŒããŒãã³ãŒãããååŸãïŒå®éã«ã¯ã getProgramCode
ã§æ§ç¯ãããããã·ã¥ã®ãããªãã®ã§ãïŒãæ¯èŒããŸãããããçŸåšã®è³æã®ããã°ã©ã ã®ãã³ãŒããã«å€æããŸããããã§ãã¡ã¢ãªã®æé©åãé€ããŠããã¹ãŠãæåŸ ã©ããã«æ©èœããŸãïŒã©ã€ãã®èšå®ãç°ãªããªããžã§ã¯ãããšã«ãããªã¢ã«ãšããã°ã©ã ãç°ãªãããïŒãããã¯ãããã«åãçµãäºå®ã®ç¬èªã®ã©ã€ãããã·ã¥ã§å®è¡ã§ããŸãã
ã©ã€ãã®æ°å€ãå¯å€ã§ãåãããªã¢ã«ãåãããã°ã©ã ã®ã€ã³ã¹ã¿ã³ã¹ã«ãããªãå Žåã¯ãããçšåºŠã®æ¹åãèŠèŸŒããŸããããããã®æ°å€ã¯ã·ã§ãŒããŒã³ãŒãïŒ replaceLightNums
ïŒã«æ¿å
¥ããããããçŸåšã®æ¹æ³ãšäºææ§ããªãããã§ããã§ãïŒãããŠãããã®æé©åïŒã
説æãååã«ç解ã§ããããšãé¡ã£ãŠããŸã
äœãã®ãããªãã®...
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
pointLight = pointLights[ i ];
pointLight.distance *= float( object.mask & pointlight.mask > 0.0 );
...
}
ãããšãglslã§ãããæŒç®ãå®è¡ã§ãããšã¯æããŸãã...
ã¯ãããããåäœã®æäœã¯GLSL 1.30ã§å§ãŸããæšæºã®WebGLã¯1.00ã䜿çšããŠããããã§ãã ð
ããã«ã¡ã¯@mrdoobãš@tiesselune ã
Chrome56ãšFirefox51ããªãªãŒã¹ãããã°ããã§ããã€ãŸããWebGL 2.0ãããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãïŒWebGL2ã¯OpenGL ES 3.0ä»æ§ã«æºæ ããŠããŸãïŒã ã€ãŸãããããæŒç®ïŒããã³3Dãã¯ã¹ãã£ãªã©ã®ä»ã®ã¯ãŒã«ãªãã®ïŒãå©çšã§ããããã«ãªããŸããã ThreeãWebGL2.0ãžã®ç§»è¡ã®æºåããã£ãããšé²ããŠãããã©ããã¯ããããŸããããthree84.jsã®ã³ããŒã«ããã€ãã®å¿
é ã®å€æŽãå ããŠWebGL 2.0ãæå¹ã«ããããã確èªããããã«ã·ã§ãŒããŒã§ãããæäœãè¡ããŸããããŸããããŸããããããŠããã¯ããŸããïŒ
https://developers.google.com/web/updates/2017/01/nic56
https://developer.mozilla.org/en-US/Firefox/Releases/51
ããªãã«ç¥ããããã£ãã ãã§ãã ãã¹ãã³ã°ã®ã¢ã€ãã¢ã®+1 :-)
ããã«ã¡ã¯@erichlof ïŒ ããã¯WebGL2ã«ãšã£ãŠçŽ æŽããããã¥ãŒã¹ã§ãã ããã¯ãWebGL2ã¬ã³ãã©ãŒãããããããå¹ççãªæ¹æ³ã§ãã¹ãã³ã°ã®åé¡ã«åãçµãããšãã§ããããšãæå³ããŸãã
ãšã«ããããããŸã§ã®ãšããWebGL2ããµããŒããããã©ãŠã¶ãŒã®äœ¿çšã¯éåžžã«éãããŠãããããWebGL 1ã§æ©èœãããããã®åªåãæšãŠãããšã¯ã§ããªããšæããŸããã»ãŒãã¹ãŠã®ãã©ãŠã¶ãŒãWebGLã¢ããªãå®è¡ã§ããããã«ãªããŸã§ã«é·ãæéãããããããããããWebGL 2ãå®éã«å€§èŠæš¡ã«äœ¿çšã§ããããã«ãªããŸã§ãããå°ãé·ããªããŸã...ðãããããã³ããããããšãïŒ
ãŸãäŒã£ããïŒ
æ°ããæŽæ°ïŒã¡ã¢ãªç®¡çã«å¿ èŠãšæãããããšãå®è¡ããŸããããJSããŒãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¯ããããã¡ã€ã«ãå®è¡ãããšãã®ãœãããŠã§ã¢æ§æïŒããã°ã©ã ã®å®è¡ãã¿ããæ¡åŒµæ©èœã®å®è¡ïŒãšå€§ããé¢ä¿ããŠããããã§ãã ããã«ã€ããŠããå°ãçµéšã®ãã人ã¯ãç§ã®ã³ãŒããçŸåšã®ããŒãžã§ã³ã®threejsãšæ¯èŒããŠããã»ã©ã¡ã¢ãªãæ¶è²»ããŠããªãããšã確èªã§ããŸããïŒ
ãšã«ããã examples /webgl_lights_selective_lighting.htmlã§
ã¹ã¯ãªãŒã³ã·ã§ããã¯æ¬¡ã®ãšããã§ãã
ããã§äŸãã©ã€ãã§è¡šç€ºã§ããã¯ãã§ãã
ãã ãããšã©ãŒãçºçããŸãã
Uncaught TypeError: Cannot read property 'set' of undefined
at init (webgl_lights_selective_lights.html:117)
at webgl_lights_selective_lights.html:67
@looeee ïŒããŒã«ã«ãã¹ãã§npm run build-uglify
ãå®è¡ããå¿
èŠããããŸãã ããŒãžå¯èœæ§ã®ç®çã§ãã³ãããã«ãã«ããèªçºçã«å«ããŸããã§ãã...
ãããšãç§ããã¹ãã§ããïŒ
ç·šéïŒãã¹ãç®çã®å¥ã®ãã©ã³ãã§ã®äœæ¥ãªã³ã¯ã¯æ¬¡ã®ãšããã§ãïŒ https ïŒ
ãããç§ãã+999999ã ãããå®è£
ããå¿
èŠããããŸãïŒå°ãªããšãTHREE.Layers
ïŒ
$$('.comment-body').reduce((acc, el) => {
let mat = el.textContent.match(/\+(\d+)/)
let num = +(mat && mat[1] || 0)
return acc + num
}, 0)
>> 1219997
ð€
@mrdoob圌ã¯ãã®ã¹ã¬ããã§+ Nsãèšç®ããŸãã
ãšããã§ãã»ã¬ã¯ãã£ãã©ã€ãã®å Žåã¯+14570
ããã¯ãããé«åºŠãªæœè±¡åã§ç §æãã©ã®ããã«æ©èœãããã埮調æŽããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ããšãã°ã次ã®ãã³ã§ã¯ãç §æããããªã¢ã«ã«ããããã«ãDOMèŠçŽ ã«å¯ŸããŠ1ã€ã®æ¹æ³ã§ç §æãæ©èœãããSphereã«å¯ŸããŠå¥ã®æ¹æ³ã§ç §æãæ©èœãããããšèããŠããŸãã
ã·ã³ã°ã«ãã€ã³ãã©ã€ãã®ããã«èŠããç¹å®ã®å¹æã¯ãç¹å®ã®èŠçŽ ã®ã¿ã«éžæçã«åœ±é¿ãäžãã2ã€ä»¥äžã®ã©ã€ããçµã¿åãããããšã«ãã£ãŠå®çŸã§ããŸãã
ããšãã°ãåã®äŸã§ã¯ãå ã®åŒ·åºŠãäžããŠãDOMèŠçŽ ãã«èŠæ ãã®è¯ã圱ãä»ããããšãã§ããŸãããçäœã¯å°ãå æ²¢ãããæããèŠããŸãã çäœçšã«èæãã©ã€ããããDOMèŠçŽ ãçšã«æããã©ã€ãã䜿çšã§ããã°ããã®æ¹æ³ã§ããçŸå®çãªãã®ãå®çŸã§ããŸããèŠèŽè ã«ã¯ããŸã 1ã€ã®ã©ã€ããããªãããã«èŠããŸãã 次ã«ããã®çš®ã®ããšãé«ã¬ãã«ã®APIã§æœè±¡åããŠãèå°è£ã§2ã€ã®Three.jsã©ã€ããå®éã«æ©èœããŠãããšãã«æäœãããŠããã©ã€ãã1ã€ãããªãããã«èŠããããšãã§ããŸãã
@WestLangley
åé¿çãšããŠãéšå±ïŒããã³ãã®ã©ã€ãïŒããšã«åå¥ã®ã·ãŒã³ãçšæããããšã§ãã»ãšãã©ã®èŠä»¶ãéæã§ããŸããïŒ
ãã®ãããªäŸãžã®ãªã³ã¯ã¯ãããŸããïŒ çµæã«ä»ã®äºæããªãã¬ã³ããªã³ã°å¹æãããããå¯èœæ§ã¯ãããŸããïŒ
çµæã«å¯Ÿããä»ã®äºæããªãã¬ã³ããªã³ã°å¹æïŒ
ããšãã°ãéæãªããžã§ã¯ãã®ã¬ã³ããªã³ã°é åº-ã·ãŒã³1ã®éæãªããžã§ã¯ãã¯ãã·ãŒã³2ã®äžéæãªããžã§ã¯ãã®åã«ã¬ã³ããªã³ã°ãããŸãã
ãã®ãããªäŸãžã®ãªã³ã¯ã¯ãããŸããïŒ
ããã§ãç§ã¯ããªãã®ããã ãã«1ã€äœæããŸããïŒ https ïŒ
ããšãã°ãéæãªããžã§ã¯ãã®ã¬ã³ããªã³ã°é åº-ã·ãŒã³1ã®éæãªããžã§ã¯ãã¯ãã·ãŒã³2ã®äžéæãªããžã§ã¯ãã®åã«ã¬ã³ããªã³ã°ãããŸãã
ãããç§ãèããŠãããã®ã§ãã ããã«ãããåé¿çã¯éåžžã«éãããå Žåã®åé¿çã«ãªããŸãã æ¬åœã®è§£æ±ºçã楜ãã¿ã«ããŠããŸãïŒ
ããŠãããªãã¯ãã·ãŒã³1ããã·ãŒã³2ã®äžéæãªãªããžã§ã¯ããéæãªãªããžã§ã¯ããä»ããŠèŠããå Žåã«ã®ã¿åé¡ãçºçããã ãããšäž»åŒµããããšãã§ããŸãã ããããããã§ããã°ãã©ã€ããééããã¯ãã§ãããããããã·ãŒã³ãåé¢ããçç±ã¯ãããŸããã ããããç§ã¯ãã®çš®ã®è°è«ãæ¬åœã«èª¬åŸåããªãããšã«åæããŸãã
@makcãããç§ã解決ããããšããŠããåé¡ã®äŸã§ãïŒ
https://discourse.threejs.org/t/how-to-make-shadows-darker-on-transparent-objects/1389
éžæçãªç §æã¯ããã«æ¬åœã«åœ¹ç«ã€ãšæããŸãã
@trusktr mrdoobã®ã·ã£ããŠãããªã¢ã«ãå€æŽããããšã§ãããã解決ã§ãããšæããŸãã çœé»ã®åœ±ã®ãã¯ã¹ãã£ã衚瀺ããã ãã§ãå¿ èŠã«å¿ããŠéæã«ãªãããã«å€æŽã§ããŸã
PlayCanvasã®ãã¹ã¯ã¯ãéžæçãªç §æã«éåžžã«äœ¿ããããããã§ãïŒ https ïŒ//forum.playcanvas.com/t/set-certain-object-to-not-receive-light/785
ãããããŒãžã§ããŸããïŒ ã·ã£ããŠã®åé¡ã¯ãã³ãŒãã®å€æŽãšã¯é¢ä¿ã®ãªãLambertã·ã§ãŒããŒãåå ã ã£ããšæããŸãã @tiesselune
@ErikBeharç§ã¯å®éã«ä»æ¥ã®ååŸã«äœãããããšãæ¢ããŠããŸãããã³ãŒããææ°ã®threejsã«æŽæ°ããŠããã«ãªã¯ãšã¹ããéä¿¡ããããšããŠããŸããïŒ ãããªã«å€§ããªãããžã§ã¯ãã«æ¬åœã«è²¢ç®ããããšãç¥ã£ãŠãæ¬åœã«æ¥œããã£ãã§ãã ïŒãããŠããã®ãã°ãç§ã®å€æŽãšã¯äœã®é¢ä¿ããªãããšã確èªã§ããŠè¯ãã£ãã§ãïŒ
ç·šéïŒã³ãŒãã®ãã®éšåãå€§å¹ ã«å€æŽãããŠããããšãçºèŠããŸããã 以å䜿çšããŠããç¶æ ãWebGLRendererããWebGLLightsã«ç§»è¡ããã®ã§ãå°ãæéãããããšæããŸãã
@tiesseluneããããããžã§ã¯ãã«çµã¿èŸŒãå¿ èŠããã£ãã®ã§ãå ã«é²ãã§ã³ãŒããv93ã«ç§»æ€ããŸãããhttpsïŒ//github.com/ErikBehar/three.js/tree/selectiveLightsãåç §ããŠãã ããã
ãããããã°PRã§ããŸããïŒ @mrdoob
@ErikBeharãããšãããã¯ç§ãç®æããŠãããã®ã®ããã«èŠããŸãããç§ã¯ãããå®å šã«è¡ãæéããããŸããã§ããã ãã ãããã£ã«ã¿ãªã³ã°/ããã·ã¥é¢æ°ãWebGLRendererãã移åããŠãWebGLLightsç¶æ ãªããžã§ã¯ãã«è¿œå ãããšæããŸãã ã¬ã€ã€ãŒã·ã¹ãã ã¯å·ã®äžéšã§ãããã¬ã³ãã©ãŒã®äžéšã§ã¯ãªãã®ã§ã圌ãã¯ä»ããã«å±ããŠããããã«æããŸãã
@ErikBehar PRã¯çŽ æŽãããã§ãããïŒ
@tiesseluneããªããææ¡ããããã«ãããåããããšãæ€èšãããããŸãã¯ç§ã®ãã©ãŒã¯ã«PRãæŒããŠãã ããç¬=]ãããŠç§ã¯ããã«PRãæçš¿ããŸã@mrdoob
ããã®ç¶æ³ã¯ã©ãã§ããïŒ @ErikBeharã®r94devã³ãŒããr94ã«ããŒãžããŠãããr97ãããŒãžããŸããããéåžžã«åçŽãªç«¶åã2ã€ã ããããŸãïŒããŒãžã§ã³ã®å€æŽãéžæçç §æçšã®ããã€ãã®å€æ°ãrenderers /WebGLRenderer.jsã§ã®ããã·ã¥äœæãåãã§PRãå ¥ããŠãã ããã @ tiesseluneéžæçç §æç¶æ ãã©ãã«çœ®ãæããŠããã ããã°ãããã移åããŠãã¹ãããPRãå ¥ããŠããã ããã°å¹žãã§ãã
ç·šéïŒ
å°ãåŸã§ïŒãããæ©èœããã«ã¯ãæ°ããã©ã€ãããã·ã¥ã§ããã€ãã®äœæ¥ãå¿
èŠã§ããããšãããããŸãã
ããªãèªèº«ã®ãããªç§ã¯ãé¢ä¿ãªãã圌ãã¯@ErikBeharã®ã³ãŒããåãå ¥ãããã©ããã«åãã§ãããã©ããã®ãããã ãã§ä»ã®äººãããããå§ãããŸãå Žåã«ã¯æ代é ãã®ãã®ã眮ãæããããã«ãPRãæåºããããšããå§ãã ãšæãã ãã@VaelynPhiããããŸãã
ãã®ç·ã«ããŒã«ãèœãšããŠãã¿ãŸãã= / ... @VaelynPhiãã©ãŒã¯/ãã©ã³ããæçš¿ã§ããŸããïŒ
å¿é ãªã; å¿ããã®ã¯ããããŸãã æ®å¿µãªãããç§ã¯ããªããåããŠãããã©ã³ãã@ ErikBeharãããåŸãããšãã§ããŸããã§ããã ç¶æ ãé©åãªå Žæã«ç§»åããããŸãããã°ãã°ãä¿®æ£ã§ããããã«ãã³ãŒããèªãã§ã³ãŒããå解ããããšæ±ºå¿ããŸããã v94ã§ããŸã ããŒãã¹ããŒããæ©èœããŠããŸããã ããããã @ makcãææ¡ããããã«ããããã¯ãªãŒã³ã¢ããããŠPRã«å ¥ããŠæŽæ°ããããšã
以äžã«åºã¥ããŠPRãè¿œå ããŸããïŒ
https://github.com/ErikBehar/three.js/commit/ac0499b70b82bc7bb780100a8372fcdf318d1424#diff -5e43a0b5002eb2c419def3baf67d4e67
@ErikBehar
誰ããããã€ãã®ã¬ãã¥ãŒãšäŸãæã«å
¥ããããšãã§ããŸããïŒ
ããã¿ããªãããã®ã¹ããŒã¿ã¹ã¯äœã§ããïŒ @tiesselune @ErikBeharäœããæäŒãã§ããŸããïŒ 4幎åŸã«ããããå®è£ ã§ããããããªãšæããŸãðð¯
@ flyrellïŒ15223ã§å®äºã«è¿ã¥ããŠããããã«èŠããã®ã§ããã®åé¡ãéããããšãã§ãããšæããŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
ããã§ãç§ã¯ããªãã®ããã ãã«1ã€äœæããŸããïŒ https ïŒ