æŠčŊãĒã¯ã¨ãšãã¯åéĄãĢéĸéŖããĻããžããīŧ
ãĸã¸ãĨãŧãĢã¨åžæĨãŽéįããĄã¤ãĢãŽã¤ãŗããŧããŽä¸Ąæšããĩããŧããããã¨ã¯ããŠã¤ããŠãĒãŽčĄįįļæ ãč¯åĨŊã§ããã¨æããžãããããĢãããããåš åēãéįēč ã°ãĢãŧãããŠã¤ããŠãĒãĢãĸã¯ãģãšã§ãããããĢãĒããéįēč ã¯åĨŊãŋãŽãšãŋã¤ãĢãäŊŋį¨ã§ãããããĢãĒããžãã
åäēēįãĢã¯ãä¸čŦįãĢãĸã¸ãĨãŧãĢãŽäŊŋį¨ãéŋãããã¨ããĻããžããå¤å ¸įãĒåį´ãĒJSããĄã¤ãĢãĢåĢãžããéįããĄã¤ãĢã§ããããã¸ã§ã¯ããåĨŊãã§ãã ããļãį§ã¯ãã ãŽå¤äēēã§ãããããŦãŧã ã¯ãŧã¯ãä¸åŋ čĻãĢããĒããįŠäēãããŠãã ãæŊ蹥åãããŠãã ãčģčŧĒãåįēæãããããããĒããã°ããĒããããŠãã¯ããã¯ãšåãããŽãæŦåŊãĢåĢãã§ãã ããŦãŧã ã¯ãŧã¯ãĒãã§ãĸã¸ãĨãŧãĢãäŊŋį¨ã§ãããã¨ã¯įĨãŖãĻããžããããĸã¸ãĨãŧãĢã¤ãŗã¯ãĢãŧãã¯åžæĨãŽJSã¤ãŗã¯ãĢãŧããããį´æįã§ã¯ãĒããéįããĄã¤ãĢč¨åŽå ã§ãĸã¸ãĨãŧãĢãäŊŋį¨ãããã¨ããã¨å¤ąæãããã¨ããããããžãã
ES6ãĸã¸ãĨãŧãĢãŽäŊŋį¨ã¯ãããšãĻãŽåąéãĢįæŗįã§ã¯ãããžããããįĸēããĢæčŋããšãčŋŊå ã§ãã į§ã¯ãŠã¤ããŠãĒã¨IMOã大åĨŊããĒãŽã§ãå¤ããŽæ°ããããã°ãŠããŧãĢthreejsãæããĻããžããããã¯ãããã°ãŠããŗã°ãå§ãããŽãĢæéŠã§æēčļŗãŽããæšæŗã§ãã node / npm +ããŦãŧã ã¯ãŧã¯ãšãŋãã¯å ¨äŊãåæãĢãšããŧããĻãŗããããã¨ãĒããåēæŦįãĒãããŠCSS / JS/HTMLãäēēã ãĢæããæšãã¯ãããĢį°Ąåã§ãã éįãŠã¤ããŠãĒã¯ãäŊŋį¨/įč§Ŗãį°Ąåã§ãããã§ãŽåå ĨéåŖãäŊãæãããã¨ãã§ããžãã
æ§åŧįãĢã¯ãčĒįąãĢåãåãæ°ããååäģãéĸæ°ãčŋŊå ãããŽã§ã¯ãĒããčŋŊå æŠčŊã§THREEããĒãŧããŧããŧããããã¨ãåĨŊãŋãžãã ããã¯æãããĢåĨŊãŋã§ããã
å¸æãããŊãĒãĨãŧãˇã§ãŗãčĒŦæããĻãã ãã
ããããããĸã¸ãĨãŧãĢãŽãŋãĢį§ģčĄãããã¨ãæąēåŽãããįįąãĢã¤ããĻããå°ãæ å ąãåžãåžããããĢããŖã¨ããįãããã¨ãã§ããžãããį§ã¯ãããįĒãåēããžãã
ãããĨãĄãŗãã§ã¯ãES6ãĸã¸ãĨãŧãĢãããšãĻãŽįļæŗã§æŠčŊããã¨ã¯éããĒããã¨ãčĒŦæããĻãããããŽãããĒįļæŗã§ã¯ãbrowserify / rollup / webpack/parcelãĒãŠãŽããŗããŠãŧãäŊŋį¨ãããã¨ããå§ãããžãã
į§ãŽč§Ŗæąēįã¯ãčĒåES6ããŗããŠãŧãšã¯ãĒããã§/ examples / jsmãŽãĸã¸ãĨãŧãĢãčĒŋãšãĻã / examples/jsãŽéãĸã¸ãĨãŧãĢããŧã¸ã§ãŗãįæãããã¨ã§ãã ããŽãããĢããĻãéįēč ã¯2ã¤ãŽå ´æã§å¤æ´ãå ãããã¨ãåŋé ããåŋ čĻããĒããĒããåŋ čĻãĢåŋããĻJSéãĸã¸ãĨãŧãĢããŧã¸ã§ãŗã¨ã°ããŧããĢå¤æ°ã¤ãŗããŧããšãŋã¤ãĢãåŧãįļãæĨŊãããã¨ãã§ããžãã
ããŽJSéãĸã¸ãĨãŧãĢããĄã¤ãĢãŽčĒåįæã¯ãããĢããããģãšãŽä¸é¨ã¨ããĻåŽčĄãããã¨ããčĒ°ããæåã§åŽčĄã§ããpackage.jsonãŽãŗããŗããĢãããã¨ãã§ããžãã čĒåįæãé¸æããžããã
ããŽčĒååãäŊæããããããŽãŠã¤ããŠãĒãŽJSéãĸã¸ãĨãŧãĢããŧã¸ã§ãŗãįļæãããã¨ã¯ãį§ãæéãå¯äģã§ããããŽã§ãã ES6ãŽãŋãĢã¸ãŖãŗãããįįąããåãããŽãŽ2ã¤ãŽä¸Ļåããŧã¸ã§ãŗãæåã§æ´æ°ããåŋ čĻããĒããã ãã§ã¯ãĒãå ´åã¯ãããããŽæ¸åŋĩãĢ寞åĻãããããŽäģãŽãŊãĒãĨãŧãˇã§ãŗãĢã¤ããĻãčĒŦæãããã¨æããžãã
æ¤č¨ããäģŖæŋæĄãčĒŦæããĻãã ãã
äģãŽæãããĒčæ Žäēé ã¯ãįŠäēãããŽãžãžãĢããĻãããšãĻãŽãŠã¤ããŠãĒãŽJSãããŗJSMããŧã¸ã§ãŗãįļæãįļãããã¨ã§ãã ãããã¯éæ¨åĨ¨ãĢãĒãŖãĻããã¨ããįē襨ãčæ ŽããĻããžãããããã¯ããããããããĒãã¨æããžãã ãã ããããŽãĢãŧããé¸æããå ´åã¯ãJSãŠã¤ããŠãĒãJSMãŠã¤ããŠãĒãæåã§ææ°ãŽįļæ ãĢäŋã¤ãããĢããč˛Ŧäģģãč˛ ããžãã
čŋŊå ãŽãŗãŗãããšã
ããŽãŠã¤ããŠãĒã¨ããŗãŧããžãã¯åéĄãŽå ąå/č°čĢãŽããããã§č˛ĸįŽããããšãĻãŽäēēãĢ大ããĢæãããĻããžãã
node / npm +ããŦãŧã ã¯ãŧã¯ãšãŋãã¯å ¨äŊãåæãĢãšããŧããĻãŗããããã¨ãĒããåēæŦįãĒãããŠCSS / JS/HTMLãäēēã ãĢæããæšãã¯ãããĢį°Ąåã§ãã éįãŠã¤ããŠãĒã¯ãããã§ãŽåå ĨéåŖãäŊãäŋãĄãžãã
ããŽããã¸ã§ã¯ãã§įļæãããĻããjsãĸã¸ãĨãŧãĢãŽäžãæįĸēãĢãããããĢãããŧããnpmããžãã¯ããĢãããŦãŧã ã¯ãŧã¯ãäŊŋį¨ããåŋ čĻã¯ãããžããã ãããã¯ãå¤ãã°ããŧããĢã¤ãŗããŧãã¨åããããĢãéįãĢæäžãããããĄã¤ãĢã¨ããĻäŊŋį¨ã§ããžãã äŊŋį¨ãããĢã¯es6ã¤ãŗããŧãæ§æãåŋ čĻã§ãããããã¯ææ°ãŽããšãĻãŽããŠãĻãļã§æŠčŊããžãã
ããŽããã¸ã§ã¯ãã§įļæãããĻããjsãĸã¸ãĨãŧãĢãŽäžãæįĸēãĢãããããĢãããŧããnpmããžãã¯ããĢãããŦãŧã ã¯ãŧã¯ãäŊŋį¨ããåŋ čĻã¯ãããžããã ãããã¯ãå¤ãã°ããŧããĢã¤ãŗããŧãã¨åããããĢãéįãĢæäžãããããĄã¤ãĢã¨ããĻäŊŋį¨ã§ããžãã äŊŋį¨ãããĢã¯es6ã¤ãŗããŧãæ§æãåŋ čĻã§ãããããã¯ææ°ãŽããšãĻãŽããŠãĻãļã§æŠčŊããžãã
ãčĒŦæãããã¨ãããããžãīŧ ããã¯įĸēããĢč¯ãįšã§ãīŧ
į§ã¯äŋĄããĻããīŧ
<script type="module">
import { OrbitControls } from 'https://unpkg.com/three@<VERSION>/examples/jsm/controls/OrbitControls.js';
const controls = new OrbitControls();
</script>
````
is perhaps less intuitive and harder to understand for newcomers than:
ãĄããŖã¨åž ãŖãĻãã ãã...ãžã ãããžãīŧ
<script src="path/to/local/build/three.js"></script>
å寞ãĢīŧ
<script type=module src="path/to/local/build/three.module.js"></script>
1ã¤įŽã¯ãčĒ°ããŽhtmlå ãŽold-global-wayãĢåžãŖãĻäŊŋį¨ã§ããéįãšã¯ãĒããã§ã...ããã§ããīŧ ES6ã¸ãŽį§ģčĄåžãĢã§ããĒããĒãŖããã¨ã¯äŊã§ãããīŧ
I don't think it makes sense to import three.module.js
that way. It should be:
<script type="module">
import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.121.1/build/three.module.js';
// app code
</script>
1ã¤įŽã¯ãčĒ°ããŽhtmlå ãŽold-global-wayãĢåžãŖãĻäŊŋį¨ã§ããéįãšã¯ãĒããã§ã...ããã§ããīŧ ES6ã¸ãŽį§ģčĄåžãĢã§ããĒããĒãŖããã¨ã¯äŊã§ãããīŧ
į§ã¯ããĒããæŖããã¨äŋĄããĻããžãã į§ãæŖããįč§ŖããĻããã°ãč¨įģã¯ã /build/three.module.js ããĢå ããĻã /build/three.js ããåĢãããã¨ã§ãã
ãã ããįžå¨ã/ examples / jsãããŠãĢãå ãŽãĻãŧããŖãĒããŖãŽãããããäŊŋį¨ããĻããå ´åããããã¯éæ¨åĨ¨ã§ãããã/ examples/jsmãES6ãĸã¸ãĨãŧãĢããŧã¸ã§ãŗãŽå ´åã¯ãããĢåé¤ããããã¨ãčĻåããžãã ã¤ãžããå¤ãã°ããŧããĢãšãŋã¤ãĢãŽåŽčŖ ãäŊŋį¨ã§ããĒããĒããžãã
į°ĄåãĢã§ãããŽã§ããã°ãããĢããããģãšãŽä¸é¨ã¨ããĻES6ããŗããŠãŧãšã¯ãĒãããäģããĻčĒåįãĢįæãããã¨ã§ã /examples/js
ãåŧãįļããĩããŧããããã¨ã¯įãĢããĒãŖãĻããã¨æããžãã
į§ãæŖããįč§ŖããĻããã°ãč¨įģã¯ã/build/three.module.jsããĢå ããĻã/build/three.jsããåĢãããã¨ã§ãã
ã¯ãã ãã ããããŽãĸãããŧããįãĢããĒãŖãĻããããŠããã¯įåã§ãã examples/js
ãåé¤ãããĻãã three.js
ã¨three.min.js
ãåŧãįļãåŊšįĢã¤ãĻãŧãšãąãŧãšã¯ãããããã§ãã
three.js
ã¨three.min.js
ãåé¤ããã¨ã npm
ãããąãŧã¸ãŽmain
ã¨ãŗããĒãã¤ãŗããå¤æ´ã§ãããããåŽéãĢã¯æįã§ããīŧ19575ãåį
§ããĻãã ããã
į°ĄåãĢã§ãããŽã§ããã°ãããĢããããģãšãŽä¸é¨ã¨ããĻES6ããŗããŠãŧãšã¯ãĒãããäģããĻ/ examples / jsãčĒåįãĢįæãããã¨ãĢããã/ examples/jsãŽãĩããŧããįļįļãããã¨ã¯įãĢããĒãŖãĻããã¨æããžãã
ãĸã¤ããĸã¯ã examples/jsm
ãã¯ãŠãšãĒãŠãŽææ°ãŽJavaScriptč¨čĒæŠčŊãĢį§ģčĄãããã¨ã§ãã examples/js
ã¯å¤ãããŠãĻãļã§ãæŠčŊããã¯ããĒãŽã§ããŗãŧãå¤ææŠčŊãäŊŋį¨ããĻæ°ããīŧäžīŧããĢããæ§æããåŋ
čĻããããžãã ããŽä¸ãéč¤ãããŗãŧãããŧãšīŧ examples/js
ã¨examples/jsm
īŧãäŋæããžãããããã¯į§ãŽčĻč§Ŗã§ã¯æĒããĸãããŧãã§ãã ãĄãŗãããŗãšãããč¤éãĢãĒããžãã
åŋ čĻãĢåŋããĻããĻãŧãļãŧãES6ããES5ã¸ãŽå¤æãčĄãåŋ čĻãããã¨æããžãã ãŗãŧããŽį¸Žå°ãããŽäģãŽããĢãéĸéŖãŽãŋãšã¯ãĢã¤ããĻãåãã§ãã
į§ã¯ããĒããæŖããã¨äŋĄããĻããžãã į§ãæŖããįč§ŖããĻããã°ãč¨įģã¯ã /build/three.module.js ããĢå ããĻã /build/three.js ããåĢãããã¨ã§ãã
į
/examples
ããŠãĢããŧãããŽåĄãã¤ãļããŽåéĄã¯ã$īŧ /build/three.js
ãäŊŋį¨ããå ´åã¯/examples/js
ãŽããĄã¤ãĢãäŊŋį¨ãã /build/three.module.js
ãäŊŋį¨ããå ´åã¯/examples/jsm
ãŽããĄã¤ãĢãäŊŋį¨ããåŋ
čĻããããã¨ã§ãã /build/three.module.js
ãåĨåããŧããĄãŊãããŽä¸č˛Ģæ§ãäŋãĄãžãã
ãĒãã§īŧ ãĸã¸ãĨãŧãĢã¤ãŗããŧããäŊŋį¨ããã¨ããĄã¤ãŗãŽTHREE
ãĒãã¸ã§ã¯ãã¯ããŦãŧãŗãĒjsãĒãã¸ã§ã¯ãTHREE = {}
ã§ã¯ãĒããå°å°ãããīŧæĄåŧĩã§ããĒãīŧå
é¨ããŠãĻââãļãŽãĸã¸ãĨãŧãĢãĒãã¸ã§ã¯ãã§ããããã /examples/js
ãããŽããĄã¤ãĢ$ THREE
ãĒãã¸ã§ã¯ããĢæ°ãããããããŖãæ¸ãčžŧããã¨ããīŧ$ã¯å¤ąæããžãã
ããããŖãĻã import * as THREE from '/build/three.module.js
ã¨THREE.WhateverExample = function() ...
ãæˇˇå¨ããããã¨ã¯ã§ããžãã
čããããæšæŗãŽ1ã¤ã¯ãã¤ãŗããŧããããlibãŽååãTHREE
äģĨå¤ãĢå¤æ´ããäžãæ¸ãčžŧããããŽããŦãŧãŗãĒjs THREE
ã°ããŧããĢãĒãã¸ã§ã¯ããåäŊæãããã¨ã§ã...
ããã¯é常ã
åžæĨãŽJSãĢã¯
ããã¯ã°ããŧããĢãšããŧãšãŽåŊåãæåŗããããŧããããããĄã¤ãĢãĢååãå¤æ´ã§ããĒããããæŦĄãŽãããĒã¨ãŠãŧãįēįããå¯čŊæ§ããããžã...
ä¸æšããĸã¸ãĨãŧãĢãäŊŋį¨ããã¨ããĻãŧãļãŧã¯ã¤ãŗããŧãä¸ãĢååãäģãããã¨ãã§ããįĩæãŽååãé¸æãããŽã¯ãŠã¤ããŠãĒãŽäŊæč
ã§ã¯ãĒããĒããžã...
å īŧ
<script>
// a script you can't modify already use the name THREE
var THREE = document.getElementById('div-nb-3')
</script>
<script type="module">
import * as foo from '/build/three.module.js'
THREE.appendChild( new foo.WebGLRenderer().domElement )
</script>
@ Mugen87ããĒãã¯100īŧ æŖããã§ãã / examples / jsãį ´æŖããå ´åããĸããĒãŗãĸã¸ãĨãŧãĢãŽãããã¨ãæŦčŗĒįãĢäēææ§ããĒãããã three.jsã¨three.min.jsãį ´æŖãããã¨ãã§ããžãã ããããŽãĻãŧãšãąãŧãšã¯ãããã§ãããããã¯æˇˇäšąãåŧãčĩˇãããã¨ããģãŧäŋč¨ŧãããĻããžãã
@devingfxįĸēããĢããĸã¸ãĨãŧãĢãĢã¯åŠįšããããæŊå¨įãĒã°ããŧããĢåãŽįĢļåãæé¤ããžãã éˇåš´ãŽäŊŋį¨ã§ãTHREEã°ããŧããĢå¤æ°ã¨įĢļåãããã¨ã¯ä¸åēĻããããžããã§ãããããã¯ããããããĒããˇããĒãĒã ã¨æããžãããããĒããŽä¸ģåŧĩã¯æčĄįãĢæŖããã§ãã
ããã¯į§ãŽčĻč§Ŗã§ã¯æĒããĸãããŧãã§ãã ãĄãŗãããŗãšãããč¤éãĢãĒããžãã
åŋ čĻãĢåŋããĻããĻãŧãļãŧãES6ããES5ã¸ãŽå¤æãčĄãåŋ čĻãããã¨æããžãã ãŗãŧããŽį¸Žå°ãããŽäģãŽããĢãéĸéŖãŽãŋãšã¯ãĢã¤ããĻãåãã§ãã
@ Mugen87ãĸã¸ãĨãŧãĢãĢå ããĻã°ããŧããĢå¤æ°ãäŊŋį¨ããåžæĨãŽjsã¤ãŗã¯ãĢãŧããįļæãããŽã¯æŦåŊãĢã˛ãŠãã§ããīŧ å¤ããŽãŠã¤ããŠãĒã¯ä¸ĄæšããĩããŧãããĻãããį§ãįĨãéããåžæĨãŽJSããŧã¸ã§ãŗã¯ããĸã¸ãĨãŧãĢããŧã¸ã§ãŗãŽå¯žåŋãããŠã¤ããŠãĒã¨åããããä¸čŦįãĢäŊŋį¨ãããĻããžãã ãŠãĄããĢãéˇæã¨įæããããããŽä¸é¨ã¯åĨŊãŋãĢåŋããĻčĻį´ãããžãã ãĸã¸ãĨãŧãĢäģĨå¤ãŽãŗãŗãããšãã§ãŠã¤ããŠãĒãäŊŋį¨ãããĒããˇã§ãŗãéįēč ãĢæäžãããŽã¯č¯ããããžãããīŧ
three.module.jsã¨/examples/ jsmããthree.min.jsãthree.jsã/ examples / jsãčĒåįãĢįæãããããĢåŋ čĻãĒãŗãŧãå¤ææŠčŊãŽäŊæ/ããšãããåãã§čĄããžãã ããŠãŗãšãã¤ãĢã¯ãŧã¯ãããŧãæ´įˇ´ãããåžã¯ãæå°éãŽãĄãŗãããŗãšãåŋ čĻãĢãĒãå ´åããããžãããīŧ=2ã¤ãŽä¸Ļåããŧã¸ã§ãŗãįļæããžãã ãģã¨ããŠãŽå ´åããŗãŧãã¯ãĸã¸ãĨãŧãĢããĄã¤ãĢã§æ´æ°ããåŋ čĻãããã ãã§ãããããžãĢããããŠãŗãšãã¤ãĢãŽå¤ąæãäŋŽæŖããåŋ čĻããããžãã
åžæĨãŽã°ããŧããĢæ§æãĢäžåããããã¸ã§ã¯ããååãĢããããĸã¸ãĨãŧãĢãŽããŠãŗãšãã¤ãĢãčĒååãããããŽäŊæĨãčĄãäēåŽã§ãã å°ãĒãã¨ããpackage.jsonãĢãŗããŗããåĢããĻããĸã¸ãĨãŧãĢãthree.min.jsãthree.jsããããŗ/ examples/jsãĢå¤æãããlegacy-buildãã¨åŧãļãã¨ãã§ããã¨æããžãããããã¯å ãŽãŗããŗãã¨åæ§ãĢåäŊããžããäģããããĄã¤ãĢã ããããŽããĄã¤ãĢã¯ããĒãã¸ããĒãĢãŗããããããããããŠãĢãã§äŊæãããããåŋ čĻã¯ãããžããã ãžãããŦãŦãˇãŧãĩããŧãį¨ã§ããã¨čĻåãããã¨ãã§ããžãããåäŊãäŋč¨ŧãããĻããããã§ã¯ãããžãããäģŖãããĢãĸã¸ãĨãŧãĢãäŊŋį¨ãããã¨ããå§ãããžã...
įžåŽįãĢã¯ããããããĒãã¸ããĒãĢäŋæããããĢãæãĢããŠãŗãšãã¤ãĢãäģããĻčĒåįãĢįæããæšãįãĢããĒãŖãĻããã¨æããžãã
package.jsonå ãŽãŗããŗãã§ããĸã¸ãĨãŧãĢãįæãããlegacy-buildãã¨åŧãŗãžã
åįįãĒããã§ãã æčŋããããĢã¯åäŊĩããĻããžãããīŧ ã ããããã¯ããŽãžãžã§ã§ãããŽã§ã¯ãĒããã¨æããžã
įˇ¨éīŧæįĸēãĢãããããĢãä¸č¨ãŽããĢããå¸æãããĻãŧãļãŧäģĨå¤ãŽäēēãåŽčĄããæ°ãããŗããŗããč¨ããĒããããĢãã
ãĸã¸ãĨãŧãĢãĢå ããĻã°ããŧããĢå¤æ°ãäŊŋį¨ããåžæĨãŽjsã¤ãŗã¯ãĢãŧããįļæãããŽã¯æŦåŊãĢã˛ãŠãã§ããīŧ
ãããįļæãããã¨ãŽč¤éãã¯éå°čŠäžĄãããĻããã¨æããžãã æŽåŋĩãĒãããããã¸ã§ã¯ãã§ãŽäžãŽč¨åŽæšæŗã¯ãããģãŠåį´ã§ã¯ãĒãã¨æããžãã
äžã¨ããĻGLTFLoaderãčĻãĻãŋãžãããã įžå¨ãããšãĻãŽGLTFLoaderã¯åä¸ãŽããĄã¤ãĢãĢåĢãžããĻãããããHTMLããĄã¤ãĢãŽå é ãĢį°ĄåãĢåĢãããã¨ãã§ããžãã ãĸã¸ãĨãŧãĢãŽåŠįšãŽ1ã¤ã¯ã大ããĒããĄã¤ãĢãŽä¸é¨ãååĨãŽããĄã¤ãĢãĢåå˛ããĻãGLTFLoaderãäžåéĸäŋã¨ããĻã¤ãŗããŧãã§ãããã¨ã§ãã GLTFLoaderã4ã¤ãŽå¤é¨ããĄã¤ãĢãĢäžåããããŽããĄãŽããã¤ããå ąæãããĻããå ´åãããĢããããã°ããŧããĢãšã¯ãĒãããĢã¯ãŠãŽãããĢåĢããåŋ čĻããããžããīŧ ããĢããããã°ããŧããĢãšã¯ãĒãããŽãĻãŧãļãŧã¯ãããããŽãĩãŗããĢjsããĄã¤ãĢãããšãĻååĨãĢåĢããåŋ čĻããããžããīŧ ãžãã¯ãä¸įˇãĢããŗããĢããĻãåéĄããĒããããã§ãĒãããĄã¤ãĢãŽãĒãšããæåã§įļæããåŋ čĻãããããã¤ããŽããĄã¤ãĢãä¸įˇãĢããŗããĢãããžããīŧ
æŦåŊãĢč¨åŽããåŋããããĻãããŽã¯ãããšãĻãŽãĩãŗããĢjsããĄã¤ãĢãåä¸ãŽãĸããĒãˇãã¯blobãĢããŗããĢãããã¨ã ãã ã¨æããžãããããã¯åįįã§ã¯ãĒãã¨æããžãã ããããŽãŊãĒãĨãŧãˇã§ãŗãŽãããããäŊŋį¨ããã¨ãäģãŽãĒãĒãŧãšããããĨãĄãŗããŽãĒãŧããŧããããįēįããã¨æããžãã
ãããããããčĄããããŽããč¯ãæšæŗããããžãããä¸äŊäēææ§ãžãã¯å°ãĒãã¨ãæĸåãŽjsããĄã¤ãĢã¨ãŽä¸č˛Ģããæ§é ãäŋæããããŧãĢãĸããããĢããäŊæãããã¨ããã¨ããĢããããã¯į§ãééããåéĄã§ãã
į§ãæŖããįč§ŖããĻããã°ãč¨įģã¯ã/build/three.module.jsããĢå ããĻã/build/three.jsããåĢãããã¨ã§ãã
ã¯ãã ãã ããããŽãĸãããŧããįãĢããĒãŖãĻããããŠããã¯įåã§ãã
examples / jsãåé¤ãããĻããthree.jsã¨three.min.jsãåŧãįļãåŊšįĢã¤ãĻãŧãšãąãŧãšã¯ãããããã§ãã
@ Mugen87 @mrdoob
ãã¤ãąãĢã
åŽéããthree.min.jsããå°ãĒãã¨ããã¨2åš´éäŋæãããã¨ã¯ãåŋ
é ã§ãã
į§ãŽããšãĻãŽãĩãŗããĢããããĢåēãĨããĻããããã§ã¯ãããžããã
ããããäŊåããŽããĄã¤ãĢã¨ã°ãŧã°ãĢãŽãããããã°ããããĢåēãĨããĻããããã§ãīŧ
äžīŧ https īŧ//www.google.com/searchīŧsource = hpīŧq = webgl + benchmark
ä¸æšãį§ãŽčĻŗįšããã¯ããthree.min.jsãã¯ããčŋ
éãĒéįēã¨ããšããæåŗããžãã
ãĒããŠã¤ãŗã§åäŊããããŧãĢãĢããšãã¯åŋ
čĻãĒããã¨ã¯č¨ããžã§ããããžããã
ããšãĻãŽããĄã¤ãĢããŠãããŽããŠãĢããĢå
ĨããFirefoxãäŊŋį¨ããĻHTMLããĄã¤ãĢããããĢã¯ãĒãã¯ããã ãã§ãã
į§ã¯ãã¤ãéįēãŽãããĢãããæããĻããžããīŧ
ãĒãĢãĢãããããããšãĻãĢã¤ããĻčããåŋ
čĻããããžãã
äšžæ¯
three.js
ã¨three.min.js
ãŽåé¤ã¯ã examples/js
ããĒããĒãŖãã¨ããĢ芹ãåããč¨įģã§ããããŽã§ãã examples/js
ããããĄã¤ãĢãã¤ãŗããŧãã§ããĒããĒãŖãã¨ããĢãããããŽéčĻæ§ãå¤ąããããã¨ãåŧˇčĒŋãããã¨ãéčĻã§ããã
ãããįļæãããã¨ãŽč¤éãã¯éå°čŠäžĄãããĻããã¨æããžãã æŽåŋĩãĒãããããã¸ã§ã¯ãã§ãŽäžãŽč¨åŽæšæŗã¯ãããģãŠåį´ã§ã¯ãĒãã¨æããžãã
į§ã¯ããĒããæãĄåēããã¤ãŗããæŦåŊãĢåĨŊãã§ãã ããŗããĢãĢã¯ãžãŖããäēæããĒãč¤éãããããããšãããããĸã¸ãĨãŧãĢãŽäžã¯č¯ãäžã§ãã ããĒããŽãã¤ãŗãã§ã¯ãããŽæãæĨãããããšãããããĸã¸ãĨãŧãĢãŽããŗããĢããŠãŽãããĢåĻįããããĢã¤ããĻčŗĸæãĒæąēåŽãä¸ããã¨ãã§ããã¨æããžãã ããŗããŠãŧãšã¯ãĒãããč¨åŽãããĻįļæŗãåŋããã¨č¨ãŖãĻãããŽã§ã¯ãĒããåãĢãĄãŗãããŗãšãå°ãĒããĒãã¨ãããã¨ã§ãã
ãĄãŗãããŗãšãéŖããææãæĨãããã¤ã§ãčŊã¨ããžããããžã åéĄããĒããŽã§å¤åŧããããŽã¯ã°ãããĻããã¨æããžãã / examples/jsmã¨examples/jsãŽéãĢ1寞1ãŽããĒããŖãæŽãŖãĻããéãĢãäģããåŽčŖ ãããŽãæãį°Ąåã§ãã / example / jsmãĸã¸ãĨãŧãĢéåą¤ãå¤§åš ãĢåįˇ¨æãããã¨ã¯ãããããĒãã§ãããããããããã¨ã§ãããŗããŠãŧãæŽĩéįãĢæ´æ°ã§ããã¨æããžãã į§ã¯å ãĢé˛ãã§ããããŽãããŽäģäēãŽč¨ŧæãĢåãįĩãŋå§ããžãīŧããã¯ãã§ãĢčŋŊå ãããĻãããŽã§ããããĢã§īŧīŧį§ãŽåŖãåŊŧããč¨ããããĢį§ãŽãéãå Ĩããžãã
MugenãŽææãĢããã°ãããã¯three.js
ã¨three.min.js
$ã¨ãŽéĸéŖæ§ãįļæããĒãããããããįļæãããŽãĢåŊšįĢãĄãžãã ãžãããĸã¸ãĨãŧãĢããŧãšã§ã¯ãĒãTHREEåŽčŖ
ã¨äēææ§ãŽãããĸããããŧããæĸããĻããå¯čŊæ§ãŽããäŊįžããŽãĩã¤ããĢãåŊšįĢã¤å¯čŊæ§ããããžãã ãĸã¸ãĨãŧãĢãäŊŋį¨ãããããŽ3ã¤ãŽããã¸ã§ã¯ããŽãĒããĄã¯ãŋãĒãŗã°ã¯ãčĒåãäŊãããĻãããŽããįĨãŖãĻããå ´åã§ããé常ãĢåēį¯å˛ãĢåãļå¯čŊæ§ããããžãã
äģãŽååč
ãĢã¤ããĻ芹ããã¨ã¯ã§ããžããããããŽãããã¯ãĢã¤ããĻã¯čããå¤ããã¤ããã¯ãããžããã ããã§čĒŦæãããŗããããããããĢã2020åš´ãŽ12æãŽãĒãĒãŧãšã§examples/js
ãåé¤ãããã¨ãĢæįĨ¨ããžãīŧ18749ã
ããã§čĒŦæãããŗããããããããĢã2020åš´ãŽ12æãŽãĒãĒãŧãšã§examples / jsãåé¤ãããã¨ãĢæįĨ¨ããžãīŧ18749ã
äŊãŽåéĄããããžããã
ãthree.min.jsãããããĢæ°åš´éåŠį¨å¯čŊã§ããéã...
įĄéãŽå Ĩåããããã¨ããį§ã¯ããŽãšãŦãããčĒãŋéããžããããããã¯æąēåŽãŽčĒŦæã§ã¯ãĒããããå¤ããŽįē襨ãŽãããĢčĻããžãã į§ãŽæŗåŽã§ã¯ãéįēãŽį°Ąį´ åãããŽæšåãĢé˛ãä¸ģãĒįįąã§ãããäģãĢäŊããããžããīŧ
/ examples / jsãšãŋã¤ãĢãŽã¤ãŗã¯ãĢãŧããįæãããããĢåŽčĄã§ããå¤æãšã¯ãĒããããããã¨ã¯ãããã§ã¯åéĄãĒãåĻĨåįšãĢãĒãã¯ãã§ãã ããã§åŋ čĻãĒãĄãŗãããŗãš/č¤éããŽéãå¤§åš ãĢæ¸ããåŋ čĻããããžãã ãããpackage.jsonå ãŽåãĒããŗããŗãã§ãããčĒåã§åŽčĄããåŋ čĻããããããĄã¤ãĢããããŠãĢãã§įæãããĒããŖãã¨ããĻããį§ã¯å¤§ä¸å¤Ģã§ãã ã¨ãĢããããŠãŗãšãã¤ãĢããåŋ čĻãããéįēč ãäģãŽéįēč ãĢã¨ãŖãĻã¯åŠįšããããžãã ãããããŗãŠããŦãŧãˇã§ãŗãæšåãããããĢãĄã¤ãŗãĒãã¸ããĒãĢäŊããäŋæã§ããå ´åã¯ãããŠãŗãšãã¤ãĢ/ããŗããĢã¯ãŧã¯ãããŧãååĨãĢäŊæããåŋ čĻã¯ãããžããã :)
į§ã¯ããŽãšãŦãããčĒãŋéããžããããæąēåŽãŽčĒŦæã§ã¯ãĒããããå¤ããŽįē襨ãŽãããĢčĻããžãã
æŽåŋĩãĒãããč¨č¨å¤æ´ãŽåŽįžãäŊåš´ãĢããããŖãĻč¤æ°ãŽč°čĢã§ããŖããã¨é˛čĄããããããžãã¯åãĢåãä¸ģéĄãĢéĸããč¤æ°ãŽãšãŦãããäŊåēĻãäŊæãããããīŧããŽãããĢīŧãããšãĻãŽæåšãĒåŧæ°ãåä¸ãŽãšãŦãããĢåēåŽã§ããã¨ã¯éããžããã īŧã å ąåäŊæĨč ã¯ãã¤ãēã¨ãģã°ãĄãŗããŧãˇã§ãŗãæå°éãĢæãããã¨ããžããã常ãĢå¯čŊã§ããã¨ã¯éããžããã
į§ãŽæŗåŽã§ã¯ãéįēãŽį°Ąį´ åãããŽæšåãĢé˛ãä¸ģãĒįįąã§ãããäģãĢäŊããããžããīŧ
į§ãįŽãĢããæ大ãŽããŽã¯ãåéˇãĒãŗãŧããæå°éãĢæããååŠį¨å¯čŊãĒåŽčŖ ãåŽįžãããĩããĸã¸ãĨãŧãĢãäŊŋį¨ãããŗã¤ãŗããŧãããæŠčŊã§ãã
ãã¨ãã°ããģã¨ããŠãŽããŧããŧã¯ãããį¨ŽãŽããŧãŋč§Ŗææ§é /ã¯ãŠãšãäŊæããåŋ
čĻããããžããããã¯ã example/js
ããĄã¤ãĢãååŠį¨ã§ãããããĢãåããŧããŧãčĒįĩĻčĒčļŗã§ããåŋ
čĻãããããã§ãã ãã ããéãĸã¸ãĨãŠãŧåļéãåŽå
¨ãĢåé¤ããã¨ã DataParser
ã¯ãŠãšãŽåä¸ã¤ãŗãšãŋãŗãšãäŊæããããŽæ¨æēåŽčŖ
ãããšãĻãŽããŧããŧãĢã¤ãŗããŧãã§ãããããéįēããããĢį°ĄåãĢãĒããåéˇãŗãŧããåé¤ãããžããããšãĻãŽããŧããŧã
ãããč¯ãįšã§ãã ãŦãŦãˇãŧãŗãŧããåŖããĒããããĢããããã ããĢã Pass
ã¯ãŠãšīŧããšãĻãŽFXããšãŽåēæŦã¯ãŠãšīŧãEffectComposer
ãĢåãčžŧããĒãŠãŽããŧããŖããã¯ããã§ãĢčĄãåŋ
čĻããããžãã
é常ãĢč¯ãįšããããžããã
äēēã ãčģéãĢäšããĻææ°ãŽįļæ ãĢäŋã¤ãã¨ã¯ãīŧãããĻį§čĒčēĢãŽįĩé¨ããīŧéŖããåéĄãŽãããĢčãããžãã ãããĢå°ãčããĻãŋããã¨æããžãã
åŽéããthree.min.jsããå°ãĒãã¨ããã¨2åš´éäŋæãããã¨ã¯ãåŋ é ã§ãã
BabelãäŊŋį¨ããĻES5ããĢããįæãããã¨ã¯å¸¸ãĢå¯čŊã§ãã ãããĢéĸããĻį§ããĄãįããåŋ čĻãããčŗĒåã¯ããããĢ寞ããč˛Ŧäģģãį§ããĄãĢãããŽããthree.jsãäŊŋį¨ããéįēč ãĢãããŽãã¨ãããã¨ã§ãã
ãĩãŗããĢããĄã¤ãĢãŽES5ããŧã¸ã§ãŗãäŊæãããŽã¯éįēč ãŽč˛Ŧäģģã§ããã¨ãã§ãĢæąēåŽããĻãããŽã§ãããĢãããĄã¤ãĢãĢ寞ããĻãåããã¨ãčĄããŽã¯ããããįãĢããĒãŖãĻããžãã į§ãŽčãã§ã¯ããŠã¤ããŠãĒå ¨äŊã§ãããčĄããŽã¯ãééãįŠēãããŽã§ã¯ãĒãã1ã¤ãŽãĒãĒãŧãšã§čĄããŽãįãĢããĒãŖãĻããžãããthree.min.jsãããå°ãéˇãäŋã¤ãã¨ãåéĄãããžããã
ããããäŊåããŽããĄã¤ãĢã¨ã°ãŧã°ãĢãŽãããããã°ããããĢåēãĨããĻããããã§ãīŧ
äžīŧgoogle.com/search?source=hp&q=webgl+benchmark
ããã¯ããŽæ¤į´ĸããį§ãĢåēãĻããããããĩã¤ãã§ãããåŊŧãã¯R53ãäŊŋį¨ããĻãããŽã§ãããŽå¤æ´ãåŊŧããĢãããģãŠæĒåŊąéŋãä¸ããã¨ã¯æããĒãīŧ https ://www.wirple.com/bmark/
ãčĻ§ãŽã¨ãããæ§ããŧã¸ã§ãŗãŽthree.jsã¯åŧãįļãæŖ常ãĢæŠčŊããžãã ãĸã¸ãĨãŧãĢãĢį§ģčĄããåžãES5ããĄã¤ãĢãåé¤ããåãĢãBabelãäŊŋį¨ãããĢES5ããĢããå¸æããããšãĻãŽäēēãĢæåžãŽããŧã¸ã§ãŗãäŊŋį¨ãããããĢæį¤ēã§ããžãã åŊŧãã¯ããŽãĒãĒãŧãšãŽãĒãã¸ããĒå ¨äŊããã§ãã¯ãĸãĻãããããŽããŧã¸ã§ãŗãŽãããĨãĄãŗããäŊŋį¨ã§ããžãã
@looeeeããĒãã¯ããã¤ããŽč¯ãįšãĢč§Ļããžãã ä¸č¨ãŽãããĢãããã§ES5 three.min.js
ã¨three.js
ãåæãĢéæ¨åĨ¨ãĢãããã¨ãįãĢããĒãŖãĻãããã¨ãĢåæããžãã ããããããã¯ããčĒčēĢãŽåĨåãŽč°čĢã§ãããšãã§ããīŧ
ããããĢãããå¤ãåĻæ ĄãŽES5ãšãŋã¤ãĢãŽ/js/example
ããĄã¤ãĢãįæãããããĢäŊŋį¨ã§ãããĄã¤ãŗãĒãã¸ããĒãĢbabelãšã¯ãĒãããåĢãããã¨ãĢã¤ããĻåæãĢéãããã¨æããžãã ããã¯ãčĒ°ããããŽãĩããŧããæäžããč˛ŦäģģãããããŠãããĢã¤ããĻã¯æąēããĻéĸäŋãããžããã į§ãŽãããĢãããŽæŠčŊãåŋ
čĻã¨ããč˛ĸįŽč
ãããžãã ã¨ãĢããããŠãŗãšãã¤ãĢããåŋ
čĻãããéįēč
ãäģãŽéįēč
ãĢã¨ãŖãĻã¯åŠįšããããžãã ãããããŗãŠããŦãŧãˇã§ãŗãæšåãããããĢãĄã¤ãŗãĒãã¸ããĒãĢäŊããäŋæã§ããå ´åã¯ãããŠãŗãšãã¤ãĢ/ããŗããĢã¯ãŧã¯ãããŧãååĨãĢäŊæããåŋ
čĻã¯ãããžããã
ãĄã¤ãŗãĒãã¸ããĒãĢ1ã¤ãŽããĄã¤ãĢã訹å¯ããĻãbabelES6ããES5ã¸ãŽããŠãŗãšãã¤ãŠãŧãšã¯ãĒãããä¸įˇãĢåĻįã§ãããããĢãããã¨ã¯ãããĒããŽåĻĨåæĄã ã¨æããžãã æŦåŊãĢåéĄããããžããīŧ å¯į¨ŋč ããĄã¤ãŗãĒãã¸ããĒã§ä¸įˇãĢåŋ čĻãĒæŠčŊãĢåãįĩããã¨ã訹å¯ããžããīŧ
ãããčĄããããŽããĢãããĒãŊãŧãšãå ąåäŊæĨč ãĢæąããĻãããŽã§ã¯ãĒãããããåŋ čĻã¨ããäēēã ããĄã¤ãŗãĒãã¸ããĒã§ä¸įˇãĢäŊæĨã§ãããããĢãããã¨ãæąããĻããã ãã§ãã į§ããããĢã¤ããĻPRãčĄãããããæŠčŊããå ´åãããĒãã¯æŦåŊãĢãããæåĻãããã¨ãĢæįĨ¨ããžããīŧ
į§ããããŽãããĢPRãããĻããããããžããããĒã
ã¤ãžãããããéå§ããããŽãčĻãĻããããã§ã
ããĒãã¯æŦåŊãĢãããæåĻãããã¨ãĢæįĨ¨ããžããīŧ
ãĒãŗããŖãŗã°ããšãĢå¤ąæããå ´åãããšãĻãŽčŗãã¯ãĒããĢãĒããžãđ
æŦåŊãĢåéĄããããžããīŧ
ã¯ãããĒãã¸ããĒã¯éæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗãäŋé˛ãããšãã§ã¯ãĒãããã§ãã
ã¯ãããĒãã¸ããĒã¯éæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗãäŋé˛ãããšãã§ã¯ãĒãããã§ãã
three.js
+ three.min.js
ãč§ŖäģģããĻããĒããã°īŧITTãŽãŗãŗãģãŗãĩãšã¯ããããč§Ŗäģģããåŋ
čĻããããã¨ãčĒããĻããžãīŧãčĒåã§æåã§åŽčĄããåŋ
čĻãŽããbabelãšã¯ãĒãããããå ´åã¯ããžã æŖåŧãĢåģæĸãããĻããžãããįąįãĒæ¯æã¯ãģã¨ããŠãããžããã äģŖãããĢãĸã¸ãĨãŧãĢãäŊŋį¨ãããããĢäēēã
ãĢįĸēåŽãĢå§ããbabelãšã¯ãĒããã¨ãããĢéĸããããĄã¤ãĢãįæãããããĢčĻåããåŋ
čĻããããã¨ãĢåæããžãã éæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗãäŋé˛ããĻããįįąã§ãĸã¸ãĨãŧãĢãäŊŋį¨ã§ããĒãįļæŗã§ãå¯į¨ŋč
ãä¸įˇãĢbabelãšã¯ãĒããã§äŊæĨã§ãããããĢãããã¨ãĢåæããžããã ä¸ģãĒįįąã¯ããĸã¸ãĨãŧãĢãŽäŊŋį¨ãåŽčĄä¸å¯čŊ/éįžåŽįã§ããįļæŗããžã ããããã§ãã ãããĨãĄãŗãã¯ããŽåŋ
čĻæ§ãčĒããĻããžãã ä¸įˇãĢäŊæĨããåŋ
čĻãããäēēãŽãããĢã1ã¤ãŽããĄã¤ãĢãåŽå
¨ãĢčŋŊå ã§ããã¨æããžãã
ããã§ES53.min.jsã¨three.jsãåæãĢéæ¨åĨ¨ãĢãããã¨ãįãĢããĒãŖãĻãããã¨ãĢåæããžãã
ã¤ãžããexamples / jsãthree.min.jsãthree.jsãåæãĢåģæĸããåŋ čĻããããžããã¤ãžããč¤æ°ãŽãĒãĒãŧãšãĢåæŖãããŽã§ã¯ãĒãã1ã¤ãŽãĒãĒãŧãšã§ããšãĻãŽES5ãŗãŧããåé¤ããåŋ čĻããããžãã
@ Mugen87
ã¯ãããĒãã¸ããĒã¯éæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗãäŋé˛ãããšãã§ã¯ãĒãããã§ãã
Windows10ã§ãDOSã˛ãŧã ãåŽčĄã§ããžãã
ãããĻãããã¯ãã¤ã¯ããŊããããéæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗããæ¨é˛ããĻããã¨ããæåŗã§ã¯ãããžããã
ããŽããã¸ã§ã¯ãã§įļæãããĻããjsãĸã¸ãĨãŧãĢãŽäžãæįĸēãĢãããããĢãããŧããnpmããžãã¯ããĢãããŦãŧã ã¯ãŧã¯ãäŊŋį¨ããåŋ čĻã¯ãããžããã
åŽį¨ŧå寞åŋãŽãĸããĒãąãŧãˇã§ãŗãæ§į¯ããã¨ãããã¨ã¯ããŗãŧããããŗããĢãããã¨ãæåŗãããã¨ãåŋããĒãã§ãã ãã:)
åŠį¨å¯čŊãĒRollupãŽãããĒããŗããĢããŧãĢãĢæčŦããžãããããã¤ããŽčŗĒåãæ¤č¨ããåŋ čĻãããã¨æããžãã
ãããĢã¤ããĻãŽį§ãŽåäēēįãĒæ°æãĄīŧ
ããŽãŠã¤ããŠãĒã¯10åš´åãŽããŽã§ãã ES5/UMDã§č¨čŋ°ãããexamplesããŠãĢããŧå ãŽãĸã¸ãĨãŧãĢãĢäžåããåˇ¨å¤§ãĒã¨ãŗãˇãšãã ããããžãã ã¨ãŗãˇãšãã å ¨äŊãŽãĩããŧããããããŽã¯å Ŧåšŗã§ã¯ãĒãã¨æããžãã
ãĸã¸ãĨãŧãĢãŽããŗããĢããŋãŧãŗããĒããĻãES6ãäŊŋį¨ã§ãããã¨ãäēēã ã¯åŋããĻããã¨æããžãã į§ã¯æ¯æĨES6ãäŊŋį¨ããĻããžããããããŗãã¨ãŗããĸããĒãąãŧãˇã§ãŗã§ãĸã¸ãĨãŧãĢããŗããĢããŋãŧãŗãäŊŋį¨ããĻããžããã į§ã¯ãããĢãããŧãĢãåŋ įļįãĢé常ãĢãĢãšãŋã ãĢãĒãããĸã¸ãĨãŧãĢãŽããŗããĢããŋãŧãŗãįĩãŋčžŧããã¨ãã§ããĒãã¨ãŗãŋãŧããŠã¤ãēãˇã§ããã§åããĻããžããã
į§ããĄã¯äŊãããšãīŧ
åãĒãĒãŧãšãŽåžãĢãįšåŽãŽããŖãšããĒããĨãŧãˇã§ãŗį¨ãĢES6ãĸã¸ãĨãŧãĢãES5/UMDãĸã¸ãĨãŧãĢãĢãŗãŗãã¤ãĢããĻãŋãžãããã
ã¯ãããĒãã¸ããĒã¯éæ¨åĨ¨ãŽãŗãŧããŖãŗã°ããŋãŧãŗãäŋé˛ãããšãã§ã¯ãĒãããã§ãã
äēēįãŽãģã¨ããŠããšãĻãĢãããĻãå¤ãããŋãŧãŗãæčĄããããŗããŧãĢãäŊŋį¨ãããŊãĒãĨãŧãˇã§ãŗã¯ãäžįļã¨ããĻåĒããåčŗĒã§ããå¯čŊæ§ããããžãã
äžãã¨ããĻ-į§ãŽčĒįąãĒæéãĢã¯ããã¤ãŗãããŧãĢã§įŗãåŊĢããã¨ãæĨŊããã§ããžãã éå ˇãæčĄã¯åååˇĨå ˇã¨ã¯į°ãĒããžãããæįĩįãĢã¯åŊĢåģã¯éĢåčŗĒãŽãžãžã§ãã į§ã¯ãã¤ãŗãããŧãĢãäŊŋããŽãåĨŊãã§ãčĒåãäģãŽäēēãæēčļŗããããŽãäŊããŽãĢåŋ čĻãĒãšããĢãæãŖãĻãããŽã§ãåäēēįãĢãã¤ãŗãããŧãĢãäŊŋããã¨ãåĨŊãŋãžããã
ES5/UMDãĸã¸ãĨãŧãĢãĢã¤ããĻãåããããĢæããžãã į§ã¯æŦåŊãĢéĢåčŗĒãŽãŗãŧãããŧãšãæ¯æããããŋãŧãŗããã¯ããã¯ãããŧãĢãčĻã¤ãããã¨ãã§ããããŽåäēēįãĒåĨŊãŋãčĄäŊŋãįļãããã¨æãŖãĻããžãã
åãĒãĒãŧãšãŽåžãĢãįšåŽãŽããŖãšããĒããĨãŧãˇã§ãŗį¨ãĢES6ãĸã¸ãĨãŧãĢãES5/UMDãĸã¸ãĨãŧãĢãĢãŗãŗãã¤ãĢããĻãŋãžãããã
į§ã¯looeeeãč¨ãŖããã¨ãĢåæããžãã
äģŽåŽãããŽã¯å ŦæŖã§ãã[...]
äŊīŧ į§ããĄãåĨŊããĸãããŧããĢã¤ããĻ芹ããĻãããŽã§ããããäģŽåŽãã¯åžã§čĩˇãããžãã äģãŽäēēãĢãĸã¸ãĨãŧãĢãŽäŊŋį¨ãåĨ¨åąãããã¨ãåĨŊãããã§ãããīŧä¸é¨ãŽäēēã ã¯ãžã å¤ãTHREEãæãã§ããã¨äģŽåŽããĻīŧæŦåŊãĢãããæãã§ããäēēãŽãããŽįĩčˇ¯ãæäžããžãã
åãĒãĒãŧãšãŽåžãĢãįšåŽãŽããŖãšããĒããĨãŧãˇã§ãŗį¨ãĢES6ãĸã¸ãĨãŧãĢãES5/UMDãĸã¸ãĨãŧãĢãĢãŗãŗãã¤ãĢããĻãŋãžãããã
ããã¯čĒ°ã§ãčĄããã¨ãã§ããžãã ããŽãŗãšãã¯ãthree.jsãĄãŗãããč˛ æ
ããåŋ
čĻã¯ãããžããã @gkjohnsonãä¸ã§č¨ãŖããã¨ãįš°ãčŋããžããã examples/js
ã¨examples/jsm
ãŽä¸ĄæšãŽããŖãŦã¯ããĒãįļæãããããŽãŗãšãã¯éĢããĒããžãã ãããįĄæéãĢčĄããã¨ã¯ã§ããžãããES6ãĸã¸ãĨãŧãĢã2ã¤ãŽãĸãããŧããŽä¸ã§ããčŋäģŖįã§ãããã¨ã¯æããã§ãã æŦĄãŽãŗãšããčæ
ŽããĻãã ããã
ããŽæåžãŽãĸã¤ãã ã¯ããããæ大ã§ãã ããŽãĒãã¸ããĒã§ããšãĻãŽãŗããŧã2ã¤åŠį¨å¯čŊã§ããéãã严æšã¨ãåŽå ¨ãĢãĩããŧããããĻããã¨čĻãĒãããžãã į§ããĄã¯åŽæįãĢã2ã¤ãŽã¯ãŧã¯ãããŧãæˇˇåããããES6ãĸã¸ãĨãŧãĢããŧããŧãCJSãŗãĸãŠã¤ããŠãĒã§äŊŋį¨ãããã¨ããããããĻãŧãļãŧãæ¯æ´ãããã¨ãĢæéãč˛ģãããĻããžãããããã¯č¤éãĒæšæŗã§å¤ąæããžãã
åéĄãį°ĄåãĢč¨ãæãããã¨ãã§ããžããããšãĻãŽäžīŧéčĻã§ãããthree.jsãŠã¤ããŠãĒãŽãĒããˇã§ãŗé¨åīŧã¯ãįžå¨ããĸã¸ãĨãŧãĢæ§æããžãŖããäŊŋį¨ããĻããžããã UMDã§ããCommonJSã§ããES6ãĸã¸ãĨãŧãĢã§ããããžããã THREE
ã°ããŧããĢååįŠēéãĢããããéŠį¨ããã ãã§ãã äģŖãããĢES6ã¤ãŗããŧã/ã¨ã¯ãšããŧãæ§æãäŊŋį¨ããĻãããæ´æ°ãããã¨æããžããããŽå¤æ´ãč¨įģãããĻããã¨ããå¤ããŽæŠæčĻåããããžããã
ES5/UMDã§č¨čŋ°ãããexamplesããŠãĢããŧå ãŽãĸã¸ãĨãŧãĢãĢäžåããåˇ¨å¤§ãĒã¨ãŗãˇãšãã ããããžãã ã¨ãŗãˇãšãã å ¨äŊãŽãĩããŧããããããŽã¯å Ŧåšŗã§ã¯ãĒãã¨æããžãã
three.jsã¨ãŗãˇãšãã ãŽããšãĻãã°ããŧããĢãĒTHREE.*
ååįŠēéãĢäžåããĻãããããã¤ãŗããŧã/ã¨ã¯ãšããŧãæ§æãäŊŋį¨ããããES5ãĢããŠãŗãšãã¤ãĢããããããããĢæ´æ°ã§ããĒããŖãã¨č¨ããŽã¯å
Ŧåšŗã§ã¯ãĒãã¨æããžããããŗããŠãŧãäŊŋį¨ããžãã ãããĢã¯ããã¤ããŽåéŋįããããžãããĻãŧãļãŧã¨ååããĻããĻãŧãļãŧãĢéŠãããĒããˇã§ãŗãčĻã¤ãããæäŧãããããĻããã ããžãã
examples/jsããŖãŦã¯ããĒã¨examples/jsmããŖãŦã¯ããĒãŽä¸ĄæšãįļæãããããŽãŗãšãã¯éĢããĒããžãã
ãããĢã¤ããĻããå°ãæãä¸ãããã¨æããžãã į§ã¯ãããŗãã¨ãŗããĸããĒãąãŧãˇã§ãŗį¨ãĢå¤ããŽãĢãšãŋã ããŧãĢã¨ããĢãčĒååãšã¯ãĒãããäŊæããžããããã§ããéããŽãæäŧãããããĻããã ããžãã
čĒååãŽäŊæã¨įļæ
čĒååãåŖããã¨ããŽãĒãĒãŧãšã¨ãŠãŧãŽãããã°
įļæį¨ãĢã¤ããĻããå°ãįč§ŖãããŽãæäŧãŖãĻãã ãããããã¯3ã¤ãŽãŗãŧãããŧãšãĢåēæãŽããŽã§ããīŧ į§ãŽįĩé¨ã§ã¯ãããŽãŋã¤ããŽãŗãŧãã¯é常ãæãå¯ŋåŊãéˇããæå°éãŽãĄãŗãããŗãšã§æ¸ãŋãžãã ãããã¯ãä¸åēĻäŊæãããšã¯ãĒããã§ãããéˇæéãĢãããŖãĻååēĻ襨į¤ēãããã¨ã¯ãããžããã
ããšãĻãŽããĢãĒã¯ã¨ãšãããįæãããããĄã¤ãĢã§ã¯ãĒãããŊãŧãšããĄã¤ãĢãæ´æ°ãããã¨ãįĸēčĒããžã
ãããããå°ããĒãšã¯ãĒãããžãã¯ããšãããĒãĒãŧãšã¯ãŧã¯ãããŧã§ãããĢåŊšįĢã¤å¯čŊæ§ããããžãã
严æšãŽã¯ãŧã¯ãããŧãŽäŊŋį¨æšæŗãčĒŦæãããããĨãĄãŗããįļæãã
ãžããã°ããŧããĢååįŠēéãŽãããĨãĄãŗããåé¤ãããã¨ãĢãæįĨ¨ããžãã 2ã¤ãŽã¯ãŧã¯ãããŧãŽãããĨãĄãŗãããĩããŧããããŽã¯ã°ãããĻããã¨æããžãã ããã¯æĒããã¨ã§ã¯ãããžããã ããžããžãĒãŗãŗãããšããŽãŗãŧããããŗããĢãããģã¨ããŠãŽãŠã¤ããŠãĒãUMD / ES6ãĸã¸ãĨãŧãĢãĢã¯ã1ãģãããŽãããĨãĄãŗããããããžããã
CJSã¨ES6ãŽä¸ĄæšãŽã¯ãŧã¯ãããŧãäŊŋį¨ãããã¨ããĻãããĻãŧãļãŧãããŽãã°ãŦããŧãã¨ãĩããŧããŽčŗĒåãĢįããžãã
ããŽãããĒããŽãĢéĸéŖããåéĄãŽéã¯ãTHREEãŽäēēæ°ãŽå¤§ãããĢæ¯äžããĻããã¨æããžãã ããĒãã¨į§ã¯ãStackOverflowã§ããããŽãŋã¤ããŽåéĄã常ãĢčĻãĻããžãã 2ã¤ãŽã¯ãŧã¯ãããŧãåēåĨã§ããĒããĻãŧãļãŧã¯ããŠã¤ããŠãĒãĢč§Ļįēãããæ°ããããã°ãŠããŧã§ããå¯čŊæ§ãéĢããããã°ãŠããŗã°ãŽåēæŦãä¸čŦįãĢåĻãŧãã¨ããĻããã ãã§ãã
įŽæ¨ã2ã¤ãŽã¯ãŧã¯ãããŧéãŽæˇˇäšąãĢįšãĢéĸéŖããåéĄãŽéãæ¸ãããã¨ã§ããå ´åãES5ãŗãŧããåé¤ãããã¨ã¯ãããããããåŠããã§ããã-ããããå ¨äŊįãĒåéĄãŽéãå¤ããã¨ã¯æããžããã æ°ããããã°ãŠããŧã¯ããŠã¤ããŠãĒãĢéĸéŖããĻããå ´åãããã§ãĒãå ´åãããæŦĄãŽčŗĒåãĢ常ãĢįĢãĄåžįããžãã
å ¨äŊįãĢåéĄãŽéãæ¸ããæšæŗã¯īŧ
æŦåŊãŽįŽæ¨ãåéĄãŽéãå
¨äŊįãĢæ¸ãããã¨ã§ããå ´åãããããããåŗæ ŧãĒåéĄããĒãˇãŧããããåŠãããã¨ãã§ããžãã ãã§ãĢHelp (please use the forum)
ãŽãããĒãŋã°ãäŊŋį¨ããĻãããã§į´ æ´ãããäģäēãããĻãããŽãčĻãžãããããããããããŽãŋã¤ããŽããŽãããŖã¨åŋ
čĻã§ãã
ããä¸čŦįãĢã¯ã3äēēãŽå¯į¨ŋč ãįžå¨įˇéãĢå§åãããĻããã¨æããĻããããŠããã芹ãåããčĒŋæģãããã¨ããã¨ããĒãããã¤ããŽãŋã¤ããŽåéĄãčĒŋæģãããŽãæåãããããžããã
ãĢãããĢãŽãĸã¤ããĸīŧ
suggestions
ã¨enhancements
ãĢã¯īŧ271īŧãŽæĒč§ŖæąēãŽåéĄããããžãã ããããŽãŠããĢã¯å¤ããŽãã¤ãēãįæããããã§ãã ããļããPRãŽæēåããã/åŽéãŽææĄã¨ããĻåæ ŧãããã§ãã¯ã ããåããžãã Insta-äģãŽããšãĻãéããĻã Discussion (please use the forum)
ã¨ããĻããŧã¯ããžããloaders
ãĢã¯īŧ61īŧãŽæĒč§ŖæąēãŽåéĄããããžãã ããŽãŠããĢãå¤ããŽãã¤ãēãįēįãããããã§ãã suggestions
ã¨enhancements
ãĢéĸéŖããããŽãŠããĢããžãã¯ä¸ååãĒåŊĸåŧãŽãã°ãŦããŧããĢå¤ããŽåéĄããããžãã ããļããæ´åŊĸåŧãŽãã°ãŦããŧãã¨PRãŽæēåãã§ããĻãã/ææĄãŽãããĢæ¸Ąããããã§ãã¯ã ããåããžãã ã¤ãŗãšãŋ-äģãŽããšãĻãéããĻããããĢåŋããĻããŧã¯ãäģããžããthree.jsã¨ãŗãˇãšãã ãŽããšãĻãã°ããŧããĢTHREEã*ååįŠēéãĢäžåããĻãããããã¤ãŗããŧã/ã¨ã¯ãšããŧãæ§æãäŊŋį¨ããããES5ãĢããŠãŗãšãã¤ãĢããããããŗããŠãŧã
į§ã¯äŊã§ãæ´æ°ã§ãããã¨ãĢåæããžãããæįļå¯čŊãĒæšæŗã§ããããŽãĻãŧãļãŧããĩããŧããįļãããããĢå°ããŽäŊæĨãčĄãæšæŗãčĻã¤ãããã¨ãã§ããã°ã@Bug-ReaperãĢåæããžãã
ãããããŗãŠããŦãŧãˇã§ãŗãæšåãããããĢãĄã¤ãŗãĒãã¸ããĒãĢäŊããäŋæã§ããå ´åã¯ãããŠãŗãšãã¤ãĢ/ããŗããĢã¯ãŧã¯ãããŧãååĨãĢäŊæããåŋ čĻã¯ãããžããã
ããããŽãĻãŧãļãŧããžã¨ããĻããĸããĒãąãŧãˇã§ãŗ/ãŠã¤ããŠãĒãŽãĸããã°ãŦãŧãããˇãšãã ãŽæ§į¯ããããŗãããĨãĄãŗããŽäŊæãĢãããæéãå¤§åš ãĢį¯į´ã§ããžãã
ãããĢã¤ããĻããå°ãæãä¸ãããã¨æããžãã į§ã¯ãããŗãã¨ãŗããĸããĒãąãŧãˇã§ãŗį¨ãĢå¤ããŽãĢãšãŋã ããŧãĢã¨ããĢãčĒååãšã¯ãĒãããäŊæããžããããã§ããéããŽãæäŧãããããĻããã ããžãã
č¯ãã
å ¨äŊįãĢåéĄãŽéãæ¸ããæšæŗã¯īŧ
ãããčģéãĢäšããĻãã ããã åĨãŽãšãŦããã§ãããĢč°čĢã§ããĻããããã§ãã ããã¯į§ãŽäģĨåãŽãŗãĄãŗããĢããããéĸéŖããĻããžãã
į§ã¯@Bug-ReaperãŽįēč¨ãĢåæããžãīŧ
ããããį§ããĄå ¨åĄãããŠãŗãšãã¤ãĢ/ããŗããĢã¯ãŧã¯ãããŧãäŊæããĻããĒããã¨ãæãŋãžã[...]
į§ããĄã¯įãããĢåæããã¨æããžãã
čŗåĻ严čĢãå ąæããĻãããĻãããã¨ãã æ å ąãĢåēãĨããæąēåŽãčĄãŖãĻãããã¨ãįĸēčĒãããããĢãããããå ąæãããã¨ã¯å¸¸ãĢč¯ããã¨ã§ãã
ããã¯į§ãäģåš´ããã¤ããŽé čŗãĩã¤ã¯ãĢãč˛ģãããĻãããã¨ã§ãããããŠãĻãļããŗããŧãĢåĒå é äŊãĢã¤ããĻå°ãããã¨ãããããŽã§ãäēåãĢč¨įģãįĢãĻããã¨ãã§ããžããã
ES6ãĸã¸ãĨãŧãĢã¯å°æĨãŽããŽã§ãããã¨ãĢåæããžãããã¤ãŗããŧãããããĒãã§ES6ãĸã¸ãĨãŧãĢãäŊŋį¨ããĻéįēããã¨ã大ããĒé įãŽį¨Žã¨ãĒãããããŧãåŽå
¨ãĢä¸æããå¯čŊæ§ããããžãã examples/js
ãåģæĸãããã¨ãæąēåŽããã¨ããã¤ãŗããŧãããããŽįŊåŧåãéĢãžããã¨ãæåž
ããĻããžããããįžå¨ãããŠãĻãļãŧãŽåĒå
äēé
ã§ã¯ãĒãããã§ãã
ããŽãããããŠãĻãļãã¤ãŗããŧãããããåŽčŖ
ãããžã§ã examples/js
ããŠãĢããŽéæ¨åĨ¨ãä¸æåæĸãããã¨ãĢããžããã æåãŽįĢæšäŊããŦãŗããĒãŗã°ãããããĢãååŋč
ãĢããĒããŖãĢãããŗããŠãŧãĢã¤ããĻåĻãļãããĢåŧˇåļãããŽã¯åĢã§ãã
@Bug-Reaperã¨åãįĩčĢãĢéããžããã äģæĨã¯ã examples/jsm
ããĄã¤ãĢããexamples/js
ãäŊæãããšã¯ãĒãããŽäŊæãæ¤č¨ããĻããžãã
@mrdoob
ããŠãĻãļãã¤ãŗããŧãããããåŽčŖ ãããžã§ãexamples/jsããŠãĢããŽéæ¨åĨ¨ãä¸æåæĸãããã¨ãĢããžããã
@Bug-Reaperã¨åãįĩčĢãĢéããžããã äģæĨã¯ãexamples/jsmããĄã¤ãĢããexamples/jsãããĢããããšã¯ãĒãããŽäŊæãæ¤č¨ããĻããžãã
čŗĸæãĒæąēæã
đ
@mrdoobããĄããį§ã¯ããĒããŽæąēåŽãåãå
Ĩããžãããããã¯éããæŠäŧã ã¨æããžãã é
ããæŠãããéįēč
ã¯ã°ããŧããĢãšã¯ãĒããããéĸããåŋ
čĻããããžãã ãããĻãį§ã¯Import Maps
ãããã§å¤§ããĒéããįãã¨ã¯æããĒãã ãĻãŧãļãŧãããåĒããå°æĨæ§ãŽããã¯ãŧã¯ãããŧãĢãåŧˇåļãããäģŖãããĢãã°ããŧããĢãšã¯ãĒãããåŧãįļãäŊŋį¨ã§ãããããĢããžãã 2020åš´ã
ãããĻãį§ã¯
Import Maps
ãããã§å¤§ããĒéããįãã¨ã¯æããĒãã
å æĨãčĒ°ãããããããĻãããŽãčĻãžããīŧ
<script src="js/three.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/master/examples/js/loaders/GLTFLoader.js"></script>
<script type="module" src="js/main.js"></script>
ãããĻã main.js
ãŽä¸ã§ãåŊŧãã¯ãããčĄãŖãĻããžããīŧ
import {OrbitControls} from "https://threejsfundamentals.org/threejs/resources/threejs/r119/examples/jsm/controls/OrbitControls.js";
ãããĻãåŽéãĢæŠčŊããžãã...đ
ãĻãŧãļãŧãæŖãããã¨ããããã¨ãæåž ãããã¨ã¯ã§ããžããããĻãŧãļãŧã¯åĻįŋããäŊããããžããããžã§įŠäēãčŠĻãŋãĻããžãã čĒ˛éĄã¯ãåŊŧããæ°äģããĒãããĄãĢæŖãããã¨ããããŽãĢåŊšįĢã¤ããļã¤ãŗãčĻã¤ãããã¨ã§ãã
ããããã¤ãŗããŧãããĒãES6ãĸã¸ãĨãŧãĢãŽåéĄã¯ããĻãŧãļãŧãčĒåãŽããã¸ã§ã¯ããŽOrbitControls.js
ã/js
ããŠãĢããŧãĢãŗããŧããĻãäģĨåãŽãããĢã¤ãŗããŧãã§ããĒããã¨ã§ãã OrbitControls.js
ã¯../../build/three.module.js
$ãæĸããããæŠčŊããžããã
ããããŽã¤ãŗããŧãã§ã¯ã OrbitControls.js
ã¯three
ããã¤ãŗããŧãããã ãã§ãã ãĻãŧãļãŧã¯ããĄã¤ãĢãåĨŊããĒå ´æãĢãŗããŧããĻãããã¤ãŗããŧãããããŽããšãčĒŋæ´ã§ããžãã
ããããã¤ãŗããŧãããã¨ããæããŽãããĢããĄã¤ãĢãį°ĄåãĢã¤ãŗããŧãã§ãããããĢãĒããžãã äģĨåãģãŠį°Ąåã§ã¯ãããžããããå°ãĒãã¨ããĻãŧãļãŧã¯ããĄã¤ãĢãã¤ãŗããŧãããã¨ããĢé åēãæ°ãĢããåŋ čĻã¯ãããžããã äŊããĢåã¤äŊããå¤ąãã
ããããã¤ãŗããŧãããã¨ãã¤ãŗããŧããæ§æå¯čŊãĢãĒããæčģæ§ãåä¸ãããã¨ãĢåæããžããã ãã ãããĻãŧãļãŧã¯ã¤ãŗããŧãããããčĒŋæ´ããåŋ čĻããããžãīŧããããŖãĻãåŽéãĢäŊã§ããããįč§Ŗããåŋ čĻããããžãīŧã
ãJSããĄã¤ãĢãããŠãĢããŧãĢãŗããŧãããå ¨äŊãéĒæĒãĒãĸãŗãããŋãŧãŗã ã¨æããŽã§ãæ°ãããĻãŧãļãŧãååŋč ãĢCDNã¤ãŗããŧããäŊŋį¨ãããããĢå§ãããã¨ã§ãããé˛ããã¨ãã§ããã¨æåž ããĻããžããīŧããã¯éįēč ãĢã¨ãŖãĻããĒããˇã§ãŗã§ããäŊãããŽįįąã§ããĢããäŊŋį¨ãããīŧã éŠåãĒãĸããĒã¯ãã¨ãĢããããĢãããŧãĢãäŊŋį¨ããåŋ čĻããããžãã
į§ã¯åŽéãĢã¯ãĸãŗãããŋãŧãŗã¨ã¯čĻãĒããĻããžããã
ããã¯į§ããĻã§ããĩã¤ããäŊããã¨ãåĻãã æšæŗã§ãã .css
ããĄã¤ãĢã/css
ããŠãĢããŧãĢé
įŊŽããæŦĄãĢįģåã/img
ãĢé
įŊŽãã .js
ããĄã¤ãĢã/js
ãĢé
įŊŽããžãã
éåģæ°ãæéãį§ã¯ES6ãĸã¸ãĨãŧãĢ/ CDNãĸãããŧããäŊŋį¨ããĻããã¤ããŽåŽé¨ãčĄãŖãĻããžãããããŠã¤ããŠãĒãį§ãŽããã¸ã§ã¯ãã¨ã¯į°ãĒãããĄã¤ãŗãããŽããŽã§ããã¨ã¯æããžããã
ããĄã¤ãĢããŗããŧããĒãã¨ããĢå¤ąã大ããĒãã¨ãŽ1ã¤ã¯ãããĄã¤ãĢãįˇ¨éã§ãããã¨ã§ãã examples/js
å
ãŽããĄã¤ãĢã¯ã常ãĢããŽä¸ãĢæ§į¯ã§ããäžã§ããã¨æŗåŽãããĻããžããã ããã¸ã§ã¯ãã§OrbitControls.js
ããŗããŧããĻããåŋ
čĻãĒåĻįãæŖįĸēãĢčĄãããĒããŖãå ´åã¯ãããŧãĢãĢããĄã¤ãĢã§ãããããå¤æ´ããã ãã§æ¸ãŋãžãã
ããã¯į§ãį§ãŽããã¸ã§ã¯ãããģãããĸãããããããĢäŊŋį¨ããæšæŗã§ãīŧ
<script src="js/libs/three.js"></script>
<script src="js/libs/three/OBJLoader.js"></script>
<script src="js/libs/three/OrbitControls.js"></script>
<script>
console.log( THREE, THREE.OBJLoader, THREE.OrbitControls );
</script>
ã¤ãŗããŧãããããäŊŋį¨ããã¨ãæŦĄãŽãããĢãĒããžãã
<script type="importmap">
{
"imports": {
"three": "js/libs/three.module.js",
"OBJLoader": "js/libs/three/OBJLoader.js",
"OrbitControls": "js/libs/three/OrbitControls.js"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OBJLoader } from 'OBJLoader';
import { OrbitControls } from 'OrbitControls';
console.log( THREE, OBJLoader, OrbitControls );
</script>
äģĨåãģãŠãããã§ã¯ãããžããããã¤ãŗããŧããŽäžåéĸäŋ/é åēãåĻįããããŗããŠãŧãåŋ čĻã¨ããžããã
ããã§ããããŗããĢããŧãšãŽéįēãčĄãäēēã
ãĢã¯ãžã æŠčŊããžãã åŽéããĸããĒãŗã¯../../build/three.module.js
$ã§ã¯ãĒãthree
ããã¤ãŗããŧãããããããĢãĒãŖããããããč¯ãįĩæãåžãããžãã
ãããĻãåŽéãĢæŠčŊããžãã...đ
FWIWããã¯ãåŽéãĢã¯ããä¸é¨ãŽãąãŧãšã§ãŽãŋæŠčŊããããã§ãã ãããæŠčŊããĒãå ´åãããã¯é常ãĢį´ããããæšæŗã§å¤ąæããããĢããããģãšã§ãįēįãããã¨ãčĒãããã¨ãĢéĸéŖããĻããã¤ããŽåéĄãæčĩˇãããžããã ãããããååŋč ãåãããĄã¤ãĢãäŊŋį¨ãããããŽč¤æ°ãŽæšæŗãæäžãããã¨ãåŋé ããĻããå ´åã¯ãã¨ãŠãŧãįēįãããããæˇˇäšąãæããžãã
æĨįˇæšåãããããžãããããŗãŗãŊãŧãĢãŽčĻåãäģããĻããŧã¸ãĢthree.jsãŽãŗããŧã2ã¤åĢãžããĻãããã¨ãéįĨãã䞥å¤ããããããããžããīŧåãããŧã¸ã§ãŗã§ããŖãĻãīŧãããããæˇˇå¨ãããĒããããĢæŗ¨æããĒãã¨ãåéĄãįēįããå¯čŊæ§ããããžãã ãReactã¯åæ§ãŽįįąã§ãããčĄãã¨æããžããReactã¯åŽéãĢã¯ãããã¨ãŠãŧãŽčããããåå ã¨ããĻææããĻããã ããããããžããã ããã¯ãåĻįŋããã¨ããĢäēēã ãããããŽãĸããĒããŖãŽæˇˇåããé ããããŽãĢæãåŊšįĢã¤å¯čŊæ§ããããžãã
@Bug-Reaperã¨åãįĩčĢãĢéããžããã äģæĨã¯ãexamples/jsmããĄã¤ãĢããexamples/jsãããĢããããšã¯ãĒãããŽäŊæãæ¤č¨ããĻããžãã
ãããæ°ããč¨įģã§ããå ´åã¯ãããšãĻãŽãĸã¸ãĨãŧãĢããĄã¤ãĢãES6ããĄã¤ãĢãĢããĢãããīŧ15526 /īŧ15543īŧįžå¨ã¯ããã¸ã§ã¯ãããåé¤ãããĻããžãīŧãŽåžŠæ´ģãåãã§ãæäŧãããžãã ããã¤ããŽäžãé常ãĢå¤ããŽããĄã¤ãĢīŧãã¨ãã°ããˇã§ãŧããŧããŧãīŧãĢåæŖããĻããĻãããã¤ããŽãĸã¸ãĨãŧãĢãč¤æ°ãŽããĄã¤ãĢãĢåå˛ãããã¨ãĢéĸåŋãããå ´åã¯ãããŧãĢãĸãããšã¯ãĒããããĸããã°ãŦãŧãããĻãå¤æããããĄã¤ãĢãŽæį¤ēįãĒãĒãšããååžãã䞥å¤ããããžããã¨åēåã åēåãããããĄã¤ãĢéãŽäžåéĸäŋãčĒåįãĢäŊæã§ããã¯ãã§ãã
ããĄã¤ãĢããŗããŧããĒãã¨ããĢå¤ąã大ããĒãã¨ãŽ1ã¤ã¯ãããĄã¤ãĢãįˇ¨éã§ãããã¨ã§ãã
į§ã¯åæããžãããį§ããĄãčŗãæã§ã¯ãŠãšãĢåå ã§ãããĒããį§ã¯æŦĄãŽãããĒããŽãæãã§ããžãīŧ
import orbitalcontrols from orbitalcontrolsURL
class mycontrols extends orbitalcontrols {
// do the edits I care about
}
ãããĻåžã§
let controls = new myorbitalcontrols
ããĄã¤ãĢããŗããŧããĒãã¨ããĢå¤ąã大ããĒãã¨ãŽ1ã¤ã¯ãããĄã¤ãĢãįˇ¨éã§ãããã¨ã§ãã
į§ã¯åæããžãããį§ããĄãčŗãæã§ã¯ãŠãšãĢåå ã§ãããĒããį§ã¯æŦĄãŽãããĒããŽãæãã§ããžãīŧ
orbitalcontrolsURLããorbitalcontrolsãã¤ãŗããŧãããžã
ã¯ãŠãšmycontrolsã¯orbitalcontrolsãæĄåŧĩããžã{
//æ°ãĢãĒãįˇ¨éãčĄããžã
}ãããĻåžã§
ãŗãŗãããŧãĢ=æ°ããmyorbitalcontrolsãããžããã
čĻĒãŽãã¯ãŠãšããåį´ãĒjséĸæ°ã§ããŖãĻãããã§ãĢãããčĄããã¨ãã§ããžãã
åŽéãĢæŠčŊããĻãããŗãŧãīŧããããŦãŧãŽã¯ã¤ãã¯ããšãã§īŧīŧ
Promise.all([
import('https://unpkg.com/three/build/three.module.js')
.then( mod=> [mod.Camera, mod.WebGLRenderer] ),
import('https://unpkg.com/three/examples/jsm/controls/OrbitControls.js')
.then( mod=> mod.OrbitControls )
])
.then( ([
[ Camera, WebGLRenderer ],
OrbitControls
])=> new ( class extends OrbitControls {} )( new Camera, (new WebGLRenderer).domElement )
)
.then( console.log )
...ãžãã¯ããåį´ãĒæ§æīŧ
(async function() {
let { Camera, WebGLRenderer } = await import('https://unpkg.com/three/build/three.module.js')
, { OrbitControls } = await import('https://unpkg.com/three/examples/jsm/controls/OrbitControls.js')
class Con extends OrbitControls { }
let my = new Con( new Camera, (new WebGLRenderer).domElement )
console.log( my )
})()
ããŽaynoméĸæ°ã¨éåæ/åž æŠãŽį´æãåŋé ãããã¨ã¯åĨã¨ããĻãã¯ãŧãĢ
class mycontrols extend orbitalcontrols { // do the edits I care about }
įæŗįãĢã¯ãããã¯ãå¤æ´ãå ããã¨ããĢå
ãŽããĄã¤ãĢãįˇ¨éãããããĢãĻãŧãļãŧãĢæį¤ēãããŽã§ã¯ãĒããåŽŖäŧããåŋ
čĻãŽããããŋãŧãŗã§ãã ãã ããäžã¯æĄåŧĩæ§ãåŋĩé ãĢįŊŽããĻäŊæãããĻããĒããããéæã§ãããã¨ãĢã¯å¤§ããĒåļéããããžãã į§ãŽįĩé¨ã§ã¯ãå
ãŽäžå
¨äŊãæĄåŧĩã¯ãŠãšãŽãŗãŗãšããŠã¯ãŋãŧãĢãŗããŧããĻæŠčŊãããåŋ
čĻãããããã extend
ãäŊŋį¨ããĻãæåŗããããžããã
ãã¨ãã°ã OrbitControls
ãĢ寞ããĻæãä¸čŦįãĢčĻæąãããå¤æ´ã¯ãããŗãåļéãããã¨ã§ãã ããã¯ãããŽãšãŦãããããŽ@Mugen87ãŽããŖããĢãĢį¤ēãããĻãããããĢį°ĄåãĢåŽčĄã§ããžãã
ã¤ãžãã minPan
ã¨maxPan
ãŽãã¯ããĢãčŋŊå ãã controls.update
ãĄãŊããã§controls.target
ãã¯ãŠãŗãããžãã
OrbitControls
ãæĄåŧĩããĻããããåŽčĄããžããã æĄåŧĩã¯ãŠãšãäŊæãããã¨ãã§ããããã¯æŖ常ãĢæŠčŊããžãã ãã ããå¤æ´ãå ããã¨åéĄãæãããĢãĒããžãã update
ãĄãŊãããåį´ãĢæĄåŧĩãããã¨ã¯ã§ããžããã
class OrbitControlsPanLimit extends OrbitControls {
constructor(object, domElement) {
super(object, domElement);
}
update() {
super.update();
console.log('Custom update function');
}
}
ããŽæĄåŧĩã¯ãŠãšã¯æŠčŊããžããīŧã°ãĒããīŧãããŽæ°ããOrbitControlsPanLimit.update
ãĄãŊããã¯įĄčĻãããžãã å
ãŽOrbitControls.update
ãĄãŊããã¯åŧãįļãäŊŋį¨ãããžãã
ãŗãŗãšããŠã¯ãŋãŧã§ååŽįžŠãããã¨ãĢãããä¸æ¸ãã§ããžãã
class OrbitControlsPanLimit extends OrbitControls {
constructor(object, domElement) {
super(object, domElement);
this.update = () => {
console.log('Custom update function');
}
}
}
ããã§super.update()
ãäŊŋį¨ã§ããĒããããå
ãŽæ´æ°æšââæŗå
¨äŊããŗããŧãããããããžããã ãã ããããŽãĄãŊããã¯ãããšãĻãŽãĄãŊããéã§å
ąæãããOrbitControls
å
ãããŽããŽãããĒããŽãŽå¤ããĢäžåããĻããžãã
//
// internals
//
var scope = this;
var changeEvent = { type: 'change' };
var startEvent = { type: 'start' };
var endEvent = { type: 'end' };
var STATE = {
NONE: - 1,
ROTATE: 0,
DOLLY: 1,
PAN: 2,
TOUCH_ROTATE: 3,
TOUCH_PAN: 4,
TOUCH_DOLLY_PAN: 5,
TOUCH_DOLLY_ROTATE: 6
};
var state = STATE.NONE;
var EPS = 0.000001;
// current position in spherical coordinates
var spherical = new THREE.Spherical();
var sphericalDelta = new THREE.Spherical();
var scale = 1;
var panOffset = new THREE.Vector3();
var zoomChanged = false;
var rotateStart = new THREE.Vector2();
var rotateEnd = new THREE.Vector2();
var rotateDelta = new THREE.Vector2();
var panStart = new THREE.Vector2();
var panEnd = new THREE.Vector2();
var panDelta = new THREE.Vector2();
var dollyStart = new THREE.Vector2();
var dollyEnd = new THREE.Vector2();
var dollyDelta = new THREE.Vector2();
æįĩįãĢã¯ãå
ãŽOrbitControls
ãŽãģãŧå
¨äŊãOrbitControlsPanLimit
ãŗãŗãšããŠã¯ãŋãŧãĢãŗããŧããåŋ
čĻããããã¯ãŠãšãæĄåŧĩããįŽįãå¤ąãããžãã ãŗãŗãããŧãĢãæĄåŧĩæ§ãåŋĩé ãĢįŊŽããĻã¯ãŠãšã¨ããĻč¨čŋ°ããĒãéãããããæĄåŧĩãããã¨ã¯åŽčĄå¯čŊã§ã¯ãĒãã¨æããžãã
ããŖã¤ã ãããĻãããĻãããã¨ã@looeee ã į§ã¯čĒåãŽåĒåãŽä¸ã§į°ĄåãĒč§ŖæąēįãéãããŽã§ã¯ãĒããã¨æãŖãĻããžããããããĒãããããĢã¤ããĻč¨åãããŽã§ãããã¯į§ãčĒåčĒčēĢãĢįĢãĄä¸ããŖãã¨ããã§ãã
įæŗįãĢã¯ãããã¯ãå¤æ´ãå ããã¨ããĢå ãŽããĄã¤ãĢãįˇ¨éãããããĢãĻãŧãļãŧãĢæį¤ēãããŽã§ã¯ãĒããåŽŖäŧããåŋ čĻãŽããããŋãŧãŗã§ãã
æŗ¨æããĻãã ãããããã¯įļæŋ寞æ§æãŽč°čĢãĢåããŖãĻå¯æĨãĢč¸ãŋčžŧãã§ããžãã
įæŗįãĢã¯ãåŗæ¸é¤¨ã¯ããŋãŧãŗãåŽŖäŧãããšãã§ã¯ãããžããã ããã¯ããŽæŠčŊã¨ãããããĒããŽåéĄãč§Ŗæąēãããã¨ããŠãŽãããĢįŽæããĻããããåŽŖäŧãããšãã§ãã
ãžããéįēč ãŽã¯ãŧã¯ãããŧããšãŋãã¯ãããĢããˇãšãã ããĻãŧãšãąãŧãšãæŗåŽãããšãã§ã¯ãããžããã åĒãããŠã¤ããŠãĒã¯ãããŽãŗããĨãããŖãŽå¤ããŽč¤éãĒããŧãēãĢå¯čŊãĒéã寞åŋããĻããžãã
äģæĨãŽæ°ããããŽã¯ææĨå¤ãããŽã§ãããããŋãŧãŗã¯čĄãæĨããžãã ããŽå ´åãŽå¯ä¸ãŽä¸å¤ã¯ãå¯čŊãĒéãå¤ããŽä¸äŊäēææ§ãįļæãããããĢãéä¸ã§å¤ããŽãĻãŧãšãąãŧãšãåŧˇåãĢãĩããŧããããŊãããĻã§ãĸã§ãã
Windows10ã§ãDOSã˛ãŧã ãåŽčĄã§ããžãã
įļæŋã¨æ§æãŽč°čĢ
ãããããéĄãããžãã ããŽãč°čĢããŽč§Ŗæąēįã¯ãäģäēãĢæéŠãĒããŧãĢãäŊŋį¨ãããã¨ã§ãã įļæŋãæ§æãæŠčŊãããšãé§åãŽå ´æããããžã...ããĒãã¯ãããĢååãäģããžãã
äģãŽéįēč īŧäŊŋį¨ãååŠį¨ãå¤æ´īŧããŠãŽãããĢthree.jsãäŊŋį¨ããããĢã¤ããĻ芹ããĻãããŽã§ãjsããŠãĻãļãŧæŠčŊãŽå¤ãĢåēããã¨ãĒãããããĢįč§ŖããĻäŊŋį¨ã§ããããŋãŧãŗãåŽŖäŧãããã¨ã¯æåšã§ãã
åŽŖäŧãããã¨ã¯ãåĨãŽãšãŋã¤ãĢãäŊŋį¨ã§ããĒããã¨ãæåŗããããŽã§ã¯ãããžããã
å¯čŊãĒéãä¸äŊäēææ§
ã¯ãã¨ãããã
ããã¯ããŽæŠčŊã¨ãããããĒããŽåéĄãč§Ŗæąēãããã¨ããŠãŽãããĢįŽæããĻããããåŽŖäŧãããšãã§ã
æįĸēãĢãããããĢãåéĄ/æŠčŊãģããã¯äŊã§ããīŧ
ãžããéįēč ãŽã¯ãŧã¯ãããŧããšãŋãã¯ãããĢããˇãšãã ããĻãŧãšãąãŧãšãæŗåŽãããšãã§ã¯ãããžãã
į§ã¯ãģã¨ããŠåæããžãã threejsãŽãĻãŧãšãąãŧãšã¯įžå¨ããŠãĻãļã§ãã ããã¤ããŽããŧããŧãããã¨ããčĻåã¯ãį§ãčãããã¨ãããããã¤ããŽããŧããĸããĒãąãŧãˇã§ãŗãĢåŊšįĢãĄãžãã
ããŽå ´åãŽå¯ä¸ãŽåŽæ°ã¯ãéä¸ãŽå¤ããŽãĻãŧãšãąãŧãšãĢåĒãããĩããŧããæäžãããŊãããĻã§ãĸã§ãã
å¤åã¯å¯ä¸ãŽåŽæ°ã§ãã éįēč ã¯åĨŊããĒããŧãĢãäŊŋį¨ããæãĢã¯äģãŽãã¨ãããŖãĻãŋããã¨ããããžãã
äŊčĢã¨ããĻīŧ
ããã¯ããŽæŠčŊã¨ãããããĒããŽåéĄãč§Ŗæąēãããã¨ããŠãŽãããĢįŽæããĻããããåŽŖäŧãããšãã§ã
ãŠãĄããå
ãĢæĨãžãããīŧ æŠčŊãããŋãŧãŗããžãã¯åéĄīŧ
įĸēããĢããŋãŧãŗã¯åéĄãč§ŖæąēãããŽãĢåŊšįĢãĄãããããæŠčŊãĢãĒããžãã
...ããã¨ããåéĄãåŧãčĩˇããããŽã¯æŠčŊã§ããããããč§ŖæąēãããããŽããŋãŧãŗãčĻã¤ããžãããīŧ
ãŠãĄããå ãĢæĨãžãããīŧ æŠčŊãããŋãŧãŗããžãã¯åéĄīŧ
ãŠãĄããå
ãĢæĨãžãããīŧ éļãåĩãīŧ
äŊäēēããŽäēēã
ã¯ãĒãŗããĒãč¨ããžã...
ããšãĻãŽå¨ããŽį´ æ´ãããč°čĢãããšãĻãŽå ĨåããŋããĒãĢæčŦããžãã
ES6ãŽãĩãŗããĢãĸã¸ãĨãŧãĢãããŠãŗãšãã¤ãĢãããŋãšã¯ãĢæéŠãĒããŗããŠãŧīŧããŧãĢãĸããããããĢãããŧãģãĢããĻã§ãããã¯ãĒãŠīŧãĢã¤ããĻãįããããŠãæãããįĨãããã¨æããžãã @gigabloxãããã§ãŽįĩé¨ãĢã¤ããĻč¨åããĻããã¨æããžãããäģãŽäēēãããããĻããã¨æããžãã
įžå¨ãŽãĒãã¸ããĒãĢã¯ããã§ãĢbabelãrollupããããŗããã¤ããŽéĸéŖããŠã°ã¤ãŗãåĢãžããĻããžãã į§ã¯å ãĢé˛ãã§ãäģå¤ããããŗã°ãéå§ããžãããå ąæããé常ãĢ大ãžããĒããŧãĢãĸããæ§æãšã¯ãĒããããããžãã
// jsm-transpiler.js
export default [
{
input: './examples/jsm/controls/OrbitControls.js',
output: {
banner:"//warning this file was generated automatically",
file: './examples/js/controls/OrbitControls.js',
name:'OC',
footer:'THREE["OrbitControls"]=OC.OrbitControls',
format: 'umd'
}
}
];
ããŽããŧãĢãĸããæ§æãšã¯ãĒããã¯ãåŽéãĢOrbitControls
ãĸã¸ãĨãŧãĢãéãĸã¸ãĨãŧãĢ.js
ããĄã¤ãĢã¤ãŗã¯ãĢãŧããĢå¤æããTHREE.OribitControlsãĢéŠåãĒãŗãŗãšããŠã¯ãŋãŧãå˛ãåŊãĻãžãã ããã¯ããžããããžãããããã¯ã¯ãŧãĢã§ã:)īŧ ãžããTHREE.jsãŽ40kčĄãåēåããĄã¤ãĢãĢããŗããĢããžãããããããģãŠã¯ãŧãĢã§ã¯ãããžããã ãžããOrbitControlsãŗãŗãšããŠã¯ãŋãŧãTHREEãĢčģĸéãããŽãĢåŊšįĢã¤ãOCã¨åŧã°ããä¸éã°ããŧããĢå¤æ°ãåŽŖč¨ãããã¨ãĢãããã°ããŧããĢå¤æ°ãšããŧãšãæ æ°ãĢæąæããĻããžãã
ããŧãĢãĸãããĢã¯ãį§ããĄãŽå¤ããŽåéĄãĢ寞åĻã§ããã¨æãããã¤ããŽæŦåŊãĢã¯ãŧãĢãĒæŠčŊãããããã§ãã įšãĢãæŖããããšãããããĸã¸ãĨãŧãĢãåĢãžãã/é¤å¤ããããã¨ãįĸēčĒãããããŽããããŗã°ãããŗããŽäģãŽãŗãŗãããŧãĢã ããããŧ/ãããŋãŧ/ã¤ãŗãã/åēåãããããŖãäģããĻãããŠãŗãšãã¤ãĢããããã¤ããŧããŽååžãĢãŗãŧããæŋå ĨããæŠčŊã
ã ãžãããããŧãĢãĸããæ§æãšã¯ãĒãããäŊŋį¨ããĻãåŋ čĻãĒãã¨ãéæã§ããã¨æ éãĢæĨŊčĻŗčĻããĻããžãã ããããå¤ããŽããŗããŠãŧãŽéããčĒŋæģ/įč§ŖããĻããäēēããããĢåå ã§ããã°į´ æ´ãããã¨æããžãã ãĸã¸ãĨãŧãĢãããį´ æ´ããããĒããããã¤ããŽããŠãŗãšãã¤ãĢãŗãŧããäģãŽãŗãŧããããåĒããĻãããŽã§ããĸã¸ãĨãŧãĢãåĻįãããĢã¯ããĒãå įĸãĒããŽãåŋ čĻãĢãĒããžãã
ãããį§ãŽčĻč§Ŗã§ãīŧ
https://github.com/mrdoob/three.js/pull/20529
ããã¯ãããšãĻãŽJSMãĸã¸ãĨãŧãĢãį´30į§ã§JSã°ããŧããĢååįŠēéãĸã¸ãĨãŧãĢãĢå¤æããpocãĢãšãŋã ããĢããšã¯ãĒããã§ãã ããŽæšæŗã§ããĒãæåããžããã ããå¤ããŽããšããåŋ čĻã§ãããhello worldã§GLTFLoaderãŽãããĒããč¤éãĒãĸã¸ãĨãŧãĢãŽããã¤ããčŠĻããžããããããã¯åéĄãããžããã§ããã
įĩé¨čąå¯ãĒæŖčĻ襨įžãĻãŖãļãŧããŽããĢããäŊŋį¨ããĻãPRã§čŠŗį´°ãčĒããã¨ãã§ããããã¤ããŽã¨ãã¸ãąãŧãšããžã¨ãããã¨ãã§ããžãã
ChromeãŽã¤ãŗããŧãããããŽåēčˇæåīŧ
https://groups.google.com/a/chromium.org/g/blink-dev/c/rVX_dJAJ-eI
æãåčãĢãĒããŗãĄãŗã
čŗåĻ严čĢãå ąæããĻãããĻãããã¨ãã æ å ąãĢåēãĨããæąēåŽãčĄãŖãĻãããã¨ãįĸēčĒãããããĢãããããå ąæãããã¨ã¯å¸¸ãĢč¯ããã¨ã§ãã
ããã¯į§ãäģåš´ããã¤ããŽé čŗãĩã¤ã¯ãĢãč˛ģãããĻãããã¨ã§ãããããŠãĻãļããŗããŧãĢåĒå é äŊãĢã¤ããĻå°ãããã¨ãããããŽã§ãäēåãĢč¨įģãįĢãĻããã¨ãã§ããžããã
ES6ãĸã¸ãĨãŧãĢã¯å°æĨãŽããŽã§ãããã¨ãĢåæããžãããã¤ãŗããŧãããããĒãã§ES6ãĸã¸ãĨãŧãĢãäŊŋį¨ããĻéįēããã¨ã大ããĒé įãŽį¨Žã¨ãĒãããããŧãåŽå ¨ãĢä¸æããå¯čŊæ§ããããžãã
examples/js
ãåģæĸãããã¨ãæąēåŽããã¨ããã¤ãŗããŧãããããŽįŊåŧåãéĢãžããã¨ãæåž ããĻããžããããįžå¨ãããŠãĻãļãŧãŽåĒå äēé ã§ã¯ãĒãããã§ããããŽãããããŠãĻãļãã¤ãŗããŧãããããåŽčŖ ãããžã§ã
examples/js
ããŠãĢããŽéæ¨åĨ¨ãä¸æåæĸãããã¨ãĢããžããã æåãŽįĢæšäŊããŦãŗããĒãŗã°ãããããĢãååŋč ãĢããĒããŖãĢãããŗããŠãŧãĢã¤ããĻåĻãļãããĢåŧˇåļãããŽã¯åĢã§ãã@Bug-Reaperã¨åãįĩčĢãĢéããžããã äģæĨã¯ã
examples/jsm
ããĄã¤ãĢããexamples/js
ãäŊæãããšã¯ãĒãããŽäŊæãæ¤č¨ããĻããžãã