Three.js: рдореЙрдбреНрдпреВрд▓рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдУрд░ рдмрдврд╝рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдордИ 2014  ┬╖  153рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

рдмреНрд░рд╛рдЙрдЬрд░рд┐рдлрд╛рдЗ
рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЬреЛрдбрд╝реЗрдВред

рдиреЛрдЯ: рдЗрд╕рдХреЗ рд▓рд┐рдП рддреАрди.рдЬреЗрдПрд╕ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░рд┐рдлрд╛рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдареАрдХ рд╣реИ, рддреЛ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ...

рддреБрдо рдореБрдЭреЗ рдорд┐рд▓ рдЧрдП! рдЪреВрдВрдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЬреАрд╡рдВрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреАрди-рдЬреЗрдПрд╕рдиреЗрдХреНрд╕реНрдЯ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ KeyframeTrack ) рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдЬрд▓реНрдж рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЫреЛрдЯрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд░реНрддрдорд╛рди рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ (рдпреВрдПрдордбреА рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдм рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред

рд╕рднреА 153 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред

рдиреЛрдб/рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдорд╛рдирддреА рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

// src/geometry/BoxGeometry.js
var Geometry = require('./Geometry.js');
var Vector3 = require('../core/Vector3.js');
module.exports = BoxGeometry;

function BoxGeometry() {
  // ...
}

BoxGeometry.prototype = Geometry.prototype;

рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ three.js рдЙрдкрднреЛрдХреНрддрд╛ browserify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рднрд╛рдЧреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдЪреБрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд╡реЗ рдХреЗрд╡рд▓ Scene , BoxGeometry , PerspectiveCamera , рдФрд░ WebGLRenderer рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( Object3D рдЖрджрд┐), рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдмрдВрдбрд▓ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЗрдЪреНрдЫрд┐рдд рдлреАрдЪрд░ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рди рд╣реЛред рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░, рд╣рдо рдЙрди рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирддреЗ рд╣реИрдВ

// src/three.js
var THREE = { rev: 101 }
module.exports = THREE

THREE.Geometry = require('./geometry/Geometry.js')
THREE.BoxGeometry = require('./geometry/BoxGeometry.js')
// ...

рдиреЛрдЯ: рдореБрдЭреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рдЧрднрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрдВрдд рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВрдЧреЗ рдЬреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо (рдиреЛрдб/рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝, рдПрдПрдордбреА) рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ ( window ) рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реА рд╕рдореАрдХреНрд╖рд╛:

  • рдЕрдЪреНрдЫреА рдореЙрдбреНрдпреВрд▓рд░ рд╢реИрд▓реА рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
  • рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪреБрдирдиреЗ рдФрд░ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП three.js рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдирдпрд╛ рдмрд╣реБрдд рд╕реАрдзреЗ рдЖрдЧреЗ рд╣реЛрдЧрд╛ред

рдХреБрдЫ рдЕрдиреНрдп рдлрд╛рдпрджреЗ:

  • рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛/рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдЖрдк рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдЖрдк рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рдмрдбрд╝реА рддреАрди.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ

@ shi-314 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ You can structure your code рдФрд░ You can build for production рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдк рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рд╢рд┐рдлреНрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рддреАрди.рдЬреЗрдПрд╕ рд╕реНрд░реЛрдд рдпрд╛ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдПрдХ рдЕрднреНрдпрд╛рд╕ рдЬреЛ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ instanceof : https://github.com/mrdoob/three.js/blob/master/src/core/Geometry .js#L82

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдк рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдЯреНрд░реА рдореЗрдВ рдПрдХ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЗрдВрд╕реНрдЯреЙрдлрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Geometry.isGeometry(geom) рд╕реНрдЯрд╛рдЗрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ рдлреАрдЪрд░-рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЪреЗрдХ рдХреЗ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдордирдЬ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@kumavis рдореИрдВ

THREE.MeshMyCoolMaterial = function (...) { ... }

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ Browserify рд╣реЛрддрд╛ рддреЛ рдЖрдк:

var MeshLambertMaterial = require('./../MeshLambertMaterial');
var MeshMyCoolMaterial = function (...) {...}

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдПрдХ рдЬреИрд╕рд╛ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ THREE.MeshLambertMaterial рдФрд░ MeshMyCoolMaterial рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдФрд░ You can build for production рдореЗрд░рд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА рдорддрд▓рдм рдерд╛ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛: allows three.js consumers using browserify to pick and choose functionality ред

@ shi-314 рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрд╣ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЙрдкрднреЛрдХреНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ:

// given that `data` is a hash of a serialized object
var ObjectClass = THREE[ data.type ]
new ObjectClass.fromJSON( data )

рдпрд╣ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреНрд░рдорд╛рдВрдХрди / рдЕрдХреНрд░рдорд╛рдВрдХрди рд░рд┐рдлреИрдХреНрдЯрд░ рд╕реЗ рд╣реИ
https://github.com/mrdoob/three.js/pull/4621

рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рднреА рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред

рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рд▓рд╛рдн:

  • рдЕрдкрдиреЗ рд▓рд┐рдП UMD рдмрд┐рд▓реНрдб рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк browserify рдХреЗ standalone рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреВрдПрдордбреА рд░реИрдкрд░ рдХреЗ рд╕рд╛рде рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯрд┐рдВрдХрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░реАрдлрд╛рдИ/рдПрдирдкреАрдПрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рддреАрдиjs (рдЬреИрд╕реЗ poly2tri, color-string , рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЦреАрдВрдЪрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
  • рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдЬреИрд╕реЗ рд╡реЗрдХреНрдЯрд░/рдЧрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдореЗрдВ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ" рдХреЛ рдЕрд▓рдЧ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрдИ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрдЧ/рдореБрджреНрджреЛрдВ, рдкреАрдЖрд░ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рднрдВрдбрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдереНрд░реАрдЬреЗрдПрд╕ рдореБрджреНрджреЛрдВ рдХреА рд╕рдлрд╛рдИ)ред
  • рдПрдирдкреАрдПрдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдХреЛрдб рдмреНрд░реЗрдХрд┐рдВрдЧ рдХреА рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ threejs-vecmath рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рджреВрд╕рд░реА рддрд░рдл, рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреИрдЪ рдпрд╛ рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
  • рдпрд╣ "рдЕрддрд┐рд░рд┐рдХреНрдд" рдЬреИрд╕реЗ EffectComposer рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╢реЗрдбреНрд╕ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ (рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ npm install threejs-shader-bloom )
  • рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдВрддрд┐рдо рд╡рд┐рддрд░рдг рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рдФрд░ рдЕрдзрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрдВрддрддрдГ рд╡рд┐рднрд┐рдиреНрди "рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд░" рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ require() рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░рд╛ рдРрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

@mrdoob рдФрд░ рдЕрдиреНрдп рд▓реЗрдЦрдХреЛрдВ рдХреЛ; рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ NPM/Browserify рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХреЗ "рджрд░реНрд╢рди" рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред рдпрд╣ рдереНрд░реАрдЬреЗрдПрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ; рдмрдбрд╝реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдмрд╣реБрдд рд╕реА рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдУрдкрди рд╕реЛрд░реНрд╕, рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдереНрд░реА.рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реЗрдбрд░реНрд╕, рдЬрд┐рдпреЛрдореЗрдЯреНрд░реА, рдореЙрдбрд▓ рд▓реЛрдбрд░ рдЖрджрд┐ рдХрд╛ рдПрдХ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдирдкреАрдПрдо рдпрд╛ рдЬреАрдердм / рдШрдЯрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓ рдПрдХ рдбреЗрдореЛ рд╣реЛрд╕реНрдЯ рдХрд░рдХреЗ рд╕рд╛рдорд╛рди рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд▓реЛрдЧ 'рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВ'ред рддреАрди.рдЬреЗрдПрд╕ рдмреЗрд╣рддрд░ рдХреЗ рд╣рдХрджрд╛рд░ рд╣реИрдВ!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рддреАрди рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬреЗрдПрд╕ рдпрд╣ рд╣реИ рдХрд┐ рдереНрд░реА.рдЬреЗрдПрд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдЕрд╕рдВрдЧрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн _bits_ of Three.JS рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

+1

рдХреЙрдордирдЬреЗрдПрд╕/рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП +1, рдпрд╣ рдХреЛрд░ рдХреЛ рдЕрдзрд┐рдХ рд╣рд▓реНрдХрд╛ рдмрдирд╛ рджреЗрдЧрд╛ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд┐рдЯ рд╣реЛрдВрдЧреЗ, рднрд▓реЗ рд╣реА рд╡реЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рд╕реЗ рдЖрдП рд╣реЛрдВ

рддреАрди.рдЬреЗрдПрд╕ рдХреЛ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдЧрдд рдЖрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддреГрддреАрдп рдкрдХреНрд╖ рдРрдбрдСрди (рдЧрд╡рд╛рд╣ рдЬреИрд╕реЗ рдЬреЗрдЯрд┐рдПрди рдХреЗ THREEx рдореЙрдбреНрдпреВрд▓) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯрдЕрдк рдХреА рд╕рд╛рджрдЧреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЗрд╡рд▓ рд░реИрдкрд░ рд╣реИрдВред

рдХреНрд▓реЛрдЬрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдмрд┐рд▓реНрдб рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рд╡реЗ Google рдХреЗ рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рдВрдкреВрд░реНрдг-рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдореГрдд рдХреЛрдб рдЙрдиреНрдореВрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред

рд╕рд░рд▓рддрд╛ рдХреА рд╢рд╛рди рдХреЗ рд▓рд┐рдП +1, рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдирджреЗрдЦреА рдХреА рдЧрдИ, рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП

+1

рддреАрди.рдЬреЗрдПрд╕ рдХреЛ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдЧрдд рдЖрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддреГрддреАрдп рдкрдХреНрд╖ рдРрдбрдСрди (рдЧрд╡рд╛рд╣ рдЬреИрд╕реЗ рдЬреЗрдЯрд┐рдПрди рдХреЗ THREEx рдореЙрдбреНрдпреВрд▓) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧреИрд░-рдиреЛрдб рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдпреВрдПрдордбреА рдмрд┐рд▓реНрдб рдЕрднреА рднреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред THREEx рдЬреИрд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдзрд╛рд░рдг <script> рдЯреИрдЧ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдореБрд╢реНрдХрд┐рд▓ рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА: рдЕрдЧрд░ рд╣рдо рдХреЙрдордирдЬреЗрдПрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реИрдВ рддреЛ рд╣рдо require() рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧрдЗрди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж browserify-shim рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯрдЕрдк рдХреА рд╕рд╛рджрдЧреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЗрд╡рд▓ рд░реИрдкрд░ рд╣реИрдВред

рдереНрд░реАрдЬреЗрдПрд╕ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдкреНрд▓рдЧрдЗрди/рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рднрдпрд╛рдирдХ рд╣реИ, рдФрд░ "рд╕рд░рд▓" рдпрд╛ рдЖрд╕рд╛рди рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдереНрд░реАрдЬреЗрдПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд▓рдЧрдЗрди рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдЗрдлреЗрдХреНрдЯрдХрдВрдкреЛрдЬрд░, рдпрд╛ рдлрд░реНрд╕реНрдЯрдкрд░реНрд╕рдирдХрдВрдЯреНрд░реЛрд▓, рдпрд╛ рдПрдХ рдореЙрдбрд▓ рд▓реЛрдбрд░, рдпрд╛ examples рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рддреИрд░рддреА рдЕрдиреНрдп рдХрдИ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред рдЕрднреА рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ:

  • рдереНрд░реАрдЬреЗрдПрд╕ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрдорд╛рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
  • рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ vendor рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ
  • рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓реНрдк / рдЧреНрд░рдВрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддрд╛рд░ рджреЗрдВ; рдЙрдиреНрд╣реЗрдВ _рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛_ рдЕрдиреНрдпрдерд╛ рдЪреАрдЬреЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреАред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЕрдзрд┐рдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕реВрдЪреА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦреЗрдВред
  • рд╣рд░ рдмрд╛рд░ рдереНрд░реАрдЬреЗрдПрд╕ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдЪрд░рдг 1 рдФрд░ 2 рджреЛрд╣рд░рд╛рдПрдВ; рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдирдпрд╛ рдХреЛрдб рдкрд┐рдЫрдбрд╝рд╛-рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ

рдЕрдм, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП, browserify рдХреЗ рд╕рд╛рде рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

var FirstPersonControls = require('threejs-controls').FirstPersonControls;

//more granular, only requiring necessary files
var FirstPersonControls = require('threejs-controls/lib/FirstPersonControls');

рд╡реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ require('threejs') рдФрд░ рдХреБрдЫ рдФрд░ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ GLSL рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдЗрдВрдЧреБрд▓реЗрд╢рди ) рд╣реЛрдВрдЧреЗред рдирд┐рд░реНрднрд░рддрд╛/рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрди рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рдВрдЯ/рдЧрд▓реНрдк рдХреЙрдиреНрд╕рдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореБрд╢реНрдХрд┐рд▓ рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА: рдЕрдЧрд░ рд╣рдо рдХреЙрдордирдЬреЗрдПрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ () рдХреИрд╕реЗ рд╣реЛрдЧреА?

рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рддреАрди.рдЬреЗрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдордирдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдореИрдиреБрдЕрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд▓реЗрдЦрдХреЛрдВ рдпрд╛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реЗ 'рдорд╛рдирдХ' рддреАрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

var THREE = require('three');

THREE.EffectComposer = // ... etc, remembering to include copyright notices :)

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╢реЗрдбреНрд╕ рдФрд░ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдЖрджрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реВрдВред

рдЬрдм рддрдХ 'рдереНрд░реАрдЬреЗрдПрд╕-рдлреБрд▓' рдпрд╛ 'рдереНрд░реАрдЬреЗрдПрд╕-рдХреНрд▓рд╛рд╕рд┐рдХ' рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╣реИ рддреЛ рдпрд╣ рдХреЙрдордирдЬреЗрдПрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдереНрд░реА.рдЬреЗрдПрд╕ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддрд░реАрдХрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ!

+1
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЦрдВрдбрд┐рдд рддреАрдиj рдореЙрдбреНрдпреВрд▓ npm, рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ
рдбреЗрд╡рд▓рдкрд░реНрд╕ CommonJS env рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
5 рдЬреВрди 2014 рдХреЛ рд░рд╛рдд 9:19 рдмрдЬреЗ, "рд╢рд╛рд░реНрд▓реЛрдЯ рдЧреЛрд░" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореБрд╢реНрдХрд┐рд▓ рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА: рд╣рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧрдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рд╣реЛрдЧреА () рдпрджрд┐ рд╣рдо?
рдХреЙрдордирдЬреЗрдПрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╣реИрдВ?

рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рддреАрди.рдЬреЗрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдордирдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рд╕рд╛ рд╣реИ
рдПрдХ рдореИрдиреБрдЕрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рднрд╛рдЧ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛
рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓реАрдЧреЗрд╕реА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛
рдЬреЛ рд▓реЗрдЦрдХреЛрдВ рдпрд╛ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг 'рдорд╛рдирдХ' рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ
рддреАрди рд╡рд╕реНрддреБ, рдЬрд┐рд╕реЗ рддрдм рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ
рдпрд╣ред

рд╡рд░ рддреАрди = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рддреАрди');
THREE.EffectComposer = // ... рдЖрджрд┐, рдХреЙрдкреАрд░рд╛рдЗрдЯ рдиреЛрдЯрд┐рд╕ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ :)

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдореИрдВ
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╢реЗрдбреНрд╕ рдФрд░ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдЖрджрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдЬрдм рддрдХ 'рдереНрд░реАрдЬ-рдлреБрд▓' рдпрд╛ 'рдереНрд░реАрдЬреЗрдПрд╕-рдХреНрд▓рд╛рд╕рд┐рдХ' рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рд╣реИ, рддрдм рддрдХ
рдпрд╣ рдкреБрд░рд╛рдиреЗ рддреАрди.рдЬреЗрдПрд╕ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддрд░реАрдХрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ
рдХреЙрдордирдЬреЗрдПрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ!

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mrdoob/three.js/issues/4776#issuecomment -45236911ред

рдпрд╣ рд╢реЗрдбрд░реНрд╕ рдХреЛ рдореЙрдбреНрдпреВрд▓рд░ рднреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП glslify рдХрд╛ рдЙрдкрдпреЛрдЧ

рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдлреНрд░реЗрдо.рдЬреЗрдПрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛.рдЬреЗрдПрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЕрднреА рднреА рд╕реАрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЗрд╕реЗ "рд╕рдВрдХрд▓рд┐рдд" рдХреИрд╕реЗ рдХрд░реЗрдВред рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рд╕реЗ three.min.js рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓/рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреНрдпрд╛ рд╣реИ?

рдореИрдВ gulp.js рдХреЛ gulp- browserify рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ http://travismaynard.com/writing/no-need-to-grunt-take-a-gulp-of-fresh-air :wink:

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░: (рдиреЛрдб рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд╕реАрдорд┐рдд рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, npm, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ browserify)

  1. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ node.js рдореЙрдбреНрдпреВрд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВ (рд╡рд╣ npm, рдореЙрдбреНрдпреВрд▓, рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ () рд╣реИ)
  2. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ browserify рднреА рдмрдврд╝рд┐рдпрд╛ рд╣реИ

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕рднреА рдХреЛ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдХреА рд╕рдорд╛рди рд╕рдордЭ рдереА (рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝, рдХреЙрдордирдЬ, рд░рд┐рдХреНрд╡рд╛рдпрд░рдЬ, рдПрдПрдордбреА, рдпреВрдПрдордбреА рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдЕрдм рдЕрдЧрд░ рдЖрдк рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  1. рдЬреЗрдПрд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред
  2. рд╡рд╛рд╣, рдЕрдм рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рднреА рдЪрд▓рддрд╛ рд╣реИред
  3. рд╡рд╣ node.js рд╣реИ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП node.js рдореЗрдВ рд╕рд╛рдорд╛рди рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ
  4. рд▓реЗрдХрд┐рди рдореИрдВ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛/рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛/рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реВрдВред
  5. рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рдЕрдм npm рдЗрдВрд╕реНрдЯрд╛рд▓ рдореЙрдбреНрдпреВрд▓ рдЪрд▓рд╛рдПрдБ
  6. рдЕрдм рдЗрди рд╢рд╛рдВрдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
  7. рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
  8. рдЕрдм рд░реБрдХрд┐рдП, рд╣рдордиреЗ рдЕрднреА-рдЕрднреА JS рдореЗрдВ рдвреЗрд░ рд╕рд╛рд░реА рдЪреАрдЬрд╝реЗрдВ рд▓рд┐рдЦреА рд╣реИрдВ рдЬреЛ node.js . рдкрд░ рдЪрд▓рддреА рд╣реИрдВ
  9. рдЬреЗрдПрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣рдо рдЗрди рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд╣реАрдВ рдкрд░ Browserify рддрд╕реНрд╡реАрд░ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ requJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд() рдЬреЛ рддреЗрдЬ рд╣реИрдВ)ред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП Browserify рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬреИрд╕реА рдХреБрдЫ рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИред (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдмреНрд▓рд╛' + рдЪрд░) рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдпрд╣ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рднреА рд╕реНрд╡реИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдиреЛрдб.рдЬреЗрдПрд╕ рдирд┐рд░реНрднрд░ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХрд░рдг рдкрд░рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдЬреЗрдПрд╕ рдмрд┐рд▓реНрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рд╛рдорд╛рди рд╣реИрдВ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/substack/node-browserify#usage

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рддрдХ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо "рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░" рдкрд░ рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВред

  • рддреАрди.рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╕рд┐рдХрддрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)
  • рдПрдХ рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рддрд╛рдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рдореЙрдбреНрдпреВрд▓рд░ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ
  • рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрди.рдЬреЗрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
  • рдирдИ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдЯреВрд▓рдЪреЗрди (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдЕрдЬрдЧрд░, рдиреЛрдб.рдЬреЗрдПрд╕, рдпрд╛ рд╕рд╛рдзрд╛рд░рдг рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдпрд╛ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдЬреЗрдПрд╕ рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред
  • рдЕрдЧрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рд╣реЛрдВ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде, рдЬреИрд╕реЗ рдХрд┐ рдЯреНрд░реИрдХрдмреЙрд▓рдХрдВрдЯреНрд░реЛрд▓, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЗрд╕рд╕реЗ рд╡рд┐рдЦрдВрдбрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
  • рдЗрд╕рд╕реЗ рд╡рд┐рд╡рд┐рдзрддрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддреАрди.рдЬреЗрдПрд╕ рдХреА рдПрдХ рддрд╛рдХрдд рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдмрд┐рдВрджреБ рд╣реИ

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╡рд┐рдзрддрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ npm рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рд╕рд╡рд╛рд░реА) рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛ, рдХреЛрдб рдХреЛ рд░рд┐рдлреИрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрджрд▓рдирд╛ред

@mrdoob browserify рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдХреБрдЫ рдЯреВрд▓ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ: https://github.com/substack/node-browserify/wiki/browserify-toolsред

three.min.js , рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЫреЛрдЯрд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рддреБрдо рд╕рдм рд╣реИ var three = require('three') рдЕрдкрдиреЗ рдореЗрдВ project.js рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдиреЗ browserify project.js > bundle.js && uglifyjs bundle.js > bundle.min.js ред рдиреЛрдЯ: рдЖрдк рдЕрднреА рднреА <script src="min.js"> рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ рдХреЛрдб рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реВрдВ

if ('undefined' === typeof(window))
  var window = global && global.window ? global.window : this
var self = window

рддрдерд╛

module.exports = THREE

рдлрд┐рд░ рдореИрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ

module.exports = function(THREE) { /* extension-code here */ }

рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:

var three = require('./wrapped-three.js')
require('./three-extension')(three)

рддреЛ рдпрд╣ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ @kumavis рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ _рд╡рд┐рд╢рд╛рд▓_ рд▓рд╛рдн рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рддреАрди рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдирд╛ рдФрд░ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

http://modules.gl/ рднреА рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╣рдж рддрдХ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рд╣рд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

@mrdoob @shi-314 gulp- browserify (рдпрд╛рдиреА vinyl-source-stream рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЧреНрд░рдВрдЯ/рдЧрд▓реНрдк/рдЖрджрд┐ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рдЕрдВрдд рдореЗрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдереНрд░реАрдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрднреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЖрдк рдХрд┐рддрдиреА рдкрд┐рдЫрдбрд╝реА-рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдХреБрдЫ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдврд╛рдВрдЪреЗ рдФрд░ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдмрдХреБрдЫ рдореЙрдбреНрдпреВрд▓рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:

  • рд╕рднреА рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛрдб рдХреЛ рдХреЙрдордирдЬреЗрдПрд╕ рдирд┐рд░реНрдпрд╛рдд/рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЙрдкрдХреНрд░рдо рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд╕реВрд░рдд ../../../math/Vector2 рдЖрджрд┐ рд╣реЛрдВрдЧреЗред
  • рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦрдВрдбрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП three-scene рдХреЛ three-lights рдЖрджрд┐ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рдЦрдВрдбрди рдереНрд░реАрдЬреЗрдПрд╕ рдЬреИрд╕реЗ рдмрдбрд╝реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдзреЗ рдореЗрдВ рджрд░реНрдж рд╣реЛрдЧрд╛ред
  • рдпрджрд┐ рд╣рдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реЛрдЧрд╛ред рдврд╛рдВрдЪреЗ рдореЗрдВ рдХрд╣реАрдВ рднреА рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкреВрд░реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдЯрдХреНрдХрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрднреЛрдЧ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реЛрдЧрд╛: require('three/src/math/Vector2')

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡? рд╣рдо рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реА рджреЛ рдЪреАрдЬреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:

  1. рдЫреЛрдЯрд╛ рд╢реБрд░реВ рдХрд░реЛ; рд╡реЗрдХреНрдЯрд░/рдХреНрд╡рд╛рдЯрд░рдирд┐рдпрди, рд░рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг, рддреНрд░рд┐рднреБрдЬ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реА рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВред рдпреЗ рдЪреАрдЬреЗрдВ рдПрдирдкреАрдПрдо рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ, рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рдг рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд┐рдВрдЧ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред
  2. рдЬрдм рдирдП рдХреЛрдб рдХреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛, рдпрд╛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ (рдЬреИрд╕реЗ рдкреЙрд▓реА2рдЯреНрд░реА/рдЯреЗрд╕2), рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдПрдирдкреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред

рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдореЙрдбреНрдпреВрд▓рд░ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд┐рддрдиреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИрдВред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ!

рдореБрдЭреЗ рдЬреЛ рдбрд░ рд▓рдЧрддрд╛ рд╣реИ рд╡рд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рд╣реИ рдЬреЛ рдЕрднреА рд╢реБрд░реВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░/рдореЙрдбреНрдпреВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...

рдпрд╣рд╛рдВ @mrdoob рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ, рдФрд░ рдмрд╣реБрдд рд╕реЗ рд╕рд╣рдпреЛрдЧреА, рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реИрдВ (рдмрд▓реНрдХрд┐ рд╡реАрдПрдлрдПрдХреНрд╕/рдПрдиреАрдореЗрд╢рди рдЯреАрдбреА)ред рд╡реЗрдмрдЬреАрдПрд▓ рдФрд░ рдереНрд░реА рдХреЛ рдЪреБрдирдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рд░рд╣рд╛ рд╣реИ (рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдордореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдореМрдХреЗ рдкрд░ рд╣реА рдЬреЗрдПрд╕ рд╕реАрдЦрдирд╛ рдкрдбрд╝рд╛)ред рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдкрдврд╝рд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╕реЗ рдХрдИ рдмрд╛рд░, рдореБрдЭреЗ рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд╛рдВрдкрдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рддреАрди рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЪрд▓реЗ рдЧрдП рддреЛ рдореЗрд░реА рдкреНрд▓реЗрдЯ рдореЗрдВ рдФрд░ рдХрд┐рддрдирд╛ рдХрд╛рдо рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдореБрдЭреЗ рдХреИрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИред

рд░реЗрдкреЛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд UMD ( browserify --umd ) рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде, рдореМрдЬреВрджрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

@mrdoob рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓рддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдк рдФрд░ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рджрд░реНрдЬрдиреЛрдВ рдкреЛрд╕реНрдЯ рдкрдврд╝рдирд╛ рднрд╛рд░реА рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдореМрдЬреВрджрд╛ рд╕рд┐рд╕реНрдЯрдо рдЯрд┐рдХрд╛рдК рдирд╣реАрдВ рд╣реИред рдХрднреА рднреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдпрд╣ рдПрдХ рдЦреЛрдЬ- рдФрд░- рдЦреЛрдЬ рд╣реИ рдХрд┐рд╕реА рднреА рдирдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдВрджрд░реНрдн рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде, рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрде рд╣реИред

@repsac рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреАрди рдФрд░ рд╕реБрд▓рдн рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ, рд▓реЛрдб рдСрд░реНрдбрд░ рджреБрдГрд╕реНрд╡рдкреНрди рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред var foo = require('./foo'); рд╕реА# рдХреЗ using foo; рдпрд╛ рдЬрд╛рд╡рд╛ рдХреЗ import foo; рд╕рдорд╛рди (рд╢рд┐рдерд┐рд▓) рд╣реИ

рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдореЙрдбреНрдпреВрд▓рд░ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд┐рддрдиреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рдХрд╛рдо рдкреВрд░рд╛ рдХрд░реЛ, рджрд┐рдЦрд╛рдУ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрднреЛрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ ugly: require('three/src/math/Vector2')

рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рддреАрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ 'рдЖрд░рдВрдн рдХрд░рдирд╛' рдХреЛ рдЗрд╕ рдирдП рдореЙрдбреНрдпреВрд▓рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрджрд░реНрдн рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдЦреНрдд рди рд╣реЛрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрдорд╛рдг рдЖрдХрд╛рд░ рдкреВрд░реНрдг рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрд╢ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╡реЗ рдЪреАрдЬреЗрдВ рдЬрд┐рди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдирд╛ (рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛) рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рднрдпрд╛рдирдХ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдмрд╛рд░реАрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╣реА рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдРрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рд╕рдВрдкреВрд░реНрдг рддреАрди рдПрдкреАрдЖрдИ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рдЫреЛрдЯреЗ рдкреИрдХреЗрдЬ рдЬреЛ рд╕рднреА рдмреЛрдирд╕ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рднреА рд░реЗрдВрдбрд░рд░реНрд╕, рд╕рднреА рдЧрдгрд┐рдд, рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдЖрджрд┐, рдлрд┐рд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЙрдбреНрдпреВрд▓ рд╕реНрддрд░ рддрдХ, рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХреЗрдВред

рдФрд░ рд╣рд╛рдБ, рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХреЛрдбрд┐рдВрдЧ рдПрдХ рджрд░реНрдж рд╣реИред

рд╡реИрд╕реЗ рднреА, рдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде...

рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ..

npm install three-scene three-perspective-camera three-webgl-renderer three-cube-geometry three-mesh-basic-material three-mesh three-raf

рд╣рдорд╛рд░рд╛ рдХреЛрдб рд▓рд┐рдЦреЗрдВ...

// import our dependencies..
var Scene = require('three-scene'),
  Camera = require('three-perspective-camera'),
  Renderer = require('three-webgl-renderer'),
  CubeGeometry = require('three-cube-geometry'),
  MeshBasicMaterial = require('three-mesh-basic-material'),
  Mesh = require('three-mesh'),
  requestAnimationFrame = require('three-raf');

// set up our scene...
var scene = new Scene();
var camera = new Camera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new Renderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// create the cube...
var geometry = new CubeGeometry(1, 1, 1);
var material = new MeshBasicMaterial({color: 0x00ff00});
var cube = new Mesh(geometry, material);
scene.add(cube);
// position the camera...
camera.position.z = 5;
// animate the cube..
var render = function () {
  requestAnimationFrame(render);
  cube.rotation.x += 0.1;
  cube.rotation.y += 0.1;
  renderer.render(scene, camera);
};
// begin!
render();

рдлрд┐рд░ рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ

browserify entry.js -o scripts/hello-world.js

рдлрд┐рд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдкреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

<script src="/scripts/hello-world.js" type="text/javascript"></script>

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдирд╛ (рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛) рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рднрдпрд╛рдирдХ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░рд┐рдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддреАрди рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ THREE рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реИ ... рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВред

@repsac @mrdoob рдкрд░рд┐рд╡рд░реНрддрди рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рд╣реЛрдВрдЧреЗ, рддрд╛рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рдпрджрд┐ рд╡реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпреЗ рд╕реБрдЭрд╛рд╡ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдФрд░ рдЕрдЦрдВрдб рдХреЛрдбрдмреЗрд╕ рдХреА рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рджреАрд░реНрдШрд╛рдпреБ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░рджрд░реНрдж рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЙрди рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдЯреВрд▓, рдлреНрд░реЗрдорд╡рд░реНрдХ, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИрдВред

рдпрд╛рдиреА рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдЕрднреА рднреА рд╡рд╣реА рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ examples рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

<script src="three.min.js"></script>

<script>
var renderer = new THREE.WebGLRenderer();
</script>

рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЙрдбреНрдпреВрд▓рд░ рдмрд┐рд▓реНрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, _or_ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рдФрд░ рд╕рдВрд╕реНрдХрд░рдг/рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ), рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
npm install three-vecmath --save

рдлрд┐рд░, рдХреЛрдб рдореЗрдВ:

var Vector2 = require('three-vecmath').Vector2;

//.. do something with Vector2

рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдЧрдгрд┐рдд, рд░рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг, рддреНрд░рд┐рднреБрдЬ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рднрд▓реЗ рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛() рдЧрдбрд╝рдмрдбрд╝реА рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ рдЦрд░рд╛рдм рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рддреАрди.рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдПрдХ рдФрд░ рднреА рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдПрдХ рдлреИрдВрд╕реА рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рд╛рдж рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рд╣реИ рд╕рд░рд▓ (рд▓реЗрдХрд┐рди рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА) рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рд╛рджред

@erno рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрд┐рдВрджреБ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, three.js рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯрдЕрдк рд╕реЗ рдЕрд▓рдЧ рдПрдХ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рд╛рдердорд┐рдХ рд▓рд╛рдн three.js рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

@kumavis - рдирд╣реАрдВ @erno рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ (*) рдХрд┐ рд╡рд╣ рдпрд╣ рдмрд┐рдВрджреБ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ three.js рдХрднреА-рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рддреАрдиреЛрдВ рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рддреГрддреАрдп рдкрдХреНрд╖ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рдЕрдВрддрд░ рдкрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

(*)рд╣рдордиреЗ рдЖрдЬ рдкрд╣рд▓реЗ рдЖрдИрдЖрд░рд╕реА рдкрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ рд╡реИрдз рдмрд┐рдВрджреБ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрдд рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд╛рдпрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рд╕рдордЧреНрд░ рдорд╛рдорд▓реЗ рдкрд░ рдпрд╣рд╛рдБ рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрд░реА рдУрд░ рд╕реЗ рдЕрдм рддрдХ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@ рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ред рд▓реЛрдЧреЛрдВ рдиреЗ рдпрд╣рд╛рдВ рдХрдИ рддрд░рд╣ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдорд╛рди рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ ( THREE рд╕реЗ рд╕рдм рдХреБрдЫ рдЦреАрдВрдЪрдХрд░), рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреБрдЫ рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдПрдХ рд╡рд╛рдЬрд┐рдм рдЪрд┐рдВрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднрд╛рд╖рд╛ рд╕реЗ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдерд╛ред

рдФрд░ рджреВрд╕рд░рд╛ рд╕рд░рд▓ (рд▓реЗрдХрд┐рди рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА) рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рд╛рдж рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рдБ?

рдореЗрд░реА рд╕рдордЭ рдореЗрдВ, рд╣рд╛рдБред рдФрд░ рдХреНрдпрд╛ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдпрд╛рдж рдЖ рд╕рдХрддрд╛ рд╣реИред

рдПрдВрдЯреЛрди, рдХреБрдорд╛рд╡рд┐рд╕: рдпрд╣рд╛рдВ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдиреЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ () рд╢реИрд▓реА рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред mattdesl рдХреА рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдЯрд┐рдкреНрдкрдгреАред

"рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЙрдбреНрдпреВрд▓рд░ рдмрд┐рд▓реНрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рд╕рдВрд╕реНрдХрд░рдг/рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВ) [...]"

рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭрддреА рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдордВрдерди рдХрд░рддреА рд╣реИред

рдЕрднреА Bower & browserify рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреНрдп рдСрдл-рдж-рд╢реЗрд▓реНрдл рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдПрдирдЬреА-рдирд┐рд░реНрднрд░рддрд╛ рдХреА рддрд░рд╣) рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕реЗ рдЯреВрд▓ рд▓рд┐рдЦреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджрд░реНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдВрдЧреЗред

Google рдХрд╛ рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдРрд╕рд╛ рдЯреВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдорджрдж рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИ?
http://marcinwieprzkowicz.github.io/three.js-builder/

рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ @erichlof :) рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ @marcinwieprzkowicz рдиреЗ рдЗрд╕реЗ рд╣рд╛рде рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИ ... https://github.com/marcinwieprzkowicz/three.js-builder/blob/gh-pages/threejs-src/r66/modules.json

рдПрдХ рдЕрднреНрдпрд╛рд╕ рдЬреЛ рдереНрд░реА.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ: https://github.com/mrdoob/three.js/blob/master/src/core/Geometry.js#L82

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдк рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдЯреНрд░реА рдореЗрдВ рдПрдХ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЗрдВрд╕реНрдЯреЙрдлрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬреНрдпрд╛рдорд┐рддрд┐.isGeometry(geom) рд╢реИрд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ рдлреАрдЪрд░-рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЪреЗрдХ рдХреЗ рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

git/three.js/src рдореЗрдВ:

grep -r instanceof . | wc -l 
164

git/three.js/examples рдореЗрдВ:

grep -r instanceof . | wc -l 
216

рдЗрд╕рд▓рд┐рдП рддреАрди.рдЬреЗрдПрд╕ рдореЗрдВ instanceof рдХреБрд▓ 380 рдЙрдкрдпреЛрдЧ рд╣реИрдВред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ type рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЪреНрдЫрд╛! рдкреАрдЖрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдмрдбрд╝реА рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/facebook/react рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдХреЛрдбрдмреЗрд╕ рдХреЛ рдиреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдЖрдзрд╛рд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо (рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдзрд╛рди 3 рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рд╣реИред

  1. рдереНрд░реА.рдЬреЗрдПрд╕ рд▓реЗрдЦрди рд╡реИрдирд┐рд▓рд╛ JS рдХрд╛ рд╢реБрджреНрдз рдЙрдкрднреЛрдХреНрддрд╛ рдЕрднреА рднреА рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИред
  2. рдмреНрд░рд╛рдЙрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реА.рдЬреЗрдПрд╕ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддреАрди.рдЬреЗрдПрд╕ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ require рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдЪрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  3. Three.js рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдирд╛ рдЕрдм рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред

рдореИрдВрдиреЗ рдХреБрдЫ рд╢реЛрдз рдХрд┐рдпрд╛ ...

рдХрд▓ рдореИрдВрдиреЗ рдПрдХ (рдмрд▓реНрдХрд┐ рдмреЗрд╡рдХреВрдл) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд╣реИрдХ рдХрд┐рдпрд╛ рдЬреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CommonJS require() рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Three.js рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдмрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ... рдпрд╣:

  1. рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдмрд▓реНрдХрд┐ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (WebGLRenderer рд╕реЗ):

var THREE = require('../Three.js'); require('../math/Color.js'); require('../math/Frustum.js'); require('../math/Matrix4.js'); require('../math/Vector3.js'); require('./webgl/WebGLExtensions.js'); require('./webgl/plugins/ShadowMapPlugin.js'); require('./webgl/plugins/SpritePlugin.js'); require('./webgl/plugins/LensFlarePlugin.js'); require('../core/BufferGeometry.js'); require('./WebGLRenderTargetCube.js'); require('../materials/MeshFaceMaterial.js'); require('../objects/Mesh.js'); require('../objects/PointCloud.js'); require('../objects/Line.js'); require('../cameras/Camera.js'); require('../objects/SkinnedMesh.js'); require('../scenes/Scene.js'); require('../objects/Group.js'); require('../lights/Light.js'); require('../objects/Sprite.js'); require('../objects/LensFlare.js'); require('../math/Matrix3.js'); require('../core/Geometry.js'); require('../extras/objects/ImmediateRenderObject.js'); require('../materials/MeshDepthMaterial.js'); require('../materials/MeshNormalMaterial.js'); require('../materials/MeshBasicMaterial.js'); require('../materials/MeshLambertMaterial.js'); require('../materials/MeshPhongMaterial.js'); require('../materials/LineBasicMaterial.js'); require('../materials/LineDashedMaterial.js'); require('../materials/PointCloudMaterial.js'); require('./shaders/ShaderLib.js'); require('./shaders/UniformsUtils.js'); require('../scenes/FogExp2.js'); require('./webgl/WebGLProgram.js'); require('../materials/ShaderMaterial.js'); require('../scenes/Fog.js'); require('../lights/SpotLight.js'); require('../lights/DirectionalLight.js'); require('../textures/CubeTexture.js'); require('../lights/AmbientLight.js'); require('../lights/PointLight.js'); require('../lights/HemisphereLight.js'); require('../math/Math.js'); require('../textures/DataTexture.js'); require('../textures/CompressedTexture.js');

рд╣рдореЗрдВ рдХреБрдЫ рдкреНрд░рдореБрдЦ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╢рд╛рдпрдж WebGLRenderer (рдФрд░ рдРрд╕реЗ) рдХреЛ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ (рдПрдЯреАрдПрдо рдлрд╝рд╛рдЗрд▓ 6000 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреА рд╣реИ)ред

  1. рд╣рдореЗрдВ GLSL рд╡рд┐рдЦрдВрдбреВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдПрдЯреАрдПрдо рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ THREE.ShaderChunk рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ THREE.ShaderLib рдореЗрдВ ( THREE.ShaderChunk s рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░) рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИред

React.js рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдХрд╕реНрдЯрдо рдирд┐рдпрдореЛрдВ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬреЛ рд╣рдореЗрдВ require GLSL рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ JS рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

@rasteiner рдЖрдкрдХреЛ https://github.com/stackgl/glslify рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдмрдврд╝рддреЗ http://stack.gl рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ рдЖрддрд╛ рд╣реИ

рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдФрд░ "рдпреВрдирд┐рдХреНрд╕реА" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдЕрдиреБрднрд╡ рд╣реБрдЖ рд╣реИ рдФрд░ рдЕрдм рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХрдо рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдФрд░ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдпрд╛ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдереНрд░реАрдЬреЗ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдПрдХ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛/рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

  • рдореИрдВ рдПрдирдкреАрдПрдо рдкрд░ рдзреБрдВрдз/рдПрдлрдПрдХреНрд╕рдПрдП/рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╢реЗрдбрд░реНрд╕ рдбрд╛рд▓ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рджреЗрдЦреЛ:
    https://www.npmjs.org/package/three-shader-fxaa (рдЬреЛ рдЗрдВрдЬрди рдЕрдЬреНрдЮреЗрдп glsl-fxaa рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)
  • OrbitController рдФрд░ EffectComposer рдЬреИрд╕реЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕реЗ:
    https://www.npmjs.org/package/three-orbit-controls
  • "рддреАрди" рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпреЗ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рддреАрди рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЗрд╕реЗ рдЧреНрд▓реЛрдмрд▓ рдереНрд░реАрдЬ рдпрд╛ рдХреЙрдордирдЬ рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рд╡рд░реНрдЬрдирд┐рдВрдЧ рдПрдХ рджрд░реНрдж рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рддреАрдиjs рд░рд┐рд▓реАрдЬрд╝ рдирдВрдмрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдереНрд░реАрдЬреЗ рдХреЗ рд╣рд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
  • рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдЧрдгрд┐рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореЙрдбреНрдпреВрд▓рд░ gl-vec3, gl-mat4, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рд╡реЗ рддреАрдиj рдХреЗ рдмрд╛рд╣рд░ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдлрд┐рд░, рддреАрдиjs рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд░реИрдкрд┐рдВрдЧ/рдЕрдирд░реИрдкрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд░реНрд▓реЗрдЯ-рд╕рд┐рд╕реНрдЯрдо, рд╕рд░рд▓-рдкрде, рдЖрджрд┐ рджреЗрдЦреЗрдВред
  • рдЕрдЧрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбреНрдпреВрд▓рд░ рдпрд╛ рдЫреЛрдЯреА рд╡реЗрдмрдЬреАрдПрд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХрдЧреНрд▓/рдЧреНрд▓рд┐рд╕реНрд▓рд┐рдлрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рддрдХ рдЖрдк рдЬреАрдПрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдпреЗ рдереНрд░реАрдЬреЗрдПрд╕ рдХреЗ рднреАрддрд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ: https://www.npmjs.org/package/gl-sprite-text

рдореЗрд░реА рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ npm рдкрд░ "рддреАрди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрдардиреЗ рдФрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдереНрд░реАрдЬреЗрдПрд╕ рдиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд░рд┐рд▓реАрдЬ рдирдВрдмрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирдкреАрдПрдо рдХреЛ рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ред

рдкреАрдПрд╕: рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп/рдореЙрдбреНрдпреВрд▓рд░ рд╢реЗрдбрд░реНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП:
https://gist.github.com/mattdesl/b04c90306ee0d2a412ab

рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

рдирд╡рдВрдмрд░ 20, 2014, рдкрд░ рдкрд╕рдВрдж рдХрд░реЗрдВ 7:42 AM рдкрд░, рд╣рд╛рд░реВрди [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

@rasteiner рдЖрдкрдХреЛ https://github.com/stackgl/glslify рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдмрдврд╝рддреЗ http://stack.gl рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ рдЖрддрд╛ рд╣реИ

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

рдпрджрд┐ рдпрд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рддреАрди.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ рд╣реИ, рддреЛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ browserify-shim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

_"рдЖрдк рдХрднреА-рдХрднреА a) рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░реЗрдВрдЧреЗ"_ рдкрд░ README рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рддреАрди.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рддреАрди рдЪрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ред

рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдХреЛрд▓рд╛рдбрд╛рд▓реЛрдбрд░, рдСрд░реНрдмрд┐рдЯрдХрдВрдЯреНрд░реЛрд▓ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреИрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛:

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди рд╕реЗ:

    "browser": {
        "three": "bower_components/threejs/build/three.js"
    },
    "browserify-shim": "browserify-shim-config.js",
    "browserify": {
        "transform": [ "browserify-shim" ]
    }

browserify-shim-config.js:

    module.exports = {
        "three": { exports: "global:THREE" },
        "./vendor/threejs-extras/ColladaLoader.js": { depends: {"three": null}, exports: "global:THREE.ColladaLoader" },
        "./vendor/threejs-extras/OrbitControls.js": { depends: {"three": null}, exports: "global:THREE.OrbitControls" }
    };

рдлрд┐рд░ рдореЗрд░реА рдЕрдкрдиреА рд▓рд┐рдкрд┐ рдореЗрдВ, main.js:

    require('../vendor/threejs-extras/ColladaLoader.js');
    require('../vendor/threejs-extras/OrbitControls.js');

    var loader = new THREE.ColladaLoader(),
        controls = new THREE.OrbitControls(camera);
...

рдЬрдм рдЖрдк рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ Browserify рдХреЛ рд╕рдВрдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдПрдХ рдмрд╛рд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рддреАрди.рдЬреЗрдПрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рдПрдХ рд╕реАрдорд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рджреЛ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд▓рд╛рдЗрд╡рд░реЗрд▓реЛрдб рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред

рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди livereload рдХреЗ рд╕рд╛рде watchify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИред

watchify рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╣реЗрдЬрддрд╛ рд╣реВрдВ, рддреЛ рджреЗрдЦреЗрдВ рдФрд░ рдмреАрдл рдХрд╛ рд▓рд┐рд╡рд░рд▓реЛрдб рдкреБрд░рд╛рдиреЗ/рдХреИрд╢реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИред рд╢реБрдХреНрд░ рд╣реИ, browserify рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@ChiChou рдкрд╛рд╕ рдореЗрдВ --noparse=three рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдмрдВрдбрд▓ рд╕реНрдЯреЗрдк рдХреЛ 1000ms рд╕реЗ 500ms рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рддрддреНрдХрд╛рд▓ рдлреАрдбрдмреИрдХ рдлреАрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

@rasteiner рдореИрдВ рддреАрди.рдЬреЗрдПрд╕ рдЕрдВрддрд░-рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЖрдкрдХреЗ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдмрдХрд┐ рдбрд┐рдкреЛ рдХреА рд╡рд╣ рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА рдХреБрдЫ рдмрджрд╕реВрд░рдд рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рдХреБрд░реВрдкрддрд╛ рдореМрдЬреВрдж рд╣реИ, рдмрд╕ рдЕрджреГрд╢реНрдп рд╣реИред Browserify рдХреА рддрд╛рдХрдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЧрдВрджреЗ рдХрдкрдбрд╝реЗ рдзреЛрдиреЗ рдФрд░ рдХрдо рдкреЗрдЪреАрджрд╛ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдереНрд░реА.рдЬреЗ рдореЗрдВ рдРрд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрд╕ рдкреНрд░рдХрд╛рд░-рдирд┐рд░реНрднрд░ рдХреЛрдб рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЙрди рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рдордЭ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬрд┐рди рдкрд░ рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд WebGLRenderer рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг рд╣реИ:

if ( texture instanceof THREE.DataTexture ) {
  // ...
} else if ( texture instanceof THREE.CompressedTexture ) {
  // ...
} else { // regular Texture (image, video, canvas)
  // ...
}

рдлреЙрд░реНрдо рдХрд╛ рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

texture.processTexImage( _gl, mipmaps, otherData )

рдкреНрд░рдХрд╛рд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рджреЗрдВ рдХрд┐ рд╕реНрд╡рдпрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЙрди рдЙрдкрдиреНрдпрд╛рд╕ рдмрдирд╛рд╡рдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдиреНрдпреЛрдиреНрдпрд╛рд╢реНрд░рд┐рддрддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдЬрд╛рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред UMD рдмрд┐рд▓реНрдб рд╕реЗ рддреАрди.js рдХреА рдЦрдкрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рд╣рдореЗрдВ WebGLRenderer рдХреЛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рдпрд╣ рдЕрдЦрдВрдб рдФрд░ рдбрд░рд╛рд╡рдирд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рд╢рд╛рдЦрд╛ рд╢реБрд░реВ рдХреА рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ: https://github.com/coballast/three.js/tree/browserify-build-system

рдореБрдЭреЗ рдмрддрд╛рдУ рдХрд┐ рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛред

рдпрд╣рд╛рдБ @coballast рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА browserifyify.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред

рдПрдХ рдмрд╛рдд рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╕рднреА рдиреЗ рдЕрднреА рддрдХ рдЬреНрдпрд╛рджрд╛ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдмрдбрд╝реЗ, рд╣рдореЗрд╢рд╛ рдмрджрд▓рддреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреИрд╕реЗ рд╣реИред рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рддреБрд░рдВрдд рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣реА рд╕рдореНрдореЛрд╣рдХ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдПрдХ рддреАрди.js рд╕реНрд░реЛрдд рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (рдЬреИрд╕реЗ рдЖрдкрдХреА browserifyify.js )
  • рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ
  • рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  • рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ
  • рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВ рдЬрд┐рд╕рд╕реЗ рдорд░реНрдЬ рд╡рд┐рд░реЛрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

...рддреЛ рд╣рдо рдЗрд╕реЗ рдПрдХ рдкреБрд╢-рдмрдЯрди рд░реВрдкрд╛рдВрддрд░рдг рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд╣ рд╕рд╛рджрдЧреА рдПрдХ рдореМрд▓рд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЗрд╕ рд╕реНрд╡рдкреНрдирд┐рд▓ рдзрд╛рд░рдгрд╛ рдХреЛ рдЗрддрдиреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИ рдЬрдм рд╡реИрдЪрд╛рд░рд┐рдХ рддрд░реНрдХ рдЬреАрдд рдЬрд╛рддреЗ рд╣реИрдВред

@coballast рдЙрд╕ рдЕрдВрдд рддрдХ, рдореИрдВ src/Three.js рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдЯрд╛

рдиреЛрдЯ: рди рдХреЗрд╡рд▓ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рд╢рд╛рдЦрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдпрд╛ рдмрд▓ рдзрдХреНрдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ

@coballast рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП three.js рдХрд╛ рдХрд╛рдВрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрд┐рд╕реЗ рдЖрдк three.js рд╡рд┐рдХрд╛рд╕ рдбреАрдЖрдИрдЖрд░ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реНрд░реЛрдд рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдПрдХ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИред

@kumavis рдореИрдВ рдЕрдХреЗрд▓реЗ src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрдордирдЬ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд▓рд┐рдЦрддреА рд╣реИ, рдФрд░ рд╣рдо рдХреБрдЫ рднреА рдмрдбрд╝рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рднреА рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдкреВрд░реНрдг рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╢реИрд▓реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред

@coballast рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЬреИрд╕реЗ escodegen ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЖрджрд┐ рдмрдирд╛рдП рд░рдЦ рд░рд╣реЗ рд╣реИрдВред
рддреАрдиjs-рд░реВрдкрд╛рдВрддрд░рдг-рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд░реЗрдкреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

@coballast рдиреЗ рдХрд╣рд╛, рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддреЗрдЬ рдлреЛрдХрд╕ рдмрдирд╛рдП рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

@ рдХреБрдорд╛рд╡рд┐рд╕ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рд╣реЛред рдпрд╣ рдЙрди рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ рдЬрд┐рди рдкрд░ рдореИрдВ рдЗрд╕ рд╕рдордп рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@kumavis @mrdoob рдпрд╣рд╛рдВ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рддреАрди рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдирдкреАрдПрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рддреАрди рдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ рдЬреИрд╕реЗ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЙрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реИ ^^

@coballast рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдкреЛ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЦрд╛рд▓реА рд╣реЛред рд╣рдо рд╡рд╣рд╛рдВ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

https://github.com/coballast/threejs-browserify-conversion-utility

рдХреЛрдб рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдЬрд▓реНрдж рд╣реА рд╕рд╛рдл рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпреЗ рд░рд╣рд╛! :рд░реЙрдХреЗрдЯ:

рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░реАрдХреГрдд рд╕реНрд░реЛрдд рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрд╕реЗ рдмрдирд╛рдПрдЧрд╛ред рдореИрдВ рд░реЗрдкреЛ рдХреЛ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред рдРрд╕реЗ рдХрдИ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдЕрдкрдиреА рдЖрд╕реНрддреАрди рдКрдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд░реЗрдкреЛ рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

@coballast рд╣рд╛рдБ рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рдХреВрджреЗрдВрдЧреЗ рдЬреИрд╕рд╛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖрдИ рд╣реИрдВред рджреЗрдЦреЗрдВ #6241

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: https://github.com/coballast/threejs-browserify-conversion-utility/issues/9#issuecomment -83147463

рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХрд╛рд░рдг browserify рдХрдо рд╕реЗ рдХрдо рдкрд░рд┐рд╡рд╣рди рдЕрдирд╛рд╡рд╢реНрдпрдХ (congestive) рдкрд░ рд╣реИред рдпрд╣ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рдкреНрд▓рд╛рди рдХрд┐рд╕реА рдХреЛ рднреА?) рдФрд░ рдзреАрдорд╛ред

рдЗрд╕рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрдкрд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА рдФрд░ рдПрдХ рдирд╣реАрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдо рдмрд╛рдд рд╣реИред

рдЕрдЧрд░ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬ рджреЛрд╖рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЦреБрдж рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдпрд╣ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рднреА рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдХреЗрд▓реЗ рдХреБрдЫ рдЬреИрд╕реЗ рдереНрд░реАрдЬреЗред

@spaesani рдХреНрдпреЛрдВрдХрд┐

рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдЕрднреА рднреА "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ", рддреЛ рдЖрдк рдЕрднреА рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдо рдЕрднреА рдХрд░рддреЗ рд╣реИрдВред рдЖрдк --standalone рдФрд░ --exclude рдлрд╝реНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ

Browserify рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдпреБрджреНрдз рд╕рд┐рджреНрдз рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ API (CommonJS) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдереНрд░реАрдЬреЗрдПрд╕ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЛрдб рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛, рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдмрдбрд╝реЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ (рдПрдирдкреАрдПрдо) рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд╣рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдЦрдВрдбрддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ) рд╕реНрдЯреИрдХрдЧреНрд▓ рдкрд░рд┐рд╡рд╛рд░), рдФрд░ рдЕрдЧрд░ рд╡реЗ рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ

рдмреЗрд╢рдХ рдЗрд╕рдореЗрдВ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдереНрд░реА.рдЬреЗрдПрд╕ рдФрд░ рдереНрд░реА.рдорд┐рди.рдЬреЗрдПрд╕ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА, рдХреЙрдорди рдореЛрдмрд╛рдЗрд▓ рд╕реЙрд▓реНрдпреВрд╢рди рдпрд╛ рдХреИрд╢рд┐рдВрдЧ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рдЬрд░рд┐рдП рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ (рдбреЗрдЯрд╛) рдкрд░ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдк рдЪреЗрд░реА рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдереНрд░реАрдЬреЗрдПрд╕ рдХреЛрдб рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреИрд╢рд┐рдВрдЧ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ browserify рдПрдХ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

fuzihaofzh picture fuzihaofzh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

clawconduce picture clawconduce  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zsitro picture zsitro  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danieljack picture danieljack  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexprut picture alexprut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ