ä»æ¥ãã€ã³ã¿ãŒãããäžã§åœŒãã¯ãã é²ã«ã€ããŠã圌ããã©ãã»ã©ç¡éã§çŸãããã«ã€ããŠè©±ããŸã...圌ããããã§èŠããµãŒããŒã«ã€ããŠ...ãããŠããªãã¯ïŒ ããã§ããªã³ã©ã€ã³3Dããã³ã€ã³ããªã¢ãã¶ã€ã³ãµãŒãã¹ã®éçºã«ãããç§ã®çµéšãèªè ãšå ±æããããšã«ããŸããã ããã§ã¯ããããžã§ã¯ãå šäœã®ã¢ãŒããã¯ãã£ãšå®è£ ã®è©³çŽ°ã«ã€ããŠã話ããŸãã
3Dã¯ã©ãŠããã¶ã€ã³ã·ã¹ãã ãšã¯äœã§ããïŒ ãã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ããšããçšèªã¯æè¿éåžžã«äººæ°ããããã€ã³ãã¬ãŒã¹ã§ãã¢ãŠããªããã¬ãŒã¹ã§ã䜿çšãããŠãããããå®çŸ©ããå§ããŸãã ç§ã®ç解ãšå®è£ ã§ã¯ãã¯ã©ãŠã3Dèšèšã¯ã3Dã¢ãã«ã«é¢ãããã¹ãŠã®ããŒã¿ãšãã®åŠçæé ããªã¢ãŒããµãŒããŒïŒã€ãŸããã¯ã©ãŠãïŒã«é 眮ãããã¯ã©ã€ã¢ã³ãããã€ã¹ãç¹å®ã®ããŒã¿ãèŠæ±ãããããªãœãããŠã§ã¢ã¢ãŒããã¯ãã£ã§ããŸãã¯ã€ã³ã¿ãŒãããã§ã®èšç®çµæã èšãæãããšããã®ãããªã·ã¹ãã ã¯ãã¯ã©ã€ã¢ã³ãããã€ã¹ã§ã¯ãªããµãŒããŒã§æ±ºæžæäœã®å€§éšåãå®è¡ããã¢ãã«ãšãã®ãã©ã¡ãŒã¿ãŒãèŠèŠåããããã®ããŒã¿ã®ããäžéšã®ã¿ãã¯ã©ã€ã¢ã³ãã«éä¿¡ãããšããç¹ã§ãåŸæ¥ã®èšèšã·ã¹ãã ãšã¯ç°ãªããŸãã ãã®ãããªã·ã¹ãã ã®ã¢ãŒããã¯ãã£ã¯ãå¯æ¥ã«çžäºäœçšããŸãããé¢ããå Žæã«ãããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éšåã«åãããŠããã補åã®ãŠãŒã¶ãŒã«ã¯çžäºäœçšãèŠããªãããã«ããããã®ç¹å¥ãªã¢ãããŒããå¿ èŠã§ãã
次ã®è³ªåã¯ããã®ãããªã¢ãŒããã¯ãã£ã®å©ç¹ã¯äœã§ããïŒ ééããªããã¯ã©ãŠãã¢ãŒããã¯ãã£ã¯ããŠãŒã¶ãŒããŠãŒã¶ãŒã®ããŒã¿ãããã³ãã®åŠçã1ãæã«é 眮ãããçæãããåŸæ¥ã®ã¯ã©ãŠãã¢ãŒããã¯ãã£ãããè€éã§ãã ããããç§ã®ãããžã§ã¯ãã§ã¯ãã¯ã©ãŠãã¢ãŒããã¯ãã£ã«ã¯éçºãšäœ¿çšã®äž¡æ¹ã®é¢ã§å€ãã®åŠå®ã§ããªãå©ç¹ããããã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã®ãã®ãããªè€éããé©åã«ããŠããŸãã ç§ã¯ããããå®åŒåããããšããŸãïŒ
- ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯Webãã©ãŠã¶ã§ãã çŸåšãããã¯ã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ãšãããããããã€ã¹ãããµãŒãã¹ã䜿çšããæ©èœãæå³ããŸãã
- ã€ã³ã¹ããŒã«ããã«ã¢ããªã±ãŒã·ã§ã³ããã°ããèµ·åãããšãå°æ¥ã®ãŠãŒã¶ãŒã®ãããå€ãäžãããŸãã
- ãã¹ãŠã®ããŒã¿ã¯ãã¹ãŠã®ããã€ã¹ããåæã«ã¢ã¯ã»ã¹ã§ãããããããã¥ã¡ã³ããä¿åããŠããã€ã¹éã§ç§»åããå¿ èŠã¯ãããŸããã
- è€æ°ã®ãŠãŒã¶ãŒãåã ã®ããã¥ã¡ã³ããšãããžã§ã¯ãå šäœãåæã«ç·šéãŸãã¯è¡šç€ºããæ©èœãšäŸ¿å©ãªéä¿¡ã«ããããªã¢ãŒãã«ããã¯ã©ã€ã¢ã³ãéã§åäžã®ã¯ãŒã¯ã¹ããŒã¹ãäœæãããŸãã
- ç¶ç¶çãªéçºããã»ã¹ã®ç·šæãšæŽæ°ã®å³æé ä¿¡ãããã«ããã顧客ã¯ãœãããŠã§ã¢ã®ææ°ããŒãžã§ã³ã䜿çšã§ããéçºã«ããã極端ãªããã°ã©ãã³ã°ææ³ã®ç©æ¥µçãªäœ¿çšãä¿é²ã§ããŸãã
ãã¡ããããã®ã¢ãããŒãã«ã¯æ¬ ç¹ããããŸãã ãããã®ãã¡ã以äžãåºå¥ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãå¿«é©ã«äœ¿çšããããã®åªããã€ã³ã¿ãŒããããã£ãã«ãå¿ èŠã§ãã
- ãœãããŠã§ã¢ã®è€éãããããŠçµæãšããŠãéçºã®æéãšã³ã¹ãã®å¢å ã
- ãœãããŠã§ã¢ãæ©èœããããã«å¿ èŠãªãããã¯ãŒã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å±éãšãã®åŸã®ãµããŒãã®å¿ èŠæ§ã
ãããžã§ã¯ãã®ã¢ãŒããã¯ãã£
ã¢ãŒããã¯ãã£ãéžæãããšããå°æ¥ã®ã¹ã±ãŒãªã³ã°ã®å¯èœæ§ãèæ ®ããŠãæãè² è·ã®ããã£ãããŒããç°¡åã«äžŠååã§ããããã«ãããžã§ã¯ããããŒãã«åå²ããŸããã èšç®ã§ã¯ãCADéçºã®æ¢åã®çµéšã«åºã¥ããŠæ¬¡ã®ä»®å®ã䜿çšãããããã¿ã€ããäœæãããšãã«æ¹è¯ããŸããã
å®¶å ·ä»ãã®å¹³åçãªã¢ããŒãã¡ã³ããããŠã³ããŒãããã«ã¯ãçŽ25 MBã®éå§çž®ã®ãžãªã¡ããªããŒã¿ãšè¿œå ã®å±æ§ïŒ5 MBã®å§çž®ïŒ+ 10 MBã®ãã¯ã¹ãã£ãå¿ èŠã§ãã 0.2ç§ããã®ããŒã¿çææé 5ç§ãŸã§ ïŒæãé£ããå ŽåïŒã ã¢ãã«ã®ããªã¥ãŒã ã300ã500äžã®äžè§åœ¢ã«å¶éããäºå®ã§ãã
ãŠãŒã¶ãŒã«ãããã©ã³ã®èšèšãšããŸããŸãªè£œåã®é
眮ã®äœæ¥äžã1ã€ã®æäœïŒè£œåã®æ¿å
¥ãšç·šéããã©ã³ã®åçæïŒãããå¹³å100ã500 Kbã®çºä¿¡ãã©ãã£ãã¯ã ãµãŒããŒäžã®åæäœã®å¹³åå®è¡æéã¯0.1ã0.5ç§ã§ãã
ãŠãŒã¶ãŒã¢ã¯ãã£ããã£ã¯ã1åéã«1ã€ã®ã¢ãã«ãéãã¬ãã«ããŸãã¯1åéã«5ã10ã®ç·šéæäœãå®è¡ããã¬ãã«ã§ãã
ããã«åºã¥ããŠã1å°ã®ãµãŒããŒã§100人以äžã®ã¢ã¯ãã£ããŠãŒã¶ãŒãä¿æããããšãåé¡ã«ãªãããšãæããã«ãªã£ããããç°ãªããµãŒããŒã§å¹ŸäœåŠçãªã¯ãšã¹ãã®åŠçãä¿èšŒããäœããã®æ¹æ³ã§ãããã®éã§3Dã¢ãã«ãé åžããå¿ èŠããããŸãã
éçºããŒã«ã®éžæã«ãããŠãæåã¯ããã€ãã®å¶éã«çžãããŠããŸããã ãŸããC3Dããžãªã¡ããªã³ã¢ãšããŠäœ¿çšããã¢ãã«ãæäœããéã®ãžãªã¡ããªèšç®ã®é床ã«å¯Ÿããé«ãèŠä»¶ã«ããããµãŒããŒåŽã§ã®C ++ã®äœ¿çšãäºåã«æ±ºå®ãããŸããã 第äºã«ããã©ãŠã¶ã§ã¯ã©ã€ã¢ã³ãéšåãèµ·åãããšãèšèªã®éžæãJavaScriptã§ã®ã³ã³ãã€ã«ããµããŒãããèšèªã«çµã蟌ãŸããŸãã
ãã®çµæããã®æ®µéã§ã¯ããããžã§ã¯ãã¯4ã€ã®ç¬ç«ããéšåã§æ§æãããŸãã2ã€ã®å éšïŒããã¯ãšã³ãïŒãµãŒãã¹ãš2ã€ã®å€éšWebã¢ããªã±ãŒã·ã§ã³ã§ãã ã¡ã€ã³ã®å éšãµãŒãã¹ã¯ã幟äœåŠçã¢ããªã³ã°ãšèšç®ãæ åœããŸãã C3Dããã³Qt Coreã©ã€ãã©ãªã䜿çšããŠC ++ã§èšè¿°ãããŠããŸãã ãã«ããŒãµãŒãã¹ã¯ããã¡ã€ã«ããŠãŒã¶ãŒãã£ã¬ã¯ããªãããã³ãã¯ã¹ãã£åŠçã®ç®¡çãæ åœããŸãã ASP.NET Coreã§èšè¿°ãããŠããŸãã Webã¢ããªã±ãŒã·ã§ã³ãåæ§ã«åå²ãããŸãã 1ã€ã¯ã¢ããªã³ã°ãçŽæ¥æ åœããTypeScript + WebGLã§èšè¿°ãããŠããŸãã2ã€ç®ã¯ãããžã§ã¯ããšãŠãŒã¶ãŒãã£ã¬ã¯ããªã管çããããã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããAngular 2 + TypeScriptãšçµã¿åãããŠèšè¿°ãããŠããŸãã ã¯ã©ã€ã¢ã³ãéšåãšãµãŒããŒéšåã®éã®çžäºäœçšã¯ãåçŽãªHTTPèŠæ±ã䜿çšããŠè¡ãããŸãã ã«ãŒã ã®ã€ã³ã¿ã©ã¯ãã£ãã¢ããªã³ã°ãæ åœããéšåã¯ãå§çž®ããããã€ããªããŒã¿ãéä¿¡ããWebSocketæ¥ç¶ã䜿çšããŸãã ãµãŒããŒãµãŒãã¹éã®ã³ãŒãã®éè€ãé¿ããããã«ãHTTPãããã³ã«ãä»ããŠå¿ èŠãªæ å ±ã亀æããŸãã
ãµãŒããŒåŽ
ãã®ãããžã§ã¯ãã®äž»ãªãã€ã©ã€ãã¯ããµãŒããŒããŒããšã¯ã©ã€ã¢ã³ãããŒãã®çµã¿åããã§ããããã«ããã幟äœåŠã¢ããªã³ã°ãèŠèŠåãã¢ãã«ç·šéã®å±¥æŽã®ä¿åãè¡ãããŸãã ãããžã§ã¯ãã®ãã®éšåã«ã¯ãããã©ãŒãã³ã¹ãRAMæ¶è²»ã䞊ååãããã³ã¹ã±ãŒã©ããªãã£ã®èŠ³ç¹ããé«ãèŠæ±ã課ãããŸãã 幟äœåŠçã¢ããªã³ã°èªäœã¯ããªãé«äŸ¡ãªèšç®ã¿ã¹ã¯ã§ãããå€ãã®ã¢ã¯ãã£ããªãŠãŒã¶ãŒããã¢ãã«ãäœæãããšããèŠæ±ãæºããããšã¯ããã«è€éã«ãªããŸãã ãµãŒããŒäžã§å¹ŸäœåŠçã¢ããªã³ã°ã¿ã¹ã¯ãå®è¡ããã·ã¹ãã ã®ãå¿èããšããŠãC3D Labsã®C3Dã³ã¢ãéžæãããŸããããã®çç±ã¯ã以åã®èšäºãNuclear Technologies in CADã[1]ã§èª¬æããŸããã è€éãª3Dãããžã§ã¯ãã管çããæ©èœãå®è£ ããããã«ãã²ãŒã éçºè ã«äººæ°ã®ããéå±€ECSïŒãšã³ãã£ãã£ã³ã³ããŒãã³ãã·ã¹ãã ïŒã«åºã¥ãç¬èªã®3Dã¢ãã«ããŒã¿ã¹ãã¬ãŒãžã·ã¹ãã ãéçºããŸããã ã¢ãã«ã®ããªãŒæ§é ãè¡šããããŸããŸãªèŠçŽ ïŒãšã³ãã£ãã£ïŒã§æ§æãããŸããåèŠçŽ ã«ã¯ã幟äœåŠçãã©ã¡ãŒã¿ãŒãBREPã·ã§ã«ãäžè§ã°ãªããããŠãŒã¶ãŒããŒã¿ãªã©ã®ç°ãªãããŒã¿ã»ããïŒã³ã³ããŒãã³ãïŒããããŸãã ã·ã¹ãã ãå¿ èŠãªèŠä»¶ãæºããããã«ããã®å®è£ ã«ã¯å€ãã®ç¹åŸŽçãªæ©èœããããŸãã
ã¢ãã«ãèªã¿èŸŒãŸãããšããã®æ§é ã®ã¿ãèªã¿èŸŒãŸãããã®ãã¹ãŠã®ããŒã¿ïŒã³ã³ããŒãã³ãïŒã¯NoSQLããŒã¿ããŒã¹ã«æ ŒçŽãããã³ã³ããŒãã³ãã«ã¢ã¯ã»ã¹ãããšãã«èªåçã«RAMã«èªã¿èŸŒãŸããå¿ èŠã«å¿ããŠèªåçã«ã¡ã¢ãªããã¢ã³ããŒããããŸãã ããã«ãããæ°åã®ã¢ãã«ãåæã«éãããµãŒããŒäžã§ãäœRAMã³ã¹ãã§äœæ¥ã§ããŸãã
ä»ã®ãšã³ãã£ãã£ã®ã³ã³ããŒãã³ããšã®é¢ä¿ã¯ãããšã³ãã£ãã£ID-ã³ã³ããŒãã³ãã®ã¿ã€ããã®ãã¢ã®åœ¢åŒã§ã³ã³ããŒãã³ãå ã«ä¿åãããŸãã ã¢ãã«èŠçŽ ãã³ããŒããæäœäžã«ããã¹ãŠã®èŠçŽ ã¯å€ãIDããæ°ããIDãšå¯Ÿç§°ããã·ã¥é¢æ°ã䜿çšããã©ã³ãã ãªæäœã³ãŒããåãåãããããšã³ãã£ãã£å ã®ãã¹ãŠã®å€æŽãããIDã眮ãæãã代ããã«ãå€ãIDãæ°ããIDã«å€æããã³ãŒããèšæ¶ãããŸãã ããã«ãããã¢ãã«æ§é ã®åç §æŽåæ§ã倱ãããšãªããã·ã³ãã«ã§é«éãªãã€ãã³ããŒã§ã³ã³ããŒãã³ãããŒã¿ãã³ããŒã§ããŸãã ãã®çµæãã³ã³ããŒãã³ãã®æ§é ãèªã¿åããã«å·šå€§ãªã¢ãã«ãã³ããŒã§ããŸããããã«ãããèšèšãããéšå±å ã®å€§ããªã¢ã»ã³ããªãå³åº§ã«ã³ããŒã§ããŸãã
åã®ã¡ã«ããºã ã®ãããã§ãç¹å¥ãªãã©ã³ã¶ã¯ã·ã§ã³ã³ã³ããŒãã³ããå®è£ ãããŸãããã®ã³ã³ããŒãã³ãã§ã¯ãããŸããŸãªããŒã ãã³ã³ãã³ããç·šéããŠããéãã¢ãã«ã®æ§é ã®å€æŽã®å±¥æŽãèªåçã«ä¿åãããŸãã ãšã³ãã£ãã£ãæ¯èŒçå°ããªã³ã³ããŒãã³ãã«åå²ããããšã«ãããåã³ã³ããŒãã³ããžã®åŒã³åºãã«ããªã¹ããŒããé 眮ãããã®å€æŽãèªåçã«è¿œè·¡ããããšãã§ããŸããã ããã«ãããã¢ãã«å€æŽã®å±¥æŽå šäœãä¿åããäœã¶æãåã«äœæããæç¹ã«æ»ãããšãã§ããŸãïŒå±¥æŽå šäœã¯ãå¿ èŠãªãRAMã«ããŒããããªãã³ã³ããŒãã³ãã«ãä¿åãããããïŒã éçºè ã®èŠ³ç¹ããèŠããšãããã¯ã幟äœã¢ãã«ã«DBMSã«ååšãããã©ã³ã¶ã¯ã·ã§ã³ã«é¡äŒŒãããã©ã³ã¶ã¯ã·ã§ã³ã®é¡äŒŒæ§ãããããšãæå³ããŸãã
ã¢ãã«ã®åèŠçŽ ãšã³ã³ããŒãã³ãã®ããŒãžã§ã³ç®¡çã«ããããµãŒããŒäžã®ããŒãžã§ã³ãšåæãããããã«ã¯ã©ã€ã¢ã³ãã¢ãã«ã§èª¿æŽããå¿ èŠããããšã³ãã£ãã£ãšã³ã³ããŒãã³ãã«é¢ããæ å ±ãå«ãç¹å¥ãªããããã¡ã€ã«ãè¿ éã«äœæãããŸãã ããã«ãããWebSocketãããã³ã«ã®ãã€ããªããŒãžã§ã³ã䜿çšããŠãæ¥ç¶ãããŠãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãäžã®ã¢ãã«ããŒã¿ããªã¢ã«ã¿ã€ã ã§å¹æçã«åæã§ããŸãã
å®éã«ã¯ããã®ãããªã·ã¹ãã ã¯éåžžã«è¿ éã«åäœããã¢ãã«ãžã®ã»ãšãã©ã®ã¯ãšãªã®åŠçæéã5ã50ããªç§ä»¥å ã«æäŸããŸãã ãã ããã·ã¹ãã ã«ã¯ããã«ããã¯ããããŸãïŒã¢ãã«ãéãã«ã¯ããã¹ãŠã®ããŒã¿ã転éããŠèŠèŠåããå¿ èŠããããŸãã倧èŠæš¡ãªã¢ãã«ã®å Žåããããã®ã³ã³ããŒãã³ããæœåºããããã«ããŒã¿ããŒã¹ãé »ç¹ã«åŒã³åºãå¿ èŠããããæ°äžèŠçŽ ã®ã¢ãã«ã§æ°ç§ã«éãã倧ããªé 延ã«ã€ãªãããŸãã Redisã§ã®ããããã¡ã€ã«ã®ãã£ãã·ã¥ã«ããããã®åé¡ãå æã§ããŸããã ãããã¯é¢é£æ§ã倱ããªãããïŒããŒãžã§ã³0ããããŒãžã§ã³100ã®ããã+ããŒãžã§ã³100ããããŒãžã§ã³200ã®ãããã¯ãããŒãžã§ã³0ããããŒãžã§ã³200ã®åäžã®ããããšåçã§ãïŒããã£ãã·ã¥ã®ç¡å¹åã®åé¡ãç°¡åã«è§£æ±ºããŸãïŒå¿é ããããšãªãããã¯ã°ã©ãŠã³ãã§æŽæ°ã§ããŸãããŒã¿ã®é¢é£æ§ã®æ倱ã
ã¯ã©ã€ã¢ã³ãéš
ã¯ã©ã€ã¢ã³ãéšåã®èšèšã¯ãèŠèŠåã®ããã®ãšã³ãžã³ã®éžæããå§ãŸããŸããã ã»ãŒãã¹ãŠã®äººæ°ã®ããWebGLãšã³ãžã³ãè©ŠãããŸãããã次ã®çç±ã«ããããããã®ã©ãã«ããã ããããšã¯ã§ããŸããã§ããã
- ç®ã«èŠããªãç·ã®åé€ãæ²é¢ã®ã·ã«ãšããã®æç»ãªã©ãCADèŠèŠåã¢ãŒãã®åŒ±ããµããŒãã
- ä»»æã®å€ªãã®ç·ã®æç»ãšçµã¿åãããã3Dã¢ãŒãã§ã®å°ãããµã€ãºã®ããã¹ãã®é«å質åºåã®ããã®ããŒã«ã®åŒ±ãéçºïŒãã®çµã¿åããã¯ã3Dã¢ãã«ã§èšç»ãæç»ããããã«å¿ èŠã§ãïŒ
- å¹æçãªãããæè¡ã®æ¬ åŠã ã¢ãã«ã¯å€ãã®å ŽåãããŸããŸãªçŽ æã®äœäžãã®å°ããªèŠçŽ ã§æ§æãããŠããããŠãŒã¶ãŒã¯ãã€ã§ããªããžã§ã¯ããå€æŽã§ããŸãããã®ãããããã©ãŒãã³ã¹ã®èš±å®¹ã¬ãã«ãéæããã«ã¯ããããªã¡ã¢ãªå ã®å€§ããªé ç¹ãããã¡ãŒã«å°ããªãªããžã§ã¯ããåçã«æ¥çããå¹æçãªææ³ãå¿ èŠã§ãã
- ç¹å®ã®ã«ã¡ã©å¶åŸ¡ã³ã³ããŒãã³ãããªãŒããŒã¬ã€ãããªã¢ã«ãã¢ãã¡ãŒã·ã§ã³ãèšè¿°ããå¿ èŠæ§ ææ¡ããããããã¯ã¹åããªãã·ã§ã³ã¯ãèšèšã·ã¹ãã ã®ããŒãºã«é©åããŸããã
åæã®çµæããèªè»¢è»ããæžãæ¹ãããéããããè¯ããã¯ããã«ç°¡åã«ãµããŒãã§ãããšããç解ãåŸãããŸããã 壮倧ãªã©ã€ãã©ãªhttps://twgljs.orgãåºç€ãšããŠéžã°ããŸãã
次ã«ãWebGLã§ããã¢ãã©ã³ãš3Dãã¥ãŒãæç»ããäŸã瀺ããŸãã
次ã®è³ªåã¯ãããã°ã©ãã³ã°èšèªãšãã©ãããã©ãŒã å šäœã®éžæã§ãã ç§ã¯ãã§ã«ãçŽ1äžè¡ã®ãµã€ãºã®JavaScriptã¢ããªã±ãŒã·ã§ã³ãéçºããçµéšããããŸãã ãã®çµéšã«åºã¥ããŠãJavaScriptã§äœããããå人çã«éçºãããšããã¢ã€ãã¢ã¯ãaæ¬ã®å¿µãæ±ãããŠãããŸããã 次ã®TypeScriptãªãªãŒã¹ãšãAnders Halesbergããã®èåŸã«ãããšããäºå®ã«ãããèšèªã®éžæãäºåã«æ±ºå®ãããŸããã Webçšã®ãã©ãããã©ãŒã ã®éžæã¯ãAngular 2ïŒçŸåšã¯4ïŒã«ããã£ãŠããŸããïŒç§ã¯ããªãã®æ°ã®å€æ§ãªã©ã€ãã©ãªãããããžã§ã¯ããçµã¿ç«ãŠãå¿ èŠããããWebã¢ããªã±ãŒã·ã§ã³çšã«ç¬èªã®ã³ã³ãã€ã³ããŒãã¹ã¿ãŒãæ§ç¯ããããšãå°ããæã¿ãŸããã§ããã ãå æ¬çããªãã¬ãŒã ã¯ãŒã¯ããŸãã«å¿ èŠã§ããã ã·ã¹ãã ã¢ãžã¥ãŒã«ã®é 延ããŒããå¹ççãªã³ãŒãçæïŒAOTïŒãããã³åœéåæ©èœã®éçºãããæ©èœã¯ãç§ã®éžæã匷åããã ãã§ãã çŸæç¹ã§ãŸã ç§ãæ··ä¹±ãããŠããå¯äžã®ããšã¯ããœãŒã¹ãã¡ã€ã«å ã®ã¡ãã»ãŒãžã®ããŒã«ã©ã€ãºã®æ¬ åŠã§ããã第4ããŒãžã§ã³ãŸã§ã«ãã®æ©èœãå®è£ ããããšãå¿ããé¡ã£ãŠããŸãïŒ
ã¢ã€ãã¢ã®å®è£
ãã®ãããžã§ã¯ãã¯ãOpenGLã§ã®å°æ¥ã®ã¢ãã«ã®æ§é ãšå®éšçãªèŠèŠåã®ãããã¿ã€ãã®C ++ã§ã®å®è£ ããå§ãŸããŸããã æ°ãæã®ãããã°ã®åŸãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãã«ã«å€æãå§ããŸããã æåã«ã次ã®ããã«ãããè¡ããŸãããCïŒã§RESTãšWebSocketãçµã¿åããããµãŒããŒãäœæãããžãªã¡ããªãã¯ãµãŒãã¹ãããžãªã¡ããªãã¯ãªã¯ãšã¹ãã«å¯ŸããŠåŒã³åºãããã¢ãã«ãæäœããããã®Cã€ã³ã¿ãŒãã§ã€ã¹ãæã€ãã€ãããã¯ã©ã€ãã©ãªãšããŠæ¥ç¶ããŸããã C ++ããCã«ããŒã¿ãã³ããŒãã次ã«CïŒã«ããŒã¿ãã³ããŒããéã«ããã®ãããªãã€ããªããã¢ããªã±ãŒã·ã§ã³ãšäžèŠãªãªãŒããŒã¬ã€ããããã°ãããšããéåžžã«äžäŸ¿ãªããã代æ¿ãœãªã¥ãŒã·ã§ã³ãæ¢ãå¿ èŠããããŸããã æçµçã«ãC ++ããŒãå ã®WebSocketãµãŒããŒããªã³ã«ãããã¹ãŠã®ãªã¯ãšã¹ãããããã·ãµãŒããŒçµç±ã§ã«ãŒãã£ã³ã°ããŸããã åæã«ãã¯ã©ã€ã¢ã³ããèªèšŒããããã«ããžãªã¡ããªãã¯ãµãŒãã¹ã¯ã¡ã€ã³RESTãµãŒãã¹ã«å¯ŸããŠå éšãªã¯ãšã¹ããè¡ããŸãã
次ã®ã¹ãããã¯ãã¢ãã«ã®åæã¢ã«ãŽãªãºã ã®å®è£ ã§ãããããã¯ããµãŒããŒäžã§å€æŽãããã¯ã©ã€ã¢ã³ãäžã«ã¢ãã«ã衚瀺ãããŸãã ãµãŒããŒã«ãã£ãŠãµãŒããŒã®ç¶æ ãç£èŠããããåæã®åã«ã¯ã©ã€ã¢ã³ãã«çŸåšã®ç¶æ ããµãŒããŒã«éä¿¡ãããããæåã®ã¢ã€ãã¢ã¯ãä¿¡é Œæ§ãäœããå®è£ ãå°é£ã§ãããšããŠåŽäžããå¿ èŠããããŸããã 次ã®å®è£ ã«çŠç¹ãåœãŠãŸãããåã³ã³ããŒãã³ãã¯ãã³ã³ããŒãã³ãã®æŽæ°ããŒãžã§ã³ãæ ŒçŽããŸãã ãããã£ãŠãã¢ãã«å šäœã®ããŒãžã§ã³ã¯ããã®ãã¹ãŠã®ã³ã³ããŒãã³ããšåãšã³ãã£ãã£ã®ã³ã³ããŒãã³ãã®æ倧ããŒãžã§ã³ã«ãã£ãŠæ±ºå®ãããŸãã åæäžãã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ã®ããŒãžã§ã³ãå«ãèŠæ±ããµãŒããŒã«éä¿¡ããããã«å¿çããŠããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããŒãžã§ã³ããå€ãããŒãžã§ã³ã®ãã¹ãŠã®ã³ã³ããŒãã³ãã®ããŒã¿ãéä¿¡ããŸãã ããã«ãããæå°éã®ãã©ãã£ãã¯ã§ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ããªãŒã¢ãã«ã®åæãä¿èšŒãããŸããïŒåæèŠæ±ã¯1ã€ã®çªå·ã§ãããå¿çã«ã¯å€æŽãããã³ã³ããŒãã³ãã®ã¿ãå«ãŸããŸãïŒã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ããŒãã®ãããã¿ã€ããäœæããåŸãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§å¹Ÿäœã¢ãã«ã転éããããã®æé©ãªããŒã¿åœ¢åŒã®æ€çŽ¢ãéå§ããŸããã ãã®åœ¢åŒã§ã¯ã次ã®æ©èœãå¿ èŠã§ããã
- C ++ã³ãŒããšTypeScriptã³ãŒãã®äž¡æ¹ããã®ç°¡åãªåœ¢åŒã®èªã¿æžã
- ããŒã¿ã¹ããŒãã®ãµããŒã
- ããŒã¿ãããã¯ããã³ã¢ã³ããã¯ããããã®æçæé
- 粟床ã倱ãããšã®ãªãæµ®åå°æ°ç¹è»¢é
- 100Kbã10Mbã®ç¯å²ã®å¹³åããŒã¿ãã±ãããµã€ãºã§ã®å¹ç
- å°æ¥ã®å©äŸ¿æ§ã®ããã®ããŒãžã§ã³ããŒãžã§ã³ãšãã·ã¹ãã ã®ããŸããŸãªéšåã®æ®µéçãªæŽæ°ã®å¯èœæ§
å®éšã§äœ¿çšããJSONã¯ããã«åé€ããå¿ èŠãããããã®åŸãMessagePackãGoogle Protocol BuffersãApache ThriftãBSONãããã³åæ§ã®ã©ã€ãã©ãªããéžæããå¿ èŠããããŸããã ããã©ãŒãã³ã¹ã®åäžãå§çž®çã®åäžã䟿å©ãªã³ãŒããžã§ãã¬ãŒã¿ãŒã®ãããGoogle Protocol BuffersãéžæããŸããã éèŠãªèŠå ã¯ãå³æžé€šã®æ®åãšãé·æçã«èŠæšãŠãããªããšããåžæã§ããã ãã®çµæãç§ã¯C ++ã§ãã€ãã£ãprotobufã䜿çšããã¯ã©ã€ã¢ã³ãã§èªã¿æžãããprotobufjsãproto2typescript-C ++ãšTypeScriptã®éã§åäžã®ã¹ããŒã ã䜿çšããŸãã ããã«ãWebSocketsãä»ããŠéä¿¡ãããå ŽåãããŒã¿ã¯zlibã«ãã£ãŠããã«å§çž®ãããŸãã ãã®ã¹ããŒã ã«ãããã¢ãã«ã«åŸã£ãŠå¿ èŠãªãã¹ãŠã®ããŒã¿ãéåžžã«å¿«é©ãã€è¿ éã«è»¢éã§ããŸããã
PSïŒæè¿ãåãéçºè ã®FlatBuffersã©ã€ãã©ãªãèŠã€ããŸããããã®ãªãã·ã§ã³ã®æ¹ããã£ãšè¯ããšæã£ãŠããŸãããããã®ã©ã€ãã©ãªãè©ŠããŠã¿ãååãªæéããããŸããã§ãããããã«ãã¡ã€ã³ãã©ã³ãã§ã¯TypeScriptãµããŒãããŸã å©çšã§ããŸããã
ããŒã¿åœ¢åŒãèœã¡çãããã·ã¹ãã ã®åéšåã§æåã®å®éšãè¡ã£ãåŸããµãŒãã¹å šäœãã©ã®ããã«æ©èœããããã»ãŒæããã«ãªããŸããã ããã«ãããã«ããã¯ãè©äŸ¡ãããå°æ¥ã®ã¹ã±ãŒãªã³ã°ãªãã·ã§ã³ãã¹ã±ãããããŸããã 次ã«ãããã°ã©ã ã®æåã®ããŒãžã§ã³ãäœæãããããŠãŒã¶ãŒã¢ã¯ã·ã§ã³-ã·ãã¥ã¬ãŒã·ã§ã³ãµãŒããŒãžã®èŠæ±-ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã®èŠèŠåããªã³ã¯ã®æäœã瀺ãããŸããã ãã®æ®µéã§ãæåã®å€±æã蚪ããŸããããã®ãããªäœæ¥ã¹ããŒã ã¯ããããŒã«ãŒãåŒã£åŒµããããŠã¹ãæŸãããªããžã§ã¯ããåæ§ç¯ããããã¹ã¿ã€ã«ã§ããŒã¿ãæŽæ°ããããšãæäŸããŸãã ã«ãŒãœã«ã移åãããšãã«ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ãã«è¡šç€ºããã«ã¯é ãããŸããã
ãã®çµæã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãéšåã®å¢çãåèããã¯ã©ã€ã¢ã³ãããã倧èŠæš¡ã«ããããšãããã³ã¯ã©ã€ã¢ã³ããã€ã³ã¿ã©ã¯ãã£ããªããªãŽã³èŠèŠåã®äºåèšç®ãå®è¡ãããµãŒããŒãBREPã¢ãã«ã§æçµã¢ã¯ã·ã§ã³ãå®è¡ãããã¹ãŠã®ã¯ã©ã€ã¢ã³ããåæããããã«ããµãŒããŒãšã¯ã©ã€ã¢ã³ãéã®æ©èœãè€è£œããããšãå¿ èŠãšããŸããèªåã§ã ããã«ãããWebAssemblyãããžã§ã¯ãã«ã€ããŠæ·±ãèããããã«ãªããŸãããçè«çã«ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®éšåã«åäžã®ã³ãŒãããŒã¹ãæã¡ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®èšç®ã®å®è¡ãè¿ éã«ç®¡çããå¿ èŠã«å¿ããŠè² è·ãåæ£ã§ããŸãã ããããä»ã®ãšãããããã¯ãã¹ãŠå€¢ã§ã...
次ã®ã¹ãããã¯ãå®å šãªWebGLã¬ã³ããªã³ã°ã®å®è£ ã§ããã ãã ãããã®æ©èœã¯ããªãæ§ããã§ãããããªãæ±ããããªããã°ãªããŸããã§ããã å®è£ ã®äž»ãªãã€ã³ãããªã¹ãããŸãã
çŸåšã®æ®µéã§ã¯ãåŸæ¥ã®ãã©ã¯ãŒãã¬ã³ããªã³ã°ãšã¬ã³ããªã³ã°ã«ããã€ãã®ãã¹ã䜿çšããŠããŸãã å°æ¥çã«ã¯ãScreen Space Ambient OcclusionãŸãã¯Scalable Ambient Obscuranceã«åºã¥ããŠã·ã§ãŒãã£ã³ã°ãå®è£ ããäºå®ã§ãã
蚱容ã§ããããã©ãŒãã³ã¹ãéæããããã«ãã°ããŒãã«ãªããžã§ã¯ã座æšç³»ã®å°ããªé ç¹ãããã¡ãŒã«å°ããªãªããžã§ã¯ããæ¥çãããããªã«ãŒãã«éä¿¡ããŸãã ãªããžã§ã¯ããå€æŽãããšãå¿ èŠãªãã¹ãŠã®ãããã¡ãåã³ããã»ããµäžã§åã«ãŠã³ããããŸãã ã¯ã€ã«ãã«èŠãããããããŸããããè¿œå ã®å±æ§ã§ãªããžã§ã¯ããããªãã¯ã¹ãéä¿¡ããããšã¯ããã«è€éã§ãã
1ãã¯ã»ã«ä»¥å€ã®å€ªãã®3Dã©ã€ã³ã§ã®æç»ã¯ãWebGLã§ã¯éåžžã«éèŠã§ãã ãã¹ãŠã®é ç¹ãåãç·äžã«ãããåããå±æ§-æ¥ç·ãã¯ãã«ã«æ ŒçŽãããŠãã2ã€ã®äžè§åœ¢ã®æç»ãéããŠå®è£
ããŸããã äžè§åœ¢ã®æçµçãªé ç¹ã¯ããã€ã³ããç»é¢ã®åº§æšç³»ã«å€æãïŒç»é¢ã®å¹
ãšé«ãã®æ¯çãèæ
®ããããïŒãå¿
èŠãªç·ã®å€ªããè¿œå ããæ£èŠåããã座æšã«å€æããããšã«ãããé ç¹ã·ã§ãŒããŒã§èšç®ãããŸãã ã©ã€ã³ã¹ã ãŒãžã³ã°ã¯ââããã©ã°ã¡ã³ãã·ã§ãŒããŒã®ã¢ã«ãã¡ãã£ãã«ãéããŠå®è£
ãããŸãã
ããã¹ãã¬ã³ããªã³ã°ã¯ãValveãå
¬éããSDFæè¡ã䜿çšããŠè¡ãããŸããã ãã©ã³ããæºåããããã«ãlibgdxã®HieroãŠãŒãã£ãªãã£ã䜿çšãããŸããã ç§ãåŸãçµæã¯æºè¶³ã®ãããã®ã§ãããã©ã³ããµã€ãºã14ã16ãã¯ã»ã«ã®å Žåãããã¹ãã¯ãããã«èŠããŸããããµã€ãºãå°ãããããã¹ããç»é¢ã®å¹³é¢ã«å¯ŸããŠéè§ã§ããå Žåãã»ãšãã©å€èªã§ããŸããã èªè¡éã®æºåæ¹æ³ãããããªãã ããããããŸããããå€ãã®æéã倱ããçµæãæ ¹æ¬çã«æ¹åããããšã¯ã§ããŸããã§ããã å°æ¥çã«ã¯ã ãã®ææ³ãè©Šãäºå®ã§ãã
ãŸããææ°ã®ãã©ãŠã¶ãŒã§ã®WebGLãµããŒãã¯ãOpenGL for Windowsãšæ¯èŒããŠåªããŠããããšã«ã泚æããŠãã ããã ããã¯æããã«ãDirectXãä»ããŠWebGLåŒã³åºãããšãã¥ã¬ãŒãããAngleãããžã§ã¯ãã«ãããã®ã§ãã IE 11ã§ãæŸèæã®ãªãã³ãŒãã¯åé¡ãªãåäœããŸããäžæ¹ãè€éãªæ§é ãæã€å€§éã®ããŒã¿ã§åäœããã¢ããªã±ãŒã·ã§ã³ã§ã¯ã察åŠãéåžžã«é£ããã¡ã¢ãªãªãŒã¯ãšããæ·±å»ãªåé¡ããããŸãã
ãšãããŒã°
éçºã®æ¬¡ã®ã¹ãããã¯ãããã°ã©ã ã®äž»é¡é åã®å®è£ ã§ãã-建ç©ã®ã¢ããªã³ã°ãéšå±ãšããŸããŸãªæ§é èŠçŽ ã®ã¬ã€ã¢ãŠããã€ã³ããªã¢ã¢ã€ãã ã®é 眮ããŠãŒã¶ãŒã«ã¿ãã°ã®äœæã ãã¡ãããèªèšŒãšèªèšŒãããã¯ã¢ãããããŸããŸãªéšåã®ã¹ã±ãŒãªã³ã°ãéçºããã»ã¹å šäœã®ç¶ç¶çãªçµ±åãšãã圢ã§ãWebãµãŒãã¹ã«é¢é£ããå€ãã®ããšã¯æ³šæãšæéãå¿ èŠãšããŸãã ãããã®åéã§ã¯ããããžã§ã¯ããäžè¬ã«å ¬éãããåã«ãããªãã®äœæ¥ãè¡ãããŠããŸãã ããã«ãããããããå®è¡ãããäœæ¥ã«ãããç§ã¯èšå€§ãªçµéšãç©ãããšãã§ããŸããã ç§ã®èããèªè ã®äžéšã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã 誰ããçµéšããããWebãµãŒãã¹ãå®è£ ããããã®ãã³ããå ±æããæºåãã§ããŠããå Žåãç§ã¯ããããèãããšã«éåžžã«èå³ããããŸãã å人ã§æžãããããã«ã³ã¡ã³ããæ®ããŠãã ããã