
èæ¯
次ã®Ludum Dareã«åããŠãããŸããŸãªãžã£ã³ã«ã®ããã€ãã®ã²ãŒã ãã¹ã±ããããŠã¿ãããšã«ããŸããã ç§ã¯éåžžãã²ãŒã éçºã®çµéšããªãããã2Dã²ãŒã ãšPhaser.jsãšã³ãžã³ã®ã¿ãæ€èšããŸããã 1ã€ã®ã¢ã€ãã¢ã¯2Dã¹ãã«ã¹ã§ãã ãããŠã¹ãã«ã¹ãã©ãã«ããã®ããå ãšåœ±ã®äœåããããŸãã å°ãã°ãŒã°ã«ããŠããšããã§ãHabréã§ãã®ãããªè¯ãèšäºãèŠã€ããŸããïŒ 1åãš2å ïŒãIlluminated.jsã©ã€ãã©ãªïŒOpenGameArt.org ããã®ã©ã³ãã ãªã¢ã»ããã»ããïŒãåãåºã ãããã«ãã®åçãååŸããŸããã

ç§ã¯çµµã奜ãã ã£ãã å ãšåœ±ã®ãããã§ãäžå®ã®ã ãŒããšæ·±ã¿ãããã«çŸããŸããã å¯äžã®åæºã¯ã圱ããŸã£ããèªç¶ã«èŠããªãã£ãããšã§ãã ãŸããilluminated.jsã¯çŽç²ãª2Dç°å¢ïŒèªã¿åã-äžé¢å³ãŸãã¯åŽé¢å³ïŒã§åäœããããã§ã¯æ¬äŒŒ3DïŒæ£é¢å³/äžé¢å³ïŒã䜿çšããŠãããããåœç¶ã§ãã ãããŠãç¡éã®åœ±ïŒå æºãé«ãå ŽåïŒã§ã¯ãªããæéã®åœ±ã欲ããã®ã§ãå ããã§ã³ã¹ã®ã¹ããããééããããã«ããŸãã äžè¬çã«ãçŸãããªãããã«ã
åèšãããšãåé¡ã®ã¹ããŒãã¡ã³ãã¯æ¬¡ã®ããã«ãªããŸããã
- æç»ãããã¹ãã©ã€ãã®ã»ããããããŸãïŒããã¯éèŠã§ããç§èªèº«ã¯æç»æ¹æ³ãå®éã«ã¯ç¥ããããœãŒã¹ãããªã¢ã«ããç»åãçæããã®ãç°¡åã ããã§ãïŒ
- ããŒã¹ãã¯ãã£ã-äžéš/åé¢ãæ¬äŒŒ3Dã åçŽã«äž/åŽé¢ããã®å Žåãilluminated.jsãšäžèšã®ã¡ãœãããé©ããŠããŸãã
- ãã®2Dãšã³ãžã³ã§ã ããã§ããããžãã¯ã¯2次å ã§è¡ãæ¹ãç°¡åã§ãã¬ãã«ã¯æ§æããããã§ããããŒã«ããããŸããLudumã«ãšã£ãŠãããã¯ãã¹ãŠéåžžã«éèŠã§ãã
èªè
ãžã®æ³šæ
ã²ãŒã ã3Dã¢ããªã±ãŒã·ã§ã³ã®çµéšè±å¯ãªéçºè
ã¯ãèªåã«ãšã£ãŠæ°ãããã®ãèŠã€ããããšã¯ãŸããããŸããã Unityã§ã®çµæãéçºãåã«ããªãã«ãšã£ãŠéèŠãªå Žåããã®ãããªã·ãŒã³ã¯ãã®äžã§ç°¡åã«æ§æã§ããŸã-å
ãšåœ±ã®äž¡æ¹ãç®±ããåºããŠåäœããŸãã ãã®èšäºã¯å®éšãšèŠãªãããšãã§ããçè
ã®ããã«éçãPhotoshopã䜿ã£ãŠããªã人ãžã®ã¡ãã£ãšããã¢ããã€ã¹ãšããŠã䜿ããŸããæç»ã¹ãã«ããªããŠããä»ã®æ¹æ³ã§çŸããã§ããŸãã
ãœãªã¥ãŒã·ã§ã³1.çŽ æŽãªã¬ã€ãã£ã¹ãã£ã³ã°
ïŒ äŸãžã®ãªã³ã¯ ïŒ
é ã«æµ®ããã æåã®æ¹æ³ã¯ã¬ã€ãã£ã¹ãã£ã³ã°ã§ãã ã€ãŸããã·ãŒã³ã®åãã¯ã»ã«ããå æºãŸã§ç·ãåŒããŸãã éäžã«é害ç©ãããå Žåããã¯ã»ã«ã¯åœ±ã®äžã«ãããŸãã

æããã«ãjavascriptãå®è¡ãã䟡å€ã¯ãªãã£ããããWebGLãã©ã°ã¡ã³ãã·ã§ãŒããŒãå©ãã«ãªããŸããã ãã©ã°ã¡ã³ãã·ã§ãŒããŒã¯ãæç»ãããããªãŽã³ïŒãã®å Žåãã²ãŒã ãã£ã³ãã¹ã®ãµã€ãºã®é·æ¹åœ¢ïŒå ã®åãã¯ã»ã«ã«å¯ŸããŠãããªã«ãŒãã«ãã£ãŠå®è¡ãããŸããããã¯ç®æšãšã¡ããã©äžèŽããŸãã ã·ã§ãŒããŒã«å æºãšé害ç©ã«é¢ããæ å ±ãéä¿¡ããããã«æ®ã£ãŠããŸãã
Phaser.jsã§ã·ã§ãŒããŒãæäœããæ¹æ³ãç¥ãããå Žå
å æºãå€ããå°ãªããã¯ã£ããããŠããå Žåãé害ç©ã3次å ã«ç§»åããå¿ èŠããããŸãã 16x16ã®ããªãŒã¯ãããŒã¹ååŸã8ã§é«ãã16ã®åéã®ãããªãã®ã«ãªãã¯ãã ãšããŸãããããã®ãããªåéã¯ãå ã®ã¹ãã©ã€ããå転ãããããšã§ååŸã§ããŸãã ãããŠããã§ã³ã¹ã¯2ã3ãã¯ã»ã«ã®åããè¿œå ããã®ã«ååã§ãã
ãã®çµæã䜿çšããããã¹ãŠã®ã¹ãã©ã€ãã¯ããã¯ã¹ãã£ã®åœ¢åŒã§äœæããã3Dã¢ãã«ã«ãªããŸãã-1ã¹ãã©ã€ãããã16ã€ã¡ãŒãžãåé«ãã®ã¹ã©ã€ã¹ã ããªãã¯ããããã¯ã»ã«ã¢ãã«ãšåŒã¶ããšãã§ããŸããããã®æã«ã¯ç§ã¯ãã®ãããªèšèãç¥ããŸããã§ãã:)

ã·ã§ãŒããŒã¯ããã®ãã¯ã¹ãã£ãšãã¹ãã©ã€ããæç»ãããããŒã¯ãä»ããã·ãŒã³ããããåãåããŸããïŒã¹ãã©ã€ãçªå·ã¯è²åããããŠããŸãïŒã ãã®çµæãã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«èŠçŽãããŸããã
![]() |
|
![]() | ![]() |
å šäœãšããŠãæªãã¯ãããŸããã ãããããªããžã§ã¯ãèªäœã«ååãªå /é°åœ±ããªãããšã¯æããã§ãã å æºã®ãäžãã«ããã¯ãªã¹ãã¹ããªãŒãå®éã«ç§ãã¡ã®è¿ãã«ãããé ãå¿ èŠããããšããŸãããã å³åŽã®ããªãŒã¯ååç¹ç¯ããŠããã¯ãã§ãã ãããŠãå³åŽã®ã¹ã¯ãªãŒã³ã·ã§ããã®å¢ç³ã¯ããã§ã³ã¹ã§éšåçã«é ãããŠããå¿ èŠããããŸãã
äž¡æ¹ã®åé¡ãäžåºŠã«è§£æ±ºããŠã¿ãŸãããã ã·ã§ãŒããŒã§ã¯ãåžžã«å°é¢ããããŒã ãæããŸãã ãã ããã¹ãã©ã€ãã®3Dã¢ãã«ããããã©ã®ã¹ãã©ã€ããã€ã³ããã©ã®é«ãã«ããããããããŸãã ãã®ç¥èã䜿çšããŸãã
![]() | ![]() |
ç§ãã¡ã®åœ±ã¯éåžžã«ã·ã£ãŒãã§ããããšã«æ°ã¥ããããããŸãã-ããã¯ã»ã«åãã®ããã«å°é¢ãšãªããžã§ã¯ãèªäœã®äž¡æ¹ã«ã ãŸããç§ã¯ããã«æ³šæãåããå¥ã®çš®é¡ã®åé¡ã«åºããããŸã§ããã®åé¡ã解決ããæ¹æ³ãèãå§ããŸããã

ãã§ã«ã·ã§ãŒããŒã³ãŒãã調ã¹ãŠãã人ã¯ããã«å€ãã®åé¡ã«çŽé¢ãããšæããŸãã
- ãã¹ããããã«ãŒãïŒæåã«å æºã次ã«ã¬ã€ãã£ã¹ãã£ã³ã°æã®ãã¹ããããã«ããïŒ
- ãã¯ã¹ãã£ã®ã«ã¹ã±ãŒãåŒã³åºã
- å€ãã®æ¡ä»¶ã¹ããŒãã¡ã³ãïŒifïŒ
ããã§ã2çªç®ã®ãœãªã¥ãŒã·ã§ã³ãç»å ŽããŸããã
解決ç2ïŒæ¹åãããReykasting
ïŒ äŸãžã®ãªã³ã¯ ïŒ
ãã¯ã¹ãã£ãžã®ã«ã¹ã±ãŒãã¢ããŒã«ãæé€ããããã«ãå šäžçã®3Dãããã§1ã€ã®ãã¯ã¹ãã£ãäœæããããšã決å®ãããŸããã ç§ãã¡ã®ã¢ãã«ã¯ã16ã32ãã¯ã»ã«ã®é«ãã§ã¯ãããŸããã é¡ã®è§£æ±ºçã¯ãäžçã®32ã®ãã¹ã©ã€ã¹ããäœæãããããã1ã€ã®ç»åãã¯ã¹ãã£ã«æ¬¡ã ãšé 眮ããããšã§ãã ããããããã¯æ©èœããŸããã640x640ã®ã¯ãŒã«ããµã€ãºã§ã¯ããã¯ã¹ãã£ã®ãµã€ãºã32å倧ãããªããWebGLã¯ããã»ã©æ¶åããŸããã ããããç§ãçãããã«ãOS /ãã©ãŠã¶/ãããªã«ãŒãã®çµã¿åããã«ãã£ãŠã¯æ¶åããããšãã§ããŸãããé Œãã«ããªãæ¹ãè¯ãã§ãã
ãŸããããªãã¯ããããã¹ãŠçµãæ¹æ³ã«ã€ããŠèããå¿ èŠããããŸãã äžè¬ã«ããã¯ã»ã«ã®è²ã«é¢ããæ å ±ã¯å¿ èŠãªããç¹å®ã®ãã€ã³ãã§ã®ååš/äžåšã®ã¿ãå¿ èŠã§ãã
WebGLã§ã¯ããã¯ã¹ãã£ãããŒããããšãã«ããã®ãã©ãŒãããïŒæŽæ°ã®è²æåããŸãã¯æµ®åå°æ°ç¹ã®å Žåãã¢ã«ãã¡ãã£ãã«ã®æç¡ïŒãæå®ã§ããŸãã ããããä»¥æ¥ ããã©ã«ãã§ã¯ã·ã³ã°ã«ãã€ãã®è²æåã䜿çšããPhaserã䜿çšããŸãã ãã¯ã»ã«ããšã«3è²ã®ãã€ããããããããã«24ãã¯ã»ã«ã«é¢ããæ å ±ãåããããšãã§ããŸãã ãã®æ¹æ³ã§ãé«ããã«è©°ã蟌ãå Žåãäžçã®2åã®å€§ããã®ãã¯ã¹ãã£ãå¿ èŠã§ãã0ã23ã®é«ãã®ååãš24ã31ã®é«ãã®ååã§ãããŸãã¯ãç°¡åã«ããããã«ã16æªæºãšãããã16以äžã

ããããã¢ã«ãã¡ãã£ãã«ã«ã€ããŠã¯ã©ãã§ããããã
äžè¬ã«ãè²æåã«å ããŠãã¢ã«ãã¡ãã£ãã«ïŒãã€ãå
šäœïŒããããŸãã ãã ããããã§ã¯ãã¹ãŠããäºåä¹ç®ãïŒäºåä¹ç®ã¢ã«ãã¡ïŒã®æç¡ã«åºã¥ããŠããŸãã ãã®ã¢ãŒãããªã³ã«ãªã£ãŠããå ŽåïŒããã©ã«ãã§ãªã³ã«ãªã£ãŠããã»ããIEã§ç¡å¹ã«ããããšã¯ã§ããŸããïŒãè²æåã¯ã¢ã«ãã¡ãã£ãã«å€ãã倧ããããããšã¯ã§ããŸããããã®è²ã¯æ£ãããªããšèŠãªãããæããã«ç®çã®ãã¥ãŒã«åŒ·å¶ãããŸãã ããã«ãããäžéšã®ã¢ã«ãã¡ãã€ãå€ã§3è²ãã€ãã®æªã¿ãçããŸãã ãããã£ãŠã念ã®ãããã¢ã«ãã¡ãã£ãã«ã¯äœ¿çšããŸããã
ãã®ãããªããããjavascriptã§äœæããããšã¯ããããããšã®æäœããããããç¹ã«é£ãããããŸããã ããããåŸ ã¡äŒãã¯ã·ã§ãŒããŒã§åŸ ã£ãŠããŸããã

äœãããå¿ èŠã¯ãããŸãã-èšç®ãè¡ãå¿ èŠããããŸãã å®éã1ã€ã®æäœã ããå¿ èŠã§ããããããæ£ããäœçœ®ã«èšå®ãããŠããããšã確èªããŸãïŒäœçœ®= z座æšïŒã ãããæŒç®ã§ã¯ãããã¯ANDãã¹ã¯ãããããããã®é¢æ°ãèšè¿°ããå¿ èŠããããŸããã
float checkBitF(float val, float bit) { float f = pow(2., floor(mod(bit, 16.))); return step(1., mod(floor(val/f),2.)); }
人éã®èšèªã«ç¿»èš³ããå ŽåïŒãŸããå°ãªããšãjsïŒããããèµ·ããããšã§ãïŒ
function checkBitF(val, bit) { f = Math.pow(2, bit % 16); // f = 1 << bit; f1 = Math.floor(val / f); // , f1 = val >> bit if (f1 % 2 < 1) return 0; else return 1; // , 1. 0. }
ãšããã§ãã·ã§ãŒããŒã®modãåžžã«æŽæ°ãè¿ããšçªç¶èããå Žåãããã¯ããã§ã¯ãããŸããã
çµã¿èŸŒã¿é¢æ°-ããã¯ã¹ãã¹ããããã¯ã©ã³ãã䜿çšããŠãæ¡ä»¶ã¹ããŒãã¡ã³ããåãé€ãããšãã§ããŸãã GPUã䜿çšããããšã§ãã³ãŒããããæé©åã§ããŸãã
å°ããªäŸ
ãã®ãããªã·ã§ãŒããŒãã芧ãã ããïŒ www.shadertoy.com/view/llyXD1
äžéšã«æ¬¡ã®è¡ã衚瀺ãããŸãã
ãŸããå¹³åfpsã60ããããã«äžåãããã«MAX_STEPSçªå·ãèšå®ããŸãïŒ60ãè¶ ããå€ã¯è¡šç€ºãããªãããšã«æ³šæããŠãã ããïŒã ãã®åŸã3è¡ç®ã次ã®ããã«å€æŽããŸã
raycastMathã«ã¯fps 40ãraycastIfã«ã¯32 fpsããããŸãã å®éãéãã¯æ¬¡ã®è¡ã«ãããŸãã
æ¡ä»¶ä»ãã¹ããŒãã¡ã³ãïŒ
èšç®ïŒ
äžéšã«æ¬¡ã®è¡ã衚瀺ãããŸãã
#define MAX_STEPS 1500 #define STEP_DIV MAX_STEPS #define raycast raycastMath
ãŸããå¹³åfpsã60ããããã«äžåãããã«MAX_STEPSçªå·ãèšå®ããŸãïŒ60ãè¶ ããå€ã¯è¡šç€ºãããªãããšã«æ³šæããŠãã ããïŒã ãã®åŸã3è¡ç®ã次ã®ããã«å€æŽããŸã
#define raycast raycastIf
raycastMathã«ã¯fps 40ãraycastIfã«ã¯32 fpsããããŸãã å®éãéãã¯æ¬¡ã®è¡ã«ãããŸãã
æ¡ä»¶ä»ãã¹ããŒãã¡ã³ãïŒ
bool isBlack(vec4 color) { if (color.r + color.b + color.g < 20./255.) { return true; } return false; }
èšç®ïŒ
float getBlackness(vec4 color) { return step(20./255., color.r + color.b + color.g); }
çµæã®ç»åã¯ä»¥åã®ãœãªã¥ãŒã·ã§ã³ãšå€§å·®ãããŸããã§ããããfpsã¯ãã§ã«1.5ã2å倧ãããªã£ãŠããŸãïŒè©³çŽ°ãªèšç®ã¯èšäºã®æåŸã«ãããŸãïŒã

ãã®æãŸã§ã«ãç§ã¯ãã§ã«é çªã«ã·ã£ããŠã«ã€ããŠèªãã§ããŠã3Dã®äžçã§ã¯ã»ãšãã©ã®å Žåã·ã£ããŠãããã³ã°ãšåŒã°ããæ¹æ³ã䜿çšããŠããããšãããããŸããã ãã®æ¬è³ªã¯æ¬¡ã®ãšããã§ãã
- ãŸããå æºã®èŠç¹ããã·ãŒã³ãæ§ç¯ããåäžè§åœ¢ã®åãã¯ã»ã«ã«ã€ããŠãããããå æºãŸã§ã®è·é¢ãèšæ¶ããŸãã
- 次ã«ã芳å¯è ã®èŠç¹ããã·ãŒã³ãæ§ç¯ãããšãã«ãååŸããã·ã£ããŠãããã䜿çšããŸãã åäžè§åœ¢ã®åãã¯ã»ã«ã«ã€ããŠãã·ã£ããŠãããäžã®å¯Ÿå¿ãããã€ã³ãã確èªããŸãã å æºã®è¿ãã«ãã¯ã»ã«ãããå Žåããã¯ã»ã«ã¯åœ±ã®äžã«ãããŸãã
ãããæ£åžžã«æ©èœããããã«ã¯ãæ£çŽãª3次å ããªãŽã³ã§ã¢ãã«ãäœæããå¿ èŠããããŸããããã§ã¯ãã¯ã»ã«ãã¯ã¹ãã£ã䜿çšã§ããŸããã Phaserã¯ã2Dåãã«åŒ·åããããšã³ãžã³ã§ãããé ç¹ã·ã§ãŒããŒãæäœããæ©äŒãæäŸããŸããã ããããããã¯ããèªäœã«ä»»æã®ãã£ã³ãã¹ãæãããšãå¯èœã«ããŸãã ãããã£ãŠã3Dã·ãŒã³ãåå¥ã«æ§ç¯ããã·ã£ããŠã®ã¿ãæç»ããŠããã2Dã·ãŒã³ã®äžã«æç»ããããšãã§ããŸãã
解決ç3ïŒ3Dã·ã£ããŠ
ïŒ äŸãžã®ãªã³ã¯ ïŒ
3次å ãªããžã§ã¯ããæäœããããã« ã three.jsã䜿çšããŸãããããã¯ãwebglãçŽæ¥æäœããã®ã«ããªãæéãããã£ãããã§ãã
ãŸããã¹ãã©ã€ãã3Dã¡ãã·ã¥ã«å€æããå¿ èŠããããŸããã ãã®ç¬éãç§ã¯MagicaVoxelããŒã«ïŒãã¯ã»ã«ãæäœããããã®åªããããŒã«ïŒã«ç²Ÿéããobjãã¡ã€ã«ã«ãšã¯ã¹ããŒãããæ¹æ³ãèŠãŠãæåããå€æãç¹°ãè¿ãããšã«ããŸããã ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- ãã¯ã»ã«ã¢ãã«ãååŸããŸãïŒãããŠãç§ã¯ãã§ã«ãããæ§ç¯ããæ¹æ³ãç¥ã£ãŠããŸããïŒ
- ãã¯ã»ã«ããšã«ã衚瀺ãããé¢ãã€ãŸã ä»ã®ãã¯ã»ã«ã«æ¥ããªãã§ãã ãã
- é¡ããšã«2ã€ã®äžè§åœ¢ãšè²æ å ±ãèšè¿°ããŸãã three.jsã§ã¯ãTHREE.BufferGeometryã¯ã«ã¹ã¿ã ãžãªã¡ããªã«é©ããŠããŸãã å®éšã®ããã«ãç§ã¯ãã¹ãŠã®ãã¯ã»ã«ãã·ã³ã°ã«ãã¯ã»ã«ãã¥ãŒãïŒTHREE.BoxGeometryïŒãšããŠã·ãŒã³ã«è¿œå ããããšããŸãã...äžè¬ã«ããããè¡ããªãã§ãã ããã
楜ãã¿ã®ããã«ãç§ã¯æšãåããäžè§åœ¢ã®æ°ãæ°ããŸããã 16 x 16 x 16ãã¯ã»ã«ã®å°ããªã¯ãªã¹ãã¹ããªãŒã§ã¯ãçŽ1000åã®äžè§åœ¢ãå¿ èŠã§ããããšãå€æããŸããã ãã®åŸãå人ãããã®ãªã³ã¯ãæäŸãããŸãã-http ://www.leadwerks.com/werkspace/topic/8435-rule-of-the-thumb-polygons-for-modelscharacter/-人æ°ã²ãŒã ã®äžéšã®ãã£ã©ã¯ã¿ãŒã®ã¢ãã«ã®ãµã€ãºã瀺ãããŠããŸãã ããã§èŠã€ããïŒ

ããŠãç§ã®ã¯ãªã¹ãã¹ããªãŒã®25ãããã¢ãã ãžã§ã³ã»ã³å šäœãåéã§ããŸãïŒ
ãã®çµæãããã¯ã»ã«ãã§ã¹ããŒãžãã¹ãããããŠãã¹ãã©ã€ãã®å€æãããçŽããŸããã ïŒã¯ãªã¹ãã¹ããªãŒã®ãããªïŒå転å³åœ¢ã¯ãããäžžã¿ã垯ã³ãå°ãèªç¶ã«ïŒãŸãã¯äžèªç¶ã«-åé圢ã®ã¯ãªã¹ãã¹ããªãŒã«å¯Ÿããããªãã®æèŠã«äŸåããŸãïŒç §ããããŸããã ããªãŽã³ã®æ°ãæžããããã«ãåããªãŽã³ã®è²ã«é¢ããæ å ±ã®ä¿åãåæ¢ããŸããïŒã€ãŸããé£æ¥ããããªãŽã³ã1ã€ã«çµåã§ããŸããïŒã代ããã«ãå ã®ã¹ãã©ã€ãããããªã¢ã«ãã¯ã¹ãã£ãšããŠè¿œå ãããã®ãã¯ã¹ãã£ã®ãã€ã³ããããªãŽã³ã§åç §ããŸããïŒãããããuv-mappingïŒã
ããã«ãããäžè§åœ¢ã®æ°ã2åã«æžå°ããŸããããèå³æ·±ãããšã«ãããã©ãŒãã³ã¹ã«ã¯ãŸã£ãã圱é¿ããŸããã§ããã ãã®æ±ºå®ã®ããã©ãŒãã³ã¹ã¯ããŸã£ããç°ãªããã®ã®åœ±é¿ãåããŸããã
ç§ã®ã¬ã€ãã£ã¹ãã£ã³ã°ãããæªãããšã§ã¯ãããŸãããããœãªã¥ãŒã·ã§ã³ã¯æ©èœããããã«ã¯åœ±ãæããŸãã

ãã¡ãããä»ã§ã¯ã¯ãªã¹ãã¹ããªãŒã¯ãäžãããæãããŠããŸãã 圱ãäœæããããã«ããããæ£ããäœçœ®ã§ããã2次å ããŒãžã§ã³ã®ãéæ³ããéšåçã«å€±ããŸãã...ãããããã®åé¡ã解決ã§ããŸãã
three.jsïŒãŸãã¯3Dãšã³ãžã³ãããããŸããããç§ã¯ãŸã 匷ããããŸããïŒ1ã€ã®ãªããžã§ã¯ãïŒã¡ãã·ã¥ïŒãæç»ããã«ã¯2ã€ã®ããšãå¿ èŠã§ãã
- ãžãªã¡ããª-ãã©ãŒã ã«é¢ããæ å ±ïŒèªã¿åã-ããŸããŸãªå±æ§ãæã€äžè§åœ¢ã®ã»ãã-æ³ç·ãã¯ãã«ããã¯ã¹ãã£ã®UV座æšãè²ãªã©ïŒ
- ãããªã¢ã«-ãããªã¢ã«ã«é¢ããæ å ±ïŒèªã¿åã-ãããªã¢ã«ã®ããããã£ã«åºã¥ããŠãã·ã§ã€ãã®æç»ãã·ã£ããŠã®é©çšããã€ã©ã€ãã®ãã€ã³ããªã©ã®é ç¹/ãã©ã°ã¡ã³ãã·ã§ãŒããŒã®ã»ããïŒ Three.jsã«ã¯ããã€ãã®çŽ æããããå€èŠ³ãç¹å®ã®æ©èœã®ãµããŒãïŒããšãã°ããã¹ãŠã®äººã圱ãæãããšãã§ããããã§ã¯ãããŸããïŒãããã³ããã©ãŒãã³ã¹ãç°ãªããŸãã
ãããã£ãŠãç¹å®ã®ã¬ã³ããªã³ã°ã§ã¯ããããªã¢ã«ããŸãã¯ãã®ã·ã§ãŒããŒã«è²¬ä»»ããããŸãã ãããªã¢ã«ãååŸããé ç¹ã·ã§ãŒããŒã調æŽããŠãã¢ãã«ãå転ããŠæç»ãããããã«ããããšãã§ããŸããããã¹ãŠã®èšç®ïŒåœ±ãç §æïŒã¯ããŸãã§å転ããŠããªããã®ããã«é©çšãããŸãã
ãã®çµæãã·ãŒã³å ã®ãã¹ãŠã®ãªããžã§ã¯ããååŸããé ç¹ã·ã§ãŒããŒã®æåŸã«æ¬¡ã®è¡ãè¿œå ããŸããã
gl_Position.z = gl_Position.y; gl_Position.y += -position.y/${size/2}. + position.z/${size/2}.;
ã©ãã§
- size-ã¯ãŒã«ãã®ãµã€ãºïŒgl_Positionã«ã¯-1ãã1ã®åº§æšãå«ãŸããŠããå¿ èŠãããããã€ã³ãïŒ0,0,0ïŒã¯ã·ãŒã³ã®äžå¿ã§ãïŒ
- position-å³åœ¢å ã®ãã€ã³ãã®çžå¯Ÿäœçœ®ãé ç¹å±æ§ã
åæã«ããã©ã°ã¡ã³ãã·ã§ãŒããŒã«æž¡ãããããŸããŸãªå€æ°ã«ã¯è§ŠããŸããã§ããã ãããã£ãŠããã©ã°ã¡ã³ãã·ã§ãŒããŒã¯ããªããžã§ã¯ããå転ããŠããªããã®ããã«ãå€ãæ¹æ³ã§ç §æãšåœ±ãé©çšããŸãããå転ããŠè¡šç€ºãããŸãã

ãŸãšã
3ã€ã®ãªãã·ã§ã³ãã¹ãŠãã©ã®ããã«èŠããããèŠãŠã¿ãŸãããã
çŽ æŽãªã¬ã€ãã£ã¹ãã£ã³ã° | ã¬ã€ãã£ã¹ãã£ã³ã° | 3D |
---|---|---|
![]() | ![]() | ![]() |
ããã©ãŒãã³ã¹ãè©äŸ¡ããããã«ãç§ã¯Phaser.jsã§èæ ®ãããŠããFPSã¡ããªãã¯ã䜿çšããŸããã çµæãèªããšããPhaser.jsã«ã¯60ãè¶ ããFPSã衚瀺ãããªãããšã«æ³šæããŠãã ãããæ£çŽã«ä¿®æ£æ¹æ³ãèŠã€ããããšããŸããããæåãããã¹ã³ã¢ã決ããŸããã
ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®å¡äŸ
- Mac -Macbook Pro
Chromeã¯æ¬¡ã®çç±ã§èæ ®ãããŸããã§ãã ããã¯ã»ãŒã©ãã§ãFPS 60 - MSI -GeForce GTX 760MãWin8ãæèŒããããŒãããã¯ã
FFã¯èæ ®ãããŸããã§ãã ããã«é¢ããå€ãã®äŸã¯ãŸã£ããæ©èœããŸããã§ãã - IG1 / IG2-ã°ã©ãã£ãã¯ã«ãŒãïŒIntel HDã°ã©ãã£ãã¯ã¹ïŒãçµ±åãããã¯ãŒã¯ã¹ããŒã·ã§ã³ãWin7



ããªãã®ç®ãåŒããã®ïŒFFã§ã¯ã3Dããªã¢ã³ãã¯RCããªã¢ã³ããããæªãããšã瀺ããŠããŸãã ã©ããããåé¡ã¯ããã§ãïŒ

çµæã¯ãFFã®ãã®ãã°ã®ããã§ãïŒ canvasã䜿çšããtexImage2Dã®äœããã©ãŒãã³ã¹ ã
æ®å¿µãªãããããã¯ãŸãã«ç§ã䜿çšããã·ããªãªã§ããæåã«ãã£ã³ãã¹ã«ã·ãŒã³three.jsãã¬ã³ããªã³ã°ãã次ã«ãã®ãã£ã³ãã¹ããã§ã€ã¶ãŒãã¯ã¹ãã£ãšããŠäœ¿çšããŸãã æ®å¿µãªããããŸã åé¿çã¯ãããŸããã ïŒthree.jsã§ã·ãŒã³å šäœãå®éã«ã²ãŒã å šäœãæ§ç¯ããå Žåãé€ããããã¯èšå®ãããæ¡ä»¶ãšççŸããŸãïŒã
ã¯ãã ã§ã¯ã3DããŒãžã§ã³ã¯ã¬ã€ãã£ã¹ãã£ã³ã°ãããå¹³åã§2ååªããŠããŸãã ãã ããã¬ã€ãã£ã¹ãã£ã³ã°ã®é床ã¯ãã·ãŒã³ã®ãµã€ãºïŒãŸãã¯ã衚瀺ãããéšåã®ãµã€ãºïŒã«å€§ããäŸåããããšãç解ããå¿ èŠããããŸãã ããšãã°ãããå°ããªãã¯ã¹ãã£ïŒããšãã°ã2åå°ãã-4åã®1ã®å ç·ãæžããå¿ èŠãããïŒã«åœ±ãæ§ç¯ããããšãã§ãããã©ãŒã¯åœ±ã®å質ãäœäžãããæ¬ é¥ãé ããŸãã åæ§ã«ã3DããŒãžã§ã³ã§ã¯ãã·ã£ããŠããããã¯ã¹ãã£ã®ãµã€ãºãå€æŽã§ããŸã-ããã©ã«ãã§ã¯512x512ã§ãã
çµè«
- ããã€ãŒããã¬ã€ãã£ã¹ãã£ã³ã°ã¯ãããããšã³ãã®ãã·ã³ã§ã®ã¿è¯å¥œãªFPSãæäŸãããããªã«ãŒããã²ã©ãå ç±ããŸãã
- ãæ¹åããããã¬ã€ãã£ã¹ãã£ã³ã°ãš3D-以äžã®æ¡ä»¶äžã§ããã¹ãããããã¹ãŠã®ãã·ã³ã§Chromeã«å°ãªããšã40 FPSãäžããŸããã
- -1ã€ã®å æº
- -4ã€ã®å æº+ 2xãã¯ã¹ãã£/ã·ã£ããŠãããã®åæž
- ãããŸã§ã®FFã§ã¯ããã¹ãŠãæ²ãã
- ã¬ã€ãã£ã¹ãã£ã³ã°ã®å Žåã圱ãåããªããžã§ã¯ããæ圱ãããšãã«åé¡ãçºçããŸãããã®ããã3Dããããåæç»ããåãã¬ãŒã ã®ã·ã§ãŒããŒã«éä¿¡ããå¿ èŠããããŸãã
- three.jsã«ãã3Dãœãªã¥ãŒã·ã§ã³ã®å Žåãã©ã€ãã©ãªã®æ©èœã«å€§ããäŸåããŠããŸãã 圱ãéãã§ããªããšããŸãããïŒçç±ã¯ããããŸããïŒã ãããŠããåºãïŒGGã®äžã®æããã¹ãããïŒã®å æºããã®ãŸã¶ããã¯ãç§ããŸã åãé€ãããšãã§ããŸããã§ããã
以äžã§ãã ã圹ã«ç«ãŠã°å¹žãã§ãã
LDã®ååã§ããRuslanãšTolaããã¹ãã«ååããŠãããããšã«æè¬ããŸãã