рдПрдХ рд╕рдордп рдореЗрдВ
рдорд░реНрдбреЛрдмреВ рд╕реЗ
рддреАрди .
js рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╖рдп рд╣рдм рдкрд░
рдлрд┐рд╕рд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдФрд░ (рд╕рдВрднрд╡рддрдГ) рдмрд╛рдж рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдЪреВрдХ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рддреАрди.js рдХреЛрдИ рднреА рд╕рдордЭрджрд╛рд░ рдкреНрд░рд▓реЗрдЦрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░ рд╕рднреА рдЬреНрдЮрд╛рди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рд╡реЗрдмрдЬреАрдПрд▓ рдЪрд╢реНрдорд╛ рдЙрдард╛рдХрд░, рдЕрд░реНрдерд╛рддред рд╡рд┐рд╖рдп рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрдзрди рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдЗрдВрдЬрди рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдХреИрдорд░рд╛, рдкреНрд░рдХрд╛рд╢ рдФрд░ рдЫрд╛рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рднреА рд╕рд┐рдЦрд╛рдПрдЧрд╛ред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдбреЗрдореЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХред рддреЛ рдмрд╛рдд рд╣реИ!
рдкрд╣рд▓рд╛ рдХрджрдо
рд╣рдорд╛рд░рд╛ HTML рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:
<!DOCTYPE html> <html> <head> <title>Three.js - dice</title> <meta charset="utf-8"> <style> body { margin: 0; padding: 0; overflow: hidden; } </style> <script type="text/javascript" src="js/Three.js"></script> <script type="text/javascript" src="js/RequestAnimationFrame.js"></script> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/demoapp.js"></script> </head> <body> </body> </html>
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред RequestAnimationFrame.js, рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрдп (рдереЛрдбрд╝реЗ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд) RequestAnimationFrame (рдЙрд╕ рдкрд░ рдиреАрдЪреЗ) рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реИрдХ рд╣реИред
рдЕрдм рд╣рдо рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ
Demoapp.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВрд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рддреИрдпрд╛рд░ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдХреЛрдб рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ
$(document).ready(function() { });
рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд╛рджрдЧреА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣рдо рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдЫреЛрдбрд╝реЗрдВред
init () рдФрд░
рдЪреЗрддрди () ред рдкрд╣рд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд╣ рд╕рдм рдХреБрдЫ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░рд╛ requestAnimationFrame рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░
рд░реЗрдВрдбрд░ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд╖рдп рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)ред
рдореБрдЦреНрдп рддрддреНрд╡
рдореБрдЦреНрдп рддрддреНрд╡ рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗ (рдореБрдЦреНрдп рдзреНрдпрд╛рди рджреЗрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВ, рддреАрди редjs рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рдЪрдпрди рд╣реИ):
1) рдХреИрдорд░рд╛ (THREE.Camera)рдпреЗ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдПрдХ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рджреГрд╢реНрдп рдкрд░ рд╣рдорд╛рд░реА "рдЖрдБрдЦреЗрдВ" рд╣реИрдВред
рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рджреВрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рднрд╛рдЧрдлрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦрд┐рдбрд╝рдХреА рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреАрд╕рд░рд╛ рдФрд░ рдЪреМрдерд╛ рд╢реЛ рд╡рд┐рдорд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд / рджреВрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкрд╛рд╕ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
camera = new THREE.Camera(30, window.innerWidth/window.innerHeight,1, 3000);
рдпрд╛ рдЖрдк рддреБрд░рдВрдд рдПрдХ рдХреИрдорд░рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдИрдВ рдорд╛рдЙрд╕ рдмрдЯрди рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджреГрд╢реНрдп рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛ рд╕рдХрддрд╛ рд╣реИ, рджрд╛рдИрдВ рдУрд░, рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ, рдФрд░ рдмреАрдЪ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде, рджреГрд╢реНрдп рдХреЛ рдЬрд╝реВрдо рдХрд░реЗрдВред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреИрдорд░реЗ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдо рд╕реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ):
camera = new THREE.TrackballCamera({});
рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред x рдЕрдХреНрд╖ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рд╕реЗ рдирд┐рдЪрд▓реЗ рджрд╛рдИрдВ рдУрд░, рдХреНрд░рдорд╢рдГ рдКрдкрд░реА рджрд╛рдПрдБ рд╕реЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдБ рдФрд░ y рдЕрдХреНрд╖ рдХреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рд╕реЗ рдКрдкрд░реА, рдХреНрд░рдорд╢рдГ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2) рджреГрд╢реНрдп (THREE.Scene)рдореБрдЦреНрдп рддрддреНрд╡ред рдпрд╣ рдЗрд╕ рдЪрд░рдг рдкрд░ рд╣реИ рдХрд┐ рд╣рдо рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд┐рдорд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рдмрдирд╛рдП рдереЗ (рдЙрдкрдпреЛрдЧ .addObject рдпрд╛ addChild)ред рджреГрд╢реНрдп рдЖрд░рдВрдн рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
scene = new THREE.Scene();
3) рдореЛрдЯрд░! рдореИрд╢ (THREE.Mesh)рдпрд╣ рдХреИрд╢ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╣реИ рдЬреЛ рдХрд┐ рддреАрди рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЬрд╛рд▓ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЬреНрдпрд╛рдорд┐рддрд┐ рд╡рд╣ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рджреГрд╢реНрдп рдмрдирд╛рддреА рд╣реИ (рдХреНрдпреВрдмреНрд╕, рдЧреЛрд▓реЗ, рд╕рд┐рд▓рд┐рдВрдбрд░, рдкреНрд▓реЗрди, рдЖрджрд┐) рдпрд╣ рд╡рд┐рд╖рдп рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рд╕рд╛рдордЧреНрд░реА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдИ рдХрдо рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЗрд╡рд▓ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬреНрдпрд╛рдорд┐рддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдореЗрд╢рдлреИрд╕реЗрдореЗрдЯреЗрд░рд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП,
рдореЗрд╢рдмрд┐рд╕рд┐рд╕реЗрдЯреЗрд░рд┐рдпрдо рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
mesh = new THREE.Mesh( geometry, material );
рддрдм рд╣рдо рдорди рдХреА рд╢рд╛рдВрддрд┐ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдореЗрдВ рдПрдХ рдореЗрд╖ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
scene.addObject( mesh );
рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рднреА рдПрдХ рд╕реНрдиреИрдк рд╣реИ рдЬреЛ removeObject рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
scene.removeObject(mesh);
4) рд░реЗрдВрдбрд░рд░ (THREE.WebGLRenderer / CanvasRenderer)рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реЗрдВрдбрд░рд░реНрд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, - WebGLRenderer рдФрд░ CanvasRendererред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╛рдореЛрдВ рд╕реЗ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ, WebGLRenderer рдХрдордЬреЛрд░ рдорд╢реАрдиреЛрдВ рдкрд░ рдПрдлрдкреАрдПрд╕ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рд░реЗрдВрдбрд░рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ:
renderer = new THREE.WebGLRenderer( );
рдпрд╛
renderer = new THREE.CanvasRenderer();
рд░реЗрдВрдбрд░рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ - рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред
renderer.setSize( window.innerWidth, window.innerHeight );
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдкреЗрдЬ рдкрд░ рдПрдХ рд░реЗрдВрдбрд░рд░ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
container.appendChild( renderer.domElement );
рдпрд╛ jQuery рдХреЗ рд▓рд┐рдП
container.append(renderer.domElement);
5) рдкреНрд░рдХрд╛рд╢редрд╣рд╛рдВ, рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ (рдФрд░ рдХрднреА-рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдЫрд╛рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╡реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрд▓рддреА рд╡рд┐рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ)ред рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рддреАрди рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрддреА рд╣реИ:
5.1) THREE.AmbientLight рдкреНрд░рдХрд╛рд╢ рд╣реИ рдЬреЛ рдкреВрд░реЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдХреЛрдИ рджрд┐рд╢рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рд░ рджреГрд╢реНрдп рд╡рд╕реНрддреБ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╕реНрддреБ рдХрд╛ рд╕реНрдерд╛рди рдХреБрдЫ рднреА рд╣реЛред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рдкреНрд░рдХрд╛рд╢ рдХреА рд╕рдордиреНрд╡рдп рдЕрдХреНрд╖ рдкрд░ рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ
5.2) THREE.PointLight - рд╕рднреА рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧреАред
5.3) THREE.DirectionalLight - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ (рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ рд╕реЗ рдФрд░ рдореВрд▓ рддрдХ) рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрддрд┐ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрд░реНрдп рдХреЗ рдкреНрд░рдХрд╛рд╢ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ DirectionalLight рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдорд╛рди рдХреЗ рдКрдкрд░ рд░рдЦреА рдЧрдИ рд╡рд╕реНрддреБ рдХреА рдЫрд╛рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рдЬреНрдЮрд╛рди рд▓рдЧрд╛рдУ
рдЕрдм рдЖрдк рд╕реАрдзреЗ рдЖрд╡реЗрджрди рдХреЛрдб рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдПрдиреАрдореЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЙрди рд╡реИрд╢реНрд╡рд┐рдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рднреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред
рдЖрд░рдВрднреАрдХрд░рдг рд╕рдорд╛рд░реЛрд╣ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
function init() {
рдПрдиреАрдореЗрд╢рди рдирд┐рд╖реНрдкрд╛рджрди:
function animate() { requestAnimationFrame( animate ); render(); }
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рддреАрди.js рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред requestAnimationFrame (рдЪреЗрддрди) рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдиреАрдореЗрд╢рди рдХрд╛рд░реНрдп (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдФрд░ рд░реЗрдВрдбрд░ () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╣рдорд╛рд░реА рд╕рднреА рдЦреБрд╢реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдкрд╛рджрдирдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреИрдорд░реЗ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдЪрд░ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВ)
function render() {
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдЬреАрдердм рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдереНрд░реАред рдЬреЗрдПрд╕ рдХреЗ рдмрд┐рд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ (рдирд┐рдпрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЖрдВрдХрдбрд╝реЗ рдХреА рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп THREE.xxx THREE.xxxGemometry, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП THREE.CubeGeometry, рддреАрди.js рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди THREE.Cube рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг THREE.TrackBallCamera) рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо:
рд╣рдордиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдбреЗрдореЛ рдмрдирд╛рдпрд╛, рдмреБрдирд┐рдпрд╛рджреА рдШрдЯрдХреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдЖ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рддреАрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЬреЗрдПрд╕, рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдФрд░ рдПрдиреАрдореЗрд╢рди рд▓реВрдк рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджреЗрдЦрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрдирд╛рд╡рдЯ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдореЙрдбрд▓, рдЬрдЯрд┐рд▓ рджреГрд╢реНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рднреА рдЦреБрд╢реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред