|
@@ -153,7 +153,7 @@ var addMagnifier = function(){
|
|
}
|
|
}
|
|
*/
|
|
*/
|
|
|
|
|
|
-var convertTool = {
|
|
|
|
|
|
+var convertTool = {
|
|
getPos2d : function(point, camera, dom){//获取一个三维坐标对应屏幕中的二维坐标
|
|
getPos2d : function(point, camera, dom){//获取一个三维坐标对应屏幕中的二维坐标
|
|
var camera = camera || player.camera;
|
|
var camera = camera || player.camera;
|
|
var dom = dom || player.domElement;
|
|
var dom = dom || player.domElement;
|
|
@@ -308,7 +308,34 @@ var convertTool = {
|
|
dir.multiplyScalar(Constants.skyRadius);
|
|
dir.multiplyScalar(Constants.skyRadius);
|
|
dir.add(toPanoPos);
|
|
dir.add(toPanoPos);
|
|
return dir;
|
|
return dir;
|
|
- }
|
|
|
|
|
|
+ } ,
|
|
|
|
+ getScaleForConstantSize : function(op={}){ //获得规定二维大小的mesh的scale值。可以避免因camera的projection造成的mesh视觉大小改变。 来源:tag.updateDisc
|
|
|
|
+ var w;
|
|
|
|
+ var i = new THREE.Vector3, o = new THREE.Vector3, l = new THREE.Vector3, c = new THREE.Vector3, h = new THREE.Vector3
|
|
|
|
+
|
|
|
|
+ if(op.width2d) w = op.width2d //如果恒定二维宽度
|
|
|
|
+ else{//否则考虑上距离,加一丢丢近大远小的效果
|
|
|
|
+ var currentDis, nearBound, farBound
|
|
|
|
+ if(op.camera.type == "OrthographicCamera"){
|
|
|
|
+ currentDis = (op.camera.right - op.camera.left) / op.camera.zoom
|
|
|
|
+ }else{
|
|
|
|
+ currentDis = op.position.distanceTo(op.camera.position);
|
|
|
|
+ }
|
|
|
|
+ w = op.maxSize - ( op.maxSize - op.minSize) * THREE.Math.smoothstep(currentDis, op.nearBound, op.farBound);
|
|
|
|
+ //maxSize : mesh要表现的最大像素宽度; nearBound: 最近距离,若比nearBound近,则使用maxSize
|
|
|
|
+ }
|
|
|
|
+ i.copy(op.position).project(op.camera), //tag中心在屏幕上的二维坐标
|
|
|
|
+ o.set(op.resolution.x / 2, op.resolution.y / 2, 1).multiply(i), //转化成px -w/2 到 w/2的范围
|
|
|
|
+ l.set(w / 2, 0, 0).add(o), //加上tag宽度的一半
|
|
|
|
+ c.set(2 / op.resolution.x, 2 / op.resolution.y, 1).multiply(l), //再转回 -1 到 1的范围
|
|
|
|
+ h.copy(c).unproject(op.camera);//再转成三维坐标,求得tag边缘的位置
|
|
|
|
+ var g = h.distanceTo(op.position)//就能得到tag的三维半径
|
|
|
|
+
|
|
|
|
+ return g //可能NAN 当相机和position重叠时
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|