我正在使用这个全景图作为我项目的基础。现在我想在一个选定纹理的底部添加一个小图像(圆圈),就好像这是全景楼层上的一个热点,它将响应用户点击。请看下图,地板上有 2 个圆圈:
我尝试使用以下代码将图像添加到全景图中的 6 个纹理之一:
var loader = new THREE.TextureLoader();
loader.load('img/test-circle-sample.png', function ( texture ) {
var geometry = new THREE.PlaneGeometry( 1, 1 );
var material = new THREE.MeshBasicMaterial( { map : texture, opacity : 1, side : THREE.DoubleSide, transparent : true } );
var sprite = new THREE.Mesh( geometry, material );
scene.add(sprite);
});
虽然它似乎实际加载了图像,但圆圈与上图中的样子相去甚远。它非常宽,尽管它的大小为 256 像素并且位于相机周围 - 您可以在非常顶部、底部、侧面看到它,但在您面前却不是一个小圆圈。我玩弄了这些设置,但效果不佳:
sprite.position.set(0,-360,0);
sprite.rotateOnAxis( new THREE.Vector3( 1, 0, 0 ), THREE.Math.degToRad(90) );
sprite.scale.set( 1, 1, 1 );
我需要帮助将图像定位在相机前任何选定的一侧(或角度)并将其固定在地板上,因此拖动相机将调整此图像的外观(基于角度的倾斜效果)。
更新:我创建了这个 Plunker,但现在根本看不到图像。 http://plnkr.co/edit/KS6dVMn5AIEaXr143Jv3?p=preview