根据具有Three.js的图像大小调整多个PlaneBufferGeometries的大小

时间:2014-10-27 15:04:39

标签: javascript three.js

在这里,我要完成一项相当简单的工作:我使用THREE.js显示在planeGeometries上映射的相当数量(100+)的JPG。其中一些jpgs是垂直的,另一些是水平的,尺寸往往略有不同。 这里是for循环简化

for (i = 0; i < projectsNb; i++) { 
   var texture = new THREE.MeshBasicMaterial({ 
      map: THREE.ImageUtils.loadTexture("images/" + xmlProjects[i].getAttribute('img') + ".jpg") });

   var geometry = new THREE.PlaneBufferGeometry( 1, 0.75 ); //Width and Height of my plane

   geometry.name = xmlProjects[i].getAttribute('nom');

   var planProj = new THREE.Mesh( geometry, texture );

   planProj.position.x = xmlProjects[i].getAttribute('x');
   planProj.position.y = xmlProjects[i].getAttribute('y');
   planProj.position.z = xmlProjects[i].getAttribute('z');
   scene.add( planProj );
}

因此,我需要能够改变平面几何的尺寸:我想要宽度和高度值。 似乎jQuery需要第二次加载图像, 我不能简单地读取文件的值,如:

var newImg = new Image();
newImg.src = ("images/" + xmlProjects[i].getAttribute('img') + ".jpg");
console.log( newImg.width );

和三个js无法访问图像的像素,例如

var texture = new THREE.MeshBasicMaterial({ 
map: THREE.ImageUtils.loadTexture("images/" + xmlProjects[i].getAttribute('img') + ".jpg")
});
console.log( texture.map.image.width );

我已经在网上寻找答案了。似乎不可能以合理的方式:(

有什么想法吗? :)

0 个答案:

没有答案