SkinnedMeshïŒiPhone 6ããã³8ã§ãã¹ãæžã¿ïŒã«é¢ãããã°ãèŠã€ãããšæããŸãã
ããããã§ã«å ±åãããŠããå Žåã¯ãç³ãèš³ãããŸããããåé¡ãªã¹ãã«èŠã€ãããŸããã§ãã:(
GPUã¹ããã³ã°ãæ£ããæ©èœããŠããããã¢ãã€ã«ã§å€¢äžã«ãªã£ãŠããããã§ãã
SkinnedMeshã移åããŠããããé«ãå€ã®äœçœ®ïŒäŸïŒxïŒ0ãyïŒ0ãzïŒ1000ïŒã§ç§»åãããšãã¹ããã³ã°ã¯æ£ç¢ºã§ãªããªããã¹ãã€ããŒãã³ã¹ãéå§ããŸãã
ã¡ãã·ã¥ã®ã¹ã±ãŒã«ããã°ã«åœ±é¿ãäžããŠããŸãã
ã¹ã±ã«ãã³ããŒã³ã®å€ãåãã¬ãŒã ã§æ£ããèšç®ãããŠããããã¹ããã³ã°ã·ã§ãŒããŒã®bonesTexture / bonesMatrixãé ç¹ãééã£ãå Žæã«æŒããŠããããã§ãã
ãã¡ãããããã¯ç§ã®æ°æã¡ã§ãã
ãããæçš¿ããåã«å€ãã®ãã¹ããå®è¡ããŸãã...ã¢ãã¡ãŒã·ã§ã³åããããšã¯ã¹ããŒãã®æããããæ¢ããŸãããããã°ã¯ããããçš®é¡ã®åœ¢åŒïŒGLTFãFBXãColladaãJSONãªã©ïŒããã³ThreeJSãªããžããªã®ã¢ãã«ã§çºçããŠããããšãããããŸããã
ããã¯ããã®åé¡ãçºçããªããšãã¢ãã¿ãŒãå®è¡ãããŠããïŒavatar.position.zãå¢å ããïŒåçŽãªã©ã³ããŒã²ãŒã ãéçºã§ããªãããšãæå³ãããããéåžžã«é¢åã§ãïŒïŒïŒ
morphTargetsã¯ãªãã·ã§ã³ã§ã¯ãªãã®ã§ãã©ããã£ãŠç®¡çããã®ããŸã ããããŸãã:(
çãããããã§å©ããŠãããããšãé¡ã£ãŠããŸãã
åé¡ãæããã«ããããã«ãã¯ãªãŒã³ãªãœãŒã¹ã䜿çšããŠæ確ãªäŸãäœæããŸããã ã¹ããŒããã©ã³ã§ç¢ºèªããã®ã¯éåžžã«ç°¡åã§ãã
ã¢ãã€ã«ã§ã®ã¿è¡šç€ºïŒz = 10000ïŒïŒ
http://cornflex.org/webgl/skinning-bug.html
floatVertexTexturesãfalseïŒz = 10000ïŒã«èšå®ããå ŽåïŒ
http://cornflex.org/webgl/skinning-bug2.html
è·é¢ãšãšãã«æªåããïŒzãå¢å ããïŒïŒ
http://cornflex.org/webgl/skinning-bug3.html
äžå¿ããéåžžã«é ãïŒz = 70000000ïŒ>ãã¹ã¯ãããã«ããã°ã衚瀺ãããŸãããæµ®åå°æ°ç¹ç²ŸåºŠã®åé¡ãåå ã§ãã
http://cornflex.org/webgl/skinning-bug4.html
ç§ã®ã²ãŒã ç°å¢ã§ã®ãããªãã¬ãã¥ãŒïŒ
ããã¯çŸå®çãªã¹ã±ãŒã«ã®äžçã§ãïŒ1.0m = 1.0 threejsãŠãããïŒã
ãã°ã¯ã·ãŒã³ã«ãŒããã50ã60måŸã«ã®ã¿çºçããè·é¢ãšãšãã«æªåããŸãã
http://cornflex.org/webgl/skin-bug.mp4
éåžžã«éèŠ
ThreeJSãªããžããªãã䜿çšãããã¡ãã·ã¥ã倧ããããŸãã é«ã20mãããã§ãã
ãã®ããããã°ã確èªããã«ã¯zå€ã倧ããããå¿
èŠããããŸãã
ãã®ã¡ãã·ã¥ãçŸå®çãªãµã€ãºã«çž®å°ãããšã100mã§ããã°ãçºçãå§ããŸãã
iPhone 6ã8
ãããšãããªãã®ãã¢ã¯ç§ã®Pixelã§ããèŠããŸãã
iPhone SEã§ç¢ºèªãããåé¡â
ããããiOSã§ã®WebGLã®ç²ŸåºŠã®åé¡
ããããiOSããã€ã¹ã¯å®éã«ã¯ã¹ããã³ã°å®è£ ã®ãããŒããã¯ã¹ãã£ããŒã¹ã®ã³ãŒããã¹ã䜿çšããŠããŸãããïŒ æ¬¡ã®é©åæ§ãã¹ãã§ããã確èªã§ããŸããïŒ
iPhoneSEã®ãã®ããŒãžã«ã¯5ã€ã®é害ããããŸãã ð
ãããžã§ã¯ãã§çŽ¹ä»ããå°ããªã¹ã¯ãªãŒã³ãã£ã¹ããäœæããŸããã
http://cornflex.org/webgl/skin-bug.mp4
ã¢ãã¿ãŒã0,0,0ããé¢ãããããšãã芧ã®ãšãããèãæ¬åœã«ãã°ã«ãªãå§ããŸãã
éªšæ Œãšéªšã®è©³çŽ°ãªãããã¡ã€ãªã³ã°ãè¡ããŸããã ãžãªã¡ããªãäœããã®æ¹æ³ã§ãåŒãæ»ããããããšãé€ããŠããã¹ãŠåé¡ãªãããã§ã...ã¢ãã¡ãŒã·ã§ã³ã®ã«ãŒããæªããšã¯æããŸãããThreejsã§ã¯ãã¹ãŠåé¡ãªãããã§ã...
確çã¯ãã¹ããã³ã°ã·ã§ãŒããŒã®ã¹ã±ã«ãã³ãšbonesTextureã«æ確ã«ãªã³ã¯ãããŠããŸãã
ç§ã粟床ã«ã€ããŠã§ãããMugenãèšã£ãããã«ãiOSããã€ã¹ã¯ãããç°¡åã«ãµããŒãããã¯ãã§ãã
...ãªãiPhoneã ãã§ïŒ/
ç§ã¯ããªãç«ã¡åŸçããŠããŸã...ããã¯ã¢ããèšç»ãšããŠpngã·ãŒã±ã³ã¹ã«æ¹åãå€ããŠããŸã... :(
ããã¯ãiphone6ãååãªéªšããµããŒãããŠããªãããšãåå ã§ããå¯èœæ§ããããŸãã
ç§ã¯ãŸã£ããåãåé¡ãæ±ããŠããŸããã
ããã§éªšã®å¶éã確èªããŠãã ããïŒ https ïŒ
ããã¯æããŸããã
skinnedmeshã0,0,0ã®ãŸãŸã®å Žåãåé¡ã¯ãŸã£ãããããŸããïŒ/
ã¢ãã¿ãŒã®ä»£ããã«ãã¹ãŠã®ã¢ã»ããã移åããããšãèããŠããŸã...ïŒããã¯ç§ã®åé¿çïŒ2ã§ãïŒãããã¡ãããã¹ã±ã«ãã³ããã¹ã¯ããããšåãããã«æ©èœãããããšæããŸãã
å人ãiPhone8ã§åããã°ãå ±åããŸãã
次ã®é©åæ§ãã¹ãã§ã©ã®ãããªçµæãåŸãããŸããïŒ
ThreeJSã®ãœãŒã¹ã2æ¥éèŠãåŸãbonesTextureãæŽæ°ããããšãã«åé¡ããããšæããŸãã
ãã®ãã¯ã¹ãã£ã¯æ£ããæŽæ°ãããŠããªãããã§ãé ç¹ãå
ã®äœçœ®ã«æŒãæ»ããŸã...ãããããã¡ããééã£ãŠããå¯èœæ§ããããŸãã
ããŒã...ããã§ç§ã¯ããã€ã倱æããŸãããèŠãŠãã ããïŒ
ãã¶ããåé¡ã¯ãããã®å€±æã«é¢é£ããŠããŸãã ããšãã°ãç§ã®Pixelã¯ãã¹ãŠã®ãã¹ãã«åæ ŒããŠããŸãã
移åããŸãããã¡ã®ãã©ã€äœããããŠã¿ãŸãããWebGLCapabilities
ãšã®å€ãèšå®floatVertexTextures
ã«false
ïŒããã¯ãããŒããã¯ã¹ãã£ã®äœ¿çšãé²ãããšãã§ããŸãïŒã ãã«ããäœæãããã®three.js
ããŒãžã§ã³ãã¢ããªã§äœ¿çšããŸãã äœãèµ·ããã®ãèå³ããããŸãðã
ã¬ã³ãã©ãŒã§floatVertexTextures = falseãæ¢ã«è©ŠããŸããã
èãçãã®ããããŸãããã¢ãã¡ãŒã·ã§ã³ã¯ãããããŸããïŒ/
ãµã³ãã«ãããã·ã¥ããŸãã
ã¯ããã©ããïŒ
http://cornflex.org/webgl/skinning-bug2.html
renderer.capabilities.floatVertexTextures = false;
=>ã¢ãã¡ãŒã·ã§ã³ã¯ããå®è¡ãããŠããŸãã
ãããç§ã®Pixelã§ãåãã§ãïŒãã¹ã¯ãããã¯æ©èœããŸãïŒã ç§ãã¡ã¯äžåŸã®éçã«éããŠãããšæããŸãã
æåŸã®ãµã³ãã«ãäœæããŸãããããã°ãåŸã
ã«çŸããŠããŸãã
http://cornflex.org/webgl/skinning-bug3.html
0,0,0ããå§ãŸããåé²ããŸã...æ°ç§åŸ ã¡ãŸã...èãçãå§ããŸãã
0,0,0ã§ãã¹ãŠãOKã§ããã®ã¯ããªãå¥åŠã§ãã ããã§ããã
zïŒ1255>ãŸã OK
zïŒ18870>ã¯ã¬ã€ãžãŒã¹ãã³
ç§ãèšã£ãããã«ãç§ã¯CPUåŽã®ãã¹ãŠã®ã¹ã±ã«ãã³ãšããŒã³ã®äœçœ®ã詳现ã«ãããã¡ã€ã«ããŸããã ãã¹ãŠã®å€ã¯ãŸã£ããåé¡ãªãããã§ãã ç§ãæã£ãŠããå¯äžã®æãããã¯ãã¡ãã·ã¥ã0,0,0ããé ããªããšãiOSã§bonesTexturesãšbonesMatrixesãæ£ããæ©èœããªãããšã§ãã
ã«ãŒãããŒãã®å®å®ããããŒã³ãªã©ã®å žåçãªåäœã§ãããããããŒã³ã®äœçœ®ã確èªããŸããã
ã¹ãã³ã·ã§ãŒããŒã®GPUåŽã®æµ®åå°æ°ç¹ç²ŸåºŠã確èªããŸãããããã¯ã...äœã圱é¿ããªãããã§ãã
éåžžã«å¥åŠãªããšã«ãSkinnedMeshãã·ãŒã³å ã§åããããããããå ±åããããã人ã¯èª°ãããŸããïŒ/
ãã1ã€ã®è³ªåïŒChromeã§ãåãåé¡ããããŸããïŒ
ããåã確çã
粟床ã®åé¡ã®ããã«èãããŸãã ã·ãŒã³ãçž®å°ããŠã¿ãŸãããïŒ ïŒ11195ã¯11ããã¡ãŒãã«ã§ãïŒã
å¥ã®ãªãã·ã§ã³ã¯ããã£ã©ã¯ã¿ãŒã®ä»£ããã«ã·ãŒã³ã移åããããšã§ãã 倧ããªã·ãŒã³ã®äžè¬çãªè§£æ±ºçã«ãªãåŸåããããŸãã
ãŸããã¹ããã³ã°ã³ãŒãã¯ã¯ãŒã«ãã¹ããŒã¹ã«ãããšæããŸãã ããã調æ»ããããšãã§ããŸãã
ããªãã®éªšã®æ°ã¯67ã§ãã
ç§ã®ïŒåŠ»ã®ïŒiphone6ã®æ倧ããŒããŠã§ã¢ããŒã³ã®å¶éã¯27ã§ãã
ç§ãèŠãå€åœ¢ã¯ãç§ã®ã²ãŒã ã§åœŒå¥³ã®é»è©±ã§èŠããã®ãšåãã§ãïŒãããŠãã¢ãã¡ãŒã¿ãŒã«ã¡ãã·ã¥ã®ã¢ãŒããã¥ã¢ãä¿®æ£ãããåã«ç§ãæ±ããŠããã®ãšåãåé¡ã§ãïŒã ãããå°ãªããšãããªãã®åé¡ã®äžéšã§ã¯ãªãã£ãããç§ã¯é©ããŸãã
ãªãããã¯æéãšãšãã«æªåããã®ã§ããïŒ ããããªãã ä»ã®èª°ãã䌌ããããªããšãèšã£ããããããé¢é£ããŠãããã©ããã¯ããããªãïŒ https ïŒ
ç§ãiphoneïŒå°ãªããšãiphone 6ïŒã§èŠã€ãããã1ã€ã®åä»ãªããšïŒhighpã·ã§ãŒããŒã®ç²ŸåºŠã䜿çšããå¿ èŠããããŸããmediumpãšlowpã¯ãåãæãããæ¹æ³ã§ã¡ãã·ã¥ãæªããŸããïŒé»è©±ã®éªšã®åé¡ãšåãã§ãïŒãããã¯ã¹ãã£ã¯èŠããŸãã¢ãã¡ãŒãäžã«å¥åŠã§æååã/ãã¯ã»ã«åã
ãã¹ãããŠããããã€ã¹ã®ããŒããŠã§ã¢ã®éªšã®å¶éã¯äœã§ããïŒ
@mrdoobç§ã¯ãã§ã«ã¹ã±ãŒã«ããŠã³ãè©Šã¿ãŸããããå®éã«ã¯ã¹ããã³ã°ã¯ã¯ããã«éãçã£ãŠããŸãïŒ/
0.1ã§ã¹ã±ãŒã«ããŠã³ãããšããã°ã¯10åéã衚瀺ãããŸãã
ããã§èª¬æããããã«äœ¿çšãããã¢ã¯ãthreejsã®äŸããã®ãã®ã§ãã
ç§ã®ã²ãŒã ã§ã¯ãã¹ã±ãŒã«ã¯ããã»ã©å€§ãããããŸãããããã°ã¯åãã§ã衚瀺ãéããªãã ãã§ãã
確ãã«ãã¹ããã³ã°ã¯ã¯ãŒã«ãã¹ããŒã¹ãŸãã¯ããŒã«ã«ã¹ããŒã¹ã§è¡ãããŠããããã§ãããäžå¿ããé ãã«ç§»åãããšã¹ãã¬ããããŸãã ããã0,0,0ã§éåžžã«ããŸãåäœããŠããçç±ã§ã
ã¢ãã¿ãŒã®ä»£ããã«å
šäžçãåããããšãç§ã®ä»äºã§ãïŒ2ã
ãã§ã«ç©çåŠãšãã¹ãŠã䜿ã£ãŠäžç空éã§ã©ã³ããŒã²ãŒã ã®ãã¹ãŠã®ã«ãŒãã³ãéçºãããšããããã¯æªãéžæã§ããããšãèªããªããã°ãªããŸããã ãããŠãz = 11000ã¯ã©ã³ããŒã²ãŒã ãšããŠã¯ããã»ã©é ããããŸããïŒ/ ...ãããŠããã¯ãã èµ°ã£ãŠãã人ã§ãããè¹ã§ã¯ãããŸããã
ThreeJSã§ããããã®ã²ãŒã ãäœããŸããããskinnedmeshã䜿ãã®ã¯åããŠã§ãã ãã®iOSã®ãã°ã¯æ¬åœã«è¿·æã§ãã
WorkaroungïŒ1ïŒã¹ãã©ã€ãã·ãŒãã¢ãã¡ãŒã·ã§ã³ãšããŠ6ã€ã®pngã·ãŒã±ã³ã¹ãå®è¡ããŸãã 次ã«ãã¯ãŒã«ãã¹ããŒã¹ããžãã¯ãç¶æã§ããŸãã ç· ãåãã¯ããé ããªã:(
@titansoftime劻ã®iPhone8ã«ãåé¡ãçºçããŠããŸãã ããã¯iPhone6ã ãã«é¢ä¿ãããã®ã§ã¯ãããŸããã
ãŸããæ倧ããŒã³ã®åé¡ãããå Žåã¯ãæåãããã°ããããŸãã ããã§ã¯ã0,0,0ã§ãã°ããªãããšãããããŸãã ãã®å Žåã骚ã®éçã¯åé¡ã§ã¯ãããŸããã ã¹ããã³ã°ã·ã§ãŒããŒã®ããŒã³ãšbonesMatrixã®ã¯ãŒã«ãã¹ããŒã¹èšç®ã¯ãIMOã§ãã
iPhone 8ã®æ倧ããŒããŠã§ã¢ããŒã³ãšã¯äœã§ããïŒ
ç§ã¯ç¥ããªãã ãããŠããããããã€ã¹ã«äŸåããŠãããã©ããã¯ããããŸããã
ããããç¹°ãè¿ãã«ãªããŸãã... IMOãmaxbonesã®å€ãšã¯ãŸã£ããé¢ä¿ãããŸããã
ãµã³ãã«ã¯iphone6,8ãXã§æ£ããæ©èœããŠããŸã... SkinnedMeshã0,0,0ã®ãŸãŸã®å Žåã®ã¿5 ...
https://threejs.org/examples/webgl_loader_fbx.html
maxbonesãåé¡ã ã£ãå Žåã0,0,0ã§ãã¹ããã³ã°ãããŸããããŸããã
ãŠãŒã¶ãŒzeoverlordã®ãã®ã»ã¯ã·ã§ã³ã匷調ããããšæããŸãïŒ
æºãã¯ãããŒãã®å Žåã«ã®ã¿èªç¶ã§ãããå€æ°ã¯æ°å€ã倧ããã»ã©ç²ŸåºŠãäœäžããããã粟床ã¯1.0ã«è¿ãã»ã©æé«ã§ãã ããã¯å®éã«ã¯åé¡ã§ã¯ãããŸããããèšå€§ãªæ°ã®è¡åèšç®ã倧éã«å®è¡ãããšã粟床ãå€§å¹ ã«äœäžããïŒã€ãŸãããžãã¿ãçºçããïŒããšãæå³ããŸãã ãããã£ãŠãåç¹ãäžå¿ã«ãã¹ãŠã®èšç®ã劥åœãªæ°ã§å®è¡ãããããå€æããå¿ èŠããããŸã
ããŒãããšãŠãé¢çœã@ Mugen87ïŒ æŒããèŠã€ããããã§ããã
zïŒ1255>ãŸã OK
zïŒ18870>ã¯ã¬ã€ãžãŒã¹ãã³
ãšã©ãŒã¯ããªãã®åŽã«ããå¯èœæ§ããããŸãã
ããããééãïŒã¹ãã³ã¢ãã£ãã¡ã€ã€ãé©åã«é©çšãããŠããŸããã§ããã
ãšã©ãŒ1ïŒé ç¹ãå€ãããããŒã³ã«ãã£ãŠå¶åŸ¡ãããŠãã
ãšã©ãŒ2ïŒéã¿ã®ãªãïŒãŸãã¯éã¿ãéåžžã«å°ããïŒé ç¹ã
SkinnedMeshãåç¹ïŒ0,0,0ïŒã«è¿ãå Žåããããã®ãšã©ãŒã«æ°ä»ãããšã¯ãããŸããã
ããããé ãã«ç§»åãããš...ã¢ãã€ã«ããã€ã¹ã®ç²ŸåºŠãåå ã«ãªããŸãã
ãããã£ãŠãæåã«è¡ãããšã¯ãã¹ãã³ã¢ãã£ãã¡ã€ã€ãïŒä»åã¯é©åã«ïŒåèšèšããããšã§ãã
@RemusMarããŒãžã®ãœãŒã¹ãèŠãŸãããïŒ
ç§ãå
¬éããäŸã¯ãThreeJSãœãŒã¹ããã®ãã®ã§ãã
ç§ã®èª¬æã§ããªãããèšåãããŠããŸã;ïŒ
ãããæçš¿ããåã«å€ãã®ãã¹ããå®è¡ããŸãã...ã¢ãã¡ãŒã·ã§ã³åããããšã¯ã¹ããŒãã®æããããæ¢ããŸãããããã°ã¯ããããçš®é¡ã®åœ¢åŒïŒGLTFãFBXãColladaãJSONãªã©ïŒã§çºçããŠããããšãããããŸããã
åé¡ãæããã«ããããã«ãã¯ãªãŒã³ãªãœãŒã¹ã䜿çšããŠæ確ãªäŸãäœæããŸããã ã¹ããŒããã©ã³ã§ç¢ºèªããã®ã¯éåžžã«ç°¡åã§ãã
ç§ãå ¬éããäŸã¯ãThreeJSãœãŒã¹ããã®ãã®ã§ãã
ã ããäœïŒ
ThreeJSã®ãã¹ãŠã®skinnedmeshã®äŸã§ãããçºçãããšãã«ããšã©ãŒãç§ã®åŽã«ã©ã®ããã«çºçããå¯èœæ§ããããŸãã:)
ããªããèšã£ãïŒ
ãšã©ãŒã¯ããªãã®åŽã«ããå¯èœæ§ããããŸãã
ããããééãïŒã¹ãã³ã¢ãã£ãã¡ã€ã€ãé©åã«é©çšãããŠããŸããã§ããã
ãšã©ãŒ1ïŒé ç¹ãå€ãããããŒã³ã«ãã£ãŠå¶åŸ¡ãããŠãã
ãšã©ãŒ2ïŒéã¿ã®ãªãïŒãŸãã¯éã¿ãéåžžã«å°ããïŒé ç¹ã
FBXã¯ThreeJSããã®ãã®ã§ã...ãããŠGLTFãŸãã¯ä»ã®ãã©ãŒãããã§è©Šãããšãã§ããŸãã 確çã¯åãã§ãã
var loader = new THREE.FBXLoaderïŒïŒ;
loader.loadïŒ 'https://threejs.org/examples/models/fbx/xsi_man_skinning.fbx'ãOnFBXLoadedïŒ;
@ Mugen87ãæããããèŠã€ããŸããã GPUã¹ãã³ã¡ãã·ã¥ãäœæãã人ããããä¿®æ£ã§ããããšãæåŸ ããŸãããã
ThreeJSã®ãã¹ãŠã®skinnedmeshã®äŸã§ãããçºçããå Žåããšã©ãŒãç§ã®åŽã«ã©ã®ããã«çºçããå¯èœæ§ããããŸãã
ããšã©ãŒã¯ããªãã®åŽã«ãããããããŸããããšç§ã¯èšããŸããã
çµè«ïŒ
ã¹ãã³ã¢ãã£ãã¡ã€ã€ãé©åã«é©çšãããåçŽãªSkinnedMeshã䜿çšããŸãã
ãã°ãåçŸã§ãããã©ããã確èªããŠãã ããã
æã£ãŠããŸããïŒ :)
ãã®ãã°ã¯ç§ã®åŽã«ã¯ããåŸãŸãã...ã¢ãã«ïŒfbxãgltfãdaeãªã©ïŒãšã³ãŒããœãŒã¹ã¯ThreeJSããæ¥ãŠããŸãã
@ Mugen87ã®æçš¿ãèªãã§ãã ããã
ã¹ãã³ã¢ãã£ãã¡ã€ã€ãé©åã«é©çšãããåçŽãªSkinnedMeshã䜿çšããŸãã
ãã°ãåçŸã§ãããã©ããã確èªããŠãã ããã
ä»è¡ããªããã°ãªããªãã
也æ¯
ããŒãã ããªãã¯äœäººãç¥ã£ãŠããŸããïŒ ããã¯ãã¹ã¯ãããã§ãèµ·ãã£ãŠããŸã:(
ThreeJSã®ãµã³ãã«ã¡ãã·ã¥ã¯å·šå€§ïŒé«ã100mïŒãªã®ã§ãéåžžã«é ãã«é
眮ããŸããïŒz = 10000000
ãããŠãèŠãŠãåã確çïŒ
http://cornflex.org/webgl/skinning-bug4.html
@ Mugen87ã«ãã£ãŠå ¬éãããŠããããã«ãããã¯ééããªãã¯ãŒã«ãã¹ããŒã¹ã®ããŒã³ã®äœçœ®ãšbonesMatrixã®èšç®ã«é¢é£ãããã®
https://www.opengl.org/discussion_boards/archive/index.php/t-159613.html
https://www.opengl.org/discussion_boards/archive/index.php/t-159364.html
åã«@mrdoobã«èª¬æããããã«ãç§ã¯ãã§ã«ã¡ãã·ã¥ãçž®å°ããããšããŸãããã確çã¯ããã«æªåããŸã...ãã¹ã¯ãããã§ãã0,0,0ããããã»ã©é ããªããã°ã«ééããŸãã
ç§èªèº«ã®ã²ãŒã ïŒçŸå®çãªã¹ã±ãŒã«1ïŒ1ïŒã§ã¯ããã°ã¯ãã§ã«zïŒ100ã«çŸããŠããŸãã
èšèšã®æªãã¹ãã³ã¡ãã·ã¥ãåŒãç¶ã䜿çšããŸã...
ãšã«ããããã®äž»é¡ãéããããã«ãããã«1ãã1,000,000ïŒ100äž!!!ïŒã®ã±ãŒã¹ã¹ã¿ãã£ããããŸãïŒ
http://necromanthus.com/Test/html5/Lara_1000000.html
ã¹ããŒãžãã¯ãªãã¯ããŠãY = 0ãšY = 1000000ãåãæ¿ããŸã
ã¹ã€ããããšã«ãã°ããŒãã«ãªç
§æã®ãã€ããŒãªå€æŽãå¯èœã§ãã
ãããã£ãŠãã¹ãã³ã¡ãã·ã¥ãé©åã«èšèšãããŠããã°ãçµæã¯ïŒã»ãŒïŒå®ç§ã«ãªããŸãã
也æ¯
ä»æã®ãªãªãŒã¹åŸã«èª¿æ»ããŸãã
@mrdoobããããšãããããŸãã
@RemusMarããªãã¯ããã§èšãããããšãç¡èŠãç¶ããŸãã ã¹ã¬ããå šäœãããäžåºŠãèªã¿ãã ãã:)
ç§ã¯ããªãã«å®çšçãªäŸããããŸããããããªãã¯ãŸã ç解ããŠããŸããã
http://necromanthus.com/Test/html5/Lara_1000000.html
ãããŠãããªãã¯æªãç¿æ
£ã«ã€ããŠè©±ãç¶ããŸãã
次ã®ç¹ã«æ³šæããŠãã ããã
å粟床浮åå°æ°ç¹ã®æ¡æ°ã¯7ã§ãã
ããã¯1234,567ãš123456.7ãã«ããŒããŸã
ã»ãšãã©ã®ãŠã§ã€ããããã«ã¯å°æ°ç¹ä»¥äž4æ¡ãä»å±ããŠããŸããã1ã€ã§ãé©åãªçµæãåŸãããŸãã
ãã®ããããã¹ãŠã®3Dãšã³ãžã³ã¯ãäžçèŠæš¡ã§æ倧å€10,000ãæšå¥šããŸããã
0000.001ãã9999.999ãŸã§
ç§ãã¡ã¯çããç¡éããŸãã¯å·šå€§ãª3Dã¯ãŒã«ããæãã§ããŸãããããã¯äžå¯èœã§ãã
ããªããããŠããããšã¯ãå€ãã®èŠ³ç¹ããå®å
šã«ééã£ãŠããŸãïŒ
ã²ãŒã ãã¶ã€ã³ãããã©ãŒãã³ã¹ãã¢ãã¡ãŒã·ã§ã³ãè¡çªã
ããªããä»ã¡ã€ã³ã®çµµãæã«å
¥ããããšãé¡ã£ãŠããŸãã
ãã¶ãé¢é£ïŒ http ïŒ
@RemusMar
ç§ã¯ããªããèšã£ãããšãããç解ããŸããããæ®å¿µãªããããªãã®ã¢ãã«ã«ã¯åãåé¡ããããŸã...çšåºŠã¯äœãã§ããããŸã ããã«ãããŸãïŒ
http://cornflex.org/webgl/skin-bug2.mp4
ãœãŒã¹ïŒ
http://cornflex.org/webgl/skinning-bug5.html
ãããŠãç§ãz = 60000ããé«ãäœçœ®ãäžãããšãããã¯æªåããŸã...ãããŠ100000ãŸã§ããã¯å®å šã«èŠããªããªããŸãã
ç§ãã¡ã¯çããç¡éããŸãã¯å·šå€§ãª3Dã¯ãŒã«ããæãã§ããŸãããããã¯äžå¯èœã§ãã
ç¬ãç¡éã®å·šå€§ãªäžçã¯æ¬²ãããªã...以åThreeJSã§äœåºŠããã£ãããã«ãã©ã³ããŒã²ãŒã ãäœãããã ãã§ã...ãããä»åã¯ã¢ãã¿ãŒãšããŠã¹ãã³ã¡ãã·ã¥ãå¿ èŠã§ãã
ç§ã®ã·ãŒã³ïŒ http ïŒ
æ°ã¡ãŒãã«ãè¶ ããã¢ãã¿ãŒãã¢ãã¡ãŒã·ã§ã³åã§ããªãå Žå...ããã§ã¯ããã€ã³ãã¯äœã§ããïŒ ïŒçŸå®çãªã¹ã±ãŒã«1m = 1 threejsãŠãããã§ã¯ããã°ã¯ãã§ã«100ããçºçããŠããŸãïŒã
ãšããã§ãããªãã®ã¢ãã«ã¯é«ã150mã®ãããªãã®ã§ã...ããã¯çŸå®çãªã¹ã±ãŒã«ã§ã¯ãããŸããã
ç·šéïŒ
ããã§ã¯ãã¢ãã«ã«ã¹ã±ãŒã«ïŒ0.01ã0.01ã0.01ïŒã䜿çšããåãã·ãŒã³ã䜿çšããŠãçŸå®çãªãµã€ãºïŒçŽ1.5mïŒã«ããŸãã ã芧ã®ãšãããã¢ãã€ã«ã§ã¯ãã§ã«z = 300ã§ãã°ãçºçããŠããŸãã
http://cornflex.org/webgl/skin-bug3.mp4
ããªããããŠããããšã¯ãå€ãã®èŠ³ç¹ããå®å šã«ééã£ãŠããŸãïŒ
ã²ãŒã ãã¶ã€ã³ãããã©ãŒãã³ã¹ãã¢ãã¡ãŒã·ã§ã³ãè¡çªã
LOL LOL ...ã²ãŒã ã®äœæã«é¢ããç§ã®Webãµã€ããšããã°ïŒhttpïŒ//quentinlengele.comãhttpïŒ//cornflex.orgãhttpïŒ//www.ddrsa.comãhttpïŒ//br9732.comïŒã«ã¢ã¯ã»ã¹ããããšããå§ãããŸãã ïŒ
ç·šéïŒããªãã®ã·ãŒã³ã¯iOSã§ã¯è¡šç€ºãããŸããã空ã®ç»é¢ïŒhttp://necromanthus.com/Test/html5/Lara_1000000.htmlïŒã
ã¹ããã³ã°ã¯ã¯ãŒã«ãã¹ããŒã¹ãŸãã¯ããŒã«ã«ã¹ããŒã¹ã§è¡ãããŠããããã§ãããäžå¿ããé ãã«ç§»åãããšã¹ãã¬ããããŸãã ããã0,0,0ã§éåžžã«ããŸãåäœããŠããçç±ã§ã
ã©ãã©ãïŒ
vec3 transformed = vec3( position );
...
#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += boneMatX * skinVertex * skinWeight.x;
skinned += boneMatY * skinVertex * skinWeight.y;
skinned += boneMatZ * skinVertex * skinWeight.z;
skinned += boneMatW * skinVertex * skinWeight.w;
transformed = ( bindMatrixInverse * skinned ).xyz;
#endif
ç§ã«ã¯äžç空éã®ããã«èŠããŸãããïŒ éåžžã®ã¡ãã·ã¥ã§ã¯ã transformed
ã¯position
å±æ§ãã€ãŸãããŒã«ã«åº§æšã«èšå®ãããŸãã
ãã®ããããã€ã³ããšããŒã³ã®è¡åãèšç®ãããjsåŽã§äœãèµ·ãã£ãŠãèµ·ãããŸãã ããããããã€ã³ããããªãã¯ã¹ã¯å€ãã®ã¹ãã¬ãããè¡ããããŒã³ãããªãã¯ã¹ã¯ããã€ã³ããããªãã¯ã¹ã§ããã»ã©ã¹ãã¬ãããå¿ èŠãšããªãä»ã®åº§æšã§åäœããããã«ãã¯ã¿ãŒãããå¯èœæ§ããããŸã...ãŸãã¯ãã®ãããªãã®
ïŒç·šéïŒnvmãç§ã¯ãããééã£ãŠãããšæããŸãïŒ
@makcæ®å¿µãªãããã¹ããã³ã°ã·ã§ãŒããŒã®ã³ããŒ/貌ãä»ãã«ãèšç®ãããŒã«ã«ç©ºé座æšã§è¡ãããã®ãã¯ãŒã«ã空é座æšã§è¡ãããã®ããå€æããã®ã«ååãªæå¹ãªããŒã¿ããããŸããã
ç§ãèšã£ãããã«ãããŒã³è¡åã®èšç®ã«ã¯ç¢ºãã«äœãåé¡ããããããããã®è¡åã®èšç®ã®é åºãæ£ãããªãå¯èœæ§ããããŸãã OpenGLãã©ãŒã©ã ã§èŠãããšãã§ãã @ Mugen87ãè¿°ã¹ãããã«ãããã¯å°ãªããšãç§ã«ãšã£ãŠæã䟡å€ã®ããæãããã§ãã
æºãã¯ãããŒãã®å Žåã«ã®ã¿èªç¶ã§ãããå€æ°ã¯æ°å€ã倧ããã»ã©ç²ŸåºŠãäœäžããããã粟床ã¯1.0ã«è¿ãã»ã©æé«ã§ãã ããã¯å®éã«ã¯åé¡ã§ã¯ãããŸããããèšå€§ãªæ°ã®è¡åèšç®ã倧éã«å®è¡ãããšã粟床ãå€§å¹ ã«äœäžããïŒã€ãŸãããžãã¿ãçºçããïŒããšãæå³ããŸãã ãããã£ãŠãåç¹ãäžå¿ã«ãã¹ãŠã®èšç®ã劥åœãªæ°ã§å®è¡ããŠããããããå€æããå¿ èŠããããŸãã
ç¹°ãè¿ããŸããã説æããããã«ããªããžã§ã¯ãã®ã¹ã±ãŒã«ããã°ã«åœ±é¿ãäžããŠããŸãã
ThreeJSãœãŒã¹ã䜿çšããäŸã§ã¯ãz = 100000ã§ã®ã¿ãã°ãçºçããŸãããããã¯ã¡ãã·ã¥ã®ãµã€ãºïŒThreeJSãœãŒã¹ãããååŸïŒã倧ããããã§ãã èµ°ã£ãŠããå°å¹Žã®èº«é·ã¯150mã§ãã
ãã¡ãããã²ãŒã ãããŠãããšãã¯ããã®ãããªã¹ã±ãŒã«ã¯äœ¿çšããŸããã ããªãã¯ãã€ãããªãã®äžçã1m = 1unitã§ç¶æããããšããŸãã ããã¯ãåªããç©çåŠãšè¡åãåŸãããã«ãå¿ é ã§ãã
ããã§ã®åé¡ã¯ãçŸå®çãªãµã€ãºã®SkinnedMeshã䜿çšããå Žåã§ãããã°ã¯ãã§ã«z = 300ã§çºçããŠããŸãã
ã©ã®ãšã³ãžã³ã§ããxïŒ30000ãyïŒ60000ãzïŒ140000000ã«SkinnedMeshãããããã§ããããŒã³ãšã¹ããã³ã°ã®åé¡ã¯ãããŸããã æºãã¯ãããŸããã
確ãã«ãç§ãã¡ã¯ããã§Javascriptã³ã¢ã«åãçµãã§ããããšãããç解ããŠããŸã...ãããããã§ãã
ãç§ãã¡ã¯çãç¡éã®äžçãæãã§ããããããã¯äžå¯èœã ããšåœã£ãŠããã«ãããããŒã«ã¯ãåŠæ ¡ã«æ»ã£ãŠè¡åå€æãåŠã¶å¿ èŠããããŸãã ãŸãã¯ããªãŒãã³ã¯ãŒã«ãã®ã²ãŒã ãããèŠãŠãèªåã®ã¢ãã¿ãŒãã·ãŒã³ã®ã«ãŒã0,0,0ããé ãé¢ããå Žæã§ãã¹ãã³ã¡ãã·ã¥ãããæ¹æ³ãèªåããŠã¿ãŠãã ããã
ç§ã¯èšããªããã°ãªããªãããã®ãã°ã¯æ¥œããã§ãã ããã§ã¯ããã¹ã¯ãããã§åçŸã§ããŸãããã60Kã§ã¯ç²ŸåºŠãäžè¶³ããã»ã©ã§ã¯ãããŸããã§ããã
ããããŸãããz= 1e8ã®å ŽåãçŸåšã®ã·ã§ãŒããŒã§ã¯æ¬¡ã®ããã«ãªããŸãã
ã·ã§ãŒããŒãããã«å€æŽãããšã次ã®ããã«ãªããŸãïŒç·šéããäžèšã®é ã®ãŠã£ãºãããã®ãã¹ãã®ããããªããªãšãŒã·ã§ã³ïŒïŒ
#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += ( bindMatrixInverse * boneMatX ) * skinVertex * skinWeight.x;
skinned += ( bindMatrixInverse * boneMatY ) * skinVertex * skinWeight.y;
skinned += ( bindMatrixInverse * boneMatZ ) * skinVertex * skinWeight.z;
skinned += ( bindMatrixInverse * boneMatW ) * skinVertex * skinWeight.w;
transformed = skinned.xyz;
#endif
ãŸã äžå®å®ã§ããããã£ãšè¯ãèŠããŸã:)ããŠãããã¯ãã®åé¡ã®æèã§äœãæå³ããŸããïŒ
ãŸãããã®ããã¯ãã·ã§ãŒããŒã«ã³ããŒããŠè²Œãä»ããããšã¯ã§ããŸããã ã€ãŸããå¯èœã§ããã1ã€ã®è¡åã®ä¹ç®ã4ã«çœ®ãæããŸãã代ããã«ãaïŒjsåŽã§ãã€ã³ãè¡åã®éè¡åãšéªšè¡åãããŒãžããåäžã®ãŠããã©ãŒã ãšããŠæž¡ãããbïŒããã®ããã ãã«å¥ã®ãŠããã©ãŒã ãäœæããŸããã·ã§ãŒããŒã®äžéšã 次ã«ããã®åé¡ãïŒããçšåºŠïŒè§£æ±ºããã·ã§ãŒããŒã§ã®è¡åä¹ç®ã®æ°ãïŒ1ã€ïŒæžãããŸãã
ããããããŠ
ãç§ãã¡ã¯çãç¡éã®äžçãæãã§ããããããã¯äžå¯èœã ããšåœã£ãŠããããããŒã«ããŸã
圌ããèšãããšããŠããã®ã¯ãèªåã®åŽã§ã©ã€ãã©ãªãä¿®æ£ããªããŠãåé¡ãåé¿ã§ãããšããããšã ãšæããŸãã å¿ èŠã§ã¯ãããŸããããå¯èœã§ãã
@makcããããšãããããŸããã
æ®å¿µãªãããããã¯ããªãæé
ãã§ãã ç§ã¯éææ¥ã«é
éããªããã°ãªããŸããã åé¿çãšããŠPNGã·ãŒã±ã³ã¹ã䜿çšããŸããã
ãããååã«æ·±ããããã°ãããå Žåã çŸå®çãªã¡ãã·ã¥ãµã€ãºã䜿çšããŠã¿ãŠãã ããã
ç¹°ãè¿ãã«ãªããŸããããã®ã©ã©ã¢ãã«ãããèŠããŠããã°é«ã60mãããã§ãã
ãã¡ãããããããçŸå®çãªã¹ã±ãŒã«ã§ãæ©èœããŠãããã©ããã確èªãããã®ã§ãã:)
ããããããŠ...ããªãã¯iOSã®äžã§ããªãã®ãã¹ããããŠããŸããïŒ
ãã®ã¹ã¬ããã§èª¬æãããŠããããã«ãããã¯äž»ã«iOSããã€ã¹ã§çºçããŠããŸãïŒ6ã8ïŒã
ãã¹ã¯ãããã§ã¯ãéåžžã«å€§ããªå€ã ããåé¡ãåŒãèµ·ãããŸãã
å床ãæè¬ããŸã
@OrtOfOnã³ãŒãã®å é ã«ãããè¿œå ããããšã§ã @ makcããããè©Šãããšãã§ããŸãã
THREE.ShaderChunk.skinning_vertex = `
#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += ( bindMatrixInverse * boneMatX ) * skinVertex * skinWeight.x;
skinned += ( bindMatrixInverse * boneMatY ) * skinVertex * skinWeight.y;
skinned += ( bindMatrixInverse * boneMatZ ) * skinVertex * skinWeight.z;
skinned += ( bindMatrixInverse * boneMatW ) * skinVertex * skinWeight.w;
transformed = skinned.xyz;
#endif
`;
THREE.WebGLShaderïŒã·ã§ãŒããŒãã³ã³ãã€ã«ã§ããŸããã§ããã ïŒ/
ã¡ãã£ãšãããªãã ééã£ãåŒçšç¬Šãš1è¡ã®ãã©ãŒãããã«ãªã£ãŠããŸããŸããã ãã®ããã«ã©ã®ããã«ã³ããŒïŒããŒã¹ãããŸããïŒ
ãŸãã奜å¥å¿ãæºãããããã®å¥æãªç»åãèŠãããã«ãã£ãã®ã§ãã ç§ã¯ä»ã®èª°ãããããããããåããšä¿¡ããŠããŸã:)
@makc CTRL + C / CTRL + V ...ãããã...ïŒ/
æ®å¿µãªããããã°ã¯ä»¥åã»ã©åŒ·åã§ã¯ãããŸãããããŸã ãããŸã:(
iOSã§ãã¹ãæžã¿ïŒããããé©çšãããŠããŸãïŒïŒ
ã¹ã±ãŒã«1.0ã®ã¡ãã·ã¥ïŒæ£ç¢ºã«ã¯é«ãçŽ20mã®ã¢ãã¿ãŒïŒãäœçœ®z = 10000
http://cornflex.org/webgl/skin-patch1.mp4
ã¹ã±ãŒã«0.1ã®ã¡ãã·ã¥ïŒé«ãçŽ2mã®ã¢ãã¿ãŒïŒãäœçœ®z = 3000
http://cornflex.org/webgl/skin-patch2.mp4
@mrdoobåçŸããŠã¿ãŸã:)äžè¡ã§ç»å ŽããŸããã ããªãã®è¿äºãé£ã³åºãã®ãèŠããšããç§ã¯ããŒãžã«æžããŠããŸããããããŠããã¯ãããæ£åžžã«èŠããããã«èŠããŸããã§ãããç§ã¯çŽæããŸãïŒp ...ç§ã¯ãããã®ããŒãã¹ãã€ã³ããåŸãã§ããããããªãã¯èŠãã§ããã:)
ç·šéïŒãšããã§ãããªãã¯ããªãã®æçš¿ãç·šéããŸãããïŒ :)
æ®ãã®å¹æã¯ã¹ããã³ã°ãšã¯ç¡é¢ä¿ã§ãå®éã«ã¯ãã¹ãŠã«åœ±é¿ãäžããå¯èœæ§ããããšæããŸãããã¢ãã¡ãŒã·ã§ã³ããªãããæ°ã¥ããŸããã
@OrtOfOnã代ããã«ãã·ãŒã³å šäœïŒã«ã¡ã©ã䜿çšïŒãè¿œå ã®Object3Dã§ã©ãããããã®ãªããžã§ã¯ã座æšããã¬ãŒã ããšã«-1 *ã¢ãã¿ãŒåº§æšã«èšå®ããããšããŸãã ããã«ãããããã¯æ°žä¹ ã«0,0,0ã®äžç座æšã«ä¿ãããŸãã
@markcç§ã¯æ¬åœã«ãã®ããã«ããŸããã®ã¯å¥œãã§ã¯ãããŸããã ã²ãŒã ãã¬ã€ãšã·ãŒã³ã¯ãã®ããã«æ·åãããããã«ã¯èšèšãããŠããããã¢ãã€ã«ãã¡ãŒã¹ãã²ãŒã ãšããŠãããã©ãŒãã³ã¹ã¯ãã¡ããæé©ã§ãªããã°ãªããŸããã
ãŸã...ç§ã®å Žåã§ã¯ãããŸããããSkinnedMeshã®ããã€ãã®æµãã©ãããã§ããã£ãŠãããšæ³åããŠã¿ãŠãã ãã...
ç· ãåãããããSkinnedMeshãã¹ãã©ã€ãã·ãŒãã¢ãã¡ãŒã·ã§ã³ã«çœ®ãæãããããéžæã®äœå°ã¯ãããŸããã§ããïŒã¯ã©ã€ã¢ã³ãã¯OKã§ãïŒã ããã§ãªããã°ãç§ã¯ãã®ãããªäœãã«ééããããšãé€ããŠã¯ããŸããã§ããã ç§ã¯ã»ãšãã©ãã¹ãŠã®Webãããžã§ã¯ãã§ThreeJSã䜿çšããŠãããéåžžã«æºè¶³ããŠããŸãã
ãç¡éã®äžçãã¯å¿ èŠãããŸããããæåãªãšã³ãžã³ã®ããã«ããããã®åªããSkinnedMeshãšã¢ãã¡ãŒã·ã§ã³æ©èœãäžç空éã®åº§æšã§äœ¿çšã§ããããã«ããããšèããŠããŸã:)
ç§ã¯ããæå³ã§å°ããã£ããããŠããŸã...ã¯ãã¹ãã§ãŒãæ©èœã«åºã¥ããŠã¡ã«ãã ããã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãéåžžã«ã¯ãŒã«ãªã¢ãã¡ãŒã¿ãŒã¹ã¯ãªãããäœæããã®ã§...次ã®ãããžã§ã¯ãã®ããã«ç¢ºãã«ïŒ/
@markcç§ã¯æ¬åœã«ãã®ããã«ããŸããã®ã¯å¥œãã§ã¯ãããŸããã
ç§ã¯ãããäžæ£è¡çºã ãšã¯ãŸã£ããæããªãã ãããããã¹ãŠã®ã¹ããŒã¹ã·ãã¥ã¬ãŒã·ã§ã³ã®ä»çµã¿ã§ãã å®éããªã¢ã«ã¿ã€ã 3Dã¬ã³ããªã³ã°ã¯åºæ¬çã«ã·ãŒã³å šäœããªãã»ããããŠãããããäžå¿ãã«ã¡ã©ã®äœçœ®ã«ãªããŸãã
@mrdoobãããç§ã¯ã«ã¡ã©ããååšããªãããšãç¥ã£ãŠããŸãã ãããªãã¯ã¹ã®åïŒïŒïŒç§ã¯ããã€ãã®ãã€ãã£ãWebGL / OpenGLéçºãèªåã§è¡ããŸãïŒã
ãšã«ããããã¹ãŠã®ã·ãŒã³ãã²ãŒã ãªããžã§ã¯ãã«å ¥ããããšã¯ãç§ã«ã¯å°ãéè®ãªããã«æããŸã...ç¹ã«ã¹ãã³ã¢ãã¡ãŒã·ã§ã³ãæ©èœãããããã«ã
@OrtOfOnå®éã«ã¯ãã·ãŒã³èªäœã䜿çšã§ããŸãã ããšãã°ãã©ã©ã®äŸã§ã¯ã次ã®ããã«ããŸãã
scene.add(camera);
scene.position.z = -60000;
ãããŠããã¯å€§äžå€«ã§ãïŒç·šéïŒãããããããè¡ããšã©ã€ãã«äœãåé¡ããããŸã.... @ mrdoob ïŒïŒ
@makcããããææ¡ããŠããã ãããããšãããããŸãã
ç§ã¯æ²èŠ³è«è ã«ãªããããããŸãããããã®çš®ã®æäœãè¡ãããšã§åé¡ã«ãªãã®ã¯ç §æã ãã§ã¯ãªããšããããšã§ãã çµæã®äžç¢ºå®æ§ãšãã€ãã©ã€ã³ã®ä»ã®éšåãžã®åœ±é¿ã®ããã«ãç§ããããã®ããªãã¯ãšããŒããšåŒã¶ã®ã¯ãã®ããã§ãã
æ®å¿µãªãããã²ãŒã ãäœæãã人ã ã¯ãç©çåŠãã¬ã€ãã£ã¹ã¿ãŒãããŒãã£ã¯ã«ãªã©ãæã£ãŠããŸã...çŸå®çãªã¹ã±ãŒã«ã§äžç空éã«ããããã«èšèšãããèšèšãããªããã°ãªããªããã®ããããããããŸãã
ãŸããã·ãŒã³ã®äžéšã®å Žæã«é ãããã¹ããŒã³ãããããæµã®ããã«ããããã®ããããè€æ°ã®SkinnedMeshã§åäœããŠããã®ãèŠãã®ã¯éåžžã«èå³ããããŸãã ããã§ã¯ã0,0,0ã§1ã€ã®ã¹ãã³ã¡ãã·ã¥ã¢ãã¿ãŒã«å¶éãããã€ã³ãã¯äœã§ããïŒ
ã§ããã ãæ©ããœãŒã¹ãæ·±ãæãäžããŸããã2æ¥ä»¥å ã«äœããé ä¿¡ããå¿ èŠããããŸã...ãããã£ãŠãç§ã®ã¹ãã©ã€ãã·ãŒãã¢ãã¡ãŒã·ã§ã³ã¯ä»ã®ãšããããŸãããã°ããŸããããŸãã
ããã§ã¯ã0,0,0ã§1ã€ã®ã¹ãã³ã¡ãã·ã¥ã¢ãã¿ãŒã«å¶éãããã€ã³ãã¯äœã§ããïŒ
éèŠãªã®ã¯ãã¹ãã³ã0,0,0ã§ã¬ã³ããªã³ã°ããå¥ã®ã¹ãã³ãz = 60000ã§åæã«ã¬ã³ããªã³ã°ããå¯èœæ§ã¯éåžžã«äœããšããããšã§ãã 0,0,0ã®åšãã®ããã€ãã®ã¹ãã³ã ããç»é¢ã«è¡šç€ºããããã°ãããªã¬ãŒããã®ã«ååãªè·é¢ã§ã¯ãããŸããã
@makcç¹°ãè¿ããŸããããããã¯ãã¹ã¯ãããã§æå¹ã§ãããiOSããã€ã¹ã§ã±ãŒã¹ããã¹ãããŠããŸããããã®å Žåããã°ã¯ãçŸå®çãªã¹ã±ãŒãªã³ã°ãããã¡ãã·ã¥ã§0,0,0ããæ°ã¡ãŒãã«ã®ãšããã«ãã§ã«çŸããŠããŸãã ç§ã¯ããã«ååãªãããªãèŠããŸããã ããã¯ãããšãã°ãz = 100ã§ã®ã¿ãã°ã瀺ããŸãïŒ/
http://cornflex.org/webgl/skin-bug.mp4
ã²ãŒã ã§ã¯åžžã«é«ã20mã®ã¢ãã¿ãŒã䜿çšããŠããŸããïŒ :)
çŠç¹ãåœãŠãæ°å€ïŒ60000ïŒã¯ããã¹ã¯ãããïŒéåžžã«å·šå€§ãªlaraãŸãã¯å·šå€§ãªthreejs fbxãµã³ãã«ïŒã§ãã°ãå
¬éããããã«ã®ã¿äœ¿çšããããããã¢ãã€ã«ã§ã¯äœ¿çšãããŸããã ãããŠãç§ã®ã¢ãã¿ãŒã¯ãã¡ããããã»ã©é ãã«ã¯è¡ããŸãã...
ããã¯iOSã®åé¡ã§ããããšã確èªããŸãã å°ãªããšã第6S / 6S +äžä»£ä»¥æ¥ãiOSã¯floatVertexTexturesã«åé¡ãæ±ããŠããŸãã ç§ãã¡ã䜿çšããŠããä¿®æ£ã¯ãiOSã§ãã®æ©èœãç¡å¹ã«ããããšã§ãã ããã¯ç§ãã¡ã䜿çšã§ãã骚ãå¶éããŸããããšã«ãããã£ãšãã ããªãé»è©±ããµããŒãããããã«ããããå¶éããªããã°ãªããŸããã
iOSããã€ã¹ã¯@ Mugen87ã«ãã£ãŠæçš¿ãããé©åæ§ãã¹ãã«å€±æãããããiOSã§floatVertexTexturesããŸãã¯ããããfloatFragmentTexturesãããã©ã«ãã§ç¡å¹ã«ããããšããå§ãããŸããããã¯ããµããŒãããããã«ã¢ããã¿ã€ãºããæ©èœãæããã«æ£ããå®è£ ããŠããªãããã§ãã
@ daniel-nthããã¯çã«ããªã£ãŠãããšæããŸãã ããã... @ OrtOfOnã¯z = 60Kããã¹ã¯ãããã§åé¡ãåçŸãããšèšã£ãŠããŸãã...ãã¹ã¯ãããã§60Kã§åé¡ã¯ãããŸãããç§ããåçŸãããã«ã¯1e8ã ãã§ååã§ããã ãããã£ãŠããã®åé¡ã¯å®éã«ã¯å°ãªããšã3ã€ã®åå¥ã®åé¡ã§ããå¯èœæ§ããããŸãã
ããã«ã¡ã¯ãã¿ããªã
ãŸãããã®ãã°ã«æ»ã£ãŠããã ãããããšãããããŸãã ç§ã¯ãŸã ãããæãäžããæéãèŠã€ãããŸããã§ãã:(
@ daniel-nthãªããžã§ã¯ãã®ã¹ã±ãŒã«ããã°ã«åœ±é¿ãäžããŠããŸãïŒ
iOSã§ã¯ããã®éåžžã«å·šå€§ãªãLaraããªããžã§ã¯ãïŒheight = 120ãscale = 1ïŒã䜿çšãããšããã°ã¯å®éã«z = 60000ã§çºçããŸãã ãã ããçŸå®çãªãµã€ãºã®ã¡ãã·ã¥ïŒheight = 1.8ãscale = 1ïŒã䜿çšãããšããã§ã«z = 100ã§ã®ã¿è¡šç€ºãããŸãã
skinnedmeshã倧ããã»ã©ããã°ã確èªããããã«ããã«å€æããå¿ èŠããããŸãã
ãã®ã¹ã¬ããã§ãã§ã«ãã¹ãããã³å ±åãããŠããããã«ãiOSã§floatTexturesãç¡å¹ã«ãããšãã¹ããã³ã°ã¯ãŸã£ããçºçããŸããã
ãŸãã骚è¡åã®è¡åã®ä¹ç®ãŸãã¯ä¹ç®ã®ããŒã®é åºãæªããšæãããŸãã
iOSã§ã¯ããã®éåžžã«å·šå€§ãªãLaraããªããžã§ã¯ãïŒheight = 120ãscale = 1ïŒã䜿çšãããšããã°ã¯z = 60000ã«è¡šç€ºãããŸãã
@OrtOfOnåŸ ã£ãŠã
çŠç¹ãåœãŠãæ°å€ïŒ60000ïŒã¯ããã¹ã¯ãããã§ãã°ãå ¬éããããã«ã®ã¿äœ¿çšãããŸãïŒéåžžã«å·šå€§ãªlaraãŸãã¯å·šå€§ãªthreejs fbxãµã³ãã«ã䜿çšïŒ...ã¢ãã€ã«ã§ã¯äœ¿çšãããŸããã
iOSã§ã¯ããã®éåžžã«å·šå€§ãªãLaraããªããžã§ã¯ãïŒheight = 120ãscale = 1ïŒã䜿çšãããšããã°ã¯å®éã«z = 60000ã§çºçããŸãã
ããã»ã©å€§ããã¯ãããŸããã
ãããŠãããªãã¯ãŸã ã¢ãã«ãµã€ãºãšäžçèŠæš¡ã®é¢ä¿ãç解ãââãŠããŸããã
æåŸã«ïŒ
http://necromanthus.com/Test/html5/Lara_1000000.html
ã¢ãã«ã®é«ãã¯çŽ= 75ãã¯ãŒã«ãã¹ã±ãŒã«ã¯9,999,999ã§ãã
Z = 0ããZ = 1,000,000ãŸã§ïŒ100äž!!!ïŒ
å粟床浮åå°æ°ç¹ã®æ¡æ°ã¯7ã§ãããããå°æ°ç¹ã¯ãŸã£ããæ®ã£ãŠããŸãã!!!
ããã¯ç§ãæã£ãŠãããã¹ãŠã®ã©ããããããšãã¹ã¯ãããã§å®ç§ã«åäœããŸãã
ããã«ïŒ
Android 6ïŒ7ããã³ããŸããŸãªSamsungæºåž¯é»è©±ã§å®ç§ã«åäœããŸãã
ããªãã®äŸã§ã¯@RemusMar ããããã³ã³ãœãŒã«ã«å ¥åããŠãã ããïŒ
camera.position.z += 1e8;
scene.children[2].position.z += 1e8;
次ã®ãããªãã®ã衚瀺ãããŸãã
ããªãããŒã§ã
z = 1e6ãæªãã¯ãªãããšããäŒãããŸãã 1e7ãããã¯ãã§ã«ç®ç«ã¡ã1e8ã¯ãã ã¯ã¬ã€ãžãŒã§ã
@ OrtOfOncapabilities.floatVertexTexturesãfalseã«èšå®ãããšãiOSã§æ©èœããŸãã ããªãã®ã¢ãã«ã¯ããŠããã©ãŒã ã«ãã£ããããããã«å€ãã®éªšã䜿çšããŠãããšæããŸãã
z = 1e6ãæªãã¯ãªãããšããäŒãããŸãã 1e7ãããã¯ãã§ã«ç®ç«ã¡ã1e8ã¯ãã ã¯ã¬ã€ãžãŒã§ã
ç§ã¯ç¥ã£ãŠããŸããããããã®å€ã«ã€ããŠã¯ããªãã¯æ£ç¢ºã§ã¯ãããŸããã
ã¹ãã³ã¡ãã·ã¥ã®é ç¹ã®éã¿ã®ç²ŸåºŠã®å Žåãæ倧ã¯ãŒã«ããµã€ãºã¯9.999.999ã§ãã
ããã¯ãæ倧è·é¢ãæ°çŸäžã«éããããšãæå³ããŸãã
也æ¯
@makc確ãã«ããã¹ã¯ãããã®çªå·ãééã£ãŠããŸããã ããã¯éåžžã«å·šå€§ã§ãªããã°ãªããŸãããããªãã¯æ£ããã§ãããããŠç§ã¯å®éã«åã®ã¹ã¬ããã§èšåããŸããïŒ/ https://github.com/mrdoob/three.js/issues/13288#issuecomment -364650679
@ daniel-nthç¥ã£ãŠãããšè¯ãã®ã§ãããããããã§ããïŒ ãããããã®ã¹ã¬ããã§ãthreejsãœãŒã¹ããã®3Dã¢ãã«ã䜿çšããŠè¡ã£ããã¹ãã§ãã ããªãã¯ãŸã ã³ãŒããèŠãããšãã§ããŸãã @ Mugen87ãåããã£ãŒãããã¯ãè¡ããŸãããããã®ã¢ãã«ã§ã¯ã¢ãã¡ãŒã·ã§ã³ã¯ãããŸããã https://github.com/mrdoob/three.js/issues/13288#issuecomment -364572653
ãããã¢ãã«ã¯ããååšããªãããã§ãã https://threejs.org/examples/models/fbx/xsi_man_skinning.fbxã®404
@ daniel-nth骚ã®å°ãªãæ°ããã¢ãã«ã䜿çšããŠããå Žåã¯ãç§ã¯ããªããä¿¡ããŠããŸã;ïŒ
@RemusMarææ°ã®æçš¿ã§åŒãèµ·ããããè·é¢ã«ã€ããŠãããªãåæããŸããã æ°å€ïŒ1e6ã1e8ã1e9ã...ïŒã¯ç¢ºãã«ç²ŸåºŠãæªããªããŸãã ããã«ã€ããŠã¯çãããªãã ããããç§ãèããããã®ããããŠãã ããã äœãããããªããµãããããŠãé«ã120ã®ã¢ãã¿ãŒã¡ãã·ã¥ã倧ãããªããã©ããèªåããŠã¿ãŠãã ããã ç§ã«ãšã£ãŠãããã¯éåžžã«å·šå€§ã§ãã¢ãŒãã£ã¹ããã¬ã€ãã£ã¹ããç©çåŠãç §æãªã©ã«ãã£ãŠäœæãããä»ã®çŸå®çãªã¹ã±ãŒãªã³ã°ããããªããžã§ã¯ãã䜿çšããgamedevã§ã¯ããŸã䜿çšã§ããã3é±éã§é ä¿¡ãããŸãã
ç§ã䞻匵ããŠããã®ã¯ãè³ç£ãã¡ãŒãã«åäœã§çŸå®çãªã¹ã±ãŒã«ã«ä¿ã€ããšã¯ãç©çããŒã¹ã®ã²ãŒã ãæ£ããæ§ç¯ããããã«å¿ é ã®ããšã§ã:)
æ®å¿µãªãããiOSã§ã¯ããããã®çŸå®çãªã¹ã±ãŒã«æ¡ä»¶ã§ã¯100mãè¶ ããŠã¢ãã¿ãŒãå®è¡ã§ããŸããïŒ/
æŽæ°ïŒãšã«ããã@ daniel-nthã¯ãfloatTexturesããªãã«ããŠãããŒã³æ°ãéåžžã«éãããŠããããšã瀺ããŠããããã§ãã
ããããç§ãèããããã®ããããŠãã ãã
ç§ã䞻匵ããŠããã®ã¯ãè³ç£ãã¡ãŒãã«åäœã§çŸå®çãªã¹ã±ãŒã«ã«ä¿ã€ããšã¯ãç©çããŒã¹ã®ã²ãŒã ãæ£ããæ§ç¯ããããã«å¿ é ã®ããšã§ã:)
ç§ã¯ããªããèãããŠããŸããã
ãããã1.5åäœã¯1.5ã¡ãŒãã«ãæå³ãããã®ã§ã¯ãããŸãã
也æ¯
@OrtOfOn
ç§ã䞻匵ããŠããã®ã¯ãè³ç£ãã¡ãŒãã«åäœã§çŸå®çãªã¹ã±ãŒã«ã«ä¿ã€ããšã¯ãç©çããŒã¹ã®ã²ãŒã ãæ£ããæ§ç¯ããããã«å¿ é ã®ããšã§ã:)
ãããããã®ã¹ã±ãŒã«ã¯ä»»æã®èªäž»çãªå€ã§ãã ã»ã³ãã¡ãŒãã«ã䜿çšããããšãã§ããŸããããé«ã120ã®ã¢ãã¿ãŒã¡ãã·ã¥ãã¯å®éã«ã¯å¹³åãããå°ãããªã£ãŠããŸãã
@makcãã¡ããã§ãããç©çãšã³ãžã³/ã©ã€ãã©ãªã¯ã¡ããªãã¯å€ã䜿çšããããšãæ³å®ããŠããŸãã ã¹ã±ãŒãªã³ã°ããããªããžã§ã¯ããŸãã¯éã¡ãŒãã«å€ã䜿çšããŠããã§ã«ããã€ãã®ç©çæŒç®ãå®è¡ããããšããŸãããïŒ éçºã¯ããã«ã²ã©ããªããäºæããªãéçŸå®çãªçµæãåŸãããŸãã ããªãã®ãã¹ãŠã®åãèŠçŽãããæ¡å€§çž®å°ãããªããã°ãªããŸããã åäœããŸãããæ£ç¢ºã§ã¯ãããŸããã
ãã¡ãããéæããå¿ èŠã®ãã粟床ã®ã¬ãã«ã«ãã£ãŠç°ãªãã1e6ã1e7ã...ã®ãããªå€ã¯å€§ããããŠã粟床ã®åé¡ãçºçããŸãã ãŸããã¹ãã³ã¡ãã·ã¥ãããã»ã©é ããŸã§ç§»åããå¿ èŠã¯ãããŸããã ç§ãã¡ã¯ããã«ã€ããŠåæããŸããã ãã ããiOSã§ã¯ãå°ãªããšãæ°çŸãŠãããã®ç¯å²ã§gpuã¹ãã³ã¡ãã·ã¥ïŒé«ã1.5ãŠãããïŒã移åã§ããã¯ãã§ãã
ãã ããç©çãšã³ãžã³/ã©ã€ãã©ãªã§ã¯ãã¡ããªãã¯å€ã䜿çšããå¿ èŠããããŸãã
ããã¯çå®ã§ã¯ãªãã
ã¡ãŒãã«ãã»ã³ãã¡ãŒãã«ãã€ã³ããªã©ã¯é¢ä¿ãããŸããã
åã«ïŒæ°åïŒèšã£ãããã«ãéèŠãªã®ã¯äžçã®ãµã€ãºïŒã¹ã±ãŒã«ïŒãšç²ŸåºŠã ãã§ãã
次ã®ç¹ã«æ³šæããŠãã ããã
é«ã= 1.5åäœã®ã¹ãã³ã¡ãã·ã¥ãããå Žåãé ç¹ã®éã¿ãããã«ãã£ãŠãå°ãªããšãå°æ°ç¹ä»¥äž2ã3ã䜿çšããããã«åŒ·å¶ãããŸãã
ç©çãšã³ãžã³ïŒååšããå ŽåïŒã®å Žåã蚱容ã§ããçµæãåŸãã«ã¯ãå°æ°ç¹ä»¥äž3ã4æ¡ãå¿
èŠã«ãªãå ŽåããããŸãã
ã°ããŒãã«ç²ŸåºŠã«å°æ°ç¹ä»¥äž4æ¡ãå¿
èŠãªå Žåãæ倧ã¯ãŒã«ããµã€ãºã¯999ã§ãïŒå粟床浮åå°æ°ç¹ã®æ¡æ°ã7ã§ããããïŒã
èšãæããã°ããŸãšããªã¢ãã¡ãŒã·ã§ã³ãšãŸãšããªç©çåŠãå¿
èŠãªå Žåã¯ãæ°çŸã®è·é¢ã䜿çšã§ããŸãã
ä»åã¯å
šäœåãææ¡ããŠããã ããã°å¹žãã§ãã
也æ¯
@RemusMarããã§ãããŸãã iOSããã€ã¹ã§ã±ãŒã¹ããã¹ãããããªãããŸãã¯ãã¹ãããããªãããã§ãã ãããã®ããã€ã¹ã§ã¯ãGPUã¹ãã³ã¡ãã·ã¥ã䜿çšããŠãæ°çŸã®è·é¢ãã䜿çšããããšã¯ã§ããŸããã ã¡ãã·ã¥ã¯ããã«çã£ãŠããŸããŸãã ããããã®ã¹ã¬ããã®ãã€ã³ãã§ãããç§ã¯æåã«ãããå ±åãããã£ãã ãã§ãã 以äžã§ãã
ããã«ããä»ã®äººãç§ã®ç»é¢ãã£ããã£ã«ãã£ãŠå ±åãããŠããããã«ããã¹ãŠã®ææ¡ãšãµã³ãã«ãiOSããã€ã¹ã§æ©èœããªããšããäºå®ãç¥ã£ãŠããã ããã°å¹žãã§ãïŒ/
ãããã®ããã€ã¹ã§ã¯ãGPUã¹ãã³ã¡ãã·ã¥ã䜿çšããŠãæ°çŸã®è·é¢ãã䜿çšããããšã¯ã§ããŸããã
ããªãã¯ãŸãééã£ãŠããŸãã
äžã®ã¹ã¯ãªãŒã³ã·ã§ãããåç
§ããŠãã ããïŒAndroid 7-Samsungæºåž¯é»è©±ïŒã
ã¢ãã«ã®é«ã= 75ïŒããŠã³ãã£ã³ã°çã®ååŸçŽ38ïŒããã³è·é¢1,000,000ïŒ100äž!!!ïŒ
ãŸãã¯ãã¢ãã«ã®é«ã= 1.5ããã³è·é¢20,000ã
ps
iOSãåžžã«ãã°ã®éãŸãã§ãã£ãããšã¯ç§ã®åé¡ã§ã¯ãããŸããã
@RemusMarç§ã¯ééã£ãŠããŸãããããªãã¯
ããªããAppleããããªã«å«ããªããç§ã®ç¢ºçã§ã¯ãªãã ç§ã®ã¯ã©ã€ã¢ã³ãã®1人ãThreeJSã§3DWebããŒã¹ã®ã²ãŒã ããããããšæã£ãŠãããšããç§ã¯åœŒã«ãããªãã®iPhoneã§ããªãããã¡ãã¯ããããšã¯èšããŸãã...ããªãããããããªããããããªããã
ããã§éä¿¡ã®çµãã...ç§ã¯ããããã«åŸãããšãã§ããŸããã
@OrtOfOnã¯ãã䜿çšããã¢ãã«ã«ã¯19åã®ããŒã³ãããã
https://github.com/mrdoob/three.js/issues/13288#issuecomment -364550036ã«ã¯ãåäžãªéªšã®å¶éã瀺ãããŒãžãžã®ãªã³ã¯ããããŸããã ããŒãžã䜿çšããåŒã¯Math.floor((data.webgl.params.MAX_VERTEX_UNIFORM_VECTORS - 20) / 4);
ã§ããthree.jsã§100ïŒ
æ£ç¢ºãã©ããã¯ããããŸããããiPhone Xã§ã27ãšå ±åãããŸããããã¯ãæ®å¿µãªããGalaxy S3ã®ååæªæºã§ãããã¢ãã€ã«WebGLã²ãŒã ã ç§ã¯ããã«èªåã®äœæ¥ãã©ã«ããŒã調ã¹ãŸãããã26ã®WebGLãããžã§ã¯ãã§ã¯ã1ã€ã ããããå€ãã®ããŒã³ãæã€ã¢ãã«ãæã£ãŠããããã®ã¢ãã«ã¯0,0,0ã®ãŸãŸã§ãã
@OrtOfOn ïŒåºå®ã·ãŒã³ã§åæ§ã®åé¡ãçºçããã¹ãã³ããããã£ã©ã¯ã¿ãŒãã·ãŒã³å ã§ç§»åããŸãã ãã£ã©ã¯ã¿ãŒã¯iOSã§ã²ã©ãæºããŸãã 骚ã®æ°ã¯22ã§ããã·ãŒã³ã®å¯žæ³ã¯åŠ¥åœã§ãã åé¡ã¯ãé ç¹ãã¯ã¹ãã£ã䜿çšãããš32ãããã®ãããŒãã«å¶éãããããšãšãThreejsãã¯ãŒã«ãã¹ããŒã¹ã§ã¹ããã³ã°ãèšç®ãããšããäžèšã®ã¢ãµãŒã·ã§ã³ãšçžãŸã£ãŠãåé¡ããããšæããŸãã
ç§ã¯çŸåšãã¯ãŒã«ãã¹ããŒã¹ã¢ãµãŒã·ã§ã³ã調ã¹ãŠããŸããããŸãããã°ãããŒã«ã«ã¹ããŒã¹ã®é ç¹äœçœ®ãèšç®ãããªããžã§ã¯ããå€æããé©åãªæ¹æ³ãå®è£ ããäºå®ã§ãã ã¹ããã³ã°ã䜿çšããŠãªããžã§ã¯ããã¯ãŒã«ã空éã«é 眮ãã人ã®ããšã¯èããããšããªãã®ã§ãå®è£ è ããªããã®ãããªããšãããã®ãããããŸããã
解決çãèŠã€ãã£ããæçš¿ããŸãã
ãã fyiãiosã®floatãã¯ã¹ãã£ã¯é ç¹ã·ã§ãŒããŒã§å£ããŠããã ãã§ã¯ãããŸããã ç§ã¯æè¿ããããŒããã¯ã¹ãã£ãæŽæ°ãã¯ã¹ãã£ã«å€æŽããŠiOSã®ã«ã©ãŒãã³ãã£ã³ã°ãä¿®æ£ããŠããã®ã§ãããã¯iOSã®æ®éçãªåé¡ã§ãã æ¬åœã«å¿ èŠãªå Žåã¯ãæŽæ°ãã¯ã¹ãã£ã䜿çšããŠiosã®ããŒã³ãä¿®æ£ããããšãã§ããŸããããã¯ãä»ã®èª°ãã®ã·ã§ãŒããŒããã®é¢é£ã¹ããããã§ãã
vec2 encodeFloatRG( float v )
{
vec2 kEncodeMul = vec2(1.0, 255.0);
float kEncodeBit = 1.0/255.0;
vec2 enc = kEncodeMul * v;
enc = fract (enc);
enc.x -= enc.y * kEncodeBit;
return enc;
}
float decodeRGFloat( vec2 enc )
{
vec2 kDecodeDot = vec2(1.0, 1.0/255.0);
return dot( enc, kDecodeDot );
}
...å®éãios粟床ãã°ããŒãã«ç²ŸåºŠå¶éãšããŠåãå ¥ãã1ã€ã§ã¯ãªã2ã€ã®floatããã¯ã¹ãã£ã«æ ŒçŽããã°ãããããïŒããã§ã¯ããã®ãããªããšãå®éã«ã¯è©ŠããŠããŸããã§ãããïŒãããŒãããŒã³ãã¯ã¹ãã£ãæ©èœãããããšãã§ããŸãã
ç§ã¯ãthreejsã«ããŒã«ã«ç©ºéïŒãããå±ããå ŽæïŒã§ã¹ããã³ã°èšç®ãå®è¡ãããã¢ãã«ãäžç空éãããªãã¯ã¹ãä»ããŠæšæºçãªæ¹æ³ã§å®äžçã®åº§æšã«å€æããããšã§ããã®åé¡ãå®å šã«è§£æ±ºããŸããã
äžèšã®åé¡ã¯ãiOSã§ã®ã¹ããã³ã°ã§å®å šã«ä¿®æ£ãããŠããŸãã ãŸãããã®ãœãªã¥ãŒã·ã§ã³ã¯æ®éçã§ããããã¹ãããAndroidããã€ã¹ã ãã§ãªããã¹ãŠã®ãã¹ã¯ããããã©ãŠã¶ãŒã§ãåé¡ãªãæ©èœããããšãææããŠããå¿ èŠããããŸãã ã»ãšãã©ãã¹ãŠã®å ŽåãIMHOããŒã«ã«ã¹ããŒã¹ã¹ããã³ã°ãæ£ããæ¹æ³ã§ããããã®æ¹æ³ãThreeJSã®ããã©ã«ãã§ããå¿ èŠããããŸãã @mrdoob ïŒããã«ã€ããŠã©ãæããŸããïŒ
mesh = new THREE.SkinnedMesh(geo.geometry, mat);
mesh.bindMode = 'detached';
var skel = new THREE.Skeleton(bones, boneInvs);
var bsm = new THREE.Matrix4().fromArray(geoPrims.bsm);
mesh.bind(skel, bsm);
// make bsmInv identity for models that have multiple skins
mesh.bindMatrixInverse = new THREE.Matrix4();
// patch SkinnedMesh's updateMtxWorld:
// we're using local skinning, so don't keep resetting binMatrixInverse (leave identity)
// the reason we're using .bind here is for models that have more than one skin
mesh.updateMatrixWorld = PatchSkinnedMeshUpdateMW.bind(mesh);
// re-normalize since input data has been compressed
mesh.normalizeSkinWeights();
// remove bone roots and add to bone root list
for (var bi = 0, bl = bones.length ; bi < bl ; bi++) {
if (bones[bi].parent && !bones[bi].parent.isBone) {
bones[bi].parent.remove(bones[bi]);
boneRoots.push(bones[bi]);
}
}
'boneRoots'ãã«ãŒãã·ãŒã³ãªããžã§ã¯ãã«è¿œå ããå¿ èŠãããå ŽæïŒãããã£ãŠããããªãã¯ã¹ã®æŽæ°ãååŸããŸãããå®éã®ã¹ãã³ã¡ãã·ã¥ã«è³ããŸã§ã®éå±€å ã®ãã¹ãŠã®ãããªãã¯ã¹ãç¶æ¿ããŸããïŒã ãããã®boneRootsãã·ãŒã³ã«ãŒãã«è¿œå ããŸãïŒã³ãŒãã¯è¡šç€ºãããŠããŸããïŒã
ãããŠããããthreeJSã®SkinnedMeshå®è£ ã眮ãæãããããã§ãïŒthreejsã®updatematrixworldã¯ãIDãšããŠä¿æãããbindMatrixInverseãèŠãé ãããããããå¿ èŠãªã ãã§ãïŒã ãŸãã¯ããããé¢æ°ã䜿çšãã代ããã«ãTHREE.Mesh..prototype.UpdateMatrixWorldã«çŽæ¥ãã€ã³ãããããšãã§ããŸãã
function PatchSkinnedMeshUpdateMW( force ) {
THREE.Mesh.prototype.updateMatrixWorld.call( this, force );
}
@ denbo-ftããã¯ç§ã«ã¯ããã§ããã ãã®ããã®PRãäœæããŸããïŒ
@ denbo-ftãç²ãæ§ã§ããã è¿ä¿¡ãé ããªã£ãŠãã¿ãŸãããç§ã¯ãããã®ã¹ã¬ããããã©ããŒããŠããŸããã§ããã
ç§ãã¡ã®è£œåã«ããã®åé¡ããããŸã-ã©ã®ãã©ãŠã¶ïŒ0,0,0ããååã«é¢ããŠããå ŽåïŒã§ãããiOSã§ã¯çŽ2ã3ãŠãããé¢ãããšããã«çºçããããããé¡èã«ãªããŸãã ç§ãã¡ã«ãšã£ãŠéèŠã§ãããå°ãªããšããããèŠããšå€§ç¬ãããŸã
ããããŸããããããå¿ èŠãšãã人ããã£ãšããããã§ãã ç§ã¯githubãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«è²¢ç®ããããšã¯ãããŸããããgitã«ç²ŸéããŠãããPRãäœæããããšããŠããŸãã :)
ãã£ã¡ãäžç·ã ç§ã®SkinnedMeshã¯ãiPhoneã®ããã»ã©ãã¹ãã§ããã«ããå士ã®ãšããœãŒãã®ããã«èŠããŸãã
åèãŸã§ã«ã5æ21æ¥ã®ç§ã®æçš¿ã«ã¯å®å šãªè§£æ±ºçããããŸãã ThreeJSãœãŒã¹ã®ä¿®æ£ã¯ããã»ã©å€ããããŸãããä¿®æ£ã®ã»ãšãã©ã¯ãåã ã®ãããžã§ã¯ãã®ããŒããŒãã·ãŒã³ã»ããã¢ããã³ãŒãã«å«ãŸããŠããŸãã
åºæ¬çãªä¿®æ£ã¯ãã¢ãŒãããã¿ãããïŒææžåãããŠããªãããšããã§ïŒã䜿çšããããŒã³éå±€ãã«ãŒãã·ãŒã³ã¬ãã«ã§ã·ãŒã³ã«é 眮ããããšã§ã-å®éã®ã¬ã³ããªã³ã°å¯èœãªæåéå±€ã§ã¯é 眮ãããŸããã 次ã«ããšã³ãžã³ãã1ã€ã®ç°¡åãªãã®ïŒSkinnedMesh.updateïŒã«ããããé©çšãããšãæºåãæŽããŸãã
ç·šéïŒ
TJSçšã®å®å
šã«ã«ã¹ã¿ã ã®ãã¡ã€ã«åœ¢åŒãšããŒããŒãããã®ã§ãæ®å¿µãªããããµã³ãã«ãœãªã¥ãŒã·ã§ã³ã§å®å
šãªPRãäœæããã«ã¯ãæäŸãããŠãã猶詰ããŒããŒã®1ã€ïŒColladaãªã©ïŒãä¿®æ£ããå¿
èŠããããŸãã ç§ã¯ä»ãããè¡ãããšãæ€èšããŸã
ãããã§ãç§ã¯ããªãã®ãœãªã¥ãŒã·ã§ã³ãããäžè¬çãªæ¹æ³ã§ç解ããé©çšããããã«æéãå²ãã€ããã§ããïŒããªãã¯ããªãã®ãããžã§ã¯ãã«å°ãåºæã®ããã§ããïŒã ã³ãŒãã®ã³ã³ããã¹ããããå°ãå ±æã§ããŸããïŒ
ã«ããå士ãããã®ã»ã©ãã¹ã
ç§ã¯å€¢äžã«ãªã£ãŠããããã§ã¯ãããŸããããããŸããŸããã§ãã
ç·šéïŒ
ãã«ãªã¯ãšã¹ããæ£åžžã«äœæããŸãããä»ã«ã§ããããšãããã°ãç¥ãããã ããã
å ã®æçš¿ïŒ
å€æŽãå ããããŒã«ã«ãã©ã³ãããããŸãããå ã«æ»ãããšãã§ããªãããã§ãã github credsãæäŸããŠãã次ã®ãšã©ãŒãçºçããŸãã
https://github.com/mrdoob/three.js.gitã«ããã·ã¥ãã
ãªã¢ãŒãïŒmrdoob /three.js.gitãžã®ã¢ã¯ã»ã¹ãdenbo-ftã«å¯ŸããŠæåŠãããŸããã
èŽåœçïŒã¢ã¯ã»ã¹ã§ããŸãã ' https://github.com/mrdoob/three.js.git/ 'ïŒèŠæ±ãããURLããšã©ãŒãè¿ããŸããïŒ403
ããã¯githubãžã®ç§ã®æåã®è²¢ç®ãªã®ã§ãããã€ãã®ã¢ããã€ã¹ã欲ããã§ãã ããããšãïŒ
åèãŸã§ã«ãPRãmrdoobã§æ©èœããçµ±åãããŠããå Žåããã®å€æŽããµããŒãããæ°ãããã€ã³ãã¢ãŒããããŒã«ã«ãããããŸãã ææžåãããŠããªãããã¿ããããã€ã³ãã¢ãŒãã«ããããé©çšãããå€æŽãããããããããŸããã§ããã誰ããäœã䜿çšããŠãããããããããç¥ããªãããšãå£ããããªãã£ãããã§ãã ããããããã¯ãã®ç®çã®ããã«æå³ãããã®ãããããªãããã«ç§ã«ã¯æããŸãã
binMode = "local"ã¯ãæŽæ°äžã«bindMatrixInverseãå€æŽããŸãããããã¯ãIDã®ãŸãŸã«ãã代ããã«ãbindMatrixã®éã«ãªã»ãããããdetachedããšã¯ç°ãªããŸãã
ãã®PRã®webgl_loader_collada_skinning.htmlã®äŸãåç §ããŠãã·ãŒã³å ã移åãããã£ã©ã¯ã¿ãŒã«é©åãªããŒã«ã«ã¹ããã³ã°ãååŸããããã«ãã·ãŒã³ã¬ãã«ã§å¿ èŠãªããã€ãã®å€æŽã確èªããŠãã ããã
ãã®ä¿®æ£ããã¹ãããããã«ãã¹ããŒã ãã«ãŒããŒDAEããŒããŒã®ãã¢ã䜿çšãããŸããã ãããã®ãã¹ãã§ã¯ããã£ã©ã¯ã¿ãŒã¯åç¹ãã2000ãŠãããé¢ããå Žæã«ç§»åãããŸããã 以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã
以äžã®ã·ã§ããã¯iPhoneX / Safari11ããã®ãã®ã§ã
ãã®å€æŽåïŒ2000ã2000ã2000ïŒïŒ
ãã®å€æŽåŸïŒ
ã«ãŒãã·ãŒã³ã¬ãã«ãšïŒ0,0,0ïŒã«ããŒã³ããªããŠãããããå®çŸããæ¹æ³ããããšæããŸããïŒ ããŒã³ã䜿ã£ãŠã¢ãã¿ãŒã«ç©ãä»ãããããã€ã³ããèŠããããããŠããŸãããããŠãç§ã ãã§ã¯ãªããšæããŸãã
2ã€ã®ãªãã·ã§ã³ããããŸãã
1ïŒthreejsã§å®è£ ãããŠããããã«ãããŒã«ã«ã¹ããã³ã°ã®æ©æµãåããããã«ãã«ãŒãã®ã¯ãŒã«ãã¹ããŒã¹ã«ããŒã³ãä¿æããŸãã 次ã«ãããšãã°ãã¢ãã¿ãŒã¹ããŒã¹ã«æŠåšãå ¥ããããã«ãæŠåšãããŒã³ã«ã¢ã¿ããããå¿ èŠãããå Žåã¯ãè¿œå ã®å€æãè¡ããŸãã
2ïŒããŒã³ãã¢ãã¿ãŒã¹ããŒã¹ã«ãã®ãŸãŸæ®ããiOSã§ã¯ãŒãããŸãã
ç§ã¯ééããªãïŒ1ãããŸãã ããŒã³ã®äœçœ®ãšãã£ã©ã¯ã¿ãŒã®äœçœ®ããã§ã«ããå Žåã¯ããã€ã§ãèšç®ãè¡ã£ãŠãã¢ã¿ããå¯èœãªãªããžã§ã¯ããä»»æã®ãã¬ãŒã ã®ã©ãã«ããã¹ãããå€æã§ããŸãã ãã ããã¯ãŒãã¯iOSããã€ã¹ã®HALã¬ãã«ã§ã®ãããã³ã°ã«ãã£ãŠåŒãèµ·ããããããã«å¯ŸããŠã§ããããšã¯äœããªããããïŒ2ã®åé¿çã¯ãããŸããã 確ãã«ãäžèšã®ããŸããŸãªHalfWordãããã³ã°ãªã©ã䜿çšããŠããã¯ãè¿œå ããããšã¯ã§ããŸããããããã¯ãã¹ãŠåé¡ã軜æžãã解決ãããã®ã§ã¯ãããŸããã ããŒã«ã«ç©ºéã§ã¹ããã³ã°ãè¡ããšãiosã®ã¹ããã³ã°ã®åé¡ã¯å®å šã«è§£æ¶ãããŸãïŒããå ·äœçã«ã¯ãããŒã³ãäžçã®åç¹ãäžå¿ã«ä¿ã¡ãæ°å€ãã§ããã ãå°ããããŸãïŒã 次ã«ãæ·»ä»ãã¡ã€ã«çšã®æåã¹ããŒã¹ã«xformããŸãã
ãã詳ããæ å ±ïŒ
TJSã§ã®å®è£ æ¹æ³ã®åé¡ã¯ãç¹ã«TJSã§ã¯ãããŸããããã·ã§ãŒããŒããã°ã©ã ããšã®ãŠããã©ãŒã ã®æ°ã«äžéãããããšã«ããããŒã³å¶éã®åé¡ã解決ããããã«ãBoneTexturesã䜿çšãããŠããŸãã ããã¯ããªãæšæºçãªè§£æ±ºçã§ãã ãã ããiOSã§ã¯ããã¯ã¹ãã£ã®ãããŒãã32ããããããå°ãããã®ã«éååïŒããã¯/å§çž®ïŒãããŠããŸãã ããã¯ãæ°åã®ãµã€ãº/倧ãããã倧ããããã€ãŸãæ°çŸãè¶ ããå Žåã«ãæåã®ãã«ãããªããŸãã¯ãã®ä»ã®å¥æãªå¹æãåŒãèµ·ãããŸãã
ããããŸãããä»äœãããŸããïŒ ããŠãããªãã®ã²ãŒã ã®ãã¹ãŠã®å€§ããªæ©èœïŒå®éã«ã¯ã²ãŒã ãšã³ãžã³ïŒã¯ãéåžžãå®è·µã®åºæºãå¿ èŠãšããŸãã äŸïŒã¢ãŒãã£ã¹ãã«ããã£ã©ã¯ã¿ãŒã®åç¹ãäžå¿ã«é 眮ããããã«æ瀺ããŸãã ãã£ã©ã¯ã¿ãŒã®ã«ãŒãããŒãã足/å°é¢ã«é 眮ããç¹å®ã®æ¹æ³ã§ããŒã³ãšã¹ãã³ãäœæããŸãã 次ã«ãããã»ã¹ã«ãŒã«ãèªèããŠãããšã¯ã¹ããŒã¿ãŒïŒãŸãã¯TJSã®å Žåã¯ã€ã³ããŒã¿ãŒïŒãšã€ã³ããŒã¿ãŒãäœæããŸãã 次ã«ããã®æ§æãæã€ã¢ã»ãããããŒããããšãã«ããšã³ãžã³ã®æçµæ©èœããµããŒãããŸãã ãããç§ãã¡ãã²ãŒã æ¥çã§ç©äºãè¡ãæ¹æ³ã§ãã
ã²ãŒã ã®ãã¹ãŠã®æ©èœãå®å šã«åŠçããããã«ããããããªãŒãµãªã³ã°æ¹æ³ããããããã¡ã€ã«åœ¢åŒãããã³ããããæ±çšããŒããŒãæåŸ ããããšã¯ã管çäžå¯èœã§äžç¢ºå®ã§ãïŒã²ãŒã éçºã«ãšã£ãŠã¯ã²ã©ãããšã§ãïŒã éäžã§ããã€ãã®æšæºãšããã»ã¹ãå¿ èŠã§ãã
ãã£ã©ã¯ã¿ãŒãã¹ããã³ã°ã䜿çšããŠããŠãæŠåšãªã©ã«ãžãªãã¢ã¿ããããå¿ èŠãããå Žåã¯ããšã³ãžã³ãã¹ããã³ã°ããããã«äœãå¿ èŠããèããŠãããããã䜿çšããŠãã ããã äŸãšããŠããã®ãããªãœãªã¥ãŒã·ã§ã³ã®1ã€ãæäŸããŸããã æ®å¿µãªãããäœããã®çç±ã§ããŒããŒãå€æŽããããªããããPRã¯åãå ¥ããããŸããã§ããã ãšã«ãããç§ãæåºããPRã ãã§ãªããäžèšã®ã¹ã¬ããã§åé¡ãšè§£æ±ºçã説æããããšãé¡ã£ãŠããŸãã
ç§ã¯ãããŸã§ç§ããã§ã«æã£ãŠãã以äžã«æ¬åœã«è²¢ç®ããããšã¯ã§ããŸããã ç§ã¯äœäººãã®äººã ãå©ããããšãé¡ã£ãŠããŸã...
幞éãïŒ
ããŒã«ã«ã¹ããŒã¹ã§ã¹ããã³ã°ãè¡ããšãiOSã®ã¹ããã³ã°ã®åé¡ã¯å®å šã«è§£æ¶ãããŸã
æåããèšã£ãããã«ãããã¯iOSã®å¶éïŒãã°ïŒã®åé¿çã§ããããã®ããã«åŠçèœåã浪費ããå¿
èŠããããŸãã
ããã¯è§£æ±ºçã§ã¯ãããŸããïŒ
å®éã®è§£æ±ºçã¯ãiOSã®æµ®åå°æ°ç¹ç²ŸåºŠãäžããããšã§ãïŒéåžžã®7æ¡ã®å€ã«ïŒã
http://davenewson.com/posts/2013/unity-coordinates-and-scales.html
@ denbo-ftç§ã¯å®éã«ããªãã®PRãå®è£ ããŸããïŒç§ãã¡ã¯ç§ãã¡èªèº«ã®ããŒããŒãæã£ãŠããŸãïŒã®ã§ãããªãã®è²¢ç®ã«æè¬ããŸããããã¯æè¬ãããŸããã ã·ãŒã³ã«è€æ°ã®ã¢ãã¿ãŒããããããããåãåã£ãããã¢ã€ãã ãã€ããã ããçžäºäœçšããããããããå¥ã®ã¢ãããŒããæãã§ããŸãããã¹ã±ã«ãã³ã0,0,0ã®å Žåãå€ãã®ãã®ãå€æŽããå¿ èŠããããŸããã³ãŒããæ°ããåé¡ãçºçãããªã¹ã¯ãªã©ã
ç§ã¯ãã®åé¡ã«ã€ããŠèããããšã«æéãè²»ãããŸããããããè¯ã解決çãæãã€ããŸããã§ããã ïŒãŸã ãã£ãŠããŸãïŒ
@RemusMar
æ¬åœã®è§£æ±ºçã¯ãiOSã§æµ®åå°æ°ç¹ã®ç²ŸåºŠãäžããããšã§ã
誰ããæåã«@grorgãšcoã«ãããã§ãããŒãã£ã³ã°ãã¯ã¹ãã£ãã©ã®ããã«åŠçããã®ããå°ããå¿ èŠããããŸãããã©ãããŠãã®ããã«ãªãã®ã§ããããã ããã¯åãªããã°ã§ã¯ãªããä»ã®åé¡ã«å¯Ÿããã¢ããã«ã®ã解決çãã ãšæããŠããããã§ãã
ããã¯åãªããã°ã§ã¯ãªããä»ã®åé¡ã«å¯Ÿããã¢ããã«ã®ã解決çãã ãšæããŠããŸãã
ããããæ¬åœã§ãã
Firefox Androidã®åé¡ãšåæ§ïŒãã°ãå ±åãããéçºè
ã«ãã£ãŠæ€èšŒãããŸããããéå»5ãæïŒ2ãªãªãŒã¹ïŒã§ã¯ä¿®æ£ãããŠããŸããïŒïŒïŒ
ãããæè¿ã®ãœãããŠã§ã¢éçºã®ä»çµã¿ã§ãã
é©åãªå Žæã§ä¿®æ£ãã代ããã«ããµãŒãããŒãã£ã«åé¿çããããŸãã
æçµçµæïŒãã°ãç¡é§ãªãªãœãŒã¹ããããŒããŠã§ã¢ã®ã³ã¬ã¯ã·ã§ã³!!!
@jfcampos
ããŒã³ã®éå±€ãã«ãŒãã«ä¿æããã¢ãã¿ãŒã®å®éã®äœçœ®ãããªãã¯ã¹ã®martixWorldãæããŠãããŒã³ã®æçµçãªWSäœçœ®ãååŸããé¢æ°ãè¿œå ããããšããå§ãããŸãã ããã¯éåžžã«ã·ã³ãã«ã§ãä¿®æ£åã«æã£ãŠãããã®ãè¿ããŸãã
ãŸãã¯ããã§ãããããå Žåã¯ãå ã®ã¡ãœããïŒãã°ããïŒã«æ»ããããŒã«ã«ãããªãã¯ã¹ãããŒã³ãã¯ã¹ãã£ã«å«ããŠããã¯ã¹ãã£ã®äœ¿çšéã2åã«ããã·ã§ãŒããŒãã©ã°ã¡ã³ããå€æŽããŠãã¹ããã³ã°äžã«gpuã§è¿œå ã®èšç®ãè¡ãããšãã§ããŸãã ã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãã³ãŒãã®èŠ³ç¹ããã¯ãããã¯ãªãŒã³ãã§ããããã¬ãŒã ããšã«GPUã«ã¢ããããŒãããããã¯ã¹ãã£ã®éã2åïŒå Žåã«ãã£ãŠã¯4åïŒã«ãããããäžèšã®ææ¡ãããå¹çãå€§å¹ ã«äœäžããããšã«æ³šæããŠãã ããã ããããç§ãæ°ä»ããŠããªãçç±ãäœã§ãããåŸè ã®æ¹æ³ã§è¡ãæ¹ãæçãªå ŽåããããŸãã
以åã¯è§£æ±ºçããªãã£ããã®ããããã¹ãŠã®ããã€ã¹ãšäºææ§ã®ããããã€ãã®ãªãã·ã§ã³ãããã«ãããŸããããã¯ãã»ãšãã©ã®ãããžã§ã¯ãã«ãšã£ãŠæãããªèŠä»¶ã§ãã
0,0,0ã®ããŒã³ã䜿çšããŠãä»ã®ãã®ã«å¯ŸããŠããã€ãã®è¿œå ã®è¡åèšç®ãå®è¡ããå¿ èŠãããããã§ãã ããããšãïŒ
@ denbo-ftã¯æ£ããã§ãã ããã¯ãã¯ãŒã«ãã¹ããŒã¹ã§ã®ã¹ããã³ã°ã«ãã£ãŠåŒãèµ·ããããthree.jsã®åé¡ã§ãã
åèãŸã§ã«ãããã§world-space-skinningãžã®å€æŽãè¡ãããŸããïŒ https ïŒ
æãåèã«ãªãã³ã¡ã³ã
ãŠãŒã¶ãŒzeoverlordã®ãã®ã»ã¯ã·ã§ã³ã匷調ããããšæããŸãïŒ