рддреАрди .js рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ред рдЕрдзреНрдпрд╛рдп 2: рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬреЛ рдХрд┐ рддреАрди .js рджреГрд╢реНрдп рдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдордиреЗ LibraryThree.js рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкреЗрд╢ рдХреАрдВред рд╣рдордиреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗ рдФрд░ рдЙрдирдХрд╛ рдкрд╣рд▓рд╛ рдлреБрд▓ рдереНрд░реАрдЬ рд╕реАрди рдмрдирд╛рдпрд╛ред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рддреАрди.js рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ:

  1. рдХреНрдпрд╛ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреАрди .js рджреГрд╢реНрдп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  2. THREE.Scene () рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  3. рдСрд░реНрдереЛрдЧреЛрдирд▓ рдФрд░ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдХреИрдорд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ


рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рджреГрд╢реНрдп рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред







рджреГрд╢реНрдп рдирд┐рд░реНрдорд╛рдг



рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА THREE.Scene () рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдереНрд░реА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЗрд╕ рдШрдЯрдХ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╣рдордиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рддреАрди рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

  1. рдкреНрд░рдХрд╛рд╢: рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЫрд╛рдпрд╛ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  2. рдХреИрдорд░рд╛: рдпрд╣ рдШрдЯрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреГрд╢реНрдп рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  3. рдореЛрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕: рдпреЗ рдореБрдЦреНрдп рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреИрдорд░реЗ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреНрдпреВрдмреНрд╕, рдЧреЛрд▓реЗ, рдЖрджрд┐ред


THREE.Scene () рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрди рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВред



рдмреБрдирд┐рдпрд╛рджреА рджреГрд╢реНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


рджреГрд╢реНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рд╣реИред рдЗрд╕ рдЕрдзреНрдпрд╛рдп (рдЕрдзреНрдпрд╛рдп -реирежрез) рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг режрез- basic-scene.html рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реВрдБрдЧрд╛ рдЬреЛ рджреГрд╢реНрдп рдореЗрдВ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:







рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИ рдЬреИрд╕рд╛ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреГрд╢реНрдп рдХреБрдЫ рдЦрд╛рд▓реА рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ Scene.add(object)



рд▓рд┐рдП Scene.add(object)



рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ THREE.Mesh



(рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╡рд┐рдорд╛рди рд╣реИ), THREE.SpotLight



рдФрд░ THREE.AmbientLight



рдЬреИрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ THREE.AmbientLight



рдЬрдм рдЖрдк рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ THREE.Camera



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



 var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); ... var planeGeometry = new THREE.PlaneGeometry(60,40,1,1); var planeMaterial = new THREE.MeshLambertMaterial({color: 0xffffff}); var plane = new THREE.Mesh(planeGeometry,planeMaterial); ... scene.add(plane); var ambientLight = new THREE.AmbientLight(0x0c0c0c); scene.add(ambientLight); ... var spotLight = new THREE.SpotLight( 0xffffff ); ... scene.add( spotLight );
      
      





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







рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг ред

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



() рдХреЗ рд╕рд╛рде:



 this.addCube = function() { var cubeSize = Math.ceil((Math.random() * 3)); var cubeGeometry = new THREE.CubeGeometry(cubeSize,cubeSize,cubeSize); var cubeMaterial = new THREE.MeshLambertMaterial( {color: Math.random() * 0xffffff }); var cube = new THREE.Mesh(cubeGeometry, cubeMaterial); cube.castShadow = true; cube.name = "cube-" + scene.children.length; cube.position.x=-30 + Math.round((Math.random() * planeGeometry.width)); cube.position.y= Math.round((Math.random() * 5)); cube.position.z=-20 + Math.round((Math.random() * planeGeometry.height)); scene.add(cube); this.numberOfObjects = scene.children.length; };
      
      





рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдЕрдм рд╕рдордЭ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдИ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрдк addCube рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ THREE.CubeGeometry



рдЙрджрд╛рд╣рд░рдг рд╢реВрдиреНрдп рд╕реЗ рддреАрди рддрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдХрд╛рд░ THREE.CubeGeometry



рд╕рд╛рде THREE.CubeGeometry



рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдордирдорд╛рдиреЗ рдЖрдХрд╛рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрди рджреГрд╢реНрдп рдФрд░ рд░рдВрдЧ рдкрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд┐рддрд┐ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпреВрдм рдХрд╛ name



рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдирд╛рдо cube



рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ cube



- рдФрд░ рджреГрд╢реНрдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрдпреВрдмреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ (рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред scene.children.length



рд╡рд┐рд╢реЗрд╖рддрд╛)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, cube-1, cube-2, cube-3



рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдирд╛рдо рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рджреГрд╢реНрдп рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрдзреЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Scene.getChildByName(name)



рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд░ рд╕рдВрдЦреНрдпрд╛ numberOfObjects



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

рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, removeCube



, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЕрдВрддрд┐рдо рдЬреЛрдбрд╝реЗ рдЧрдП рдХреНрдпреВрдм рдХреЛ рджреГрд╢реНрдп рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 this.removeCube = function() { var allChildren = scene.children; var lastObject = allChildren[allChildren.length-1]; if (lastObjectinstanceofTHREE.Mesh) { scene.remove(lastObject); this.numberOfObjects = scene.children.length; } }
      
      





рджреГрд╢реНрдп рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо add



() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдФрд░ рджреГрд╢реНрдп рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, remove



() рдлрд╝рдВрдХреНрд╢рдиред рдЗрд╕ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, рд╣рдордиреЗ THREE.Scene()



рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ children



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



рд╡рд╕реНрддреБ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рджреГрд╢реНрдп рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ GUI рдХреЗ рдЕрдВрддрд┐рдо рдмрдЯрди рдХреЛ outputObjects рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖред рдпрд╣ рдмрдЯрди рдЬреЛ рднреА рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд console



рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 this.outputObjects = function() { console.log(scene.children); }
      
      





рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ; рдЦрд╛рд╕рдХрд░ рдЬрдм рдЖрдк рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд╛рдо рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рджреГрд╢реНрдп рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, cube-17



рдирд╛рдордХ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:



 __webglActive: true __webglInit: true _modelViewMatrix: THREE.Matrix4 _normalMatrix: THREE.Matrix3 _vector: THREE.Vector3 castShadow: true children: Array[0] eulerOrder: "XYZ" frustumCulled: true geometry: THREE.CubeGeometry id: 20 material: THREE.MeshLambertMaterial matrix: THREE.Matrix4 matrixAutoUpdate: true matrixRotationWorld: THREE.Matrix4 matrixWorld: THREE.Matrix4 matrixWorldNeedsUpdate: false name: "cube-17" parent: THREE.Scene position: THREE.Vector3 properties: Object quaternion: THREE.Quaternion receiveShadow: false renderDepth: null rotation: THREE.Vector3 rotationAutoUpdate: true scale: THREE.Vector3 up: THREE.Vector3 useQuaternion: false visible: true __proto__: Object
      
      





рдЕрдм рддрдХ, рд╣рдо рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ:

  1. Scene.Add()



    : рдпрд╣ рд╡рд┐рдзрд┐ рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рддреА рд╣реИ
  2. Scene.Remove(



    ): рдпрд╣ рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрди рд╕реЗ рд╣рдЯрд╛ рджреЗрддреА рд╣реИ
  3. Scene.children()



    : рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рджреГрд╢реНрдп рд╡рд╕реНрддреБ рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ
  4. Scene.getChildByName()



    : рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕рдХреЗ рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рджреНрд╡рд╛рд░рд╛ рджреГрд╢реНрдп рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИ


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

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рджреЗрдЦрд╛ рдерд╛, рд╣рдордиреЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП render



рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЖрдЗрдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:



 function render() { stats.update(); scene.traverse(function(e) { if (e instanceofTHREE.Mesh&& e != plane ) { e.rotation.x+=controls.rotationSpeed; e.rotation.y+=controls.rotationSpeed; e.rotation.z+=controls.rotationSpeed; } }); requestAnimationFrame(render); renderer.render(scene, camera); }
      
      





рдпрд╣рд╛рдВ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ THREE.Scene.traverse()



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



() рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ cube



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реЛрдЯреЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП traverse



() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд╡рд┐рдорд╛рди рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ)ред рд╣рдо рд▓реВрдк рдХреЗ for



children



рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Mesh



рдФрд░ Geometry



рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдЧреБрдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рджреГрд╢реНрдп рд╡рд╕реНрддреБ рдкрд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: fog



рдФрд░ overrideMaterial



ред



рдкреНрд▓реЗрди рдореЗрдВ рдлреЙрдЧ рдЗрдлреЗрдХреНрдЯ рдбрд╛рд▓реЗрдВред


fog



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







рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг ред

рдХреЛрд╣рд░реЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдереНрд░реА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:



 scene.fog=new THREE.Fog( 0xffffff, 0.015, 100 );
      
      





рдпрд╣рд╛рдВ рд╣рдордиреЗ рдХреЛрд╣рд░реЗ рдХреЗ рд░рдВрдЧ рдХреЛ рд╕рдлреЗрдж (0xffffff) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдХреЛрд╣рд░реЗ рдХреЗ рджрд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рдЕрдВрддрд┐рдо рджреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 0.015 рдХрд╛ рдорд╛рди near



рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ far



рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП 100ред рдЗрди рджреЛ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрд╣рд░рд╛ рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдФрд░ рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╣ рдЕрдзрд┐рдХ рдШрдирд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрд╣рд░реЗ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рднреА рд╣реИ: рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



 scene.fog=new THREE.FogExp2( 0xffffff, 0.015 );
      
      





рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ near



рдФрд░ far



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



рдУрд╡рд░рд░рд╛рдЗрдб рдордЯреЗрд░рд┐рдпрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдВрддрд┐рдо рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕реЗ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рд╡рд╣ overrideMaterial



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



 scene.overrideMaterial = new THREE.MeshLambertMaterial({color: 0xffffff});
      
      





рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







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



рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдордиреЗ рдереНрд░реАред рдЬреЗрдПрд╕ рдХреЛрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреА рдЬрд╛рдБрдЪ рдХреА: рджреГрд╢реНрдпред рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ, рд░реЛрд╢рдиреА рдФрд░ рдХреИрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ Scene



рд╡рд╕реНрддреБ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВред

  1. add(object)



    : рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. hildren



    : рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреИрдорд░реЗ рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╕рд╣рд┐рдд рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
  3. getChildByName(name



    ): рдЬрдм рдЖрдк рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк name



    рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕реЗ рдПрдХ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред Scene



    рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрдзреЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. remove(object)



    : рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдордВрдЪ рдкрд░ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рджреГрд╢реНрдп рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ
  5. traverse(function)



    : children



    рд╡рд┐рд╢реЗрд╖рддрд╛ рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред traverse



    рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
  6. overrideMaterial



    рдордЯреЗрд░рд┐рдпрд▓: рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рджреГрд╢реНрдп рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ, рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рдореЗрд╖ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ



рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдордиреЗ рджреЗрдЦрд╛, рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ Mesh



рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп рдореЗрдВ рдПрдХ sphere



рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛:



 var sphereGeometry = new THREE.SphereGeometry(4,20,20); var sphereMaterial = new THREE.MeshBasicMaterial({color: 0x7777ff); var sphere = new THREE.Mesh(sphereGeometry,sphereMaterial);
      
      





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



рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рдЧреБрдг рдФрд░ рдХрд╛рд░реНрдп


рдереНрд░реА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░реЗрдбреАрдореЗрдб рдЬреНрдпрд╛рдорд┐рддреАрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИ рдЬрд┐рд╕реЗ 3 рдбреА рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реЗрдВ, рдПрдХ mesh



рдЪрд░ рдмрдирд╛рдПрдВ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:







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

  1. рдХреНрдпреВрдм рдХреЗ рдЖрда рдХреЛрдиреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдиреЗ рдХреЛ x, y рдФрд░ z рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдШрди рдореЗрдВ рдЖрда рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВред рдереНрд░реА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХреЛрдиреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдХреНрдпреВрдм рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдиреЗ рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдЫрд╣ рднреБрдЬрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред Thee.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдХреЛ рдПрдХ рдЪреЗрд╣рд░рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


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



 var vertices = [ new THREE.Vector3(1,3,1), new THREE.Vector3(1,3,-1), new THREE.Vector3(1,-1,1), new THREE.Vector3(1,-1,-1), new THREE.Vector3(-1,3,-1), new THREE.Vector3(-1,3,1), new THREE.Vector3(-1,-1,-1), new THREE.Vector3(-1,-1,1) ]; var faces = [ new THREE.Face3(0,2,1), new THREE.Face3(2,3,1), new THREE.Face3(4,6,5), new THREE.Face3(6,7,5), new THREE.Face3(4,5,1), new THREE.Face3(5,0,1), new THREE.Face3(7,6,2), new THREE.Face3(6,3,2), new THREE.Face3(5,7,0), new THREE.Face3(7,2,0), new THREE.Face3(1,3,4), new THREE.Face3(3,6,4), ]; var geom = new THREE.Geometry(); geom.vertices = vertices; geom.faces = faces; geom.computeCentroids(); geom.mergeVertices();
      
      





рдпрд╣ рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдШрди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рд╣рдордиреЗ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдШрди рдХреЛ рд▓рдВрдмрд╡рдд рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдпреЗ рдмрд┐рдВрджреБ рддреНрд░рд┐рдХреЛрдгреАрдп рдЪреЗрд╣рд░реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЬреЛ рдЪреЗрд╣рд░реЗ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрддреНрд╡ newTHREE.Face3(0,2,1)



рдПрдХ рд╕рд░рдгреА рд╕реЗ рдЕрдВрдХ 0, 2 рдФрд░ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рддреНрд░рд┐рдХреЛрдгреАрдп рдЪреЗрд╣рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИред

рдирд┐рдореНрди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ:







рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг ред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг, рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣, render



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



рдлрдВрдХреНрд╢рди рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:



 mesh.geometry.vertices=vertices; mesh.geometry.verticesNeedUpdate=true; mesh.geometry.computeFaceNormals();
      
      





рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо mesh



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



property рдХреЛ true



ред рдЕрдВрдд рдореЗрдВ, рд╣рдо computeFaceNormals



() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЗ рдЪреЗрд╣рд░реЗ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрддрд┐рдо geometry



рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ clone



() рдлрд╝рдВрдХреНрд╢рди рд╣реИред рд╣рдордиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ geometry



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



() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╣рдо рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ mesh



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







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



 var materials = [ new THREE.MeshLambertMaterial( { opacity:0.6, color: 0x44ff44,transparent:true } ), new THREE.MeshBasicMaterial( { color: 0x000000, wireframe: true } ) ];
      
      





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



рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╕рдордп рдереНрд░реАред рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдИ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ SceneUtils.createMultiMaterialObject()



рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 var mesh = THREE.SceneUtils.createMultiMaterialObject(geom,materials);
      
      





рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдереНрд░реА .js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдРрд╕рд╛ рдХрд░рддреА рд╣реИ рдХрд┐ рдпрд╣ THREE.Mesh



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



 mesh.children.forEach(function(e) {e.castShadow=true});
      
      





рдЕрдм рдХреНрд▓реЛрди () рдлрдВрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдереА:



 this.clone = function() { var cloned = mesh.children[0].geometry.clone(); var materials = [ new THREE.MeshLambertMaterial( { opacity:0.6, color: 0xff44ff, transparent:true } ), new THREE.MeshBasicMaterial({ color: 0x000000, wireframe: true } ) ]; var mesh2 = THREE.SceneUtils.createMultiMaterialObject(cloned,materials); mesh2.children.forEach(function(e) {e.castShadow=true}); mesh2.translateX(5); mesh2.translateZ(5); mesh2.name="clone"; scene.remove(scene.getChildByName("clone")); scene.add(mesh2); }
      
      





рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХреНрд▓реЛрди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдкрд╣рд▓реЗ рдХреНрдпреВрдм рдмрдЪреНрдЪреЗ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ mesh



рдЪрд░ рдХреЗ рджреЛ рдмрдЪреНрдЪреЗ рд╣реИрдВ: рдПрдХ рдореЗрд╖ рдЬреЛ MeshLambertMaterial



рдФрд░ рдПрдХ рдореЗрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ MeshBasicMaterial



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреНрд▓реЛрди рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ рдПрдХ рдирдпрд╛ рдЬрд╛рд▓ рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рдореЗрд╖ 2 рдирд╛рдо рджрд┐рдпрд╛ред



рдЧреНрд░рд┐рдб рдХрд╛рд░реНрдп рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ



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

  1. position



    : рдЗрд╕ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдзрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЬрдирдХ THREE.Scene()



    рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ THREE.Scene()



  2. rotation



    : рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдПрдХ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  3. scale



    : рдпрд╣ рдЧреБрдг рдЖрдкрдХреЛ x, y рдФрд░ z axes рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  4. translateX(amount)



    : x рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ
  5. translateY(amount



    ): рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╕реЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ
  6. translateZ(amount)



    : рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╕реЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ


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







рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг ред

рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдБ; рдореИрдВ position



рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ-рджреЛ рдмрд╛рд░ рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдареАрдХ рдХрд░реЗрдВред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ x, y рдФрд░ z рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрд╕рдХреЗ рдореВрд▓ рд╡рд╕реНрддреБ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рджреГрд╢реНрдп рд╣реИред рд╣рдо рдПрдХ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реАрдзреЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



 cube.position.x=10; cube.position.y=3; cube.position.z=1;
      
      





рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рдПрдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 cube.position.set(10,3,1);
      
      





рдПрдХ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИред position



рд╕рдВрдкрддреНрддрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ THREE.Vector.



рд╡рд╕реНрддреБ рд╣реИ THREE.Vector.



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



 cube.postion=new THREE.Vector3(10,3,1)
      
      





рдореИрдВ рдЕрдиреНрдп mesh



рдЧреБрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЗрдВрдбреЗрдВрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛редрдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред THREE.Geometry



рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ , рд╣рдордиреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ THREE.SceneUtils.createMultiMaterialObject



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







рдареАрдХ рд╣реИ, рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рд╣реИrotation



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



ред рдПрдХ рдкреВрд░реНрдг рдХреНрд░рд╛рдВрддрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрдХреВрд▓ рд╕реЗ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, 2pi рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 cube.rotation.x=0.5*Math.PI; cube.rotation.set(0.5*Math.PI,0,0); cube.rotation = new THREE.Vector3(0.5*Math.PI,0,0);
      
      





рд╣рдорд╛рд░реА рд╕рд╣рдордд рд╕реВрдЪреА рд╕реЗ рдЕрдЧрд▓реА рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдкрддреНрддрд┐ рд╣реИ scale



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







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







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



рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (1,2,3) рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝рдВрдХреНрд╢рди translateX



(4) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ ред рдЕрдм рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (5,2,3) рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдЕрдкрдирд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рди рд▓реЗ рд▓реЗ, рддреЛ рд╣рдореЗрдВ translateX



(-4) рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред



рд╡рд┐рднрд┐рдиреНрди рдХреИрдорд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



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



рдСрд░реНрдереЛрдЧреЛрдирд▓ рдХреИрдорд░рд╛ рдмрдирд╛рдо рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдХреИрдорд░рд╛


рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЖрдк рдирд╛рдордХ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ 07-both-cameras.html



ред рдЬрдм рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:







рдЗрд╕реЗ рдПрдХ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рджреГрд╢реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреИрдорд░реЗ рд╕реЗ рдЬрд┐рддрдиреЗ рджреВрд░ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реА рдХрдо рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рд╣рдо рдереНрд░реА.рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХреИрдорд░рд╛ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдСрд░реНрдереЛрдЧреЛрдирд▓ рдПрдХ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕реЗ рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ:







рдПрдХ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдЙрджрд╛рд╣рд░рдг ред

рдСрд░реНрдереЛрдЧреЛрдирд▓ рдХреИрдорд░рд╛ рд╕реЗ, рд╕рднреА рдХреНрдпреВрдмреНрд╕ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ; рд╡рд┐рд╖рдп рдФрд░ рдХреИрдорд░реЗ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ 2D рдЧреЗрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ SimCity 4 рдФрд░ рд╕рднреНрдпрддрд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:







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



 this.switchCamera = function() { if (camera instanceof THREE.PerspectiveCamera) { camera = new THREE.OrthographicCamera( window.innerWidth / - 16, window.innerWidth / 16, window.innerHeight / 16, window.innerHeight / - 16, -200, 500 ); camera.position.x = 2; camera.position.y = 1; camera.position.z = 3; camera.lookAt(scene.position); this.perspective = "Orthographic"; } else { camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.x = 120; camera.position.y = 60; camera.position.z = 180; camera.lookAt(scene.position); this.perspective = "Perspective"; } };
      
      





рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╕реНрддреБ THREE.PerspectiveCamera



рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣рдо рд╡рд╕реНрддреБ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдЕрдВрддрд░ рд╣реИ THREE.OrthographicCamera



ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╡рд╕реНрддреБ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ THREE.PerspectiveCamera



ред рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рддрд░реНрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ:

  1. fov



    : . , . , 180 , 360 . , , , . , , 60 90 . 45 .
  2. aspect



    : , . , . : window.innerWidth/window.innerHeight



    .
  3. near



    : , Three.js . , , . 0,1
  4. far



    : . , , , . : 1000.


рдирд┐рдореНрди рдЖрдВрдХрдбрд╝рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЧреБрдг рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:







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



:

  1. left



    : рдереНрд░реАрдЬрдЬ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдЗрд╕реЗ рд▓реЗрдлреНрдЯ рдкреНрд▓реЗрди рдХреЗ рд╕рд╛рде рдХреИрдорд░рд╛ рдЯреНрд░рд┐рдорд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдЖрдк рд╡рд╛рдо рд╕реАрдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо -100 рдкрд░ рдпрд╣ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдмрд╛рдИрдВ рдУрд░ рдХреНрдпрд╛ рд╣реИред
  2. right



    : рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ left



    , рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╕реНрдХреНрд░реАрди рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдПред рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  3. top



    : рдКрдкрд░реА рдбрд┐рд╕реНрдкреНрд▓реЗ рдмреЙрд░реНрдбрд░
  4. bottom



    : рд▓реЛрдЕрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдмреЙрд░реНрдбрд░
  5. near



    : рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ, рдХреИрдорд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  6. far



    : рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХреИрдорд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдпреЗ рд╕рднреА рдЧреБрдг рдирд┐рдореНрди рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ:







рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд┐рдВрджреБ рдкрд░ рдХреИрдорд░рд╛ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛


рдЕрдм рддрдХ, рд╣рдордиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдордиреЗ рдпрд╣ рднреА рд╕реАрдЦрд╛ рдХрд┐ рдХреИрдорд░реЗ рдХреЛ рдордВрдЪ рдкрд░ рдХрд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдХрд┐ рдХреИрдорд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рджреГрд╢реНрдп рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЖрдо рддреМрд░ рдкрд░ рдХреИрдорд░рд╛ рджреГрд╢реНрдп рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ position (0,0,0)



ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдХреИрдорд░реЗ рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



 camera.lookAt(new THREE.Vector3(x,y,z));
      
      





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







рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг ред

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



рдирд┐рд╖реНрдХрд░реНрд╖



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

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



    ред
  3. рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдХреЛрд╣рд░рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. . , , .
  5. Three.js . , , , .
  6. , .
  7. translate



    .
  8. , . Three.js : .
  9. .
  10. .


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



рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ рдХреГрдкрдпрд╛ LAN рдореЗрдВ рд╕рднреА рдЕрдиреБрд╡рд╛рдж рджреЛрд╖ рднреЗрдЬреЗрдВред






All Articles