-ãããžã§ã¯ãã®ããã«æ°ŽãæŽããŸããã
-ããããã£ãããïŒ ãªããã©ãããªã®ã§ããïŒ æ³¢ããããŠïŒ
...
-èããŠãããããããªãã¯æ³¢ã«ã€ããŠè©±ããŸãããèŠããŠããŸããïŒ ããããã§ãã¯ããŠãã ããïŒ
ãã¯ããè¯ãæ³¢ã§ããããŸã å±æãšã³ãŒã¹ãã£ã¯ã¹ãè¡ã£ãŠããŸããïŒã
...
-ããã«ã¡ã¯ãç§ã¯Unityã§äžæ©äžéãã§ããŸããåå°ãšã³ãŒãåãããã³ãŒã¹ãã£ã¯ã¹ãèŠãŠãã ããïŒ
-ããããæ¬åœã«ããïŒ ãããŠãããªãã®æ°Žã沞隰ããŠãããšããåå°ã¯ãã°ã§ã¯ãããŸãããïŒ
...
-ãã€ãã€ãã«æ²žéš°ãå®çŸããŸããã
-ããã ãïŒ ã»ãã沞隰ããæ³¢ãåããããã©ãã ãã¯ãŒã«ãªã®ïŒ
...
-åçããã£ããããŠãæ°·ãäœããæãã€ããããã§ãããïŒ
-æ®éã«èããŠãã ãããæ°·ãåã£ãŠããŸãããäœç©ãå¢ããŠããŸããïŒ ãšããã§ããã€ããã²ãŒã ãã¬ã€ãå§ããŸããïŒ
å人ãšã®ãã°ã®ããŒãã®ããªãšãŒã·ã§ã³ã
ã¯ããããªãã¯ãã§ã«ç解ããŸãããæåŸã«ç§ã¯ãããžã§ã¯ãã§ã®æ°Žã®å®æœã«ã€ããŠã話ããŸãã å§ããŸããããïŒ
åã®èšäº
ããŒã1 å
ã
ããŒã2 æ§é ã
ããŒã3ã ã°ããŒãã«ãªã«ãã¬ããžã
ããŒã4ã æ°Ž
ç®æ¬¡
- 3Dã®ããèŠ
- ãŠã£ãã·ã¥ãªã¹ã
- æåã®ãã³ã±ãŒãã¯ãŽããŽãããŠãã
- éååŠ
- æ°Žçæ
- ãã€ããã¯ã¹
- 枩床
- çµè«ãšé°è¬
3Dã®ããèŠ
ãŸããã倧人ã®ç·ããããããçš®é¡ã®å€§èŠæš¡ãª3Dãããžã§ã¯ãããæ°Žãäœãæ¹æ³ãèŠãŠã¿ãŸãããã
äžè¬ã«ã3Dããã¢ã€ãã¢ããã©ãã°ããããšã¯åªããèšç»ã§ããã2Dã¯ã©ã¹ã¢ã«ãŽãªãºã ã§ã¯å€§å¹
ã«å°ãªããªããŸãã
ãããã£ãŠãæãåçŽãªãã®ããããè€éãªãã®ãžïŒ
ç©çåŠã®ãªãå¹³ããªæ°Žã ã¬ãã«ã§ç¯å²ãæããŠåã¶ã fpsã¯åãäžããããèŠæ ããè¯ãããïŒã¢ãŒãã£ã¹ãã¯çŸããã·ã§ãŒããŒãè©Šããçµã¿åãããŸããïŒã 察話ã§ããŸãã ã¬ãŒã¹ã²ãŒã ãããã®ã§ãæ°Žã¯å°å¹³ç·ã§ããèŠããŸããïŒ
ç©çåŠã®ãªãå€è§åœ¢ã®æ°Žã 圌ãã¯æªå€©åã®å°å³ãèšç»ããŸããããããŠæ°Žã¯é¡ã®ããã«å¹³ãã§ããïŒ ããªãŽã³ãè¿œå ãããµã€ã³ãæãåºããŠãã ããããããŠä»ãåµã®æ³¢ãå°å¹³ç·äžã«ç©ãã£ãŠããŸãã 誀ã£ãŠæ°Žã«å
¥ã£ãŠããªãå Žåãæ°Žãæ¬ç©ã§ã¯ãªãããšã¯æ°ã¥ããŸããã
ç©çåŠãšå¹³ããªæ°Žã ã¬ãŒã¹ãå®äºããããSkyrimãäœããŸãã çŸããå¹æã®ããå¹³ããªæ°Žãç©çãšã³ãžã³ã®ããã€ãã®ãã§ãã¯ããããŠæ³³ãããšãã§ããæ°Žã åµãæ³¢ã¯å¿
èŠãããŸãããããã©ãŽã³ã空ãé£ã³ãFus Ro daãéè¡äººã足ã§ããããšã誰ãããããRPGã§å¿
èŠãšããŸããïŒ
ç©çåŠãšå€è§åœ¢ã®æ°Žã ãã¡ã³ã¿ãžãŒã«çžãããGTAãäœãå§ããŸããã ãããŠããã§ã«çŸå®çãªæ³¢ãããã氎茞éã®ç©çåŠã§ããïŒ ãã®å£®å€§ãªèšäºã®ããã« ïŒã è¯ãæ°Žãè€éåããããšã¯æ¬åœã«å¯èœã§ããïŒ
- ç²åã·ã¹ãã ã å¯èœãªéãïŒ ããªããããŒã¯ãšããžãŒããžã¿ã«ã®äººã§ããã€ãŠããªãããã€ãŠæµããããšãã§ãããèª å®ãªãæ°Žã§ãã€ãããã©ãã¢ãäœã£ããªããã¹ãã¬ãŒãã措氎ã«ãªããŸãã ãããŠã匷åãªãããªã«ãŒãïŒãŸãã¯2ã€ïŒãšãããããã¹ãŠãèšç®ã§ããããã»ããµãããã°ã
ãŠã£ãã·ã¥ãªã¹ã
倧èŠæš¡ãªãããžã§ã¯ãããã®åç
§ãã§ããã®ã§ããããžã§ã¯ãã«äœãå®è£
ããããã倢èŠãŸãã
èšäºã®åé ã®ãŠãŒã¢ã©ã¹ãªçŽ¹ä»ãèŠããŠããŸããïŒ ããã¯åè«ã§ã¯ãããŸãã-å¥ã®ãã¢ããã¹ã¯ãªãŒã³ã·ã§ããããããªãå人ã«æãããã³ã«ã圌ã¯å®å
šã«ã¯ã¬ã€ãžãŒãªã¢ã€ãã¢ãæäŸããŠãããŸããã ãŸãããããã®ã¢ã€ãã¢ã®ã»ãšãã©ãå®è£
ãããéçºã®èŠ³ç¹ãããããžã§ã¯ããããã«é¢çœããªã£ããããããã¯çŽ æŽãããããšã§ãã ãããã£ãŠã以äžã®ãªã¹ãã¯ãã¡ãŒã«ã¹ããŒã³ãšèšç»ãªãã§ç¹°ãè¿ãã³ã³ãã€ã«ãããŸããã
ãããŠãããããŠã£ãã·ã¥ãªã¹ãã®ãªã¹ãã§ãã
- æ°ããããªã¥ãŒã ã®æ°Žãè¿œå ããããæ¢åã®ããªã¥ãŒã ããèžçºãããããªã¢ã«ã¿ã€ã ã®æ©èœã
- æ°Žé¢ã®æ³¢ã
- 枩床ãåçµããã³æ²žéš°æ°Žã®å¯èœæ§ã
- ä»ã®ã¢ãžã¥ãŒã«ãšã®çžäºäœçšïŒé¢šã身äœã倩æ°ã
- ç
§æã·ã¹ãã ãšã®å¯æ¥ãªçžäºäœçšïŒè
é£æ§ãå
æ£ä¹±ãåå°ã
- ãšãã£ã¿ãŒã§ã«ã¹ã¿ãã€ãºããæ©èœã
ãããŠãã¢ãžã¥ãŒã«ãšã®çžäºäœçšã«ã€ããŠ-ãããã¯ã¯ã»ãŒç¡éã§ãã èªåã®ç®ã§ç¢ºãããŠãã ãã-å
ã«é¢ããèšäºã§ãç§ã¯ãããžã§ã¯ãã«ç¥ã®å
ç·ãå«ããæ©äŒããããšèšããŸãã-空æ°äžã®å¡µã®ããã«ç®ã«èŠããå
ç·ã ãããŠä»ãç§ãæ°Žã沞隰ãçµãã£ããšãããããã®ç¥ã®å
ç·ãèŠããèžæ°ç²åãçæããããšã劚ãããã®ã¯äœããããŸããïŒ ãããã颚ã¯ç²åãšçžäºäœçšããå¯èœæ§ããããŸããã€ãŸããã湯ã®äžã«ããèžæ°ãçŸããæ¶æ£ããŸãã ãããŠããã®ãããªçžäºäœçšãéåžžã«å€ãããããããã¿ã€ããäœæããã®ã§ã¯ãªããèšé²ããæéããããŸããã
æåã®ãã³ã±ãŒãã¯ãŽããŽãããŠãã
Hydrophobiaã液äœããæ£çŽã«ãã·ãã¥ã¬ãŒãããããã«ããããŒã ãšã¯äžç·ã«è¡ããŸããããã®æ¹æ³ã¯ãªãœãŒã¹ãå¿
èŠãšããŸãã ç°¡çŽ åããå¿
èŠããããŸãã pixelartã¯ãããžã§ã¯ãå
ã«ããããããã¹ãŠã®å¹³é¢ã¯æ°Žå¹³ãŸãã¯åçŽã§ãã ãŸããã¬ãã«ã®ç©ºãã¹ããŒã¹ã¯é·æ¹åœ¢ã®ã»ãããšããŠè¡šçŸã§ããŸãã ããã§åœŒããšååããŸãã
ã¬ãã«ã®æåã®ååŠçã§ïŒ
- ã¬ãã«äžã®ãã¹ãŠã®ç©ºãã¹ããŒã¹ãé·æ¹åœ¢ã®ã°ãã°ãã®ããªã¥ãŒã ã«åå²ããŸãã
- ããªã¥ãŒã ã®çžäºæ¥ç¶ãèŠã€ããæ°Žã®ãæµããã®ã°ã©ããäœæããŸãã
ãªã¢ã«ã¿ã€ã ã§ïŒ
- åããªã¥ãŒã ã«ã€ããŠãè¡šé¢ã®æ³¢ãåå¥ã«èšç®ããŸãïŒæ³¢ã®å©ããåããŠæ°Žãããªã¥ãŒã ããããªã¥ãŒã ãžæµããããšãã§ãããšããäºå®ãç¡èŠããŸãïŒã
- ã°ã©ãã䜿çšããŠæ°Žã®æµããèšç®ããŸãã
æ°Žæ±
ããããå®ãèšããšãäœãèµ·ãããŸããã§ããã èœãšãç©Žãéåžžã«å€ãã®ã§ã5é建ãŠã®å»ºç©ãããã€ã建ãŠãããšãã§ããŸãã ããšãã°ãæ³¢ãåæããããéä¿¡ããè¹è¶ã®å§åã«å¯ŸåŠãããããå¿
èŠããããŸãã ããããéè²ã®è£å°ããããŸã-ãªãŒãžã§ã³ããªãŒã®å®è£
ã¯ããã®ã¡ãœããã®å®è£
ã®ããã«ããã€ãŠãããžã§ã¯ãã®ã©ãã§ã§ã䜿çšãããŠããŸããã
éååŠ
å®å
šã«åçãªæ°Žã§ã¯ããŸããããªãã£ãã®ã§ãç§ãã¡ã®ç掻ãç°¡çŽ åããŸããã-ãšãã£ã¿ãŒã§æ°Žã調æŽãããã€ããã¯ã¹ã®å¹»æ³ã®ããã«æ³¢ãæ®ããŸãã å®éããªãã·ã§ã³ã®ãªã¹ããããªãã·ã§ã³3ã«é²ã¿ãŸãããã
æ°Žã¯æµããæ¹æ³ãç¥ã£ãŠãããããéåžžã«ç©è°ãéžããã®ã§ããããããã®ãã€ã³ãã«æ°Žãããã ããããšèšãããšã¯ã§ãããããã«æ¶²äœã¡ãã·ã¥ã眮ããè¯ãåçãæ®ããŸãã ããŠãã¬ãã«ãã¶ã€ããŒïŒå°æ¥çã«ã¯ïŒãæ°Žã確å®ã«ããã¹ãéèŠãªãã€ã³ããããã€ãé
眮ãããšããšã³ãžã³ã¯ãã®äºåããæ£ç¢ºã«ããŒãã€ã³ãã®ã¬ãã«ãŸã§æ°Žã泚ããŸãã ãã¡ããã1ã€ã®ãã¢ã³ã«ãŒããå¥ã®ãã¢ã³ã«ãŒãã®äžã«çœ®ãããšãã§ããŸãããããã¯ãšã³ãžã³ã®åé¡ã§ã¯ãªããç§ãã¡ã«ãšã£ãŠæªç¥ã®ã¬ãã«èšèšè
ã®åé¡ã§ãã
å¥ã®æ©èœã¯ããããã«ããäœæããããã®åå¥ã®ã¢ã³ã«ãŒã§ãã ã¢ã«ãŽãªãºã ããã®ãããªã¢ã³ã«ãŒãèŠã€ãããšãããã¯æ°Žã§æºãããªãããã«ãããã¡ããšãã空æŽã«ç©ºæ°ãæ®ããŸãã
ã©ããªçµæãåŸãããã®ãç解ã§ããã®ã§ãä»åºŠã¯ã¢ã«ãŽãªãºã ãéçºããŸãã
æ°Žçæ
äžè¬ã«ãæ°Žã¯ã¬ãã«å
šäœãåããããšãã§ããŸãã å£ã¯é·æ¹åœ¢ã®ç Žçã§æ§æãããã©ãã«ã§ãé
眮ã§ãããããæ°Žéã¯ç©Žã®ãªãéåžé¢ã®é·æ¹åœ¢ããªãŽã³ã§ãã ãªããŠãã£ãã ãã£ãšã·ã³ãã«ãªåœ¢ã«åããŸãããã
æ確ã«ããããã®å°ããªã¹ãã€ã©ãŒã ååŠçã®çµæãšããŠãæ³¢ãç°¡åã«èšç®ã§ããæ°ŽéãååŸããå¿
èŠããããŸãã å®éã1ã€ã®æ°Žéã¯1ãã¯ã»ã«ã®åãã®æ°Žæ±ã®ã»ããã§ãã
液äœãååšããå¯èœæ§ã®ãã空ãã¹ããŒã¹ãæ±ããŸãã éå»ã®èšäºã§è©±ãã壮倧ãªå°åããªãŒã¯ãå€ãã®å©ãã«ãªããŸãã å£ã§å ããããŠããªããã¹ãŠã®é·æ¹åœ¢ã®ããªã¥ãŒã ãååŸããŸãã
- ããªãŒã®äžçªäžïŒæåã¯å·ŠïŒã®ã³ãŒããŒããå§ããŠãäžããæåã®ç©ºã®é åãæ¢ããŸãã
- èŠã€ãã£ã空ã®é åããå§ããŠãäžããæåã®ç©ºã§ãªãé åãæ¢ããŸãã
- çµæã®ã»ã°ã¡ã³ãããªã¹ãã«è¿œå ããŸãã
- ããªãŒã®æäžéšïŒå¹ŸäœåŠçãªæå³ïŒã®å¢çã«å°éãããã1ãã¯ã»ã«å³ã«ç§»åããŸãã
- ããªãŒã®å³åŽã®å¢çç·ã«å°éããŠããªãå Žåã¯ããã€ã³ã1ã«é²ã¿ãŸãã
- ã»ã°ã¡ã³ãã®ãªã¹ãããé·æ¹åœ¢ãåéããŸãïŒãããŠããããã¯ããªãæ£åžžã«ãœãŒããããŸãïŒã
- é£æ¥ããé·æ¹åœ¢éã®æ¥ç¶ãæ§ç¯ããŸãã
åã®èšèã®ä»£ããã«
ã»ãšãã©ã®å Žåããããã®é·æ¹åœ¢ãããçŸããæ¹æ³ã§ååŸã§ããŸãã ãã®ãããã¯ã«ã€ããŠã³ã¡ã³ããããŠããã ããŸãã
å®éãé·æ¹åœ¢ã¯æè¯ã®éžæã§ã¯ãããŸããã ããŒãã®æ°ãå€ãããïŒã¿ã¯ãŒã®æ¯ãªã©ïŒãé·æ¹åœ¢ã®æ°Žéãå€ããªããŸãã ãããŠãããã¯ããã©ãŒãã³ã¹ãäœäžãããŸãã ç©ãããªæ°Žã¯å¹³ãã§ãããåºéšã®åœ¢ç¶ã¯ç§ãã¡ã«ãšã£ãŠéèŠã§ã¯ãªãããã次ã®ããã«é£æ¥ããé·æ¹åœ¢ãçµã¿åãããŸãã
A ( B), B - ( A) - .
ãã®æ®µéã®åŸããªãä»ãã®åºã®ããå°éã®æ°Žãæ®ããŸããäžã®å³ã§ã¯ãã¯ã£ãããšèŠããŠããŸãã
ãããäžã®ç©ºãã¹ããŒã¹ã®ããŒã¯ã¢ããïŒãªã³ã¯ä»ãïŒ
次ã«ãã¬ãã«ãããäžã§èšèšè
ãæ®ãããã¹ãŠã®ããŒã¯ãèŠã€ããã¬ãã«ããšã«ã¯ãŒã¯ããŒã¹ããããªãã³ã°ãããå¿
èŠããããŸãã ãã®ãããªã¢ã«ãŽãªãºã ã¯ãããåŠçããŸãïŒ
- ãã¹ãŠã®æ°ŽäœããŒã¯ïŒ ïŒãå€ã®éé ã§y座æšã§äžŠã¹æ¿ããŸãã
- åã©ãã«ã«ã€ããŠïŒ
2.1ã ã©ãã«ãå±ããé·æ¹åœ¢ãèŠã€ããŸãã
2.2ã é·æ¹åœ¢ãèŠã€ãããªãå Žåãã©ãã«ã¯å£ã«ãããç¡èŠããŠptã«é²ã¿ãŸãã 2ã
2.2ã é·æ¹åœ¢ã®é«ããã©ãã«ã®ã¬ãã«ãŸã§äžããŸãã
2.3ã é·æ¹åœ¢ã®é«ãããŒãã«ãªã£ãå Žå-é·æ¹åœ¢ãåé€ããŸãã
2.4ã äžç«¯ãããŒã¯ã®äžã«ãããã¹ãŠã®é£æ¥ããé·æ¹åœ¢ãèŠã€ããŠåé€ããŸãã
2.5ã ä»ã®ãã¹ãŠã®é£æ¥ããé·æ¹åœ¢ãèŠã€ããptã«é²ã¿ãŸãã 2.3ïŒæ°Žäœã«åŸã£ãŠãã¹ãŠã®é·æ¹åœ¢ãååž°çã«åãåããŸãïŒã - æ°æ³¡ã®ãã¹ãŠã®ã©ãã«ãåéããŸãïŒ ïŒãå€ã®éé ã§y座æšã§äžŠã¹æ¿ããŸãã
- åã©ãã«ã«ã€ããŠïŒ
4.1ã ã©ãã«ãå±ããé·æ¹åœ¢ãèŠã€ããŸãã
4.2ã é·æ¹åœ¢ãèŠã€ãããªãå Žåãã©ãã«ã¯å£ã«ãããç¡èŠããŠptã«é²ã¿ãŸãã 4ã
4.2ã é·æ¹åœ¢ã®é«ããã©ãã«ã®ã¬ãã«ãŸã§äžããŸãã
4.3ã é·æ¹åœ¢ã®é«ãããŒãã«ãªãå Žå-é·æ¹åœ¢ãåé€ããŸãã
4.4ã äžç«¯ãããŒã¯ã®äžã«ãããã¹ãŠã®é£æ¥ããé·æ¹åœ¢ãèŠã€ããŠåé€ããŸãã
4.5ã ã©ãã«ã®ã¬ãã«ã®äžã«äžç«¯ãããä»ã®ãã¹ãŠã®é£æ¥ããé·æ¹åœ¢ãèŠã€ããn 4.3ã«é²ã¿ãŸãïŒæ°æ³¡ã®ã¬ãã«ã«å¿ããŠãã¹ãŠã®é·æ¹åœ¢ãååž°çã«ã«ããããŸãïŒã
ã芧ã®ãšããããŠã©ãŒã¿ãŒããŒã¯ãšæ°æ³¡ããŒã¯ã®éãã¯ãåè
ããã¹ãŠã®é£äººãååž°çã«ééããåŸè
ãé£äººãå®å
šã«ããã«ã¬ãã«ãäžåããšåæ¢ããããšã§ãã
ãããŠä»ãåçã§ïŒ
ãããã«æ°ŽäœããŒã«ãŒãè¿œå ããŸãã
ãªã³ã¯ãšåãããš
æ°Žäœã§ã¯ãªãããããé·æ¹åœ¢
äœåãªãªã³ã¯ãšé·æ¹åœ¢ãåé€ããŸãã
åãåã£ãæ°Žã®éãæ Œå®ã§èŠèŠå
å°ãããéèŠãªã¡ã¢ããŒã¯ã®ã¬ãã«ã«å¿ããŠé·æ¹åœ¢ãåãåããšããäºå®ã«ãããããããããããã®é·æ¹åœ¢ã§å
ã®é«ãã®é
åïŒæ°Žé¢äžã®å€©äºã®y座æšïŒãä¿æããŸãã å°æ¥çã«ã¯ãæ³¢ãå¶éããããã«ãããã®é«ããå¿
èŠã«ãªããŸã-ãããªããã°ãæ³¢ã¯å£ãééã§ããŸãã
ãšãã£ã¿ã§ã©ã®ããã«èŠããããèŠãŠã¿ãŸãããã
ãã€ããã¯ã¹
çŸåšã®ãªã¢ã«ã¿ã€ã ã®æ°ŽãæŸæ£ããŠããã®ã§ãå°ãªããšãçŸããæ³¢ãäœããŸãããã æ°Žãçæãããšã次ã®ãããªæ°Žç®¡çè
ãåŸãããŸãã
namespace NewEngine.Core.Water { public class WaterManager : MonoBehaviour {
ãããŸã§ã®ãšããããã®ãã¹ãŠã®ã³ãŒãã®äžã§ãç§ãã¡ïŒ ãŸãã¯ã¹ããŒãªãŒãã©ãŒãšããŠã®ç§ ïŒã¯WaterPolygonã«ã®ã¿èå³ããããŸãã ãããã¯ãããªããæ³¢ãäœãããšãã§ããéåžžã«æå°éã®æ°Žã§ãã ãŸãããããã®èŠçŽ ã¯çžäºã«æ¥ç¶ãããŠããŸãïŒã°ã©ãã«é¢ããæ
å ±ã¯ããããã®ããªãŽã³ã§åŒãç¶ãå©çšå¯èœã§ãïŒã éèŠã§ãªã詳现ãèŠéããå Žåããã®ã¯ã©ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
éæ¹ããªãã³ãŒã namespace NewEngine.Core.Water { public class WaterPolygon {
ããããŒãç·åŒµããããŒã湿ããintåã®æ®µéããããŒãfoamThresholdããããŒãfoamForceããããŒãfoamDampeningããããŒã空æ°æž©åºŠããããŒãairTranscalencyããããŒãverticalTranscalencyããããŒãminBoilTemperatureããããŒãminBoilBubbleããããŒãmaxBoilBubbleããããŒãboilFrequencyã namespace NewEngine.Core.Water { public class WaterPolygon {
1ã€ã®åªãããã¥ãŒããªã¢ã«ã§æ³¢ãäœã£ãã®ã§ãæµäœç©çåŠã«ã€ããŠã¯èª¬æããŸããã ç°¡åã«èšããšãçŸåšã®é«ããé床ãæé©ãªé«ããããã§ããã£ãŠããæ¥ç¶ãããããã®åœ¢ã§æ°Žãè¡šããŸãã ã°ãã¯æ¯åããæ¯åãé£äººã«äŒããŸãã ãã¶ã€ã³ã®ã¹ããªã³ã°ã®å¹
ã¯1ãã¯ã»ã«ã§ãã
ãã ããéèŠãªè¿œå äºé
ã1ã€ãããŸãã ãã¥ãŒããªã¢ã«ã«ã¯ãæ°Žãã¬ãŒãã³ã°ã®å Žãã1ã€ãããããŸããããã°ã©ãå
šäœããããŸãã ãããŠãæ³¢ãæ£ããåæããå¿
èŠããããŸãã äŸã¯ããæ確ã§ãïŒ
ãã®ã¬ãã«ããããšããŸããã
3ã€ã®æ°Žåã§æ§æãããŸã
ããæç¹ã§ãéãããªãŽã³ã«æ³¢ãçŸããŸã
ã¢ã«ãŽãªãºã ã¯ãå·Šã®åã®é«ãã«åºã¥ããŠé©åãªè¿åãèŠã€ããæ³¢ãåæããŸã
éåžžã«å€§ããªæ³¢ã§ã¯ãã¢ã«ãŽãªãºã ã¯å¥ã®ãã€ããŒãéžæããŸã
æé©åã®æ°åã 次ã®æ³¢ãèšç®ããããšã¯æå³ããããŸããã
- ç»é¢å€ã®ããªãŽã³ã
- æ³¢ã®ãªãããªãŽã³ã
次ã®æ³¢ã®èšç®ã§ã¯ããã¹ãŠã®æ³¢ããããå€ãããå°ãããã©ããããã§ãã¯ããããã§ããã°ãå°±å¯æéã確èªããŸãïŒ ããªãŽã³ãç»é¢ããå®å
šã«å€ããŠããå Žåããããå€ã¯ãããã«é«ããªããŸãã ãããã£ãŠãæ¥ç¶ãããããªãŽã³ãŸãã¯ä»ã®ã¢ãžã¥ãŒã«ïŒç©çåŠã颚ãªã©ïŒã®åœ±é¿ã«ãããæ°Žãèµ·ããããšãã§ããŸãã
ãããŸã§ã®ãšãããæ°Žã«heããçç±ã¯ãããŸããã 圌女ã®å¹³åãæŠäºéè¡åž«ã®æŠããå¹³å¡ãªããªã±ãŒã³ã劚ãããã®ã¯äœããããŸããã Morraã®äžå¿ãšããŠã®å¯ãã æ°·ã溶ããæéã
枩床
äžå¿
èŠãªããããªããšãããmanç
ãªç 究ã«ãããããããç§ã¯çŸå®ã®ç±ååŠã«ããã«6ãæã®éçºãè²»ããããã¯ãããŸããã ãããã£ãŠãå®å
šã«åçŽåããŸãã ãããŠããå°ãã
ãŠã§ã¶ãŒãããŒãžã£ãŒããå§ããŸãããã ãã€ã®æ¥ãåµãšç©ããããããã«ãããŸãããä»ã¯ããã ãã§ãïŒ
namespace NewEngine.Core.Weather { public class WeatherManager : MonoBehaviour { [SerializeField, Range(-100, 200)] float airTemperature; public float AirTemperature { get { return airTemperature; } } } }
ã³ã³ã»ããã¯æ¬¡ã®ãšããã§ãã
- æ°Žæž©ã¯æåã¯æ°æž©ãšåãã§ãã
- 0°Cæªæºã®æž©åºŠã§ã¯ãæ°ŽãåçµããŸãã
- 100°Cã®æž©åºŠã§ã¯ãæ°Žã沞隰ããŸãã
- æ°Žã®äœç©ã¯äºãã«æž©åºŠã亀æããŸãã
- æ°Žã®äœç©ã¯ã倧æ°ã®äœç©ïŒå¹ŸäœåŠçãªæå³ã§ïŒãèæ
®ããŠã倧æ°ãšæž©åºŠã亀æããŸãã
- æé©åãšæé©å解é€ïŒ
6.1沞隰ããæ°Žã¯æ±ºããŠç ããŸããã
6.2ã æ°Žããç®èŠããããšãç¡ç äžã®æ¶²äœã®æž©åºŠå€åã®ç°¡åãªèšç®ãè¡ãããŸãã
WaterPoligon.Lineã®æž©åºŠã¯ã æ°Žæ±ã®äžç«¯ãšäžç«¯ã«ã®ã¿ä¿åãããŸãã
class Line { public int min; public int max; ... public float minTemperature; public float maxTemperature; ... }
éåžžã«äžæ£ç¢ºãªæ¹æ³-çµå±ã®ãšããããã¹ãŠã®æçš¿ã®é«ããç°ãªããŸãããããã¯ç§ãã¡ã«åã£ãŠããŸãã
æåã¯ãåãããã€ãã®æçã«åå²ãããããã®æçéã®ç±äŒéãèšç®ãããšããã¢ã€ãã¢ããããŸããïŒ1ã€ã®åãšé£æ¥ããåã®äž¡æ¹ïŒã ãã®å ŽåãçŸåšã®å®è£
ã§ã¯äžå¯èœãªãå±€ç¶ã®æ°ŽãïŒæ°·/æ°Ž/æ°·ïŒãäœæããããšãã§ããŸãã
枩床äŒéã¯ã3ã€ã®ç°ãªããæ¹åãã§å®è¡ãããŸãã æåã®æçœãªããšã¯ãæ°Žæ±ã®ç«¯ã®éã§ãã
if (length > 0) { ... float avgTemperature = (maxTemperature + minTemperature) * 0.5f; float ratioTranscalency = verticalTranscalency / length; maxTemperature = maxTemperature + (avgTemperature - maxTemperature) * ratioTranscalency; minTemperature = minTemperature + (avgTemperature - minTemperature) * ratioTranscalency; }
äºçªç®ã¯ãã£ãšé¢çœãã§ãã 空æ°ãšã«ã©ã ã®äžç«¯ã®éã®ç±äŒéã æ°Žãçæãããšããå®éã«ã¯ã倩äºã®åº§æšã§ããé«ããååŸããŸããã ãããã£ãŠããã€ã§ããæ°Žé¢äžã®ç©ºéã®é«ããååŸã§ããŸãã æ°Žé¢äžã®ç©ºæ°ãå€ãã»ã©ãç±äŒéãéããªããŸãã ç©è°ãéžã声æã ããããæžå€ã§ã¯ãæ°Žã¯äœãæŽçªãããéãå·åŽ/æãŸããŸãïŒ
float length = height - min; if (length > 0) { if (height < max) { float airVolume = Mathf.Min(max - height, MAX_AIR_VOLUME); maxTemperature = maxTemperature + (airTemperature - maxTemperature) * Mathf.Clamp01(airTranscalency * airVolume); } ... }
é£æ¥ããåéã®ç±äŒéãç¶æããŸãã 枩床æ
å ±ã¯æ±ã®ç«¯ã«ã®ã¿ä¿åããããããç·åœ¢è£éãã·ãŒã³ã«å
¥ããŸãã
åç奜ãã®æ¹ãž
ã³ãŒãæ奜家åã static void UpdateTemperatureDelta(float horisontalTranscalency, float[] minTemperatureDelta, float[] maxTemperatureDelta, int i, Line line, Line other) { if (line.height <= line.min || other.height <= other.min) { minTemperatureDelta[i] = 0; maxTemperatureDelta[i] = 0; return; } float height = line.height - line.min; float otherHeight = other.height - other.min; if (Mathf.Max(line.height, other.height) - Mathf.Min(line.min, other.min) >= height + otherHeight) { minTemperatureDelta[i] = 0; maxTemperatureDelta[i] = 0; return; } float minY = Mathf.Max(line.min, other.min); float maxY = Mathf.Min(line.height, other.height); float minT = (minY - line.min) / height; float maxT = (maxY - line.min) / height; float otherMinT = (minY - other.min) / otherHeight; float otherMaxT = (maxY - other.min) / otherHeight; float minTemperature = Mathf.Lerp(line.minTemperature, line.maxTemperature, minT); float maxTemperature = Mathf.Lerp(line.minTemperature, line.maxTemperature, maxT); float otherMinTemperature = Mathf.Lerp(other.minTemperature, other.maxTemperature, otherMinT); float otherMaxTemperature = Mathf.Lerp(other.minTemperature, other.maxTemperature, otherMaxT); float ratio = horisontalTranscalency * Mathf.Clamp01(height / otherHeight); minTemperatureDelta[i] = ratio * (minTemperature - otherMinTemperature); maxTemperatureDelta[i] = ratio * (maxTemperature - otherMaxTemperature); }
枩床ã®äº€æã®æ§é ã¯æ³¢ã®äº€æã«äŒŒãŠããŸãããæ³¢ã¯ååŽã®é£æ¥ãã1ã€ã®WaterPolygonã«ã®ã¿éä¿¡ãããé£æ¥ããããããã«ç±ãéä¿¡ãããŸãã
ãããŠæåŸã®ä»äžãã¯ãæ°Žã沞隰ãããŠåãããããšã§ãã 枩床ã100°C以äžã®å Žå-ã©ã³ãã ãªã¹ããªã³ã°é床ã液äœã«ã©ã ã«è¿œå ãã枩床ãé«ãã»ã©é床åæ£ã倧ãããªããŸãïŒå®éã100°Cã§ã¯ãªããæ°Žãå°ãæ©ã泡ç«ã¡å§ããŸãïŒã
ããŠã枩床ã0°C以äžã®å Žåãã¹ããªã³ã°é床ããŒãã«ä¿ã¡ãé£æ¥ããã¹ããªã³ã°ã³ã©ã ããã®é床ã®äŒéãžã®å¿çãåæ¢ããŸãã
ãŸãã¯èšãæãããšïŒ
if (height < max) { if (maxTemperature >= minBoilTemperature) { float depth = target - min; float ratio = Mathf.Clamp01((maxTemperature - minBoilTemperature) / (100 - minBoilTemperature)); float heightValue = Mathf.Min(depth * 2, Mathf.Max(minBoilBubble, ratio * maxBoilBubble)); float frequency = Mathf.Lerp(0, boilFrequency, ratio * ratio); if (Random.value > 1 - frequency) height += Random.Range(-heightValue, heightValue); } } if (maxTemperature <= 0) { speed = 0; return; }
åŸã
ã«æ²žéš°ããæ°Ž
çµè«ãšé°è¬
äžèšã®ãã¹ãŠã®åŸãæ°Žããããžã§ã¯ãã«çŸãããšãã£ã¿ãŒã®ã¬ãã«ã«ã泚ããããšãã§ããŸãã å¯ãçåœãäžãã湿æ°ã§åºæ¿çã沞隰ã硬åïŒ
ããããã®ã³ãŒããæžããŠãç»åãååŸããã®ã¯æ®å¿µã§ãã åå°ãå±æãã³ãŒã¹ãã£ã¯ã¹-ç§ãã¡ã®ãã¹ãŠïŒ ãã®ãããããã§ãã倪ãã·ã§ãŒããŒãç
§æã·ã¹ãã ãšã®çžäºäœçšããã¯ã¹ãã£ãžã®ã¬ã³ããªã³ã°ãªã©ãã¹ãŠãè¡ãããŸãã
ããããããã«ã€ããŠã¯æ¬¡ã®èšäºã§è©³ãã説æããŸãã :)