
ã²ãŒã ã³ãŒãã¯å®å šã«çŽç²ãªjavascriptã§èšè¿°ãããŠããŸãã 3Dã°ã©ãã£ãã¯ã衚瀺ããã«ã¯ãthree.jsã©ã€ãã©ãªãã¹ã¯ãªãããšWebGLéã®ãªã³ã¯ãšããŠäœ¿çšããŸãã ãã ããããã¯å€ããã©ãŠã¶ããŒãžã§ã³ã®å Žåã§ãã ç§ã«ãšã£ãŠãã®ãããžã§ã¯ãã§æãéèŠãªããšã¯ãã²ãŒã ãšäžŠè¡ããŠãã·ãŒã³ãªããžã§ã¯ããã¢ãã¡ãŒã·ã§ã³ããã®ä»ã®å€ãã®æ©èœã䜿ããããããããã®ããŒã«ã§three.jsãè£å®ããããã«èšèšãããç¬èªã®ã©ã€ãã©ãªãè¿œå ããçç±ã§ããã ããããç§ã¯åœŒå¥³ãé·ãéèŠæšãŠãŸããã 圌女ã«æ»ã£ãŠããæéã§ãã
ç§ã®ã©ã€ãã©ãªã«ã¯ãã·ãŒã³ã®ãªããžã§ã¯ãã®è¿œå ãšåé€ããªããžã§ã¯ãã®åã ã®éšåïŒã¡ãã·ã¥ïŒã®ããããã£ã®å€æŽã3Dãªããžã§ã¯ãã®ãã¬ãŒã ã«äŸåããªãã¢ãã¡ãŒã·ã§ã³ãå€ã®æ空ãã¯ã¹ãã£ãåããã¹ã«ã€ã·ã§ãŒããŒãªã©ã®äŸ¿å©ãªããŒã«ãå«ãŸããŠããŸãã ãããã®ããã€ãã«ã€ããŠèª¬æããŸãã 空ã«é¢ããŠã¯ãããã€ãã®å ¥åãã©ã¡ãŒã¿ãŒãåãåããã·ã§ãŒããŒãåæåããå¿ èŠã«å¿ããŠã¯ã©ãŠããã¯ã¹ãã£ãããŒãããæå®ãããå埩ã§ç©ºã®æŽæ°ãéå§ããåäžã®é¢æ°ã§äœæãå®è£ ããŸããã
ãã ãããã¹ãŠãå°ãè€éã§ã-å®æçã«ããã ããã£ãã«åŒã³åºãããªãé¢æ°ã«ã€ããŠã¯ãå¥ã®æ§æãå®éã«åäœããŸããsetIntervalïŒïŒã䜿çšãããšãç°ãªãééã§ã€ãã³ããã¹ããŒã§ããŸãããªã¹ãäžã®ã€ãã³ãã«å¿ èŠãªæéã ããã§ã空ã®æŽæ°ééãã¹ããŒããããšãã§ããŸãã ãããã3Dã²ãŒã ãªããžã§ã¯ãã®åãã¯ãrequestAnimationFrameïŒïŒã«ãã£ãŠæ¢ã«ã¹ã ãŒãºã«å®è£ ãããŠããŸã...
ããã§ãç§ãã¡ã¯ç©ºã«ã€ããŠè©±ããŠããã®ã§ã空ããå§ããŸãã
空

倧空ãã·ãŒã³ã«è¿œå ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ãŸããæšæºã©ã€ãthree.jsãæ倧ïŒåæïŒèŒåºŠå€ã§ã·ãŒã³ã«è¿œå ããå¿ èŠããããŸãã ã°ããŒãã«ã¹ããŒã¹ãæ··ä¹±ãããªãããã«ããªããžã§ã¯ããã©ã€ãããã®ä»ã®å±æ§ãå«ãã·ãŒã³å šäœãapsceneåå空éã«ä¿åãããŸãã
// (AmbLight) apscene.AmbLight=new THREE.AmbientLight(0xFFFFFF); apscene.scene.add(apscene.AmbLight); // (AmbLightBk) ( ) apscene.AmbLightBk=new THREE.AmbientLight(0xFFFFFF); apscene.sceneb.add(apscene.AmbLightBk); // (, ) var SFog=new THREE.FogExp2(0xaaaaaa, 0.0007); apscene.scene.fog=SFog; // (, ) var SFogBk=new THREE.FogExp2(0xa2a2aC, 0.0006); apscene.sceneb.fog=SFogBk; // apscene.hemiLight=new THREE.HemisphereLight(0xFFFFFF, 0x999999, 1); apscene.scene.add(apscene.hemiLight); // . . three.js , , , , ... apscene.dirLight=new THREE.DirectionalLight(...) apscene.dirLightBk=new THREE.DirectionalLight(...)
ãã®åŸãç§ã®é¢æ°ã®1ã€ãä»ããŠãã·ã§ãŒããŒããã¯ã¹ãã£ïŒãã©ãã¯ãžã£ãã¯ãªã©ïŒã§ç©ºã®ã¢ãã¡ãŒã·ã§ã³ãå®è¡ã§ããŸãã
m3d.graph.skydom.initWorld( // , , {saveStart:false}, { //ltamb (light ambient, ) - ltamb:{a1:-2, a2:8, k1:0.2, k2:0.75, obj:[ {obj:apscene.AmbLight.color, key:['r','g','b']} ]}, //a1 a2 - (altitude, ), , obj, (k1..k2), k1 k2 - // , ltamb : -2 8 ( ), (apscene.AmbLight.color), r, g b, 0.2 0.75 ( , , 0xFFFFFF). //key - , three.js // (apscene.AmbLightBk.color). ( altitude) -4 12 0.3 ... 0.99 . -4 , , 0.3 , 12 0.99 ltambb:{a1:-4, a2:12, k1:0.3, k2:0.99, obj:[ {obj:apscene.AmbLightBk.color, key:['r','g','b']} ]}, // : ltdir:{a1:-2, a2:8, k1:0.0, k2:1, obj:[ {obj:apscene.dirLight, key:['intensity']}, {obj:apscene.dirLightBk, key:['intensity']} ]}, // (apscene.dirLightBk) , , . // , three.js - inensity ( , apscene.dirLight.intensity). , , three.js . // . , ( 0.15 ) 12 8 (, , 8 12), : lthem:{a1:8, a2:12, k1:0.15, k2:0.3, obj:[ {obj:apscene.hemiLight, key:['intensity']} ]}, // . . // () : ltambfog:{a1:-2, a2:8, k1:0.4, k2:1, obj:[ {obj:apscene.scene.fog.color, key:['r','g','b']} ]}, // : ltambbfog:{a1:-2, a2:12, k1:0.25, k2:1, obj:[ {obj:apscene.sceneb.fog.color, key:['r','g','b']} ]}, // . , , . ltambfogd:{a1:8, a2:12, k1:0.2, k2:0.35, obj:[ {obj:apscene.scene.fog, key:['density']} ]}, // ltambbfogd:{a1:6, a2:12, k1:0.2, k2:0.28, obj:[ {obj:apscene.sceneb.fog, key:['density']} ]}, // , ( , ), , , , -«» , skyplane1..6: planeAmb:{a1:-5, a2:12, k1:0.5, k2:1.0, obj:[ {obj:apscene.user.skyplane1.material.color, key:['r','g','b']}, {obj:apscene.user.skyplane2.material.color, key:['r','g','b']}, {obj:apscene.user.skyplane3.material.color, key:['r','g','b']}, {obj:apscene.user.skyplane4.material.color, key:['r','g','b']}, {obj:apscene.user.skyplane5.material.color, key:['r','g','b']}, {obj:apscene.user.skyplane6.material.color, key:['r','g','b']} ]} //, , , . };
ãã®çµæãåçãªç©ºãã·ãŒã³ã«è¡šç€ºããã倪éœã®é«ããæ»ããã«å€åããããã«å¿ããŠæå»ãå€åããŸãã
ã¹ããŒãžã§ãã¹ãŠã®ã¿ã€ãã®ç §æã䜿çšããå¿ èŠã¯ãããŸããã ãŸããæå»ã«å¿ããŠãã¹ãŠã®ãã©ã¡ãŒã¿ãŒãå€æŽããå¿ èŠã¯ãããŸããã ãããããã®æããã§éãã§ããæŒãšå€ã®å€åãããªããªã¢ã«ã«åçŸã§ããŸãã ãã©ã¡ãŒã¿ãŒã«ã¯å¥œããªååãä»ããããšãã§ããŸããäž»ãªããšã¯ãthree.jsã§æå®ãããŠããããã«ããã©ã¡ãŒã¿ãŒå ã®ãªããžã§ã¯ãã®ããŒã芳å¯ããããšã§ãã
ã©ã®ããã«èŠãããããã¢ã·ãŒã³ãããããªãèŠãããšãã§ããŸãïŒ
ããã¯å¥ã®ã²ãŒã ã§ãã ãã ããã®å°å¹³ç·ã«ã¯ããŸããŸãªãªããžã§ã¯ããæ£ãã°ã£ãŠããªãããããã®ã¹ã¯ãªããã®äœæ¥ãæãã¯ã£ãããšèŠããŸãã ããããã¹ããŒãªãŒãè°è«ãããŠããã²ãŒã ã§ã¯ããŸã£ããåãã¢ãããŒãã䜿çšãããŸãã ããã§ã®æéã®çµéã®é«éã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ç®çã®ããã«ã®ã¿èšå®ãããŠããããããã¡ããããã£ãããšæµããŸããå埩ã®åãã¹ãããã§å€§ç©ºãæŽæ°ãããŸãã ã¡ãªã¿ã«ããã®ãã¢ã§ã¯ã倪éœã®é«ãã«å¿ããŠå¯å€ãã©ã¡ãŒã¿ãŒãåãããŠã©ãŒã¿ãŒã·ã§ãŒããŒãå«ãŸããŠããŸã...ãããããŸã å®æããŠããŸããã
æ§èœ
ããã¯ãã¹ãŠãéã«å¯ŸããèŠæ±ãã»ãšãã©ãããŸããã Chromeãã©ãŠã¶ã§åäœããXeon E5440ãLGA775ïŒããã³4ã®ã¬ãã€ãã®RAMïŒã§20ïŒ èªã¿èŸŒã¿ãGT730ã°ã©ãã£ãã¯ã¹ã«ãŒãã®ã³ã¢ã45ïŒ èªã¿èŸŒã¿ãŸãã ããããããã¯çŽç²ã«æ°Žã®ã¢ãã¡ãŒã·ã§ã³ã«ãããã®ã§ãã æ°Žã¯ãªããéœåžã¯ããã²ãŒã ã«ã€ããŠè©±ããšãããã¯ïŒ

ãã®åŸãè»ãè¡ãåãåã-ããŒã»ã³ã45ïŒ ããããªã«ãŒã50ïŒ ã ååãšããŠãããã€ãã®fpsãããŒããŠã³ïŒæ倧çŽ30ãã¬ãŒã /ç§ïŒã§ãPentium4 3GHzïŒ1Gb RAMïŒããã³Intel Atom 1.3GHzïŒ2Gb RAMïŒã®ã¿ãã¬ããäžã§ãéåžžã«ããŸãæ©èœããŸãã
ãã®ããŒããŠã§ã¢ã¯ãã¹ãŠéåžžã«è匱ã§ãããWebGLãHTML5äžã®ä»ã®åæ§ã®ã²ãŒã ã2Dã§ãããã²ãŒã ããã¬ã€ããããšãã§ããªããªããŸã§ãããã¯ç§ãã²ã©ãé ãããŸãã 圌ããèšãããã«ãå¿ èŠã«å¿ããŠèªåã§ã²ãŒã ãæžããŠãã¬ã€ããŠãã ããã
ã·ãŒã³

three.jsã®3Dã·ãŒã³ã¯ã·ãŒã³ãªããžã§ã¯ãã§ããããã®åé åã¯å®éãã·ãŒã³ã«ããŒãããããã¹ãŠã®3Dã¢ãã«ã§ãã åã¢ãã«ã®ããŒãããŒããŒã³ãŒã«ãç»é²ããªãããã«ãã²ãŒã ã·ãŒã³å šäœãç¹å®ã®æ§æã®åœ¢åŒã§èšå®ããã1ã€ã®å€§ããªé£æ³é ålocdïŒ{}ïŒäœçœ®ããŒã¿ãªã©ïŒã«ãã¹ãŠã®èšå®ïŒã©ã€ããããªããŒãããããã¯ã¹ãã£ã®ãã¹ïŒã€ã³ã¿ãŒãã§ã€ã¹ã®ç»åãã¹ããŒãžã«ããŒãããå¿ èŠããããã¹ãŠã®ã¢ãã«ãžã®ãã¹ãªã©ã äžè¬çã«ãããã¯ã·ãŒã³ã®å®å šãªæ§æã§ãã ã²ãŒã ã®jsãã¡ã€ã«ã«äžåºŠèšå®ãããã·ãŒã³ããŒããŒã«äŸçµŠãããŸãã
ãããŠããã®locdïŒ{}ãªããžã§ã¯ãã«ã¯ãç¹ã«ãããŒãããå¿ èŠãããåã ã®3Dã¢ãã«ãžã®ãã¹ãå«ãŸããŠããŸãã ãŒããã¹ã¯å ±éãã¹ã§ããã次ã«åãªããžã§ã¯ãã®çžå¯Ÿãã¹ã§ãã
['path/myObj', scale, y, x,z, r*Math.PI, 1, '', '', '', 1, ['','','',''], 'scene']
ãã¹ãŠã®ã¢ãã«ã¯3Dãšãã£ã¿ãŒããjson圢åŒã«ãšã¯ã¹ããŒããããŸããã€ãŸãããããã«ã¯path / myObj.jsonã®ãããªãã¹ããããŸãã 次ã«ãã¹ã±ãŒã«ïŒã²ãŒã ã«é©ããªãã¹ã±ãŒã«ã§ãšãã£ã¿ãŒãä¿åã§ããããïŒããªããžã§ã¯ãã®é«ãïŒyïŒã®äœçœ®ã軞ïŒxïŒããã³ïŒzïŒã«æ²¿ã£ãŠãã¢ãã«ã®å転è§åºŠÂ®ïŒyïŒãããã€ãã®ãªãã·ã§ã³ãã©ã¡ãŒã¿ãŒãã¢ãã«ãããŒãããã·ãŒã³ã®åå-ã¡ã€ã³ã·ãŒã³ïŒã·ãŒã³ïŒãŸãã¯ããã¯ã°ã©ãŠã³ãïŒã·ãŒã³bïŒã
ã¯ãããããåçŽãªåœ¢åŒã§ã¯ãªããé£æ³é åã®åœ¢åŒã§å®è£ ããå¿ èŠããããŸããã ãã®ãããããã¥ã¡ã³ãããªããŠãããŸãã¯å°ãªããšããããã®ãã©ã¡ãŒã¿ãåãé¢æ°ã®çš®é¡ããªããŠãããã©ã¡ãŒã¿ã®é åºã¯ç解ã§ããŸãããç解ã§ããŸããã å°æ¥ããããã®è¡ãé£æ³é åã«åäœæãããšæããŸãã ãããŸã§ã¯ã次ã®ããã«ãªããŸãã
landobj: [ ['gamePath/'], [ ['landscape/ground', 9.455, 0, 0,0, 0*Math.PI, 1, '', '', '', 1, ['','','',''], 'scene'], ['landscape/plants', 9.455, 0, 0,0, 0*Math.PI,1, '', '', '', 1, ['','','',''], 'scene'], ['landscape/buildings/house01', 2, 0, -420,420, -0.75*Math.PI, 1, '', '', '', 1, ['','','',''], 'scene'], ... ] ],
ãããã®ã¢ãã«ã¯ã¹ããŒãžã«ããŒããããããã§æå®ããã空éã®åº§æšã«é 眮ãããŸãã ååãšããŠããã¹ãŠã®ã¢ãã«ã¯åäžã®ãªããžã§ã¯ããšããŠããŒãã§ããŸããã€ãŸããã²ãŒã ã·ãŒã³å šäœãšããŠãšãã£ã¿ãŒãããšã¯ã¹ããŒããã座æšïŒ0; 0; 0ïŒã«ããŒãã§ããŸãã 次ã«ã1è¡ã ãã衚瀺ãããŸããlandscape/ ground-ground.jsonããããŸã-ããã¯ã²ãŒã ã®äžçã®äž»èŠéšåã§ãã ãã ãããã®å Žåãæåã«ãã©ãŠã¶ã³ã³ãœãŒã«ãèŠãŠããã®å·šå€§ãªå°é¢ã®åãã©ãã§ããããèŠããŠããå¿ èŠããããããã·ãŒã³ã®åã ã®ãªããžã§ã¯ããæäœããããšã¯å°é£ã§ãã ãããŠãçªå·ã§é£çµ¡ããŸãã ãããã£ãŠãããŒãã³ã°ã²ãŒã ã¢ãã«ã«ã¯åå¥ã®ãªããžã§ã¯ããããŒãããã®ãæé©ã§ãã 次ã«ãé£æ³é åããååã§ã¢ã¯ã»ã¹ã§ããŸããé£æ³é åã¯ããã®ç®çã®ããã«ç¹å¥ã«èªåçã«äœæãããŸãã
ã²ãŒã ã®å®å šãªæ§æã¯ãããšãã°æ¬¡ã®ããã«ãªããŸãã
locd:{ // name: 'SeaBattle', type: 'game', menulabel: '', // x:-420, y:70, z:-420, rot: -0.5, // intsdistance: 200, // ambLtColor: 0xFFFFFF, ambLtColorBk: 0xFFFFFF, lightD: [0xDDDDDD,0.3,1000, 200000,0.3,-0.0003, -190,200000,-140,0,0,0, 200,-200,200,-200], lightDBk: [0xFFFFFF,0.3,10000, 40000,0.3,-0.0035, -190,1200,-140,0,0,0, 50000,-50000,50000,-50000], lightH: [0xFFFFFF,0x999999,1, 0,500,0], // lightsP: [], // lightsPDynamicAr: [ [0xffffff, 4, [0, -2000, 0], [50, 1.5] ] //[[distance], [decay]] ], // (x,y,z) userPointLights: [ [0, -2000, 0] ], // lightsS: [ [0xffffbb, 1.0, [0, 250, 180], [0, 0, 180], 0.5, 600,600,600, -0.0005] ], // shadowMapCullFace:0, shadowsMode: 'all', //all,list,flag // imagePaths: [ 'game/img/', 'interface.png', 'interface2.png' ], // 3D landobj: [ ['game/models/'], [ ['landscape/land',1, 0, 0,0, 0.0*Math.PI,1,'','','',1,['','','',''],'scene'], ['landscape/sbp',1, 0, 0,180, 1.0*Math.PI,1,'','','',1,['','','',''],'scene'], ['landscape/sbu',1, 0, 0,1120, 1.0*Math.PI,1,'','','',1,['','','',''],'scene'] ] ], // staffobj: [ ['game/models2/'], [ ] ], // progobj: [ [ ] ] },
ã¯ãããããã®ãã¹ãŠã®ãµãé åãé£æ³é åã«åäœæããããšããå§ãããŸããããããªããšããµãé åå ã®ãã©ã¡ãŒã¿ãŒã®é åºãæ確ã«ãªããŸãã...
3Dã¢ãã«

å¥ã®èå³æ·±ãããšã ã¢ãã«ã®èªã¿èŸŒã¿ã ç§ã®ã©ã€ãã©ãªã¯ããã¯ã¹ãã£ä»ãã®3Dã¢ãã«ãåãå ¥ããååã«å¿ããŠããã€ãã®ãã©ã¡ãŒã¿ãŒãåã ã®èŠçŽ ïŒã¡ãã·ã¥ïŒã«èªåçã«èšå®ããŸãã å®éãããšãã°ã¢ãã«ã®å Žåã圱ãèœãšãããã«èšå®ãããŠããå Žåããã®ã³ã³ããžã·ã§ã³ã«å«ãŸããåã¡ãã·ã¥ã«ãã£ãŠãã£ã¹ããããŸãã ã¢ãã«å šäœãå®å šã«åœ±ãèœãšããããããã©ãŒãã³ã¹ã«åŒ·ã圱é¿ããä»ã®ããããã£ãååŸãããããå¿ èŠã¯å¿ ããããããŸããã ãããã£ãŠãåã¡ãã·ã¥ãåå¥ã«èæ ®ããå¿ èŠãããããšã瀺ãç¹å®ã®ãã©ã°ããªã³ã«ãããšãããŒãæã«ããã®ã¡ãã·ã¥ãŸãã¯ãã®ããããã£ãæã€ã¡ãã·ã¥ãšæããªãã¡ãã·ã¥ã決å®ã§ããŸãã ããšãã°ã家ã®å¹³ããªæ°Žå¹³ãªå±æ ¹ãã倧ããªèæ¯ã«å¯ŸããŠã¢ãã«ã®å°ããªç¡é¢ä¿ãªçŽ°éšã®å€ãã«ãã£ãŠåœ±ãèœãšãå¿ èŠã¯ãŸã£ãããããŸããã ããã§ãããã¬ãŒã€ãŒã¯ãããã®åœ±ãèŠãããšãã§ããããããªããã»ããµã®é»åããããã®åœ±ãåŠçããããã«äœ¿çšãããŸãã
ãããè¡ãã«ã¯ãã°ã©ãã£ãã¯ãšãã£ã¿ãŒïŒBlenderãMaxãªã©ïŒã§ãç¹å®ã®ã«ãŒã«ã«åŸã£ãŠïŒãªããžã§ã¯ãåãã£ãŒã«ãã§ïŒã¡ãã·ã¥ã®ååãããã«æå®ã§ããŸãã ã¢ã³ããŒã¹ã³ã¢ïŒ_ïŒãå¿ èŠã§ãã æ¡ä»¶ä»ãå¶åŸ¡æåã¯å·ŠåŽã«é 眮ããå¿ èŠããããŸããããšãã°ãd-ããã«ãµã€ãïŒã¡ãã·ã¥ã¯åæ¹åãããã§ãªãå Žåã¯-çæ¹åïŒãcïŒãã£ã¹ãã·ã£ããŠïŒ-ã·ã£ããŠããã£ã¹ããrïŒã·ã£ããŠãåä¿¡ïŒ-ã·ã£ããŠãååŸããŸãã ã€ãŸããããšãã°ã家ã®ãã€ãã¡ãã·ã¥ã®ååã¯cr_tubeã«ãªããŸãã ä»ã®å€ãã®æåã䜿çšãããŸãã ããšãã°ããlãã¯ã³ã©ã€ããŒã§ããã€ãŸããcrl_wall01ãšããååã®å®¶ã®å£ã¯ããã¬ãŒã€ãŒãèªåèªèº«ãéãæããããšãã§ããã圱ãèœãšããŸãã å±æ ¹ããã¢ãã³ãã«ãªã©ã®ã³ã©ã€ããŒãäœæããå¿ èŠã¯ãªããããã«ãã£ãŠããã©ãŒãã³ã¹ãäœäžããŸãã æ¢ã«ç解ããŠããããã«ãã¢ãã«ãããŒããããšããç§ã®ã©ã€ãã©ãªã¯ã¡ãã·ã¥ã®ååã解æãããããã«ã·ãŒã³äžã®å¯Ÿå¿ããããããã£ãäžããŸãã ãã ãããã®ããã«ã¯ã3Dãšãã£ã¿ãŒããã¢ãã«ããšã¯ã¹ããŒãããåã«ããã¹ãŠã®ã¡ãã·ã¥ã«æ£ããååãä»ããå¿ èŠããããŸãã ããã«ãããããã©ãŒãã³ã¹ãå€§å¹ ã«ç¯çŽãããŸãã
ãªããžã§ã¯ãå ã®ã¡ãã·ã¥ã®ãã¹ãŠã®å¶åŸ¡ãã©ã°ïŒ
col_ ...ã¯ã³ã©ã€ããŒã§ãã ãã®ãããªã¡ãã·ã¥ã¯ãåçŽã«éæã§èŠããªãã³ã©ã€ããŒãšããŠè¡šç€ºãããŸãã ãšãã£ã¿ãŒã§ã¯ã圌ã¯äœã«ã§ãèŠããŸããããã®åœ¢ã ããéèŠã§ãã ããšãã°ããã¬ãŒã€ãŒããã®ã¢ãã«ïŒå»ºç©ã倧ããªç³ãªã©ïŒãééã§ããªãããã«ããå¿ èŠãããå Žåãã¢ãã«å šäœãå¹³è¡å é¢äœã«ããããšãã§ããŸãã
l_ ...ã¯è¡çªå¯èœãªãªããžã§ã¯ãã§ãã ã¡ãã·ã¥ã«ã³ã©ã€ããŒããããã£ãäžããã
i_ ...-亀差ç¹ã ã¡ãã·ã¥ã¯äº€å·®ãªã¹ãã«è¿œå ãããŸãããã®ãªã¹ãã䜿çšããŠãããšãã°ãã¯ãªãã¯ãããã€ãŸãã²ãŒã å ã§åæ¹åæ§ãæäŸã§ããŸãã
j_ ...亀差ç¹ãã äžèšãšåããæ°ããããŒãžã§ã³ã®ã¿-ã²ãŒã å ã®äº€å·®ç¹ãèŠã€ããããã®ã¢ã«ãŽãªãºã ãæ¹åããããªãœãŒã¹æ¶è²»ãå°ãªããªããŸããã
e_ ...-家ã®ãã¢ã®äº€å·®ç¹ïŒå ¥å£/åºå£ïŒã ä»ã®ãªããžã§ã¯ãã¡ãã·ã¥äžã®äº€å·®ãé€å€ããŸãã ä»ã®ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãé€å€ããŠããã¢ã ããã€ã³ã¿ã©ã¯ãã£ãã«ããããšã家ã§å¿ èŠãªå Žåã«äœ¿çšãããŸãã æ³ååã§ãããªãã¯ãããšä»ã®ãã³ã®çšéãæãã€ãããšãã§ããŸãã
c_ ...-圱ãèœãšããŸãã ã¡ãã·ã¥ã¯åœ±ãèœãšããŸãã
r_ ...-圱ãåãåããŸãã ã¡ãã·ã¥ã¯ãããããæ圱ããä»ã®ãã¹ãŠã®ã¡ãã·ã¥ããã®åœ±ãåãå ¥ããŸãã
d_ ...-äž¡é¢ïŒäž¡é¢ïŒã äž¡åŽã«è¡šç€ºããããã¯ã¹ãã£ã¯äž¡åŽã«éããããŸãã
t_ ...-éæïŒéæïŒãthree.jsã§ãªããžã§ã¯ãå šäœãalphatestã«èšå®ãããŠããå Žåã
u_ ...-ãªããžã§ã¯ãå šäœãthree.jsã§alphatestãæå®ããŠããªãå Žåãåºå®å¯åºŠïŒ0.4ïŒã®éæïŒéæïŒã
g_ ...-ã¬ã©ã¹ã åºå®éæ床ãèšå®ãããŠããŸãïŒ0.2ïŒã
h_ ...-äžå¯èŠïŒé衚瀺ïŒã ãªããžã§ã¯ããã·ãŒã³ã«è¿œå ãããšãã«é衚瀺ã«ããå¿ èŠããããªããžã§ã¯ãã®éšåïŒã¡ãã·ã¥ïŒã é衚瀺ã®ãªã¹ãã«å ¥åãããŸããã
v_ ...衚瀺ãããŸãã ãhãã®ããŒã¯ãä»ãããªããžã§ã¯ããé€ããã¹ãŠã®ãªããžã§ã¯ãã¯ãã§ã«è¡šç€ºãããŠããŸããããã©ã°ãvãã䜿çšãããšãå¥ã®ãªã¹ãã«å ¥åãããããã«é衚瀺ãŸãã¯ä»ã®æäœãå¯èœã«ãªããŸãã
ãã®çµæãã¡ãã·ã¥ã®ååã¯æ¬¡ã®ããã«ãªããŸãïŒcrltj_box1ïŒãã£ã¹ããã·ã£ããŠãåãå ¥ãããã³ã©ã€ããŒãéæãã€ã³ã¿ã©ã¯ãã£ãïŒã ãããŠãåãã¢ãã«ã®äžéšãšããŠã®å¥ã®ã¡ãã·ã¥ïŒcr_box2ïŒãã£ã¹ãã®ã¿ãè¡ãã圱ãåããŸãïŒåœç¶ãå¶åŸ¡æåã¯ä»»æã®é åºã§èšå®ã§ããŸãã ãããã£ãŠããšãã£ã¿ãŒãããã²ãŒã å ã®ãªããžã§ã¯ãã®äžéšã®å°æ¥ã®è¡šç€ºãå¶åŸ¡ããããããããããã®ããããã£ã®äžéšãå¶åŸ¡ããããåæã«èšç®èœåãç¯çŽãããã§ããŸãã
ã²ãŒã ã®æ¬è³ª
å®éãç©èªãæ£æ¹åœ¢ã®ãã£ãŒã«ãã®åšå²ãåãåããäŒæ¥ãè²·åãããšããã²ãŒã ã®æå³ã ãã£ãŒã«ãã¯3Dã¹ããªãŒãã®åœ¢ã§äœæãããŸãã ã²ãŒã ã®çµæžã¢ãã«ã¯ããã®çš®é¡ã®ãã®ãšã¯å€§ããç°ãªããŸãã ç§ã®ã²ãŒã ã§ã¯ã誰ããããžãã¹ãå§ãããšãããªãã®æåŸ å©çã¯äžãããŸãã éã«ãäœããçºèŠãããšå¢å ããŸãã æçã®èšç®ã¯ãã¹ãŠãéå§ãã£ãŒã«ãã®çšå調æ»å®ã§è¡ãããŸãã ãŸããéè¡ããèè³ãåãããã蚌åžãååŒããããä»ã®å€ãã®ããšãè¡ãããšãã§ããŸãã å€ãããŒãžã§ã³ãšæ¯èŒããŠAIã®åäœãæ¹åããŸããã ã²ãŒã ã®ã»ãŒãã¹ãŠã®3Dã¢ãã«ãšãã¯ã¹ãã£ãæé©åããããã©ãŒãã³ã¹ãæé©åããŸããã ããå€ãã®èšå®ãè¡ããŸããã
ã¢ãã¡ãŒã·ã§ã³

ã²ãŒã ãªããžã§ã¯ãã®åããã¢ãã¡ãŒã·ã§ã³åããããã«ãæãåçŽãªãšã³ãžã³ã䜿çšãããŸããããã¯ãç¹å®ã®ãã¬ãŒã ã¬ãŒãïŒ60çªç®ã«å¶éãããŸãïŒã§ãç¹å®ã®æéééã®æ°å€ãã©ã¡ãŒã¿ãŒãå€æŽããäžéå€ããã³ãã©ãŒã«æž¡ããŸãã ãŸãããã³ãã©ãŒã§ã¯ãããšãã°ãã¢ãã«ã衚瀺ãããŸãã
ããšãã°ã 空éå ã®ãªããžã§ã¯ãobjãäœçœ®ïŒ10; 10; 50ïŒãããã€ã³ãïŒ100; 300; 60ïŒã«ç§»åããå¿ èŠããããŸãã åæå€ãšæçµå€ãæå®ããŠã3ã€ã®ãã©ã¡ãŒã¿ãŒãèšå®ããŸãã x座æšã¯10ãã100ãŸã§ãyã¯10ãã300ãŸã§ãzã¯50ãã60ãŸã§å€åããŸããããã¯ãã¹ãŠãããšãã°4ç§ã§çºçããŸãã
m3d.lib.anim.add( 'moveobj', 1, 4000, 'and', {userpar1:111, obj:my3DObject}, [ {lim1:10, lim2:100, sstart:10, sfin:100, t:0}, {lim1:10, lim2:300, sstart:10, sfin:300, t:0}, {lim1:50, lim2:60, sstart:50, sfin:60, t:0} ], function(){ myPeriodicFun(this); }, function(){ myFinishFun(this); } ); m3d.lib.anim.play();
5ã€ã®ãã©ã¡ãŒã¿ãŒã®æåã®è¡ïŒmoveobj-ã¢ãã¡ãŒã·ã§ã³ã®ååïŒä»»æïŒã1-ã¹ããªãŒã çªå·ïŒç¡å¶éã®æ°ã®ã¹ããªãŒã ã§ãªããžã§ã¯ãã䞊è¡ããŠã¢ãã¡ãŒã·ã§ã³åã§ããŸãïŒã4000-ã¢ãã¡ãŒã·ã§ã³æé4ç§ãããã³-æªäœ¿çšã®ãã©ã¡ãŒã¿ãŒïŒå°æ¥çã«é·ç§»ããžãã¯ãæ åœããŸãïŒãŸã§åãã¹ããªãŒã å ã®ã¢ãã¡ãŒã·ã§ã³éã§ãuserparã¯ãã©ã¡ãŒã¿ãŒãšããŠãã³ãã©ãŒã«æž¡ãããé£æ³é åã§ããããšãã°ãèšç®ãããååŸãæ£åŒŠãäœåŒŠãããã³äžè¬ã«ãã®ã¢ãã¡ãŒã·ã§ã³ã«å¯ŸããŠèšç®ãããå€ã§ãããããèšç®ããªã åå埩ã®æéã«ã€ããŠã ãŸãã¯ãå®éã«ã¢ãã¡ãŒã·ã§ã³åãã3Dãªããžã§ã¯ããåç §ããŸãã
次ã¯ãå¯å€ãã©ã¡ãŒã¿ãŒãæã€é åã§ãã æåã®ãã©ã¡ãŒã¿ãŒã¯x座æšã®å€åã2çªç®ã¯yã3çªç®ã¯zã§ããããšãããããŸãã lim1ãšlim2ã«ãããããã®ãµã€ãºãšãµã€ãºãå€æŽããŸãã sstartãšsfinã§ã¯ãåãå€ãæå®ããŸãã ããã§ãããšãã°ä»ã®å€ããéå§ãæå®ã§ããŸãããã©ã¡ãŒã¿ã¯ãããããåã«ãã¹ã¯ããŒã«ãããlim2ããã€ãã¹ããlim1ã§æ°ãããå転ããéå§ããŸãã ããšãã°ãã¢ãã¡ãŒã·ã§ã³ãããã€ãã®å€ïŒlim1ãšlim2ïŒã®éã§ã«ãŒãããå Žåãããã¯å¿ èŠã§ãããæåããïŒã€ãŸããlim1ããã§ã¯ãªãïŒäžéå€ããéå§ããå¿ èŠããããŸãã
tïŒ0ã¯ããã®ãã©ã¡ãŒã¿ãŒã®ã¢ãã¡ãŒã·ã§ã³ããåèšæéïŒ4000ïŒã«å¿ããŠ1åå®è¡ãããããã«èšå®ããŸãã ã¡ã€ã³æéãããçãå¥ã®æ°å€ãèšå®ãããšããã®ãã©ã¡ãŒã¿ãŒã¯ã«ãŒããããã¡ã€ã³ã¢ãã¡ãŒã·ã§ã³ã®æéïŒ4000ïŒãŸã§ç¹°ãè¿ãããŸãã ããã¯ãããšãã°ãè§åºŠã360床ã®å¢çãç¹°ãè¿ã亀差ããŠ0ã«ãªã»ããããå¿ èŠãããå Žåã«ããªããžã§ã¯ãã®å転ãèšå®ããã®ã«äŸ¿å©ã§ãã
次ã«2ã€ã®ã³ãŒã«ããã¯ããããŸã-åå埩ã§å®è¡ãããã³ãŒã«ããã¯ãšãã¢ãã¡ãŒã·ã§ã³å šäœã®çµäºæã«1åå®è¡ãããã³ãŒã«ããã¯ïŒçµäºãã€ã³ãïŒã
ããšãã°ãæåã®ã³ãŒã«ããã¯myPeriodicFunïŒthisïŒã¯ã次ã®ããã«ãªããŸãã
myPeriodicFun:function(self) { var state=self.par[0].state, state_old=self.par[0].state_old; var state2=self.par[1].state, state_old2=self.par[1].state_old; var state3=self.par[2].state, state_old3=self.par[2].state_old; if ((state!=state_old)||(state2!=state_old2)||(state3!=state_old3)) { var obj=self.userpar.obj; obj.position.x=state; obj.position.y=state2; obj.position.z=state3; ap.cameraFollowObj(obj); }; },
ã€ãŸããåãã®åå埩ã§ãäžãããããã¹ãŠã®ã¢ãã¡ãŒã·ã§ã³ãã©ã¡ãŒã¿ãŒã®èšç®ãããäžéå€ãå«ããã©ã¡ãŒã¿ãŒïŒselfïŒããã®é¢æ°ã«ã¹ããŒãããŸãïŒself.par [0] .stateãself.par [1] .stateãself.par [2] .stateã ããã¯çŸåšã®xãyãzã§ãã ããšãã°ãã¢ãã¡ãŒã·ã§ã³ã4ç§ç¶ãå Žåã2ç§åŸã«xã¯ïŒ100-10ïŒ/ 2 = 45ã«çãããªããŸãããã¹ãŠã®åº§æšã«ã€ããŠãåæ§ã§ãã ãããã£ãŠãmyPeriodicFunã§ã¯ããããã®åº§æšã§ãªããžã§ã¯ãã衚瀺ããã ãã§ãããã©ãŠã¶ãé ãå§ãããããã®ããŒããŠã§ã¢äžã§ãã£ãããšåäœãããããå Žåãæããªãããã§ã¯ãããŸãããåèšã¢ãã¡ãŒã·ã§ã³æéã¯å€ãããããã¬ãŒã ã¬ãŒãã®ã¿ãäœäžããç»åãã¹ã©ã€ãã·ã§ãŒã«å€ãããŸãã
fïŒïŒstateïŒ= State_oldïŒ...ãã€ãŸããæ°ããèšç®å€ãå€ãå€ãšçãããã©ããïŒstate_oldãåã®å埩ã§èšç®ãããå€ãèšæ¶ããŠããïŒã確èªããçç±1æªæºã®å Žåããªããžã§ã¯ãå šäœãåæç»ãããã·ã¹ãã ã®ãã¯ãŒãæ¶è²»ãããã¢ãã¡ãŒã·ã§ã³ãšã³ãžã³ã¯stateããã³state_oldã®æŽæ°ãçæããŸãã 1ãã¯ã»ã«ã§ããåæç»ããå¿ èŠã¯ãããŸãããç»é¢äžã®äœçœ®ã¯å€ãããŸããã
äžè¬ã«ãã¢ãã¡ãŒã·ã§ã³ã¯ãã³ãŒã«ããã¯é¢æ°ãžã®äžéå€ã®é ä¿¡ã«ããç¹å®ã®æéå ã®ä»»æã®æ°ã®ãã©ã¡ãŒã¿ãŒã®åçŽãªå€åãšããŠç解ãããŸããããšãã°ããªããžã§ã¯ãã®å転è§åºŠãæ åœããå¥ã®4çªç®ã®ãã©ã¡ãŒã¿ãŒãè¿œå ã§ããŸãããŸããå€ãã®ãªããžã§ã¯ãã®ãã©ã¡ãŒã¿ãŒãäœããã®åœ¢ã§åäžã«ç§»åããå Žåãéåžžã¯1ã€ã®ã¢ãã¡ãŒã·ã§ã³ã«è©°ã蟌ãããšãã§ããŸããã¢ãã¡ãŒã·ã§ã³ãç°ãªãã¹ããªãŒã ã«é 眮ãããšãã¢ãã¡ãŒã·ã§ã³ã䞊ååŠçãããŸãã ïŒm3d.lib.anim.addïŒïŒïŒã1ã€ã®ã¹ããªãŒã ã«ã¢ãã¡ãŒã·ã§ã³ã®ã·ãŒã±ã³ã¹å šäœãè¿œå ãããšããããã¯æ¬¡ã ã«å®è¡ãããŸããããã«ãåã¹ã¬ããã«ã¯ç¬èªã®ç¬ç«ããã·ãŒã±ã³ã¹ããããŸããäž»ãªããšã¯ãã·ã¹ãã ã«ååãªé»åãããããã¹ãŠãã¹ã©ã€ãã·ã§ãŒã«ãªããªãããšã§ãã
ããã§ã®PSã¹ããªãŒã ã¯ããã¹ãŠã®äžŠåã¢ãã¡ãŒã·ã§ã³ã®åå埩ã§ã®é 次åæãšããã¹ãŠã®ãã©ã¡ãŒã¿ãŒã®äžéå€ã®ããããã®èšç®ã«ãã£ãŠåçŽã«å®è£ ãããŸããã€ãŸããjavascriptã«ã¯å®éã®ãã«ãã¹ã¬ããã¯ãããŸããã
åãããšã³ãžã³ãã䜿çšããŠãç»é¢ãã¬ãŒã³äžã®2ã€ã®åº§æšãå€æŽããããã«èšå®ããååŸããäžéå€ã«åŸã£ãŠã³ãŒã«ããã¯é¢æ°ã«ãããã®èŠçŽ ã衚瀺ããããšã«ãããã€ã³ã¿ãŒãã§ã€ã¹ã®èŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããããšãã§ããŸã å®éãããã¯ç§ã®ã²ãŒã ã§è¡ãããŸãã
ãã€ãããã¯ã·ã£ããŠ

ã·ãŒã³å šäœã«åœ±ã衚瀺ããããšã¯éåžžã«ç¡é§ã§ããããšãå€æããããã圱ããªã³ã«ãããšãfpsãæ°åäœäžããŸãããããã¯ãã¡ã§ãããã¬ãŒã€ãŒã®åšå²ã®ç¹å®ã®å°ããªæ£æ¹åœ¢ã«ãªããžã§ã¯ãã®åœ±ã衚瀺ããŸãããã®ãããªææ³ã¯ããã¬ãŒã ã¬ãŒããå€§å¹ ã«åäžããããšããã«èšããŸãã
ããã§è€éãªããšã¯ãããŸãããThree.jsã·ã£ããŠã¯ãããã¯ã¹ã§å®çŸ©ãããç¹å®ã®ã·ã£ããŠã«ã¡ã©ïŒshadowCameraLeftãshadowCameraRightãshadowCameraTopãshadowCameraBottomïŒå ã«æ圱ãããŸããã·ãŒã³å šäœã«åŒã䌞ã°ãããšããã¡ã€ã³ã«ã¡ã©ã«è¿œåŸããŠãã®åšèŸºã®ã¿ã«åœ±ãèœãšãããã«äœæããããšãã§ããŸãããã®ã·ã¹ãã ã«è¿œå ããã®ã¯ãã·ã£ããŠãæŽæ°ããã¹ãããã ãã§ããã·ã¹ãã ã«èšç®ãããŒããããããããã¬ã€ã€ãŒãã²ãã€ããã³ã«ãã®æŽæ°ãè¡ãå¿ èŠã¯ãŸã£ãããããŸããã圱ãæŽæ°ãããããã«ã3ã€ã®è»žã®ããããã«æ²¿ã£ãŠç¹å®ã®æå°è·é¢ãè¶ ããŠãã ããã
ç§ã®ã©ã€ãã©ãªã§ã¯ã3Dã¯ãŒã«ããåæåãããšãã«ãcontrãªããžã§ã¯ããäœæãããŸãããã®ãªããžã§ã¯ãã«ã¯ãåžžã«ã«ã¡ã©ã®åº§æšãå«ãŸããŸããããã«ã«ã¹ã¿ã ãã©ã¡ãŒã¿contr.cameraForShadowStepãèšå®ããããšãã§ããŸããããã«ã¯ãã·ã£ããŠã«ã¡ã©ã®äœçœ®ãå€åããã«ã¡ã©äœçœ®ã®ã¹ããããå«ãŸããŸãã
ããšãã°ãã·ã£ããŠã«ã¡ã©ã®å¹³è¡å é¢äœã®å¯žæ³ã700x700x700ã®å Žåãcontr.cameraForShadowStepã¯ãããšãã°20ã«èšå®ã§ããŸãããŸãããã¬ãŒã€ãŒãããããã®è»žã«æ²¿ã£ãŠ20移åãããšãåæäœçœ®ãåã³èšæ¶ããããã¬ãŒã€ãŒã®åšå²ã®ã·ã£ããŠãæŽæ°ãããŸãã 3Dãšãã£ã¿ãŒã§ãã¹ãŠã®ã¢ãã«ãäœæãããã¹ã±ãŒã«ã«å¿ããŠã3Dã¯ãŒã«ãã®ã¹ã±ãŒã«ã¯ä»»æã§ãããŸãã700x700x700ãš20ã®ä»£ããã«ã7000x7000x7000ãš200ã䜿çšããå¿ èŠãããå¯èœæ§ããããŸããããããããã¯æ¬è³ªãå€ãããã®ã§ã¯ãããŸããã
ãšããã§ã倪éœã空ã移åãããšãã圱ã®æ¹åã¯ããã§å€åããã¯ããªã®ã§ã圱ã¯ãã®ã·ã¹ãã ãšã¯ç¡é¢ä¿ã«æŽæ°ãããŸããã€ãŸãããã¬ãŒã€ãŒã移åããã«ç«ã£ãŠããå Žåã§ãæŽæ°ãããŸããããã§ã¯ã空ãæŽæ°ããæéãŸã§ã«åœ±ãæŽæ°ããæ©èœãæãã«åŒã°ããŠããŸãã
ãã€ã³ãã©ã€ãã·ã¹ãã

ã¹ããŒãžäžã«12ãè¶ ããç¹å æºãååšãããšããã€ãããã¯ã·ã£ããŠãšåããããfpsã«åœãããŸãããããŠãå€ãã麻ããæŒå¥ããããšããäžå¯èœã«ããŸããããã«ããããã®ãœãŒã¹ããã¬ãŒã€ãŒã®èŠéå ïŒäžçã®ã¬ã³ããªã³ã°ã®ç¯å²ãèšå®å¯èœïŒã«ããããããªãã®è·é¢ã«ãããã¯é¢ä¿ãããŸãããããããã¹ããŒãžäžã«æãã«ååšããå Žåããã¹ãŠããã£ããåäœããŸãããããã£ãŠã3Dã¯ãŒã«ããèªã¿èŸŒãåã«åŒã³åºãããšãã§ããã²ãŒã ã®èšå®ã¡ãã¥ãŒã§ããç¯ç± ã®ç¯ããšåŒã°ãããã®ãããªãœãŒã¹ã®æ°ïŒ2ã4ããŸãã¯8ïŒã®ãªãã·ã§ã³ãæäŸããŸããã

ãã®ãããå€éãã¹ããŒãžã«çœ®ããããã¹ãŠã®ã©ã€ããåæã«ç¹ç¯ããŠãæ©èœããŸãããäžèšã§ã¯ãã¯ãŒã«ãåæåã¹ããŒã ã®èª¬æã§ãuserPointLightsãšlightsPDynamicArã®é åã玹ä»ããŸããã userPointLightsã§ã¯ãã¹ããŒãžäžã®ãã¹ãŠã®ã©ã³ãã®åº§æšãé åã«èšå®ãããŸãã lightsPDynamicArã«ã¯ã8ã€ã®ã€ã³ã¹ã¿ã³ã¹ãã¹ãŠã®ã©ã€ãèšå®ãå«ãŸããŠããŸããã©ã€ãã®æ°ã®èšå®ã«å¿ããŠãã©ã€ãã©ãªã¯æåã®ã©ã€ããååŸãããã¬ãŒã€ãŒã®èŠéå ã®ã·ãŒã³ã«è¿œå ããŸãã
å®éããã¬ãŒã€ãŒã®ç§»åäžã«ãuserPointLightsã©ã³ã¿ã³åº§æšã®é åã䜿çšããŠããã¬ãŒã€ãŒã«æãè¿ã2ã8åã®ã©ã³ã¿ã³ãæ€çŽ¢ãããŸãããããŠãç¹å æºã¯ãããã®äžã移åããŸããã€ãŸãã2ã8åã®ç §æã©ã³ãããã¬ã€ã€ãŒãåãå²ã¿ããã¬ã€ã€ãŒãå²ãã§ããŸããããã«ãããã¯fpsã®ãã¹ãŠã®ãã¬ãŒã ã§ã¯ãªããç¹å®ã®ã¹ãããã§å®è¡ãããŸããç¹ã«ãã¬ãŒã€ãŒãåããŠããªãå Žåã¯ãæ€çŽ¢æ©èœãæ¯ç§60åéå§ããå¿ èŠã¯ãŸã£ãããããŸããããã®å Žåãåšå²ã§æ¢ã«èŠã€ãã£ãŠããã©ã€ããçãããŸãã
ãããåãã®æ§åã§ãïŒXeon E5440ãGeForce GT730ïŒïŒ
é åžãã«ã
é«åºŠãªã¡ã¢åž³ãé€ãé«åºŠãªéçºç°å¢ã䜿çšããŠããªããããå* .jsãã¡ã€ã«ã®ã³ãŒããé£èªåããããã«Google Closure CompilerãåŒã³åºãããbatãã¡ã€ã«ãäœæããŸããããããŠãnw.jsãã³ãã«ã®nwjc.exeãããã§åŒã³åºãããjsããã€ããªïŒ* .binïŒã«ã³ã³ãã€ã«ããŸãããã¡ã€ã«ã®1ã€ã®äŸã瀺ããŸãã
java -jar DïŒ\ webservers \ Closure \ compiler.jar --js DïŒ\ webservers \ proj \ m3d \ www \ game \ bus \ bus.js --js_output_file DïŒ\ webservers \ proj \ nwProjects \ bus \ game \ bus \ bus.js
cd DïŒ\ "Program Files" \ Web2Exe \ down \ nwjs-sdk-v0.35.5-win-ia32
DïŒ\ "Program Files" \ Web2Exe \ down \ nwjs-sdk-v0.35.5-win -ia32 \ nwjc.exe DïŒ\ webservers \ proj \ nwProjects \ bus \ game \ bus \ bus.js DïŒ\ webservers \ proj \ nwProjects \ bus \ game \ bus \ bus.bin
del DïŒ\ webservers \ proj \ nwProjects \ãã¹\ã²ãŒã \ãã¹\ bus.js
次ã«ãåçŽãªWeb2ExecutableãŠãŒãã£ãªãã£ã䜿çšããŠãWindowsçšã®ã¢ã»ã³ããªãå«ãexeãã¡ã€ã«ãäœæããŸããæ°ãããã®ãå©çšå¯èœã§ãããç§ã¯nw.jsããŒãžã§ã³0.35.5ãéžæããŸãããã¢ã»ã³ããªã®ãµã€ãºã倧ããããããšãé€ããŠããããã®å¹æã«æ°ä»ããŸããã§ããã

ãã®ãŠãŒãã£ãªãã£ã¯ãéžæããããŒãžã§ã³ã®nw.jsãæå®ãããã©ã«ããŒèªäœã«ããŠã³ããŒãã§ããŸããåºåã¯ã¢ã»ã³ããªã§ãã35ã¡ã¬ãã€ãã®å®è¡å¯èœãã¡ã€ã«ã«ã¯ãå®éã«ã¯ã²ãŒã èªäœãå«ãŸããŠããŸãããã以å€ã¯ãã¹ãŠnode-webkitã§ããlocalesãã©ã«ããŒã«ã¯ãæããã«ãããã€ãã®ç°ãªãèšèªã®ãªãœãŒã¹ãæã€ãã¡ã€ã«ãå«ãŸããŠããŸããããããåé€ããè±èªã«é¢é£ãããã®ã ããæ®ããŸããããšããã§ãããã¯ã²ãŒã ã®ãã·ã¢èªçã®èµ·åã劚ããŸããã§ããïŒã²ãŒã ã§ã¯ãèšèªã¯ãã·ã¢èªãšè±èªã®éã§åãæ¿ãããŸãïŒããªãããããã¹ãŠã®ãã¡ã€ã«ã¯ãç§ã«ã¯ããããŸãããããããè±èªããªããã°ãäœãå§ãŸããŸããã
ã¢ã»ã³ããªå šäœã¯æçµçã«167 MBããããŸããã

次ã«ããã®ç®çã®ããã«èšèšãããç¡æã®ãŠãŒãã£ãªãã£ã®ããããã䜿çšããŠããã¹ãŠã1ã€ã®å®è¡å¯èœãªé åžãã¡ã€ã«ã«ããã¯ããåºåã¯70.2 MBã®Businessman3DSetup.exeã§ããã

転èš
ã¢ã»ã³ããªãããŸããŸãªã¢ããªã¹ãã¢ã«éä¿¡ããŸããããããã®ã»ãšãã©ã¯ãŸã ç§ã®ã²ãŒã ãã¢ãã¬ãŒãããããã»ã¹ã«ãããŸããçŸæç¹ã§ã¯ãããã¿ã®ã¿ããããå ¬éããŠããŸããç§ã¯ããã«èŠåããŸããã²ãŒã ã¯æ¯æãããŸããäŸ¡æ Œã¯3ãã«ã§ãããŸã è³Œå ¥ããŠããŸããããç§ã¯ãŸã ãã®ããã¢ãŒã·ã§ã³ã«åŸäºããŠããŸããã GOGã¯ãã²ãŒã ãéåžžã«ã·ã³ãã«ã§ãããã§ãããšããäºå®ãåŒçšããŠãå ¬éãæåŠããŸãããç§ã¯ååãšããŠåæããŸãã Epic StoreãåãããšããããšæããŸãã
ã²ãŒã ã®å ¬éããŒãžã§ã³ã¯1ã5ã®ããããæã€ã·ã³ã°ã«ãŠãŒã¶ãŒã§ããèšèª-ãã·ã¢èªãšè±èªããããã¯ãŒã¯ããŒãžã§ã³ãçµäºããäºå®ã§ããããããèããªãã-åãã¢ããªã±ãŒã·ã§ã³ã®åœ¢ã§ããŸãã¯WindowsãLinuxãiOãMacOã§ããã«å©çšå¯èœãªWebãã©ãŠã¶ãŒããŒãžã§ã³ã®åœ¢ã§ãäžè¬çã«ãã©ãŠã¶ãŒãWebGLããµããŒãããŠããå Žæã§ãªãªãŒã¹ããããšãå®éãwebkitã¯ãã©ãŠã¶ã§ãããFirefoxãEdgeãWindowsã®IE11ã§ãã²ãŒã ã¯æ£åžžã«åäœããŸãããåŸè ã§ã¯éåžžã«é ãã§ãã
çµè«

ãšã³ãžã³ã¯ãŸã å®æããŠããªãã®ã§ãäžè¬çãªäœ¿çšã®ããã«ãšã³ãžã³ãã¬ã€ã¢ãŠãããæºåããŸã æŽã£ãŠããªããšæããŸãããŸããå¥ã®ã²ãŒã ãäœæããŸããè¹ã«é¢ãããã¢ãããªã®ã²ãŒã ã§ãããã®ã²ãŒã ã§ã¯ããŠã©ãŒã¿ãŒã·ã§ãŒããŒã䜿çšããŠäœæ¥ããå®è¡ãã§ããããã§ããããã«ãããã«ç°¡åãªç©çãšã³ãžã³ãå®è£ ããäºå®ã§ããã¯ããä»ã®ãã¹ãŠã®æ©èœãçµäºãããã¹ãŠã®æ¬ é¥ãä¿®æ£ããå¿ èŠããããŸããããã€ãã®ãã¥ã¢ã³ã¹ãå¯èœã§ããããã1ã€ã§ã¯ãªã2ã€ã®ã²ãŒã ã§ãããè¡ãããšããå§ãããŸããäžæ¹ã§ãç§ã®æèŠã§ã¯ãç§ã®ãšã³ãžã³ã¯1ã€ã®ã²ãŒã ã«å¯ŸããŠã¯ããŸãã«ãéããªããããŠããŸãã
ããã«ãç§ã¯èª°ããããããã¹ãŠå¿ èŠãšããŠãããšã¯ãŸã£ãã確信ããŠããŸãããå°å³ã«èŠãã°ã誰ãçŽç²ãªjavascriptã§ã²ãŒã ãæžããŠããªããããããã²ãŒã ã¯ãã©ãŠã¶ã«ãšã£ãŠéåžžã«ç°¡åã§é«éãªã®ã§ãç§ã¯ããã奜ãã§ãããããã¯é«éã§ããŒããããå€ãã®RAMãå¿ èŠãšããã2Dãšæ¯èŒããŠããhtml5ã®ç«¶åä»ç€Ÿãšæ¯èŒããŠéåžžã«é«éã«åäœããŸããããããã¹ãŠã®éçºã§ãè€æ°ã®ãã©ãŠã¶ã²ãŒã ïŒã ãã§ãªãïŒããªãªãŒã¹ãããšæããŸãã