ããã«ã¡ã¯ãã¿ããªã
ES6ã¯ã©ã¹ãžã®ç§»è¡ãåãå·»ãåé¡ãšé²æç¶æ³ã远跡ããææ°ã®ç¶æ ã«ä¿ã€ããã«ããã¹ãŠã®äººãããã«æ¯æŽããããã«ãïŒïŒ11552ãç¶ç¶ããã®ã§ã¯ãªãïŒæ°ããåé¡ãäœæããããšãé©åã ãšæããŸããã ããã¯ããªãªãŒã¹ããã¥ã¡ã³ãã«ã圹ç«ã¡ãŸãã
ãæäŒãããåžæã®æ¹ã¯ã以äžã®ãªã¹ããã芧ã«ãªããäœã«åãçµã¿ãããããç¥ãããã ããã ã¯ã©ã¹ããšã®PRãæšå¥šãããŸãããäžéšã®ãã©ã«ããŒã¯äžåºŠã«å®è¡ã§ããŸãã ç¹å®ã®ãã¡ã€ã«ãå€æã§ããªãå Žåã¯ããã¡ã€ã«ã®å é ã«ã¡ã¢ããšãããPRããpingãéä¿¡ããŠãã ããã以äžã«ã¡ã¢ããŸãã
ããŒãïŒ
Class.prototype.is**
ã®å Žåã¯ã Object.defineProperty( this, 'is**', { value: true } );
$ã䜿çšããŸãnew this.contructor()
ïŒ= new Foo()
...é¢é£ãããã£ã¹ã«ãã·ã§ã³ãexamples/objects/MarchingCubes.js
ã§äœ¿çšãããåŸ
æ©ããå¿
èŠããããŸãã åç
§çªå·20030examples/js
ã«åãçµããŸã§åŸ
ã¡ãŸãããŒã2ã®æºåã¯ãŸã ã§ããŠããŸããã 話ãåããå¿ èŠã§ãã
ãªãŒãã£ãªãã©ã«ãã®æ®ãã®éšåã§ãã£ããåŒã³åºããŸãð
ãã@ mrdoob ãexamplesãã©ã«ãå ã®ã¹ã¯ãªãããã©ã®ããã«åŠçããããæ確ã«ããŠããã ããŸããïŒ
ïŒ19989ããã®ãŸãŸå€æããã®ã奜ãã§ãããããããããšã§ããã®äœæ¥ãäžæžãããã«utils/modularize.js
ãexamples/js
ãã©ã«ããŒã§äœ¿çšã§ããªããªã£ãããšã«æ°ä»ããŸããã ããã¯ã examples/js
ãç¶æããç§ãã¡ã®çµãããšã examples/jsm
ã ãã®å§ãŸãã瀺ããŠããŸããïŒ
ç·šéïŒã³ã¡ã³ããåç §
æ°åŠãã©ã«ãã®æ®ãã®éšåã§äœæ¥ã§ããŸããïŒ
æ°åŠãã©ã«ãã®æ®ãã®éšåã§äœæ¥ã§ããŸããïŒ
ç§ã¯ããªããããã«ã·ã§ãããäžããããã«ãã¹ãŠã§ãã ãã°ããåã«ããããšããã®ãèŠããŠããŸããã @ Mugen87ã¯çµå±ãããæããŠãããŸããã ãã©ã«ããŒå šäœãäžåºŠã«å€æãããšã倧éæãªããšã«ãªããããªãã®ã§ããã®ç°¡åãªèŠçŽããã¹ãããŸããã éšåçããŸãã¯ãã¡ã€ã«ããšã«ãããç§ã¯ç¢ºä¿¡ããŠããŸãã
@DefinitelyMaybe src/animation/
ã®äžã§ä»ã«äœã移è¡ã§ããããããããŸã
src/core
ã®äžéšïŒ https ïŒ//github.com/mrdoob/three.js/pull/20008
è¯ãã ãã©ã«ããŒã¯ã»ãŒå®æããŠãããšæããŸãã src/core/Object3D.js
ãšsrc/core/BufferGeometry.js
ãæ®ã£ãŠããã ãã§ããããïŒ
src/core/Object3D.js
ãšsrc/core/BufferGeometry.js
ãæ®ã£ãŠããã ãã§ããããïŒ
ã¯ãã Object3D
ãšBufferGeometry
ã«äŸåããES5ã¯ã©ã¹ã¯ãããããããŸãã
ã¬ã³ãã©ãŒïŒ https ïŒ//github.com/mrdoob/three.js/pull/20011
ã·ã¥ãŒããããã«ã¯é©ãã¹ãé²æ©ããããŸããð
src/lights
ã§ãã£ããåŒã³åºããŸãã äžèšã®ãªã¹ãã§src/extras
ãšsrc/renderers
ãéããšãããããã«2ã€ã®ãã©ã«ããŒããããŸãã
ããã¿ããªã
ãã®ãã¿ãŒã³ã«é¢ããŠç§ãã¡ã¯äœãããŠããŸãããïŒ
foo.prototype = Object.assign( Object.create( bar.prototype ), {
...
isDirectionalLight: true,
...
} );
ä»ã§ããïŒ
class foo extends bar {
static isDirectionalLight = true;
constructor( ) {
...
}
}
ãŸã
class foo extends bar {
constructor( ) {
this.isDirectionalLight = true;
}
}
çŸåšã2åç®ã¯ãã£ãŠããŸãããèŠãŠã¿ããšã1åç®ãè¿ãã£ãã®ã§ã¯ãªãããšæããŸãã
ãããããããã®å€æ°ãäœã䜿çšããŠãããç¥ã£ãŠãã人ã¯ããŸããïŒ
class foo extends bar { constructor( ) { this.isDirectionalLight = true; } }
âïžããã¯æ£ããã§ãã isDirectionalLight
ã¯è¯ãäŸã§ã次ã®ããã«äœ¿çšãããŸãã
$ git grep 'isDirectionalLight\b' src/ examples/js ':!*.ts'
examples/js/exporters/GLTFExporter.js: if ( light.isDirectionalLight ) {
examples/js/exporters/GLTFExporter.js: } else if ( object.isDirectionalLight || object.isPointLight || object.isSpotLight ) {
examples/js/renderers/SVGRenderer.js: } else if ( light.isDirectionalLight ) {
examples/js/renderers/SVGRenderer.js: if ( light.isDirectionalLight ) {
src/lights/DirectionalLight.js: isDirectionalLight: true,
src/renderers/webgl/WebGLLights.js: } else if ( light.isDirectionalLight ) {
ãšã¯ãããããã€ãã®ãããã¿ã€ãã®ããããã£ãä¿æããããšã§ããã©ãŒãã³ã¹ãåäžããå¯èœæ§ããããŸã...
class foo extends bar {
}
foo.prototype.baz = heavyThing;
ãã¶ããPRã®ããããã±ãŒã¹ãã€ã±ãŒã¹ã§ã¬ãã¥ãŒããããšãã§ããŸãã
src/renderers/webgl
ã§æ®åœ±ããŸãðð
é 匵ã£ãŠã楜ããã§ãã ããã ãã®äžã§ããªãã®ããšãèµ·ãã£ãŠãã
webxrïŒ https ïŒ//github.com/mrdoob/three.js/pull/20038
ããã¿ããª-ç§ã¯src/renderers/webgl
å€æããŸããã ã¯ã¬ã€ãžãŒã§ããã PRã®ããã·ã¥ãéå§ããåã«ããã¹ãŠã確èªããïŒ20039ãåŸ
ã¡ãŸãã
ð
楜ãã¿ã«ããŠããŸã
@yomotsuãæ°åŠPRã®is*
ããããã£ã«èªã¿åãå°çšã²ãã¿ãŒã䜿çšããŠããããšã«æ°ã¥ããŸãã...å€åãããæé«ã§ãïŒ
class foo extends bar {
get isDirectionalLight() {
return true;
}
}
ããŒãããããããããŸããã ä»ã®äººãå€æ°ãå€æŽã§ããªãããã«ããããã«å Žæã§è©Šã¿ãããšãç§ã¯ç¥ã£ãŠããŸãã ããã¯ç§ã«ã¯ããªããŸãšããªãã¿ãŒã³ã®ããã«èŠããŸãã
ãããé²ãã¹ãéã®ããã§ãïŒ
foo.prototype.isDirectionalLight = true;
src/objects
ã調ã¹ãŸãã ç©äºãå£ããã«ã©ããŸã§è¡ããããããããŸãã
æ°åŠãã©ã«ããå®æããŸããã
ïŒè£éã¯ã©ã¹ã¯é€å€ãããŸãã ïŒ
ããã¿ããªã
ç§ã¯src/objects
ãä»ããŠäœæ¥ãåãæ»ãã€ããã§ããä»ã®èª°ãããã®éã«ãããæŸãããšãæè¿ããŸãã
ããããã®äººãã¡ãšäžç·ã«è¯ãä»äºãïŒ ðª
ãã£ã1ã€ã®åé¡ã§ãããã¯ã©ã¹ããã®å Žã§å€æŽãããŠããããã foo.prototype.isDirectionalLight = true;
ã§ã¯ãŸã ããªãŒã·ã§ã€ã¯ãèš±å¯ãããŠããŸããã
ãŸãããã®æç¹ã§ã¯ãçŸåšã¯ã©ã¹ã䜿çšããŠããããããã¿ã€ããæœè±¡åã§ããããããããã¿ã€ãã«ã¯ãã觊ããªãããšã匷ããå§ãããŸãã
ãã®ãã¿ãŒã³ã¯ã©ãã§ããïŒ ããã¯ç§ã«ã¯æãæçœã«èŠããŸãã
constructor( x = 0, y = 0, z = 0 ) {
Object.defineProperty( this, 'isVector3', {
value: true,
enumerable: false,
writable: false,
configurable: false,
} );
åãããšãããŸãããããå°ãæé»çãªçãããŒãžã§ã³ããããŸãã
constructor( x = 0, y = 0, z = 0 ) {
Object.defineProperty( this, 'isVector3', { value: true } );
@marcofugaroçãããŒãžã§ã³ã¯ç§ã«ã¯è¯ãããã§ãð
ããããŸãããPRãããŸããã
ãŸãããã®PRã«ãã£ãŠãããã¯ãããŠãããããã¯ã©ã¹ãã£ãŒã«ãã䜿çšã§ããªãããšã«æ°ã¥ããŸããã
ãã人æ°ã®ãã@rollup / plugin-babelã䜿çšããããã«ãã«ããã€ãã©ã€ã³ãæŽæ°ã§ããŸã
ãã人æ°ã®ãã@rollup / plugin-babelã䜿çšããããã«ãã«ããã€ãã©ã€ã³ãæŽæ°ã§ããŸã
å¿ èŠã«å¿ããŠãã®åé¡ãä¿®æ£ããŠãã ããã
ãããPRãã§ãããããã§ããð
@ marcofugaro ã @ mrdoob yayïŒ ã¯ãããé¡ãããŸã
ã¿ãªãããããã«ã¡ã¯ãïŒ20014ãObject.defineProperty
ã§æŽæ°ãã AnimationClip
ã®ãµãã¯ã©ã¹åãä¿®æ£ããŸããã 誰ãããããã¬ãã¥ãŒããæéãããã°ãç§ã¯äœåãªðððãããã ããã°å¹žãã§ã
ããã£ãã r120
ãåºãã®ã§...誰ããç©äºãé©åã«ããªãŒã·ã§ã€ã¯ãããŠããããšã確èªã§ããŸããïŒ
ããã¯ç§ã«ãšã£ãŠã¯ã¡ãã£ãšããŸãããããã§ããããããã§ãã
webpackã®ãã³ãã«ãã¡ã€ã«ã«ArrowHelper
ã衚瀺ãããªããªããŸããã ããããå€ãã®äžèŠãªã³ãŒãã¯ãŸã ååšããŠããŸãð¢
ãã³ãã«ãµã€ãºã¯ã©ãã§ããïŒ ååŸ
ã¿ãªãããã¢ã€ãã¢ãããã shakediffãšããããŒã«ãã¹ãã€ã¯ããŸããã 次ã®ããã«å®è¡ã§ããŸãã
$ shakediff builds/three.module.js Color
ããã«ããã Color
ãã€ã³ããŒãããå°ããªã¢ãžã¥ãŒã«ãçæããã3ã€ã«ãã³ãã«ãããŠãããããŒã«ã¢ããã®ã¡ã¿ããŒã¿ãã3ã€ã®å·®åãäœæãããŸãã 詳现ãªå·®åãæäœãããã diffstat
ã«ãã€ãããŠãé«ã¬ãã«ãååŸã§ããŸãã
$ shakediff build/three.module.js Color | diffstat
three.module.js | 2878 --------------------------------------------------------
1 file changed, 1 insertion(+), 2877 deletions(-)
çŸåšãããã±ãŒãžã¯ãããŸããããè©ŠããŠã¿ããå Žåã¯ãç§ã®ãªããžããªããã€ã³ã¹ããŒã«ã§ããŸãã ãã£ãŒãããã¯ãããã ããã°å¹žãã§ãã âïž
npm -g i ianpurvis/shakediff.git
ãã@ mrdoob ãexamplesãã©ã«ãå ã®ã¹ã¯ãªãããã©ã®ããã«åŠçããããæ確ã«ããŠããã ããŸããïŒ
ïŒ19989ãçŽæ¥å€æããã®ã奜ãã§ãããããããããšã§ãutils /modularize.jsãexamples / jsãã©ã«ããŒã§ãã®äœæ¥ãäžæžãããã«äœ¿çšã§ããªããªã£ãããšã«æ°ä»ããŸããã ããã¯ãexamples / jsãç¶æããç§ãã¡ã®çµãããšãexamples / jsmã ãã®å§ãŸãã瀺ããŠããŸããïŒ
ãã®@mrdoobã®è©æ±ºã¯äœã§ããïŒ äŸãES6ã¯ã©ã¹ã«å€æã§ããããã«ãjsmãä¿¡é Œã§ããæ å ±æºã«ããããšã¯çã«ããªã£ãŠããŸããïŒ ãããããutils / demodularize.jsãäœæããŠãä»ã®æ¹åãžã®å€æããµããŒãã§ããŸããïŒ
examples/js
ãã©ã«ããŒã¯2020幎12æã«åé€ãããŸãããããŸã§ã¯ããã©ã«ããŒã®å
容ïŒãŸãã¯ãã®å
容ããçæãããexamples/jsm
ãã¡ã€ã«ïŒãES6ã¯ã©ã¹ã«ã¢ããã°ã¬ãŒãããã«ããã©ã«ããŒããã®ãŸãŸã«ããŠããå¿
èŠããããŸãã ãã®æ¥ä»ä»¥éã examples/jsm
ãã¡ã€ã«ãçå®ã®ãœãŒã¹ã«ãªããES6ã¯ã©ã¹ã«æŽæ°ã§ããŸãã
ã¢ãžã¥ãŒã«ã¹ã³ãŒãå€æ°ãã·ã§ã€ã¯äžã«åé€ãããŠããªãããšã«æ°ã¥ããŸããã ãããã®4ã€ã®å€æ°ã build/three.module.js:43059
ã§ã®åäœã確èªã§ããŸãã
const _position$3 = new Vector3();
const _quaternion$4 = new Quaternion();
const _scale$2 = new Vector3();
const _orientation$1 = new Vector3();
ç¹å¥ãªã³ã¡ã³ãã§ããããçŽç²ã«ããŒã¯ããå¿ èŠãããããã§ã-
const _position = /*@__PURE__*/ new Vector3();
ããã¯èª°ã«ãšã£ãŠãããŸããããŸããïŒ
ç§ã«ã¯ããã§ããð
ããã§ããã Color
ã§ããªãŒãæºãããšãããã«144è¡ãåé€ãããŸãð¥³
æéããããšãã«ã誰ããããªãã®ãªãŒãã³PRã«/*@__PURE__*/
ã®æ±ããããŠãã ããïŒ
@ianpurvisçŽ æŽãããïŒ ããŒã«ã¢ããã䜿çšããŠããŸããïŒ èšå®ãå ±æã§ããŸããïŒ
@mrdoobç§ã¯ã€ãã«ããã€ãã®ãã¹ããããããã«åããŸããã ç§ã¯å人çã«webpackã䜿çšããŠããã®ã§ãããã䜿ã£ãŠããã€ãã®ãã¹ããè¡ããŸããã誰ããèå³ãæã£ãŠããå Žåãç§ã®èšå®ã¯ããã§ãã
ãã®ã³ãŒãããã¹ãããŸãã
import * as THREE from 'three'
console.log(THREE.WebGLRenderer)
ã ããäœããæšã«æºããŠãããçŽ æŽãããïŒ
ããã«è©³ãã調ã¹ãŠã¿ããšãã¯ã©ã¹AudioListener
ããã³ãã«ã«å«ãŸããŠããªãããã§ãããã°ããããã¥ãŒã¹ã§ãã
Webpackã¯ã@ ianpurvisã«ãã£ãŠææãããæªäœ¿çšã®å€æ°ãèªåçã«åé€ããŸãã
ãã®åŸãã¯ã©ã¹å€ã§å®çŸ©ãããéçã¡ãœããããã¹ãããããšã«ããŸãã
æ®å¿µãªãããããã«ããã¯ã©ã¹ã¯ããªãŒã·ã§ã€ã¯ã§ããªããªããŸã
ããã«æãäžããŠã¿ããšãã©ãã«ã䜿çšãããŠããªãDodecahedronGeometry
ã®ãããªãžãªã¡ããªã¯ã©ã¹ããŸã ãã³ãã«ã«å«ãŸããŠããããšã«æ°ä»ããŸããã
åŸã§ç§ãçºèŠããã®ã¯ãããã¯three.module.js
ãã³ãã«å
ã®ãã®Geometries
ãªããžã§ã¯ããåå ã§ãã
ããã¯ãObjectLoaderã§ãã®ãããªãã¿ãŒã³ã䜿çšãããšèªåçã«çæãããŸãã ObjectLoader
ãã¯ã©ã¹ã«ãããšãããã¯ãããããªããªãã src/geometries
ã¯ããªãŒã·ã§ã€ã¯å¯èœã«ãªããŸãã
@marcofugaro https://github.com/mrdoob/three.js/pull/20239
@marcofugaroåé¡ãããŸããããããããŒã«ã¢ããèšå®ã§ã
@marcofugaroããã«ã¡ã¯ãshakediffã«webpackã®ãµããŒããè¿œå ããŸãã...ãã®webpackã®èšå®ã¯åé¡ãªãããã§ããïŒ terserã¯ãwebpackã®ããªãŒã·ã§ã€ã¯ã§ãããã³ãŒããé€å»ãã責任ãããããããããã®åºåã§ã®å€æã¢ãŒãã£ãã¡ã¯ããé²ãããšã¯å°é£ã§ãã ãã ãã空çœãç¡å¹ã«ããŠãã¹ãã°ã©ã ã¢ã«ãŽãªãºã ã䜿çšããŠå·®åããšãå Žåã¯ã管çã§ããŸãã ä»å€ã®ç°¡åãªãã¹ããããwebpackã¯/*@__PURE__*/
ãš/*#__PURE__*/
ã®äž¡æ¹ãåãå
¥ããããã§ãã ã©ã¡ããäžæ¹ãæšæºåã§ãããšæããŸãã ãã£ãšææ¥...
@ianpurvisèªåã®ãã·ã³ã«shakediff
ãã€ã³ã¹ããŒã«ããããšã¯èš±å¯ãããŠããªããšæããŸã...
ãšã«ãããç§ã¯ç°¡åãªãã¹ããããŸããïŒ
import { WebGLRenderer } from './src/renderers/WebGLRenderer.js';
console.log( new WebGLRenderer() );
ãããŠã Geometry
ãããªãŒã·ã§ã€ã¯ãããŠããªãããšã«æ°ã¥ããŸããã https://github.com/mrdoob/three.js/pull/20394ã§ä¿®æ£ãããŠããŸãã
次ã«ã次ã®ããšãè©ŠããŠã¿ãŸããã
import { Vector3 } from './src/math/Vector3.js';
console.log( new Vector3() );
ãããŠãããŒã«ã¢ãããæªäœ¿çšã®ã¡ãœãããããªãŒã·ã§ã€ã¯ããªãããšã«æ°ã¥ããŸãã...ð
@mrdoobæ®å¿µãªãããè¿ãå°æ¥ãã¯ã©ã¹ã¡ãœãããã©ã®ããŒã«ã§ãããªãŒã·ã§ã€ã¯å¯èœã«ãªãããšã¯ãããŸããã äžäœããããã¯çž®å°ããããšããã§ããŸããïŒ
ããã¯ãJavaScriptã§ã¯ããªããžã§ã¯ãã®ããããã£ã«åçã«ã¢ã¯ã»ã¹ã§ããã®ãšåãããã«ã this['I am a string']
ãªã©ã®ã¡ãœããã«ã¢ã¯ã»ã¹ã§ããããã§ãã ãã®ãããããŒã«ã¯ãã¡ãœãããåŒã³åºããã©ãããããã³ã©ã®ããã«åŒã³åºãããäºåã«èªèããŠããŸããïŒ this[variable]
ã®å¯èœæ§ããããŸãïŒã
ããã¯ãES6ã¯ã©ã¹ãšé¢æ°ã¯ã©ã¹ã®äž¡æ¹ã§åãã§ãã ããšãã°ã three.min.js
ã§ã¯ãä»ã®ãªããžã§ã¯ãããããã£ãšåãããã«ãã¡ãœããã¯å€æŽãããŸããð
ãããŠã this['I am a string']
ã®ãããªã¡ãœãããåŒã³åºããªãããšãæåŸ
ããããã«ããŒã®ãå³å¯ãªãã¢ãŒããææ¡ãã人ã¯èª°ãããŸããã
ããããªãð€·ââïž
ããŒã«ã¢ããã«é¢ãããã®ãããã¯ã«é¢ãããã£ã¹ã«ãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãïŒ https ïŒ//github.com/rollup/rollup/issues/349
ã¯ã©ã¹ã¡ãœããã¯ãã©ã®ããŒã«ã§ãããªãŒã·ã§ã€ã¯å¯èœã«ãªãããšã¯ãããŸããã äžäœããããã¯çž®å°ããããšããã§ããŸããïŒ
ãããã¯ããå€ããŠç³ãèš³ãããŸããããããããªãã¯ããšããã©ã€ããŒããã®éãã«ã€ããŠã³ã³ãã€ã©ãŒã«ãã³ããäžãããšããããã¡ã€ãæ©èœããããã«ãªããŸãã éå»ã«ãç§ã¯ãã®ããã®ã¡ãœããã«ã_ããã¬ãã£ãã¯ã¹ã䜿çšããŸããã https://github.com/developit/microbundle/wiki/mangle.jsonãåç §ããŠãã ããã ããããæ®å¿µãªãããç§ã¯ãŸããããªãŒã·ã§ã€ã¯ã«åæ§ã®ããšãå¯èœãã©ãããããããŸããã ð
ãããŒïŒ ïŒ20395ãçµ±åãããŸããïŒ è¯ããã®@marcofugaro
ããã«ãšå¹ŸäœåŠã«ã€ããŠã®çŽ æŽããããã¥ãŒã¹ïŒ
@ianpurvisèªåã®ãã·ã³ã«shakediffãã€ã³ã¹ããŒã«ããããšã¯èš±å¯ãããŠããªããšæããŸã...
@mrdoobããŒããParcelã¯ãã®ããŒãžã§ã³ã®fseventsã«äŸåããŠããããã§ã...å€åç§ã¯ããããã£ãšé«ããã®ã«åºå®ããããšãã§ããŸãã
FyiãWebpack5ã§ã®ããªãŒã·ã§ã€ã¯ã®æ¹åã«é¢ããè¯ãæ å ±...
FyiãWebpack5ã§ã®ããªãŒã·ã§ã€ã¯ã®æ¹åã«é¢ããè¯ãæ å ±...
é²æç¶æ³... Rollupããããå®è£ ããããšãé¡ã£ãŠããŸã...
ããã«ã¡ã¯ãã¿ããªã
.is**Classname**
ããããã£ãšthis.type = **Classname**
ã®ç®æšã¯æ£ç¢ºã«ã¯äœã§ããïŒ
ããã¯å€ãç䌌ã¯ã©ã¹ãã¿ãŒã³ã®æ®ãã§ã¯ãããŸãããïŒ
ãªããããå®å
šã«åãé€ãããã®äœ¿çšæ³ãéåžžã®åãã§ãã¯æ¹æ³ã«çœ®ãæããªãã®ã§ããïŒ
obj instanceof Vector3 // prefer this one for inheritance
// or
obj.constructor === Vector3 // prefer this for no inheritance
ã€ãŸããESã¯ã©ã¹ãžã®ç§»è¡ã®äžç°ãšããŠããªããžã§ã¯ãã«ã¯ãã§ã«ãã§ãã¯å¯èœãªæ£ããåããããŸã...
ã©ã€ãã©ãªã¯ä»¥åobj instanceof Vector3
ã䜿çšããŠããŸããã
ããããRich Harrisã¯ããã¹ãŠã®ãã§ãã¯ãå®è£
ããŠis*
ã«å€æŽããããªãŒã®æºããå¯èœã«ããŸããïŒïŒ9310
ã©ã€ãã©ãªã¯ä»¥å
obj instanceof Vector3
ã䜿çšããŠããŸããã
ããããRich Harrisã¯ããã¹ãŠã®ãã§ãã¯ãå®è£ ããŠis*
ã«å€æŽããããªãŒã®æºããå¯èœã«ããŸããïŒïŒ9310
çããŠãããŠããããšããç§ã¯ã¹ã¬ãããèªã¿ãŸããããšããã§ãä»ã®ã¯ã©ã¹ããããã¿ã€ããã§ãã¯ããå¿ èŠãããå Žåããªãã¯ã©ã¹ãåºåã«å«ãŸããã®ãé¿ããªããã°ãªããªãã®ãããããŸãã...ã€ãŸãããã³ãã«ãããã¯ã©ã¹Xãå¿ èŠãªå Žåãªããžã§ã¯ããã¯ã©ã¹Bã§ããããšãèªèããããã«ãã¯ã©ã¹Bã䜿çšããïŒå°ãªããšãäžèšã®ãªããžã§ã¯ããäœããã®æ¹æ³ã§äœæããããã«ïŒããã³ãã«ããå¿ èŠããããŸããã
ããšãã°ãWebGLRendererã¯ãã¬ã³ããªã³ã°ãããžãªã¡ããªãBufferGeometryã§ãããGeometryã§ãããã確èªããå¿ èŠããããŸãããGeometryã€ã³ã¹ã¿ã³ã¹ãäœæããããšã¯ãããŸããã ã»ãšãã©ã®three.jsã¢ããªã±ãŒã·ã§ã³ã¯BufferGeometryã®ã¿ã䜿çšããå¿ èŠããããããããªãŒã·ã§ã€ã¯ã䜿çšããŠãå¯èœãªå Žåã¯ãã³ãã«ããGeometryïŒããã³ãã®ãµãã¯ã©ã¹ïŒãåé€ããå¿ èŠããããŸãã
èŠèŠçã«...
ãã®ãã¿ãŒã³ã«ããããã³ãã«æã«WebGLRenderer
ã«åžžã«Geometry
ãå«ãŸããããã«ãªããŸãã
import { Geometry } from '../core/Geometry.js';
import { BufferGeometry } from '../core/BufferGeometry.js';
if ( geometry instanceof Geometry ) {
} else if ( geometry instanceof BufferGeometry ) {
}
ãã®ãã¿ãŒã³ã¯æ¬¡ã®ããšãè¡ããŸããã
if ( geometry.isGeometry === true ) {
} else if ( geometry.isBufferGeometry === true ) {
}
ããã¿ããªã
ãããèžãŸããŠãããããåé²ããããšã«ã€ããŠã®ç§ãã¡ã®èãã¯äœã§ããïŒ
ãŸã å€åã¯ãªããšæããŸãã ïŒ1ïŒ examples/js
ã«å«ãŸããŠããããïŒ2ïŒ examples/js
ã«å«ãŸããŠããªããã®ã¯ãã¹ãŠãES6ã¯ã©ã¹ã«å€æã§ããŸãã ãã®ããã»ã¹ãçµäºããŠããå Žåã¯ã examples/js
ãã¯ã©ã¹ã«åãæ¿ããã¿ã€ãã³ã°ã決å®ããå¿
èŠããããŸãã
èšæ¶ããããããŠç°¡åã«èª¿ã¹ãåŸãç§ãã¡ã¯ããªãã®ããšãããŸããããããŠãŸã ããã€ãã®PRãåŸ ã£ãŠããæºåãã§ããŠããŸãã
äŸåé¢ä¿/äŸã®æ¡åŒµãªã¹ããåã³ã³ãã€ã«ããŠã¿ãŠãã ããã
@DefinitelyMaybeããïŒ ããã¯çŽ æŽãããã§ãããããªãã®ãªã¹ãã¯ãšãŠã圹ã«ç«ã¡ãŸããã ãããŠã @ donmccurdyã®æŠç¥ã¯ç§ã«ã¯çã«ããªã£ãŠããŸãã ðç§ãã¡ããã§ã«è¡ã£ãäœæ¥ãééããã®ãæåã ãšæããŸãã ïŒ20070ã¯ããã©ã€ããŒã/é衚瀺ã®å€æ°ãES6ã«ç§»è¡ããããã®æŠç¥ãæäŸã§ãããããæ»æããã®ã«æé©ãªPRã«ãªããŸãïŒ renderers/webgl
ãES6ã«ç§»è¡ããããã«ãããå¿
èŠã§ãïŒã 誰ããããã§ã®è°è«ã«ãã³ãããŒã¯ããã£ã€ã ãå®è¡ããããšãã§ããã°ãç§ã¯ãããããã ããã°å¹žãã§ãã ç§ãã¡ã¯ããã€ãã®ãŸãšããªãªãã·ã§ã³ããããšæããŸãããã ããã©ãŒãã³ã¹ãè¯ãããšã確èªããå¿
èŠããããŸãã
ããã£ãã
ESã¯ã©ã¹ãžã®æžãçŽãã®äŸã®ããã«ããã€ãã®PRãå§ãããããããŸãã...
@mrdoobã¯ãjsmããjsãžã®ã¹ã¯ãªãããå®è¡ããã®ã«åé¡ããããŸããïŒ ïŒç§ã¯ããã¯æããŸããããããªããç§ãã¡ã«ãããåŸ
ã€ããšã奜ããã©ããæããŠãã ããïŒ
ãµã³ãã«ã³ãŒããã¯ã©ã¹ã«å€æããåã«ãïŒ20527ãïŒ20529ããŸãã¯å¥ã®ãœãªã¥ãŒã·ã§ã³ãæåã«ããŒãžããå¿ èŠããããŸãã https://github.com/mrdoob/three.js/issues/19986#issuecomment-718308451ã«èšèŒãããŠããæ¡ä»¶ãæºããã³ãŒããé€ããŸãã
@DefinitelyMaybeããªãã¯æåã®ã³ã¡ã³ãã§èšã£ãïŒ
- ã¯ã©ã¹ãã£ãŒã«ãã䜿çšãã
1ïŒãã¹ãŠã«ã¯ã©ã¹ãã£ãŒã«ãã䜿çšã§ãããšããããšã§ããïŒ
ãã®ããã§ã ïŒ
class Light extends Object3D {
type = 'Light';
isLight = true;
color = new Color;
intensity = 1;
constructor(color, intensity = 1) {
super();
this.color = new Color(color);
this.intensity = intensity;
}
copy() {
...
}
}
...ãŸãã¯.is*
ããããã£ã®ã¿ã§ããïŒ
ã§ã¯ã2ïŒç©ºã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ã©ãã§ããïŒ ES2015ã®ä»æ§ã«ãããšã super()
åŒã³åºãã®ã¿ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãæäŸãããŠããªãå Žåã¯æé»çã§ãããããäžéšã®åã¯ã©ã¹ã¯å®éã«ç°¡åã«å®çŸ©ã§ããŸãã
class MapControls extends OrbitControls {
screenSpacePanning = false; // pan orthogonal to world-space direction camera.up
mouseButtons = { LEFT: MOUSE.PAN, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.ROTATE };
touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
}
ãããŠ3ïŒãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã¯ã©ãã§ããïŒ
class OrbitControls extends EventDispatcher {
...
#offset = new Vector3();
// so camera.up is the orbit axis
#quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) ); <= this will go in constructor because of object.up
#quatInverse = this.#quat.clone().inverse();
#lastPosition = new Vector3();
#lastQuaternion = new Quaternion();
#twoPI = 2 * Math.PI;
update() {
... ( no more closure and return function here )
}
}
ææ°ã®Chromeã¯ããããªãã¯ã¯ã©ã¹ãã£ãŒã«ããšãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã®äž¡æ¹ããã€ãã£ãã«ãµããŒãããŠããŸã...
æåã®éµã¯ããã¹ãŠã®ãã¹ãã«åæ Œããããšã§ãã
å€æŽãå°ãªãããããšã§ãæåã¯åé¡ãå°ãªããªããŸãã
@marcofugaroã¯ã©ã¹ãã£ãŒã«ãã«å€æŽã§ããå€æ°ããŸã ããã€ããããšæããŸãããïŒ
ç§ã¯æ¬¡ã®ãããªãã®ãèŠãŠããŸãïŒ
class EdgesGeometry extends BufferGeometry {
constructor( geometry, thresholdAngle ) {
super();
this.type = 'EdgesGeometry';
ã«å€æŽãããŸããïŒ
class EdgesGeometry extends BufferGeometry {
type = 'EdgesGeometry';
constructor( geometry, thresholdAngle ) {
super();
ç§ãã new this.contructor() != new Foo()
ãã«ééããæ¹æ³ã®ããã«ããã®å Žæã®åšãã§ä»ã®ããã€ãã®èŠåã«ééããå¯èœæ§ããããŸãã
ãã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ã
ããã¯é²è¡äžã®è°è«ã§ãã 䜿çšããå Žåã¯ãã°ããæéãããããŸãã ç§ã¯ããªãã«åããããšãã§ããåé¡ãPRãããããŸããã
@marcofugaroã¯ã©ã¹ãã£ãŒã«ãã«å€æŽã§ããå€æ°ããŸã ããã€ããããšæããŸãããïŒ
ç§ã¯æ¬¡ã®ãããªãã®ãèŠãŠããŸãïŒ
ãããããã¯ä»ã§ããããšã§ãã ãã ãã .is*
ããããã£ã¯ã Object.defineProperty(this, ...
ã䜿çšããå¿
èŠããããããåæããã³æžã蟌ã¿äžå¯ã§ããå¿
èŠãããããããããè¡ãããšã¯ã§ããŸããã
ã©ã®ããã«å床ãã§ãã¯ãããŸããïŒ Object.defineProperty(this, ...
static
ããŒã¯ãŒãã䜿çšããããšã¯å¯èœã§ããããïŒ
ã©ã®ããã«å床ãã§ãã¯ãããŸããïŒ
Object.defineProperty(this, ...
static
ããŒã¯ãŒãã䜿çšããããšã¯å¯èœã§ããããïŒ
obj.is*
ã¯ã¯ã©ã¹èªäœã§ã¯ãªããã€ã³ã¹ã¿ã³ã¹äžã«ããå¿
èŠããããããç§ã¯ããã¯æããŸãã...
çŸåšã®èšå®ã§babelãæ£ç¢ºã«ãã©ã³ã¹ãã€ã«ããã®ãã©ããã¯ããããŸãããããã³ã¬ãŒã¿ã䜿çšããŠã¯ã©ã¹ãã£ãŒã«ããåæäžå¯/æžã蟌ã¿äžå¯ãšããŠèšå®ã§ããŸãã
import { unwrittable, unenumerable } from 'some/decorator/helpers.js'
class Foo {
@unwrittable<strong i="12">@unenumerable</strong>
isFoo = true;
}
@DefinitelyMaybe static
ããããã£ã¯ç°ãªããã¯ã©ã¹èªäœããã§ã¯ãªããã€ã³ã¹ã¿ã³ã¹ããã¢ã¯ã»ã¹ã§ããŸããã
class Test {
static staticProp = true
constructor() {
Object.defineProperty(this, 'definedProp', { value: true })
}
}
const test = new Test()
console.log(test.staticProp, test.definedProp)
çµæïŒ
undefined true
ç·šéïŒç§ãèšã£ãŠããããšãæ°ã«ããªãã§ãã ãã...
ã¯ãã¯ãã
ç§ã®äž»ãªãã€ã³ãã¯ããã®ããããã£ããã§ãã¯ããã³ãŒãã調æŽãããšã次ã®ããã«ãªãå¯èœæ§ããããšããããšã§ãã
class Test {
constructor() {
Object.defineProperty(this, 'definedProp', { value: true })
}
}
ã«
class Test {
static definedProp = true
constructor() {
}
}
ããã§ããã®ãã§ãã¯ãã©ãã§ããªãè¡ãããã®ãããããŠãããå€æŽã§ãããã©ããçåã«æããŸããã
@DefinitelyMaybeåé¡ã¯ãã€ã³ã¹ã¿ã³ã¹ã¿ã€ãã®æ å ±ãååŸããããšã§ãã ã§ã¯ãã€ã³ã¹ã¿ã³ã¹ã®ã¯ã©ã¹ã«ã¢ã¯ã»ã¹ããŠéçãããããååŸã§ããã®ã§ããã°ããªãéçããããã䜿çšããã®ã§ããããã ããªãã¯ãã§ã«ã¯ã©ã¹ã®ååãæã£ãŠããŸã...
obj.constructor.isFoo == true
obj.constructor.name == 'Foo'
ç·šéïŒãããæžããšãåäžã®æçµã¯ã©ã¹åã ããšæ¯èŒããŠãããã€ãã®.is *ãæã€ããšãæçµçã«åç¶æ¿ãã§ãŒã³ã§ãã¹ãããã®ã«åœ¹ç«ã€ããšãããããŸãã...
obj.constructor.isFoo || obj.constructor.isBar || obj.constructor.isBaz
Edit2ïŒã¯ããã¯ã©ã¹åã§ãåãããšãã§ããŸããããã¹ãã¯ãã£ãšè€éã§ã...
let types = getInheritanceNames(obj) // looping each .constructor.prototype.constructor.name
types.contains( 'Foo' ) || types.contains( 'Bar' ) || types.contains( 'Baz' )
ã€ã³ã¹ã¿ã³ã¹ãã
ãã£ãšã£ãšã ãããèªã¿çŽããŠãã ããã ãããç§ãèšã£ãŠããããšãæ°ã«ããªãã§ãã ããã
if ( scope.object.isPerspectiveCamera ) {
...
}
if ( geometry.isBufferGeometry ) {
...
}
if ( material.isShaderMaterial ) {
...
}
æ£ããã 2ã€ã®ããšã
examples/js
ãã¯ã©ã¹ã«åãæ¿ããã¿ã€ãã³ã°ã決å®ããå¿ èŠããããŸãã
ïŒ20527ãšïŒ20529ã®ã©ã¡ããåŸ
ã€ã¹ããããããŸãããã©ã¡ãããçŸåšã®åœ¢åŒã§examples/js
ãåäœæããããšããŠããããã§ãããããã¯ç§ãã¡ãç®æããŠããå Žæã§ã¯ãããŸããã ç§ã®æåã®ææ¡ã¯ã examples/js
ããã®ãŸãŸå€æãå§ããããšã§ãã åé¡ã¯ãç§ãã¡ãã©ããªåé¡ãæ±ããŠããã®ããšããããšã§ã...
ãŸãã @ mrdoobãæè¿èšã£ãããšãç¹°ãè¿ããããšæããŸãã
æåã®ç«æ¹äœãã¬ã³ããªã³ã°ããããã«ãåå¿è ã«ããªãã£ã«ããã³ãã©ãŒã«ã€ããŠåŠã¶ããã«åŒ·å¶ããã®ã¯å«ã§ãã
ãã°ããã®éã¢ãžã¥ãŒã«ã䜿çšããŠãã人ãšããŠãã¯ãŒã¯ãããŒã¯æ確ã§ãããäœããæ©èœãããããã«å¿ èŠãªããŸããŸãªæŠå¿µãç解ããŠããŸãã ãã³ãã©ãŒãããªãã£ã«ã¯å¿ èŠãããŸããããThree.jsã®æåã®èšè¿°æ¹æ³ã調æŽããå¿ èŠããããŸãã
ãŸããããããREPL
ãè¿œå ããããšã§ãThree.jsã察象ãšãããã®ããã®åéã§åœ¹ç«ã€å¯èœæ§ããããŸããïŒ svelteã®äŸ
ãŸãã次ã®ãããªã¯ã©ã¹ä»¥å€ã®ãã¿ãŒã³ã眮ãæããæ¹æ³ãæ確ã«ããå¿ èŠããããŸãã
function Foo() {
this.update = function () {
var priv = 'foo'
return function update() {
...
};
}();
}
ç§èŠã§ã¯ããã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã䜿çšããŠãããŒã«ã¢ãã/ããã«ãå€ããã¿ãŒã³ã«ãã©ã³ã¹ãã€ã«ãããŠãç¹å®ã®å€ããã©ãŠã¶ãããããã€ãã£ãã«å®è£ ããŠããªãããã«ããããšãã§ããŸã...
ç§èŠã§ã¯ããã©ã€ããŒãã¯ã©ã¹ãã£ãŒã«ãã䜿çšããŠãããŒã«ã¢ãã/ããã«ãå€ããã¿ãŒã³ã«ãã©ã³ã¹ãã€ã«ãããŠãç¹å®ã®å€ããã©ãŠã¶ãããããã€ãã£ãã«å®è£ ããŠããªãããã«ããããšãã§ããŸã...
ç§ã¯ãã®æŠç¥ã«åæããŸããããã¡ãã決å®ã¯ããã®ã³ãŒããç¶æããå¿ èŠãããã³ã¢ã¡ã³ãããŒã«äŸåããŸãã
ãããã ãããæåã«src
å
ã§æ«é²ããããšããå§ãããŸããã€ãŸãã @ devingfxãsrc
å
ã§èšè¿°ãããã®ãšåæ§ã«å¥åŠãªãã¿ãŒã³ãèŠã€ãã代ããã«ãã©ã€ããŒãå€æ°ã䜿çšããPRãäœæããbabelãäœããããã瀺ããŸãããããšã
ã©ã®ã¹ã¯ãªããã«é¢ããææ¡ã¯ãããŸããïŒ
æ€çŽ¢ïŒ internal
ã private
ã readonly
ð
åŸ
ã£ãŠãã ããããã¹ãŠã®_*
å€æ°ã¯ãã©ã€ããŒãã§ããããšãæå³ãããŠããŸãããïŒ
..ã
ãã®éšå±ã®è±¡ã¯src/renderers/WebGLRenderer.js
ãããããŸãã
WebGLAnimationã¯ã©ãã§ãããããã¯çŽ æµãªå°ããªã¯ã©ã¹ã§ã... https://github.com/mrdoob/three.js/pull/20070
ã©ã®ã¹ã¯ãªããã«é¢ããææ¡ã¯ãããŸããïŒ
ç§ã¯exemples/js
ã«çŠç¹ãåãããŠãããOrbitControlsã§ãããèŠã€ããŸãã...
ããã«ãããã§äœããããã瀺ããŠãã ããã
mrDoobã®æ§ææèã«äžèŽãããã®ã¯åºåãããªããšç¢ºä¿¡ããŠããŸãð
å³ã«ã
ãšãã£ãšã ç§ã®é è³ã¯ã©ãã«ãããŸãã... examples
ãã©ã«ããŒã®å€æãéå§ããã«ã¯ãïŒ20527ãŸãã¯ïŒ20529ïŒãŸãã¯ãã®ä»ïŒã®ãããããããŒãžããå¿
èŠããããŸãã examples/js
ã¯åœé¢ã®éãåºå·ããŠããŸããã€ãŸãã examples/js
ãã©ã«ããŒãã¯ã©ã¹ã§ã¿ããããããšã¯çµ¶å¯Ÿã«ãããŸããã ããã¯IEãšã®äºææ§ãå£ãã§ããã...ããæ¯ãã€ããŸãã
ããŒã«ã¢ãã/ããã«ãå€ããã¿ãŒã³ã«ãã©ã³ã¹ãã€ã«ãã
ãããã®JSMããJSPRãŸã§ã®èãæ¹ãæšæž¬ãããµããŒãããŸãã 決å®ãäžããããã examples/jsm
ãçãããšãã§ããŸãã
src
ã«ãã©ã€ããŒãå€æ°ãè¿œå ããããšã¯ãããããã®å€æ°ã¯ç¹å®ã®ç®çãæã£ãŠããã®ã§ãéãã§ã¯ãããªãããšããé·å¹Žã®åé¡ã«å¯Ÿããè¯ã解決çã«ãªããããäŸç¶ãšããŠè¯ãèãã§ãã
examples/js
ãã©ã«ããŒã«ã¯ã©ã¹ã§è§Šããããšã¯ã絶察ã«ãããŸããã
ãã£ãšãç§ã®æªããç§ã¯ãã¡ããexemples/jsm
ãæãäžããããšã«ã€ããŠè©±ããŠããŸããã exemples/js
ã¯è¿ãå°æ¥ãæ§ç¯ããããããŒãžã§ã³ã«ãªãã§ããã...
ããã¯IEãšã®äºææ§ãå£ãã§ããã...ããæ¯ãã€ããŸãã
äœïŒïŒïŒ 2020幎ã®InternetExplorerã«ã€ããŠã¯ãŸã 話ãåã£ãŠããŸããïŒ ãã®7æ³ã®æç«ã§ã®WebGLã©ã€ãã©ãªã®äºææ§ã«ã€ããŠè©±ããŠããã®ã§ããïŒ çå£ã« ïŒïŒ 1.4ïŒ
..ã
_ïŒ3人ã®ãŠãŒã¶ãŒãIEã§ã®äœ¿çšãèšç»ããŠããå Žåã¯ãåéããçµ±èšã³ã¬ã¯ã¿ãŒãã©ã€ãã©ãªã«è¿œå ããå¿
èŠããããŸãïŒ_
ðãšããã§ããããããã«ãååšããçç±ã§ã...
ãã«ããã¡ã€ã«three.js
ãšthree.min.js
ãããã³examples/js
å
ã®ãã¹ãŠã®ãã¡ã€ã«ã¯ãIE11ãªã©ã®å€ããã©ãŠã¶ãŒãåŒãç¶ããµããŒãããå¿
èŠããããŸãã
æšå¹ŽãIE 11ïŒïŒ18091ïŒã®ãµããŒããåæ¢ããPRããããŸãããããã®ãã©ãŠã¶ãŒã«äŸåããŠãããŠãŒã¶ãŒããŸã ããããšãå€æããŸããã ãŸãããããžã§ã¯ãã®çŸåšã®ããªã·ãŒã¯ããŠãŒã¶ãŒãES6ããES5ãžã®å€æãèªåã§å®è¡ããªãããã«ããŠãŒã¶ãŒã«ããããã®ãã¡ã€ã«ãæäŸããããšã§ãã ããã¯ïŒ20455ã§ãè°è«ãããŸããã
ãããžã§ã¯ãã®çŸåšã®ããªã·ãŒã¯ããŠãŒã¶ãŒãES6ããES5ãžã®å€æãèªåã§å®è¡ããªãããã«ããŠãŒã¶ãŒã«ããããã®ãã¡ã€ã«ãæäŸããããšã§ãã
ããŠããœãŒã¹ãææ°ã®æ¹æ³ã§éçºã§ããçµæã®ãã«ããèªã¿åãå¯èœã§ã¯ãªããæ©èœããŠããã ãã§ããã°ããã®ããªã·ãŒã«åé¡ã¯ãããŸãã...
ãã©ã³ã¹ãã€ã©ãŒã¯ãã®ãããªéãã³ãŒããåºåããããã§ãïŒ
ãããã£ãŠãESnextã§src
ãæžã蟌ãŸãããã«ããéãå Žåã§ãåé¡ã¯ãããŸãããããã®ãã¡ã€ã«ãèªã¿åãå¯èœã§ãã³ã¡ã³ããä»ããããæŽåœ¢åŒã§ããå¿
èŠãããå Žåã¯ã exemples/js
ã«æœåšçãªåé¡ããããŸã...
ãšããã§ãç§ã¯äœåºŠãèªåèªèº«ã«ããªãããã€ãã®æš¡ç¯ãæš¡ç¯ã§ãããäž»èŠãªã³ã¢ãœãŒã¹ã§ã¯ãªãã®ããèªåããŠããŸãïŒïŒ
äŸïŒã³ã³ãããŒã«ã¯éåžžããã®ãŸãŸäœ¿çšããããªãã·ã§ã³ã®ã¢ããªã³ã®ããã«ã³ããŒããããããžã§ã¯ããäœæããããã«èªãã ãã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸããããå®éã®äŸãšããŠã¯äœ¿çšãããŸãããããšãã°ãå転ããç«æ¹äœã®äŸã®ããã«...
_ïŒç§ã¯3ã€ã®æ€çŽ¢ã§æ ãå§ããŸããïŒãwebglå転ãã¥ãŒãããšãã®äŸã¯ããã©ãããã©ãŒã äžã移åãããã¥ãŒãã䜿ã£ãå°ããªã²ãŒã ãéçºãã1æ³ã®ã³ãŒããã©ãœã³ã«ã€ãªãããŸãã^^ïŒ_
é©åãªãã«ãã䜿çšããå Žåãã³ã¢ã«ãããã¡ã€ã«ãšexamplesãã£ã¬ã¯ããªã«ãããã¡ã€ã«ã¯é¢ä¿ãããŸããã ããªãŒã·ã§ã€ã¯ãé©åã«æ©èœããéãããã«ãã«ã¯å®éã«å¿ èŠãªãœãŒã¹ãã¡ã€ã«ãããããŸããã
ç§ã«ãšã£ãŠãã³ã¢ãšäŸã®åºå¥ã¯ããã®çš®ã®ã¯ãŒã¯ãããŒããŸã å©çšã§ããªãã£ãæ代ã«ç±æ¥ããŠããŸãã ã³ã¢ã¯å®å šã«åäžã®ã³ã³ããŒãã³ããšããŠã€ã³ããŒãããå¿ èŠããããããã³ã¢ã¯å°ããã³ã³ãã¯ãã§ããå¿ èŠããããŸãã æã_éèŠãª_ãã¡ã€ã«ã®ã¿ãå«ããå¿ èŠããããŸãã æçµçã«ã³ã¢ã«å«ãŸãããã¡ã€ã«ã¯ãããæå³ã§ã±ãŒã¹ãã€ã±ãŒã¹ã®æ±ºå®ã§ããã
é©åãªãã«ãã䜿çšããå Žåãã³ã¢ã«ãããã¡ã€ã«ãšexamplesãã£ã¬ã¯ããªã«ãããã¡ã€ã«ã¯é¢ä¿ãããŸããã ããªãŒã·ã§ã€ã¯ãé©åã«æ©èœããéãããã«ãã«ã¯å®éã«å¿ èŠãªãœãŒã¹ãã¡ã€ã«ãããããŸããã
ããã¯ESã¢ãžã¥ãŒã«ã®ãŠãŒã¶ãŒã«ã®ã¿åœãŠã¯ãŸããŸã;ïŒ
æãåèã«ãªãã³ã¡ã³ã
@ianpurvisçŽ æŽãããïŒ ããŒã«ã¢ããã䜿çšããŠããŸããïŒ èšå®ãå ±æã§ããŸããïŒ
@mrdoobç§ã¯ã€ãã«ããã€ãã®ãã¹ããããããã«åããŸããã ç§ã¯å人çã«webpackã䜿çšããŠããã®ã§ãããã䜿ã£ãŠããã€ãã®ãã¹ããè¡ããŸããã誰ããèå³ãæã£ãŠããå Žåãç§ã®èšå®ã¯ããã§ãã
ãã®ã³ãŒãããã¹ãããŸãã
0.119.1
0.120.1
ã ããäœããæšã«æºããŠãããçŽ æŽãããïŒ
ããã«è©³ãã調ã¹ãŠã¿ããšãã¯ã©ã¹
AudioListener
ããã³ãã«ã«å«ãŸããŠããªãããã§ãããã°ããããã¥ãŒã¹ã§ããWebpackã¯ã@ ianpurvisã«ãã£ãŠææãããæªäœ¿çšã®å€æ°ãèªåçã«åé€ããŸãã
ãã®åŸãã¯ã©ã¹å€ã§å®çŸ©ãããéçã¡ãœããããã¹ãããããšã«ããŸãã
æ®å¿µãªãããããã«ããã¯ã©ã¹ã¯ããªãŒã·ã§ã€ã¯ã§ããªããªããŸã
ããã«æãäžããŠã¿ããšãã©ãã«ã䜿çšãããŠããªã
DodecahedronGeometry
ã®ãããªãžãªã¡ããªã¯ã©ã¹ããŸã ãã³ãã«ã«å«ãŸããŠããããšã«æ°ä»ããŸãããåŸã§ç§ãçºèŠããã®ã¯ãããã¯
three.module.js
ãã³ãã«å ã®ãã®Geometries
ãªããžã§ã¯ããåå ã§ããããã¯ãObjectLoaderã§ãã®ãããªãã¿ãŒã³ã䜿çšãããšèªåçã«çæãããŸãã
ObjectLoader
ãã¯ã©ã¹ã«ãããšãããã¯ãããããªããªããsrc/geometries
ã¯ããªãŒã·ã§ã€ã¯å¯èœã«ãªããŸãã