Javascript 部分等矩形全景图3.js

Javascript 部分等矩形全景图3.js,javascript,three.js,photo,panoramas,Javascript,Three.js,Photo,Panoramas,我有完整的等矩形图像,可与Three.js配合使用: scene = new THREE.Scene(); geometry = new THREE.SphereBufferGeometry( 500, 60, 40 ); geometry.scale(-1, 1, 1); material = new THREE.MeshBasicMaterial({ map: texture }); mesh = new THREE.Mesh(geometry, material); mesh.rotati

我有完整的等矩形图像,可与Three.js配合使用:

scene = new THREE.Scene();
geometry = new THREE.SphereBufferGeometry( 500, 60, 40 );
geometry.scale(-1, 1, 1);
material = new THREE.MeshBasicMaterial({ map: texture });
mesh = new THREE.Mesh(geometry, material);
mesh.rotation.y = Math.PI;
scene.add( mesh );
但我的图像实际上只包含180x180度(球体的一半),因此我尝试在不拉伸整个球体的情况下,在球形网格上部分应用方形纹理。我认为这与texture.offset.xyz参数有关,但我一直没有成功。虽然我可以继续填充图像以符合2x1等矩形标准,但我宁愿将此步骤从处理工作流中删除

在下面,你会看到完整的等矩形图像和我正在努力工作的正方形图像。有人对如何做到这一点有任何线索吗?谢谢


SphereBufferGeometry具有更多可选参数:

SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength)

radius — sphere radius. Default is 50.
widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8.
heightSegments — number of vertical segments. Minimum value is 2, and the default is 6.
phiStart — specify horizontal starting angle. Default is 0.
phiLength — specify horizontal sweep angle size. Default is Math.PI * 2.
thetaStart — specify vertical starting angle. Default is 0.
thetaLength — specify vertical sweep angle size. Default is Math.PI.
您可以使用phiStart、phiLength、Start和Talength来定义局部球体

因此,要制作半球形,可以尝试以下方法:

geometry = new THREE.SphereBufferGeometry( 500, 60, 40, 0, Math.PI, 0, Math.PI );

参考

可以解析uv贴图,将u乘以2并将其钳制为1?完美!谢谢你的帮助。