我真的很挣扎,经历了几次与我的问题无关的讨论。如果有人可以提供帮助,我将不胜感激。
我正在使用three.js库编写一个html文档。下面有一个名为scaledScene
的场景(scaledMap
和scaledScene
已定义):
scaledMap = new THREE.Mesh(
new THREE.PlaneGeometry( 1600, 1200 ),
new THREE.MeshBasicMaterial( {
map: new THREE.ImageUtils.loadTexture( 'texture/test1.png' ),
//wireframe: true,
side: THREE.DoubleSide
} )
);
scaledScene.add( scaledMap );
场景是由放大到最高级别的高解决方案图片创建的。不允许缩放,但只能进行平移。
controls.noZoom = true;
controls.noPan = false;
我想在平移时获得场景上的绝对坐标。例如,如果我平移到左上角,我想获得光标或视图位于左上角的信息。这可能吗?如果是这样,我该怎么做?
答案 0 :(得分:0)
你想拍摄光线。
可以将光线从视口中心发送到3d空间中的地图。这将告诉您当前位于视口中心的地图像素。
我创造了一个小提琴。
代码如下。它禁用摄像机的旋转,因此只能进行平移。位于视口中心的图像像素列在视口下方。请记住,threejs使用笛卡尔空间。因此,150px / 150px的图像将报告从-75到75的像素。因此,如果你的x都是负数而你的y是正数,那么你知道你正在查看图像的左上部分。
小提琴:http://jsfiddle.net/v1g64zkb/
newline
//编辑:我不会在渲染调用中运行拾取光线。这只是一个简化的例子。使用控件更改事件或其他任何内容来触发拾取光线。