WebXR空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³æè¡ãæ¢æ±ããä»®æ³çŸå®ããã³æ¡åŒµçŸå®äœéšã§æ²¡å ¥æã®ãããªã¢ã«ãªãµãŠã³ãã¹ã±ãŒããäœæããŸããé³ã®é®èœãã·ãã¥ã¬ãŒããããŠãŒã¶ãŒã®èšå Žæãé«ããããã©ãŒãã³ã¹ãæé©åããæ¹æ³ãåŠã³ãŸãã
WebXR空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ïŒãªã¢ã«ãªé³ã®é®èœãã·ãã¥ã¬ãŒããã
空éãªãŒãã£ãªã¯ãçã«æ²¡å ¥æã®ããä»®æ³çŸå®ããã³æ¡åŒµçŸå®ïŒXRïŒäœéšãåµé ããäžã§æ¥µããŠéèŠãªèŠçŽ ã§ããããã«ããããŠãŒã¶ãŒã¯é³ã3Dç°å¢å ã®ç¹å®ã®å ŽæããçºããããŠãããšèªèããèšå ŽæãšçŸå®æãé«ããããšãã§ããŸããããããåã«é³æºã3D空éã«é 眮ããã ãã§ã¯ååã§ã¯ãããŸãããçã«ä¿¡ããããèŽèŠäœéšãå®çŸããã«ã¯ãé³ãç°å¢ãšã©ã®ããã«çžäºäœçšããããç¹ã«ãªããžã§ã¯ãã鳿³¢ãã©ã®ããã«é®èœãŸãã¯æžè¡°ããããïŒãªã¯ã«ãŒãžã§ã³ãšããŠç¥ãããããã»ã¹ïŒãã·ãã¥ã¬ãŒãããããšãäžå¯æ¬ ã§ãã
空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ãšã¯ïŒ
空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ãšã¯ãä»®æ³çŸå®ãŸãã¯æ¡åŒµçŸå®ç°å¢å ã®ãªããžã§ã¯ãã«ãã£ãŠé³æ³¢ã鮿ãåžåããŸãã¯åæãããæ§åãã·ãã¥ã¬ãŒãããããšãæããŸããçŸå®äžçã§ã¯ãé³ã¯çŽç·çã«äŒããããã§ã¯ãããŸãããè§ãæ²ãã£ãããå£ã«ãã£ãŠããã£ããã衚é¢ã«åå°ãããããŸãããªã¯ã«ãŒãžã§ã³ã¢ã«ãŽãªãºã ã¯ããããã®å¹æãåçŸããããšããããšã§ãèŽèŠäœéšãããçŸå®çã§ä¿¡ãããããã®ã«ããŸãã
ãªã¯ã«ãŒãžã§ã³ããªãå Žåãé³ã¯å£ããªããžã§ã¯ããçŽæ¥ééããå¯èœæ§ããããç©ççãªç©ºéã«ãããšããé¯èŠã厩ããŸããåãã³ã³ã¯ãªãŒãã®å£ã®åããã«ããã¯ãã®è©±ãæã®å£°ãããŸãã§é£ã§è©±ããŠãããã®ããã«èãããã®ãæ³åããŠã¿ãŠãã ããããªã¯ã«ãŒãžã§ã³ã¯ã鳿ºãšãªã¹ããŒã®éã«ããé害ç©ã«åºã¥ããŠé³ãä¿®æ£ããããšã§ããã®åé¡ã«å¯ŸåŠããŸãã
WebXRã§ãªã¯ã«ãŒãžã§ã³ãéèŠãªçç±
WebXRã«ãããŠããªã¯ã«ãŒãžã§ã³ã¯ä»¥äžã®ç¹ã§éèŠãªåœ¹å²ãæãããŸãã
- æ²¡å ¥æã®åäžïŒãªã¯ã«ãŒãžã§ã³ã¯ãé³ãä»®æ³äžçãŸãã¯æ¡åŒµçŸå®äžçå ã§çŸå®çã«æ¯ãèãããããšã§ãããä¿¡ããããæ²¡å ¥æã®ããäœéšãçã¿åºããŸãã
- ãŠãŒã¶ãŒã®èšå Žæã®åäžïŒé³ãæ£ç¢ºã«é 眮ããããªã¯ã«ãŒãžã§ã³ãé©çšããããšããŠãŒã¶ãŒã¯ä»®æ³ç°å¢ã«å®éã«ååšããŠãããšããæèŠãã€ãŸããã匷ãèšå ŽæãæããŸãã
- 空éãã¥ãŒã®æäŸïŒãªã¯ã«ãŒãžã§ã³ã¯ããŠãŒã¶ãŒãç°å¢ã®ã¬ã€ã¢ãŠãããªããžã§ã¯ãã®çŽ æãããã³é³æºã®çžå¯Ÿçãªäœçœ®ãçè§£ããã®ã«åœ¹ç«ã€éèŠãªç©ºéãã¥ãŒãæäŸã§ããŸãã
- çŸå®çãªã€ã³ã¿ã©ã¯ã·ã§ã³ã®äœæïŒãŠãŒã¶ãŒããªããžã§ã¯ããšã€ã³ã¿ã©ã¯ã·ã§ã³ããéããªã¯ã«ãŒãžã§ã³ã¯ã€ã³ã¿ã©ã¯ã·ã§ã³ã®çŸå®æã«è²¢ç®ã§ããŸããããšãã°ããŠãŒã¶ãŒãéå±è£œã®ãªããžã§ã¯ããæŸã£ãŠèœãšããå Žåãé³ã¯ãªããžã§ã¯ãã®ç¹æ§ãšçå°ãã衚é¢ãåæ ãããªã¯ã«ãŒãžã§ã³å¹æãå«ãŸããã¹ãã§ãã
WebXRã§ç©ºéãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ãå®è£ ããæè¡
WebXRã¢ããªã±ãŒã·ã§ã³ã§ç©ºéãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ãå®è£ ããã«ã¯ãããã€ãã®æè¡ã䜿çšã§ããŸãããããã®æè¡ã¯è€éããšèšç®ã³ã¹ããç°ãªãããããããžã§ã¯ãã®ç¹å®ã®èŠä»¶ãšå¯Ÿè±¡ããŒããŠã§ã¢ã®æ©èœã«æãé©ããæ¹æ³ãéžæããããšãéèŠã§ãã
1. ã¬ã€ãã£ã¹ãã£ã³ã°ã«åºã¥ããªã¯ã«ãŒãžã§ã³
説æïŒã¬ã€ãã£ã¹ãã£ã³ã°ã¯ããªã¯ã«ãŒãžã§ã³ã決å®ããããã®äžè¬çã§æ¯èŒçç°¡åãªæè¡ã§ããããã¯ã鳿ºãããªã¹ããŒã®äœçœ®ã«åãã£ãŠã¬ã€ïŒå ç·ïŒãæå°ããããšãå«ã¿ãŸããã¬ã€ããªã¹ããŒã«å°éããåã«ã·ãŒã³å ã®ãªããžã§ã¯ããšäº€å·®ããå Žåããã®é³ã¯é®èœãããŠãããšèŠãªãããŸãã
å®è£ ïŒ
- å鳿ºã«ã€ããŠããªã¹ããŒã®é éšäœçœ®ã«åãã£ãŠ1ã€ãŸãã¯è€æ°ã®ã¬ã€ãæå°ããŸãã
- ãããã®ã¬ã€ãã·ãŒã³å ã®ãªããžã§ã¯ããšäº€å·®ãããã©ããã確èªããŸãã
- ã¬ã€ããªããžã§ã¯ããšäº€å·®ããå Žåã鳿ºãšäº€å·®ç¹ã®éã®è·é¢ãèšç®ããŸãã
- è·é¢ãšé®èœãªããžã§ã¯ãã®çŽ æç¹æ§ã«åºã¥ããŠãé³éæžè¡°ããã³/ãŸãã¯ãã£ã«ã¿ãŒãé³ã«é©çšããŸãã
äŸïŒWebXRã²ãŒã ã§ããã¬ã€ã€ãŒãå£ã®åããåŽã«ç«ã£ãŠããŠãå¥ã®ãã£ã©ã¯ã¿ãŒãå察åŽã§è©±ããŠããå Žåã話ããŠãããã£ã©ã¯ã¿ãŒã®å£ãããã¬ã€ã€ãŒã®è³ãžã®ã¬ã€ãã£ã¹ãã¯å£ãšäº€å·®ããŸãããã®é³ã¯ãå£ã®ããã广ãã·ãã¥ã¬ãŒãããããã«ãæžè¡°ïŒé³éãå°ããããïŒãããå Žåã«ãã£ãŠã¯ãã£ã«ã¿ãªã³ã°ïŒé«åšæ³¢ãé€å»ããïŒãããŸãã
é·æïŒ
- å®è£ ãæ¯èŒçç°¡åã§ãã
- ä»»æã®3Dã·ãŒã³ã§äœ¿çšã§ããŸãã
- åºæ¬çãªãªã¯ã«ãŒãžã§ã³å¹æã«é©ããŠããŸãã
çæïŒ
- å鳿ºã«å¯ŸããŠå€æ°ã®ã¬ã€ãæå°ããå Žåãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸãã
- åæïŒé³ãè§ãæ²ãã£ãŠåãçŸè±¡ïŒãæ£ç¢ºã«ã·ãã¥ã¬ãŒãã§ããŸããã
- çŸå®çãªçµæãåŸãã«ã¯ãæžè¡°ããã³ãã£ã«ã¿ãªã³ã°ãã©ã¡ãŒã¿ã®åŸ®èª¿æŽãå¿ èŠã«ãªãå ŽåããããŸãã
2. è·é¢ã«åºã¥ããªã¯ã«ãŒãžã§ã³
説æïŒããã¯æãåçŽãªåœ¢åŒã®ãªã¯ã«ãŒãžã§ã³ã§ããã鳿ºãšãªã¹ããŒéã®è·é¢ãããã³äºåã«å®çŸ©ãããæå€§å¯èŽè·é¢ã«ã®ã¿äŸåããŸããã·ãŒã³å ã®ãªããžã§ã¯ããæç€ºçã«èæ ®ããŸããã
å®è£ ïŒ
- 鳿ºãšãªã¹ããŒéã®è·é¢ãèšç®ããŸãã
- è·é¢ãç¹å®ã®ãããå€ãè¶ ããå Žåãé³éãå°ããããŸããè·é¢ãé ãã»ã©ãé³ã¯å°ãããªããŸãã
- ãªãã·ã§ã³ã§ãè·é¢ã«ããé«åšæ³¢ã®æå€±ãã·ãã¥ã¬ãŒãããããã«ããŒãã¹ãã£ã«ã¿ãŒãé©çšããŸãã
äŸïŒæ··éããéããèµ°ãé ãã®è»ãè»ãé ãããã«ã€ããŠããã®é³ã¯åŸã ã«æ¶ããæçµçã«ã¯èãããªããªããŸãã
é·æïŒ
- å®è£ ãéåžžã«ç°¡åã§ãã
- èšç®ã³ã¹ããäœãã§ãã
çæïŒ
- é³ãé®ããªããžã§ã¯ããèæ ®ããªããããããŸãçŸå®çã§ã¯ãããŸããã
- éåžžã«åçŽãªã·ãŒã³ãåºæ¬çãªåºçºç¹ãšããŠã®ã¿é©ããŠããŸãã
3. ãžãªã¡ããªã«åºã¥ããªã¯ã«ãŒãžã§ã³
説æïŒãã®æè¡ã¯ãã·ãŒã³ã®ãžãªã¡ããªã«é¢ããæ å ±ã䜿çšããŠãªã¯ã«ãŒãžã§ã³ã決å®ããŸãã鳿³¢ãã©ã®ããã«åå°ãŸãã¯åæããããæ±ºå®ããããã«ãªããžã§ã¯ãã®æ³ç·ãåæãããªã©ãã¬ã€ãã£ã¹ãã£ã³ã°ãããæŽç·Žãããèšç®ã䌎ãå ŽåããããŸãã
å®è£ ïŒãžãªã¡ããªã«åºã¥ããªã¯ã«ãŒãžã§ã³ã®å®è£ ã¯è€éã«ãªãå Žåããããå€ãã®å Žåãå°çšã®ãªãŒãã£ãªãšã³ãžã³ãã©ã€ãã©ãªã䜿çšããŸããäžè¬çã«ã¯ã以äžã®å 容ãå«ã¿ãŸãã
- æœåšçãªé®èœç©ãç¹å®ããããã«3Dã·ãŒã³ãåæããã
- åå°ãšåæãèæ ®ã«å ¥ããŠã鳿ºãšãªã¹ããŒéã®æççµè·¯ãèšç®ããã
- é³ã®çµè·¯ã«æ²¿ã£ã衚é¢ã®çŽ æãšç¹æ§ã決å®ããã
- é³ã®çµè·¯ãšè¡šé¢ã®ç¹æ§ã«åºã¥ããŠãé©åãªæžè¡°ããã£ã«ã¿ãªã³ã°ãããã³æ®é¿å¹æãé©çšããã
äŸïŒã³ã³ãµãŒãããŒã«ã§ã®æ¥œåšã®é³ãã·ãã¥ã¬ãŒããããããŒã«ã®ãžãªã¡ããªïŒå£ã倩äºãåºïŒã¯é³ã«å€§ãã圱é¿ããå šäœçãªé³é¿äœéšã«è²¢ç®ããåå°ãšæ®é¿ãçã¿åºããŸãããžãªã¡ããªã«åºã¥ããªã¯ã«ãŒãžã§ã³ã¯ããããã®å¹æãæ£ç¢ºã«ã¢ãã«åã§ããŸãã
é·æïŒ
- éåžžã«çŸå®çãªãªã¯ã«ãŒãžã§ã³å¹æãå®çŸã§ããŸãã
- åå°ãåæãæ®é¿ãèæ ®ã«å ¥ããŸãã
çæïŒ
- èšç®ã³ã¹ããé«ãã§ãã
- ç°å¢ã®è©³çްãª3Dã¢ãã«ãå¿ èŠã§ãã
- å®è£ ãè€éã§ãã
4. æ¢åã®ãªãŒãã£ãªãšã³ãžã³ãšã©ã€ãã©ãªã®äœ¿çš
説æïŒããã€ãã®ãªãŒãã£ãªãšã³ãžã³ãšã©ã€ãã©ãªã¯ã空éãªãŒãã£ãªãšãªã¯ã«ãŒãžã§ã³ã«å¯Ÿããçµã¿èŸŒã¿ãµããŒããæäŸããŠããŸãããããã®ãœãªã¥ãŒã·ã§ã³ã¯ãWebXRã¢ããªã±ãŒã·ã§ã³ã§çŸå®çãªãµãŠã³ãã¹ã±ãŒããå®è£ ããããã»ã¹ãç°¡çŽ åãããäºåã«æ§ç¯ãããã¢ã«ãŽãªãºã ãšããŒã«ãæäŸããããšããããããŸãã
äŸïŒ
- Web Audio API: å°çšã®ã²ãŒã ãšã³ãžã³ã§ã¯ãããŸããããWeb Audio APIã¯ããã©ãŠã¶å ã§ç©ºéåãåºæ¬çãªãã£ã«ã¿ãªã³ã°ãå«ã匷åãªãªãŒãã£ãªåŠçæ©èœãæäŸããŸããããã¯ãã«ã¹ã¿ã ãªã¯ã«ãŒãžã§ã³ã¢ã«ãŽãªãºã ãæ§ç¯ããããã®åºç€ãšããŠäœ¿çšã§ããŸããããšãã°ãã¬ã€ãã£ã¹ãã®çµæã«åºã¥ããŠé³ãæžè¡°ãããã«ã¹ã¿ã ãã£ã«ã¿ãŒãäœæã§ããŸãã
- PositionalAudioã䜿çšããThree.jsïŒ äººæ°ã®ããJavaScript 3Dã©ã€ãã©ãªã§ããThree.jsã«ã¯ã3D空éã«ãªãŒãã£ãªãœãŒã¹ãé
眮ã§ãã
PositionalAudioãªããžã§ã¯ããå«ãŸããŠããŸããçµã¿èŸŒã¿ã®ãªã¯ã«ãŒãžã§ã³ã¯æäŸãããŠããŸããããã¬ã€ãã£ã¹ãã£ã³ã°ãä»ã®ãªã¯ã«ãŒãžã§ã³æè¡ãšçµã¿åãããŠãããçŸå®çãªãªãŒãã£ãªäœéšãäœæã§ããŸãã - WebGLãšWebXRãšã¯ã¹ããŒãã䜿çšããUnityïŒ Unityã¯åŒ·åãªã²ãŒã ãšã³ãžã³ã§ãããWebGLãšã¯ã¹ããŒãããµããŒãããŠãããããWebãã©ãŠã¶ã§å®è¡ã§ããè€éãª3Dã·ãŒã³ãšãªãŒãã£ãªäœéšãäœæã§ããŸããUnityã®ãªãŒãã£ãªãšã³ãžã³ã¯ããªã¯ã«ãŒãžã§ã³ãé®èœãå«ãé«åºŠãªç©ºéãªãŒãã£ãªæ©èœãæäŸããŸãã
- Babylon.jsïŒ WebXRã®ãµããŒããå«ããå®å šãªã·ãŒã³ã°ã©ã管çãšé«åºŠãªæ©èœãæäŸããããã1ã€ã®å ç¢ãªJavaScriptãã¬ãŒã ã¯ãŒã¯ã§ãã空éãªãŒãã£ãªãšãªã¯ã«ãŒãžã§ã³ã«æŽ»çšã§ãã匷åãªãªãŒãã£ãªãšã³ãžã³ãå«ãŸããŠããŸãã
é·æïŒ
- éçºããã»ã¹ãç°¡çŽ åããŸãã
- äºåã«æ§ç¯ãããæ©èœãšããŒã«ãæäŸããŸãã
- å€ãã®å Žåãããã©ãŒãã³ã¹ã®ããã«æé©åãããŠããŸãã
çæïŒ
- ã«ã¹ã¿ãã€ãºã®ç¹ã§å¶éãããå ŽåããããŸãã
- å€éšã©ã€ãã©ãªãžã®äŸåé¢ä¿ãå°å ¥ããå¯èœæ§ããããŸãã
- 广çã«äœ¿çšããã«ã¯åŠç¿æ²ç·ãå¿ èŠãªå ŽåããããŸãã
WebXRãªã¯ã«ãŒãžã§ã³ã®ããã©ãŒãã³ã¹æé©å
空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ã®å®è£ ã¯ãç¹ã«å€ãã®é³æºãšé®èœãªããžã§ã¯ããããè€éãªã·ãŒã³ã§ã¯ãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããã¹ã ãŒãºã§å¿çæ§ã®é«ãWebXRäœéšã確ä¿ããããã«ãããã©ãŒãã³ã¹ãæé©åããããšãäžå¯æ¬ ã§ãã
æé©åæè¡ïŒ
- ã¬ã€ãã£ã¹ãã®æ°ãæžããïŒã¬ã€ãã£ã¹ãã£ã³ã°ã䜿çšããå Žåãå鳿ºããšã«æå°ããã¬ã€ã®æ°ãæžããããšãæ€èšããŠãã ããã粟床ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãèŠã€ããããã«ãããŸããŸãªã¬ã€ãã£ã¹ãã£ã³ã°ãã¿ãŒã³ã詊ããŠãã ãããæ¯ãã¬ãŒã ã¬ã€ãæå°ããã®ã§ã¯ãªããé »åºŠãæžãããããªã¹ããŒãŸãã¯é³æºã倧ããç§»åãããšãã«ã®ã¿æå°ããããšãæ€èšããŠãã ããã
- è¡çªæ€åºã®æé©åïŒè¡çªæ€åºã¢ã«ãŽãªãºã ãããã©ãŒãã³ã¹ã®ããã«æé©åãããŠããããšã確èªããŠãã ããããªã¯ãããªãŒãããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ïŒBVHïŒãªã©ã®ç©ºéå岿è¡ã䜿çšããŠã亀差ãã¹ããé«éåããŸãã
- ãªã¯ã«ãŒãžã§ã³ã«ç°¡ç¥åããããžãªã¡ããªã䜿çšããïŒãªã¯ã«ãŒãžã§ã³èšç®ã«ãã«è§£å床ã®3Dã¢ãã«ã䜿çšãã代ããã«ãããªãŽã³æ°ãæžãããç°¡ç¥åãããããŒãžã§ã³ã䜿çšããããšãæ€èšããŠãã ãããããã«ãããèšç®ã³ã¹ããå€§å¹ ã«åæžã§ããŸãã
- ãªã¯ã«ãŒãžã§ã³çµæã®ãã£ãã·ã¥ïŒã·ãŒã³ãæ¯èŒçéçãªå Žåããªã¯ã«ãŒãžã§ã³èšç®ã®çµæããã£ãã·ã¥ããããšãæ€èšããŠãã ãããããã«ãããåé·ãªèšç®ãåé¿ããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ãªãŒãã£ãªã«ã¬ãã«ãªããã£ããŒã«ïŒLODïŒã䜿çšããïŒèŠèŠçãªLODãšåæ§ã«ããªã¹ããŒãŸã§ã®è·é¢ã«åºã¥ããŠãªãŒãã£ãªåŠçã«ç°ãªãã¬ãã«ã®ãã£ããŒã«ã䜿çšã§ããŸããããšãã°ãé ãã®é³æºã«ã¯ããåçŽãªãªã¯ã«ãŒãžã§ã³ã¢ã«ãŽãªãºã ã䜿çšããå ŽåããããŸãã
- ãªãŒãã£ãªåŠçãWeb Workerã«ãªãããŒãããïŒãªãŒãã£ãªåŠçããžãã¯ãå¥ã®Web Workerã¹ã¬ããã«ç§»åããŠãã¡ã€ã³ã¹ã¬ããã®ãããã¯ãåé¿ããã¹ã ãŒãºãªãã¬ãŒã ã¬ãŒããç¶æããŸãã
- ãããã¡ã€ãªã³ã°ãšæé©åïŒãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠWebXRã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ãããªãŒãã£ãªåŠçã«é¢é£ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸããããã«å¿ããŠã³ãŒããæé©åããŸãã
ã³ãŒãäŸïŒThree.jsã䜿ã£ãã¬ã€ãã£ã¹ãã£ã³ã°ïŒ
ãã®äŸã§ã¯ãThree.jsã䜿çšããã¬ã€ãã£ã¹ãã£ã³ã°ã«åºã¥ããªã¯ã«ãŒãžã§ã³ã®åºæ¬çãªå®è£ ã瀺ããŸãã鳿ºãããªã¹ããŒãžã®ã¬ã€ãã£ã¹ãããªããžã§ã¯ããšäº€å·®ãããã©ããã«åºã¥ããŠãé³ã®ããªã¥ãŒã ãæžè¡°ãããŸãã
泚ïŒããã¯ç°¡ç¥åãããäŸã§ãããæ¬çªç°å¢åãã«ã¯ãããªãæ¹è¯ãå¿ èŠã«ãªãå ŽåããããŸãã
```javascript // Three.jsã·ãŒã³ã鳿ºïŒaudioïŒããªã¹ããŒïŒcameraïŒãããããšãåæãšããŠããŸã function updateOcclusion(audio, listener, scene) { const origin = audio.position; // 鳿ºã®äœçœ® const direction = new THREE.Vector3(); direction.subVectors(listener.position, origin).normalize(); const raycaster = new THREE.Raycaster(origin, direction); const intersects = raycaster.intersectObjects(scene.children, true); // åãªããžã§ã¯ããå«ããã¹ãŠã®ãªããžã§ã¯ãããã§ã㯠let occlusionFactor = 1.0; // ããã©ã«ãã§ã¯ãªã¯ã«ãŒãžã§ã³ãªã if (intersects.length > 0) { // ã¬ã€ãäœããšè¡çªããŸããïŒæåã®äº€å·®ãæãéèŠã ãšä»®å®ããŸãã const intersectionDistance = intersects[0].distance; const sourceToListenerDistance = origin.distanceTo(listener.position); // 亀差ããªã¹ããŒãããè¿ãå Žåããªã¯ã«ãŒãžã§ã³ããããŸã if (intersectionDistance < sourceToListenerDistance) { // è·é¢ã«åºã¥ããŠæžè¡°ãé©çšããŸãããããã®å€ã調æŽããŠãã ããïŒ occlusionFactor = Math.max(0, 1 - (intersectionDistance / sourceToListenerDistance)); // 0ãã1ã®éã«ã¯ã©ã³ã } } // ãªã¯ã«ãŒãžã§ã³ä¿æ°ãé³éã«é©çšããŸã audio.setVolume(occlusionFactor); // Three.jsã®audio.setVolume()ã¡ãœãããå¿ èŠã§ã } // ãã®é¢æ°ãã¢ãã¡ãŒã·ã§ã³ã«ãŒãã§åŒã³åºããŸã function animate() { requestAnimationFrame(animate); updateOcclusion(myAudioSource, camera, scene); // myAudioSourceãšcameraã眮ãæããŠãã ãã renderer.render(scene, camera); } animate(); ```
説æïŒ
- `updateOcclusion`颿°ã¯ã鳿ºããªã¹ããŒïŒéåžžã¯ã«ã¡ã©ïŒãããã³ã·ãŒã³ãå ¥åãšããŠåãåããŸãã
- 鳿ºãããªã¹ããŒãžã®æ¹åãã¯ãã«ãèšç®ããŸãã
- 鳿ºãããªã¹ããŒã®æ¹åãžã¬ã€ãæå°ããããã«`Raycaster`ãäœæãããŸãã
- `intersectObjects`ã¡ãœããã¯ãã¬ã€ãšã·ãŒã³å ã®ãªããžã§ã¯ãéã®äº€å·®ããã§ãã¯ããŸãã`true`åŒæ°ã«ãããã·ãŒã³ã®ãã¹ãŠã®åãååž°çã«ãã§ãã¯ããŸãã
- 亀差ãèŠã€ãã£ãå Žåã亀差ç¹ãŸã§ã®è·é¢ã鳿ºãšãªã¹ããŒéã®è·é¢ãšæ¯èŒãããŸãã
- 亀差ç¹ããªã¹ããŒãããè¿ãå Žåããªããžã§ã¯ããé³ãé®èœããŠããããšãæå³ããŸãã
- 亀差ç¹ãŸã§ã®è·é¢ã«åºã¥ããŠ`occlusionFactor`ãèšç®ãããŸãããã®ä¿æ°ã¯ãé³ã®é³éãæžè¡°ãããããã«äœ¿çšãããŸãã
- æåŸã«ããªã¯ã«ãŒãžã§ã³ä¿æ°ã«åºã¥ããŠé³éã調æŽããããã«ã鳿ºã®`setVolume`ã¡ãœãããåŒã³åºãããŸãã
空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ã®ãã¹ããã©ã¯ãã£ã¹
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåªå ããïŒç©ºéãªãŒãã£ãªãšãªã¯ã«ãŒãžã§ã³ã®äž»ãªç®çã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšã§ããåžžã«æè¡çãªè€éããããå質ãšãªã¢ãªãºã ãåªå ããŠãã ããã
- 培åºçã«ãã¹ãããïŒããŸããŸãªããã€ã¹ããã©ãããã©ãŒã ã§ãªã¯ã«ãŒãžã§ã³å®è£ ã培åºçã«ãã¹ãããäžè²«ããããã©ãŒãã³ã¹ãšãªãŒãã£ãªå質ã確ä¿ããŠãã ããã
- ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ãèæ ®ããïŒãªãŒãã£ãªäœéšãèšèšããéã¯ãã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ããŒãºãšå¥œã¿ãèæ ®ããŠãã ããã
- é©åãªãªãŒãã£ãªã¢ã»ããã䜿çšããïŒä»®æ³ç°å¢ãŸãã¯æ¡åŒµçŸå®ç°å¢ã«é©ããé«å質ã®ãªãŒãã£ãªã¢ã»ãããéžæããŠãã ããã
- 现éšã«æ³šæãæãïŒé®èœãªããžã§ã¯ãã®çŽ æç¹æ§ãªã©ãå°ããªè©³çްã§ããªãŒãã£ãªäœéšã®ãªã¢ãªãºã ã«å€§ãã圱é¿ããå¯èœæ§ããããŸãã
- ãªã¢ãªãºã ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ïŒãªã¢ãªãºã ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãåãããåªããŠãã ãããå®ç§ãªãªãŒãã£ãªå¿ å®åºŠãéæããããã«ããã©ãŒãã³ã¹ãç ç²ã«ããªãã§ãã ããã
- ååŸ©ãšæŽç·ŽïŒç©ºéãªãŒãã£ãªãã¶ã€ã³ã¯å埩çãªããã»ã¹ã§ããããŸããŸãªæè¡ãšãã©ã¡ãŒã¿ã詊ããŠãWebXRã¢ããªã±ãŒã·ã§ã³ã«æé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããŠãã ããã
WebXR空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ã®æªæ¥
空éãªãŒãã£ãªãšãªã¯ã«ãŒãžã§ã³ã®åéã¯çµ¶ããé²åããŠããŸããWebXRæè¡ã鲿©ããã«ã€ããŠããªã¢ã«ãªãµãŠã³ãã¹ã±ãŒããã·ãã¥ã¬ãŒãããããã®ãããæŽç·Žãããèšç®å¹çã®é«ãæè¡ãç»å ŽããããšãæåŸ ãããŸããå°æ¥ã®éçºã«ã¯ä»¥äžãå«ãŸããå¯èœæ§ããããŸãã
- AIãæŽ»çšãããªã¯ã«ãŒãžã§ã³ïŒæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã䜿çšããŠãé³ãç°ãªãç°å¢ãšã©ã®ããã«çžäºäœçšããããåŠç¿ããçŸå®çãªãªã¯ã«ãŒãžã§ã³å¹æãèªåçã«çæããããšãã§ããŸãã
- ãªã¢ã«ã¿ã€ã é³é¿ã¢ããªã³ã°ïŒé«åºŠãªé³é¿ã¢ããªã³ã°æè¡ã䜿çšããŠã空æ°å¯åºŠã枩床ãªã©ã®è€éãªç°å¢èŠå ãèæ ®ã«å ¥ããªããã鳿³¢ã®äŒæããªã¢ã«ã¿ã€ã ã§ã·ãã¥ã¬ãŒãããããšãã§ããŸãã
- ããŒãœãã©ã€ãºããããªãŒãã£ãªäœéšïŒç©ºéãªãŒãã£ãªã¯ãåã ã®ãŠãŒã¶ãŒã®èŽèŠãããã¡ã€ã«ãšå¥œã¿ã«åºã¥ããŠããŒãœãã©ã€ãºããããšãã§ããŸãã
- ç°å¢ã»ã³ãµãŒãšã®çµ±åïŒWebXRã¢ããªã±ãŒã·ã§ã³ã¯ç°å¢ã»ã³ãµãŒãšçµ±åããŠãçŸå®äžçã®ç°å¢ã«é¢ããããŒã¿ãåéããæ¡åŒµçŸå®ã§ããçŸå®çãªãªãŒãã£ãªäœéšãäœæããããã«äœ¿çšã§ããŸããããšãã°ããã€ã¯ã䜿çšããŠåšå²ã®é³ããã£ããã£ããä»®æ³ãµãŠã³ãã¹ã±ãŒãã«çµã¿èŸŒãããšãã§ããŸãã
çµè«
空éãªãŒãã£ãªãªã¯ã«ãŒãžã§ã³ã¯ãæ²¡å ¥æã®ããçŸå®çãªWebXRäœéšãäœæããããã®éèŠãªèŠçŽ ã§ããé³ãç°å¢ãšã©ã®ããã«çžäºäœçšããããã·ãã¥ã¬ãŒãããããšã«ãããéçºè ã¯ãŠãŒã¶ãŒã®èšå Žæãé«ãã空éãã¥ãŒãæäŸããããä¿¡ããããèŽèŠäžçãäœãåºãããšãã§ããŸãããªã¯ã«ãŒãžã§ã³ã®å®è£ ã¯ãç¹ã«ããã©ãŒãã³ã¹ã«ææãªWebXRã¢ããªã±ãŒã·ã§ã³ã§ã¯å°é£ãªå ŽåããããŸããããã®ã¬ã€ãã§æŠèª¬ãããŠããæè¡ãšãã¹ããã©ã¯ãã£ã¹ã¯ãçã«é æçãªãªãŒãã£ãªäœéšãäœæããã®ã«åœ¹ç«ã¡ãŸãã
WebXRæè¡ãé²åãç¶ããã«ã€ããŠã空éãªãŒãã£ãªç°å¢ãäœæããããã®ãããæŽç·Žãããã¢ã¯ã»ã¹ããããããŒã«ãç»å ŽããããšãæåŸ ãããŸãããããã®é²æ©ãåãå ¥ããããšã§ãéçºè ã¯WebXRã®å¯èœæ§ãæå€§éã«åŒãåºããèŠèŠçã«ãèŽèŠçã«ãçŽ æŽãããäœéšãäœãåºãããšãã§ããŸãã
ãªã¯ã«ãŒãžã§ã³æè¡ãéžæããéã¯ããããžã§ã¯ãã®ç¹å®ã®èŠä»¶ãšå¯Ÿè±¡ããŒããŠã§ã¢ã®æ©èœãèæ ®ããããšãå¿ããªãã§ãã ãããããŸããŸãªã¢ãããŒãã詊ããã³ãŒãããããã¡ã€ãªã³ã°ãããã¶ã€ã³ãå埩ããŠãå¯èœãªéãæé«ã®çµæãéæããŠãã ãããç¶¿å¯ãªèšç»ãšå®è£ ã«ãããèŠãç®ãšåããããçŽ æŽããããµãŠã³ãã®WebXRã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã