Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将纹理图集与Threejs(r65)一起使用?_Javascript_Three.js - Fatal编程技术网

Javascript 如何将纹理图集与Threejs(r65)一起使用?

Javascript 如何将纹理图集与Threejs(r65)一起使用?,javascript,three.js,Javascript,Three.js,由于发布了新的threejs修订版(r65),uvOffset和uvScale将移动到texture.offset和texture.repeate 不幸的是,texture.offset对我来说并不是我想要实现的。我想在一个场景中显示多个使用相同纹理的精灵。纹理是具有不同瓷砖的纹理图集。如果更改texture.offset,则场景中所有精灵的纹理都会更改。是否有任何解决方案可以单独更改每个精灵的偏移量 我想我的工作做得很好,我不明白为什么它会被移动 下面是一些代码,以查看我正在尝试执行的操作:

由于发布了新的threejs修订版(r65),uvOffset和uvScale将移动到texture.offset和texture.repeate

不幸的是,texture.offset对我来说并不是我想要实现的。我想在一个场景中显示多个使用相同纹理的精灵。纹理是具有不同瓷砖的纹理图集。如果更改texture.offset,则场景中所有精灵的纹理都会更改。是否有任何解决方案可以单独更改每个精灵的偏移量

我想我的工作做得很好,我不明白为什么它会被移动

下面是一些代码,以查看我正在尝试执行的操作:

var gui_texture = THREE.ImageUtils.loadTexture('images/button.png');

var btn_material1 = new THREE.SpriteMaterial( { map:gui_texture } );
btn_material1.map.offset.set(0.5,0);
var button = new THREE.Sprite(btn_material1);
button1.position.set(-screen_half_x+50, screen_half_y-25, 1);
button1.scale.set(100, 50, 1);
gui_node.add(button1);

var btn_material2 = new THREE.SpriteMaterial( { map:gui_texture } );
btn_material2.map.offset.set(-0.5,0);
var button2 = new THREE.Sprite(btn_material2);
button2.position.set(-screen_half_x+50, screen_half_y-150, 1);
button2.scale.set(100, 50, 1.0);
gui_node.add(button2);
真诚地


马库斯

我意识到那不是最漂亮的。。。但试着这样做:

var texture1 = new THREE.Texture();
texture1.offset.set( 0.5, 0 );

var texture2 = new THREE.Texture();
texture2.offset.set( - 0.5, 0 );

var loader = new THREE.ImageLoader();
loader.load( 'images/button.png', function ( image ) {

    texture1.image = image;
    texture1.needsUpdate = true;

    texture2.image = image;
    texture2.needsUpdate = true;

} );

var button1 = new THREE.Sprite( new THREE.SpriteMaterial( { map:texture1 } ) );
button1.position.set( - screen_half_x + 50, screen_half_y - 25, 1 );
button1.scale.set( 100, 50, 1 );
gui_node.add( button1 );

var button2 = new THREE.Sprite( new THREE.SpriteMaterial( { map:texture2 } ) );
button2.position.set( - screen_half_x + 50, screen_half_y - 150, 1 );
button2.scale.set( 100, 50, 1.0 );
gui_node.add( button2 );

有一个使用sprite表单的three.js示例:http://threejs.org/examples/misc_ubiquity_test2.html。在源文件中搜索注释“精灵-来自精灵工作表”。