рдореЗрд░реА рдПрдХ рдмрдбрд╝реА рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдПрдХ рдмрдирд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рддреЛ рдХрдИ cubes рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрдирд╛рд╡рдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдмрдирд╛рд╡рдЯ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдЫрд╡рд┐ рдХреЛ рдШрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рддрдХ рд▓реЗ рдЬрд╛рддреА рд╣реИред рдореИрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдореИрдВ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдХреЗ "рдСрдлрд╕реЗрдЯ" рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдореЗрд░реА рдмрдирд╛рд╡рдЯ 800x2000 рд╣реИред рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ 100x100 рдХреНрдпреВрдм рд╣реИ, рдореИрдВ 100x100 рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЙрд╕ рдмрдбрд╝реА рдмрдирд╛рд╡рдЯ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, 300x400 рдХреА рддрд░рд╣ рдСрдлрд╕реЗрдЯред рддреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
tex = THREE.ImageUtils.loadTexture('texture.png');
tex.left = 300
tex.top = 400
var pictureMaterial = new THREE.MeshBasicMaterial({map: tex});
рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреИрдирд╡рд╕ рдмрдирд╛рд╡рдЯ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдареАрдХ рд╣реИ, рдореИрдВ рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдСрдлрд╕реЗрдЯ рдФрд░ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ 0 рдФрд░ 1 рдХреЗ рдмреАрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдорд╛рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
tex = THREE.ImageUtils.loadTexture('texture.png');
tex.offset.x = ?
tex.offset.y = ?
tex.repeat.x = ?
tex.repeat.y = ?
рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдореИрдВрдиреЗ рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдХреИрдирд╡рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡рд╣рд╛рдВ рдкрд░ рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб / рдХреНрд░реЙрдк рдХрд┐рдпрд╛ред рдЕрдм рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
canvas = document.createElement('canvas');
canvas.height=200;
canvas.width=200;
ctx = canvas.getContext('2d');
ctx.fillStyle = '#FFFFFF';
ctx.fillRect(0, 0, 200, val.200);
//this is where we set the "offset"
offx = -1 * 200;
offy = -1 * 200;
//img is a standard loaded image object
ctx.drawImage(img,offx,offy);
tex = new THREE.Texture(canvas);
рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
tex.scale.x = 800 / 100;
tex.scale.y = 2000 / 100;
tex.offset.x = ( 300 / 100 ) * tex.scale.x;
tex.offset.y = ( 400 / 100 ) * tex.scale.y;
рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ :)
рдардВрдбрд╛! рдкрд╛рд▓рди тАЛтАЛрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
Gpu рдкрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬрдм рдореИрдВ рдмрдирд╛рд╡рдЯ рдХреЗ рд╕реНрдХреЗрд▓.x рдЧреБрдг рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реВрдБ, рддреЛ рдореБрдЭреЗ "x рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде tex.scale.set (w, h) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЬрд╝рдорд╛рдпрд╛ред
tex = THREE.ImageUtils.loadTexture(img.src);
scalex = img.width / 100;
scaley = img.height / 100;
tex.scale.x = scalex;
tex.scale.y = scaley;
tex = THREE.ImageUtils.loadTexture(img.src);
рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдЕрдЧрд░ рдЫрд╡рд┐ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ src рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЛрдб рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреНрдпреЛрдВ рд▓реЛрдб рдХрд░реЗрдВ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
tex = new THREE.Texture( img );
рдзрдиреНрдпрд╡рд╛рдж, рд╣рд╛рдБ рдмрд╕ THREE.Texture () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ img рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА tex.scale рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред рд╡реИрд╕реЗ рднреА tex.repeat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИ? рдореИрдВ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ред
рдЖрд╣, рд╕рдЪред Texture
рдореЗрдВ .scale
, рдЗрд╕рдореЗрдВ .repeat
ред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:
tex.repeat.x = 100 / 800;
tex.repeat.y = 100 / 2000;
tex.offset.x = ( 300 / 100 ) * tex.repeat.x;
tex.offset.y = ( 400 / 100 ) * tex.repeat.y;
рдореИрдВ рдпрд╣рд╛рдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рд╣реВрдВ рдХрд┐ рдХреЗрд╡рд▓ рджреЛрд╣рд░рд╛рдиреЗ рдФрд░ рдСрдлрд╕реЗрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдХреЛ рдХреИрд╕реЗ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП .. рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
@nightlifelover рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рджрд┐рд╢рд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ , рдорджрдж рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП stackoverflow ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрд╣, рд╕рдЪред
Texture
рдореЗрдВ.scale
, рдЗрд╕рдореЗрдВ.repeat
ред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ: