2016-04-26 8 views
1

私が持っている完全な正距円筒Three.jsでうまく働い画像:部分的な正距円筒パノラマ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 Equirectangularの標準に準拠するように画像をパディングし続けることができますが、私はむしろこの処理手順を処理ワークフローから切り離したいと考えています。

以下では、完全な等角投影画像と私が働こうとしている正方形の両方を見つけることができます。誰かがこれを達成するための手がかりを持っていますか?ありがとう!

Full Equirectangular

Half Equirectangular

+0

、UVマップを解析することにより、2 Uを乗算し、それを1にクランプできますか? – vals

答えて

1

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、thetaStartとthetaLengthを使用することができます

球のようなものを試すことができます:

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

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

+0

パーフェクト!助けてくれてありがとう。 –

関連する問題