2016-04-26 11 views
1

Ich habe voll equirectangular Bilder arbeiten gut mit Three.js:Teil Equirectangular Panorama 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); 

Aber meine Bilder eigentlich nur 180x180 Grad enthalten (die Hälfte der Kugel) so ich versuche zu bekommen eine quadratische Textur, die teilweise auf das sphärische Netz aufgetragen wurde, ohne das Bild über die gesamte Kugel zu strecken. Ich denke, es hat etwas mit den texture.offset.xyz Parametern zu tun, aber ich war nicht erfolgreich. Während ich meine Bilder weiterhin so anpassen kann, dass sie den 2x1-equirektangularen Standards entsprechen, würde ich diesen Schritt lieber aus meinem Bearbeitungs-Workflow herausschneiden.

Unten finden Sie sowohl das vollständige equirectangular Bild als auch das Quadrat, das ich versuche zu arbeiten. Hat jemand Hinweise, wie dies zu erreichen ist? Vielen Dank!

Full Equirectangular

Half Equirectangular

+0

werden, um die UV-Karte analysieren, multiplizieren Sie die u von 2 und Klemm es auf 1? – vals

Antwort

1

SphereBufferGeometry hat mehrere optionale Parameter:

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. 

können Sie phiStart, phiLength, thetaStart und thetaLength verwenden

Teilkugel zu definieren, so eine Hälfte zu tun Kugel können Sie etwas versuchen wie:

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

Referenz http://threejs.org/docs/#Reference/Extras.Geometries/SphereBufferGeometry

+0

Perfekt! Danke für die Hilfe. –