Javascript 完全显示three.js sprite和PlaneGeometry图像,无论其大小
我希望图像能完全显示出它的大小 变量src1=https://i.imgur.com/C9lWPeL.jpg, src2=https://i.imgur.com/a9zyCRt.jpg; 常数src=src1; var场景=新的三个场景; var loader=新的3.TextureLoader; 装载机 src, 功能纹理{ var spriteMaterial=新的三个spriteMaterial{ 贴图:纹理, 颜色:0xffffff }; var imageWidth=spriteMaterial.map.image.width; var imageHeight=spriteMaterial.map.image.height; var摄像机=新的三视角摄像机80,图像宽度/图像高度,11000; 摄像机位置z=500; var sprite=新的3.SPRITESPRITEMERIAL; sprite.scale.set1*图像宽度,1*图像高度,1.0; sprite.position.set0,0,0; scene.addsprite; var geometry=新的3.0倍平面缓冲区Geometry700700*imageHeight/imageWidth,0; var材料=新的三网格基本材料{ 贴图:纹理, 颜色:0xffffff }; var平面=新的三个。网格几何体,材质; plane.position.set0,0,0; //场景.添加平面; var renderer=new THREE.WebGLRenderer; renderer.setSize700,700*图像高度/图像宽度; renderer.renderscene,摄影机; container.appendChildrender.doElement; }, ; 对于精灵,使用正交摄影机将是最佳方法 对于平面几何,计算相机和近平面之间的正确距离,如下所示Javascript 完全显示three.js sprite和PlaneGeometry图像,无论其大小,javascript,three.js,Javascript,Three.js,我希望图像能完全显示出它的大小 变量src1=https://i.imgur.com/C9lWPeL.jpg, src2=https://i.imgur.com/a9zyCRt.jpg; 常数src=src1; var场景=新的三个场景; var loader=新的3.TextureLoader; 装载机 src, 功能纹理{ var spriteMaterial=新的三个spriteMaterial{ 贴图:纹理, 颜色:0xffffff }; var imageWidth=spriteMa
var camera = new THREE.PerspectiveCamera(45, imageWidth / imageHeight, 0.001, 1000);
camera.position.z = halfHeight / Math.tan(Math.PI / 8);
将解决这个问题
PS:如果平面。位置。z!=0应将其添加到摄影机位置camera.position.z+=plane.position.z
变量src1=https://i.imgur.com/C9lWPeL.jpg,
src2=https://i.imgur.com/a9zyCRt.jpg;
常数src=src1;
var场景=新的三个场景;
var loader=新的3.TextureLoader;
装载机
src,
功能纹理{
var spriteMaterial=新的三个spriteMaterial{
贴图:纹理,
颜色:0xffffff
};
var imageWidth=spriteMaterial.map.image.width;
var imageHeight=spriteMaterial.map.image.height;
可变宽度=700,
高度=宽度*图像高度/图像宽度,
半高=高度/2;
/*var camera=新的三个正交摄影机imageWidth/-2、imageWidth/2、imageHeight/2、imageHeight/-2、0、1000;
var sprite=新的三个sprite spriteMaterial;
sprite.scale.set1*图像宽度,1*图像高度,1.0;
sprite.position.set0,0,0;
场景。添加精灵*/
var摄像机=新的三透视摄像机45,图像宽度/图像高度,0.001,1000;
camera.position.z=半高/Math.tanMath.PI/8;
var geometry=新的3.5倍几何体宽度、高度、0;
var材料=新的三网格基本材料{
贴图:纹理,
颜色:0xffffff
};
var平面=新的三个。网格几何体,材质;
plane.position.set0,0,0;
scene.addplane;
var renderer=new THREE.WebGLRenderer;
renderer.setSizewidth,高度;
renderer.renderscene,摄影机;
container.appendChildrender.doElement;
},
;
你是什么意思,不管它有多大?你知道它为什么不显示吗?如果您只想将其显示为矩形,请使用正交摄影机或其他工具。如果您的问题是图像比您的相机大,请不要将相机大小固定为500。。。请更具体一点,你认为问题是什么。@Something这里你猜对了,我使用了正交摄影机,这个问题为Sprite解决了,但我不能为PlaneBuffer Geometry做同样的事情你想完成什么?只是在正交摄影机中显示?创建与图片大小相同的网格?@somethinghere是的。对于精灵来说,多亏了你,问题才得以解决,但对于平面几何来说,问题就解决了not@somethinghere我用透视相机解决了PlaneBuffer几何体的问题,像这个var相机=新的三点透视相机45,imageWidth/imageHeight,0.001,1000;camera.position.z=700*imageHeight/imageWidth/2/Math.atanMath.PI/7.1;但我认为这不是正确的方法