获取场景上的坐标(三个js)

时间:2016-03-01 15:47:54

标签: javascript html three.js coordinates scene

我真的很挣扎,经历了几次与我的问题无关的讨论。如果有人可以提供帮助,我将不胜感激。

我正在使用three.js库编写一个html文档。下面有一个名为scaledScene的场景(scaledMapscaledScene已定义):

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;

我想在平移时获得场景上的绝对坐标。例如,如果我平移到左上角,我想获得光标或视图位于左上角的信息。这可能吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

你想拍摄光线。

可以将光线从视口中心发送到3d空间中的地图。这将告诉您当前位于视口中心的地图像素。

我创造了一个小提琴。

代码如下。它禁用摄像机的旋转,因此只能进行平移。位于视口中心的图像像素列在视口下方。请记住,threejs使用笛卡尔空间。因此,150px / 150px的图像将报告从-75到75的像素。因此,如果你的x都是负数而你的y是正数,那么你知道你正在查看图像的左上部分。

小提琴:http://jsfiddle.net/v1g64zkb/

newline

//编辑:我不会在渲染调用中运行拾取光线。这只是一个简化的例子。使用控件更改事件或其他任何内容来触发拾取光线。