Three.js: Object3D рджрд┐рдЦрд╛рдПрдБ / рдЫреБрдкрд╛рдПрдБ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬреВрди 2011  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯ рдЪрд╛рдЗрд▓реНрдб рдХреЛ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдирд╛ / рдЫрд┐рдкрд╛рдирд╛ рд╣реИред

  • рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде?
  • рдЗрд╕реЗ рдлреНрд░рд╕реНрдЯреНрд░рдо рд╕реЗ рдмрд╛рд╣рд░ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ?
  • рдХреЛрдИ рдЙрдкрд╛рдп ?

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

рддреБрдо рд╕рд┐рд░реНрдл рдЖрд╣реНрд╡рд╛рди рдХрд░ рд╕рдХрддреЗ рдереЗ
myObj3D.v рдЕрджреГрд╢реНрдп = рдЧрд▓рддред рдпрд╣ рд╕рдм рдХреБрдЫ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ 3 рдбреА рдХрд╛ рдмрдЪреНрдЪрд╛ рд╣реИ

myObj3D.v рдЕрджреГрд╢реНрдп рдХреЙрд▓рд┐рдВрдЧ = рд╕рдЪ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

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

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

THREE.SceneUtils.traverseHierarchy( object, function ( object ) { object.visible = false; } );

рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдПрдХ рд╕рдореНрдореЛрд╣рди рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

FYI рдХрд░реЗрдВ - myObject3D рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЕрдм рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:

myObject3D.traverse( function ( object ) { object.visible = false; } );

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

рдореИрдВ рд╕рд╣рдордд рд╣реВрдБред WebGLRenderer рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдХрд░рдирд╛ рд╣реИред

FYI рдХрд░реЗрдВ: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕реЗрдЯрд┐рдВрдЧ рдЕрдм рдмрдЪреНрдЪреЛрдВ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред (r71 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛)

R72 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕реЗрдЯрд┐рдВрдЧ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдлрд┐рд░ рд╕реЗ рдмрджрд▓ рдЧрдИ рд╣реИ?

@agnivade рдирд╣реАрдВ, рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред visible рд╕реЗ false рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рди рддреЛ рд╡рд╕реНрддреБ рдпрд╛ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЗ рд░реЗрдВрдбрд░рд░ рд╣реЛрдВрдЧреЗ, рдЪрд╛рд╣реЗ рдмрдЪреНрдЪреЗ visible ред рддреЛ visible рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ true рддреЛ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЙрдирдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ visible рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ true ред

рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред

рдзрдиреНрдпрд╡рд╛рдж

рддреБрдо рд╕рд┐рд░реНрдл рдЖрд╣реНрд╡рд╛рди рдХрд░ рд╕рдХрддреЗ рдереЗ
myObj3D.v рдЕрджреГрд╢реНрдп = рдЧрд▓рддред рдпрд╣ рд╕рдм рдХреБрдЫ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ 3 рдбреА рдХрд╛ рдмрдЪреНрдЪрд╛ рд╣реИ

myObj3D.v рдЕрджреГрд╢реНрдп рдХреЙрд▓рд┐рдВрдЧ = рд╕рдЪ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдЪрд░реНрдЪрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ "рдХреЗрд╡рд▓" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ рдФрд░ рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЭреВрдареЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рд░реЗрд╕реНрдХрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд░рдд рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред рд░реЗрдХрд╕реНрдЯрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрджреГрд╢реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд░реЗрдХрд╛рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд░рдд рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВ рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП 0 рдФрд░ 1 рдХреА рдкрд░рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдХреЗрд╡рд▓ рдХрд┐рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП 0 рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рджреГрд╢реНрдпрдорд╛рди рдФрд░ рдХрд┐рд░рдгрд┐рдд рд╡рд╕реНрддреБрдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
obj.layers.enable(0); obj.visible = true;

рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд▓реЗрдХрд┐рди рдкреБрдирд░реНрд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ:
obj.layers.disable(0); obj.layers.enable(1); obj.visible = true;

рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ
obj.layers.disable(0); obj.layers.enable(1); obj.visible = false;

@ jscastro76 рдЖрдк рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ https://github.com/mrdoob/three.js/pull/19012

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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