Three.js: рдЕрдВрдХ рд╕рд╛рдордЧреНрд░реА рдЖрдХрд╛рд░ рдХреНрд╖реАрдгрди рдПрдлрдУрд╡реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рд╕рд┐рддре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

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

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

рдХреЛрдб рдЬреЛ рдЕрдВрдХ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рддрд╛ рд╣реИ:

var texFlame = new THREE.TextureLoader().load("textures/flame.png");
mtlFlame = new THREE.PointsMaterial ({size: 2, sizeAttenuation: true, color: 0xffffff, transparent: true,  blending: THREE.AdditiveBlending, depthWrite: false, map: texFlame});

рдХреЛрдб рдЬреЛ FOV рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рд╡рд╣ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ:

this.camera.fov = fov;
this.camera.updateProjectionMatrix ();
рддреАрди.рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг
  • [] рджреЗрд╡
  • [] r87
  • [рдПрдХреНрд╕] ...
рдмреНрд░рд╛рдЙрдЬрд╝рд░
  • [ ] рдЙрди рд╕рднреА рдХреЛ
  • [рдПрдХреНрд╕] рдХреНрд░реЛрдо
  • [рдПрдХреНрд╕] рдлрд╛рдпрд░рдлреЙрдХреНрд╕
  • [ ] рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕реНрдкреНрд▓реЛрд░рд░
рдУрдПрд╕
  • [ ] рдЙрди рд╕рднреА рдХреЛ
  • [рдПрдХреНрд╕] рд╡рд┐рдВрдбреЛрдЬрд╝
  • [ ] рдореИрдХ рдУ рдПрд╕
  • [] рд▓рд┐рдирдХреНрд╕
  • [ ] рдПрдВрдбреНрд░реЙрдпрдб
  • [] рдЖрдИрдУрдПрд╕
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ (рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рд░реНрдб, рд╡реАрдЖрд░ рдбрд┐рд╡рд╛рдЗрд╕, ...)

рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ 10 рдореЗрдВ GeForce GTX950 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

PointsMaterial.size рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ -- рд╡рд┐рд╢реНрд╡ рдЗрдХрд╛рдЗрдпрд╛рдБ рдирд╣реАрдВред рдЖрдкрдХреЛ рдЖрдХрд╛рд░ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд╕реНрдЯ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреА рд╣реИ: https://github.com/mrdoob/three.js/issues/10385#issuecomment -267789138ред

рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдХрд┐ gl_PointSize рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЖрдХрд╛рд░ рд╡рд╣ рдЖрдХрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдЬреЛ рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИред

@ рд╡реЗрд╕реНрдЯрд▓реИрдВрдЧрд▓реАред рддреЛ рдЬрдм рдореИрдВ рдПрдлрдУрд╡реА рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдкреЙрдЗрдВрдЯреНрд╕ рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрдХрд╛рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рдЕрдкрдиреА рд╕рдордЭ рдХреА рдХрдореА рдХреЛ рд╕рдордЭрд╛ рд░рд╣рд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рд╕реЗ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рдЦреБрд╢ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ PointsMaterial.size рдкрд┐рдХреНрд╕рд▓ рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рд░рд╣реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдХрд╛рдо рдХреЛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдЙрддреНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдирд┐рдореНрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдВрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ camera.fov рдХреЗ рдЙрдЪрд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

var defaultSize = 10;
points.material.size = defaultSize / Math.tan( ( Math.PI / 180 ) * camera.fov / 2 );
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

jens-duttke picture jens-duttke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

jack-jun picture jack-jun  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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