Javascript 完全显示three.js sprite和PlaneGeometry图像,无论其大小

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

我希望图像能完全显示出它的大小

变量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; }, ; 对于精灵,使用正交摄影机将是最佳方法

对于平面几何,计算相机和近平面之间的正确距离,如下所示

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;但我认为这不是正确的方法