Skip to content

Commit

Permalink
make _updatePositionAndFov basically work,#14
Browse files Browse the repository at this point in the history
  • Loading branch information
iSpring committed Nov 26, 2016
1 parent e69fe96 commit 01d41eb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
12 changes: 7 additions & 5 deletions src/world/Camera.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,10 @@ class Camera extends Object3D {
}

update(): void {
this.viewMatrix = null;

//通过修改position和fov以更新matrix和projMatrix
//this._updatePositionAndFov();
this._updatePositionAndFov();

//在_updatePositionAndFov()方法调用之后再计算viewMatrix
this.viewMatrix = this.getViewMatrix();
Expand Down Expand Up @@ -178,7 +180,7 @@ class Camera extends Object3D {
var safeLevel = this._getSafeThresholdLevelForNear();
var deltaLevel = this.getLevel() - safeLevel;
if(deltaLevel !== 0){
this._rawSetLevel(deltaLevel);
this._rawUpdatePositionByLevel(safeLevel);
//摄像机位置拉远之后,我们看到的地球变小,为此,我们需要把fov值变小,以抵消摄像机位置距离增大导致的变化
var newFov = this._calculateFovByDeltaLevel(this.fov, deltaLevel);
this._setFov(newFov);
Expand Down Expand Up @@ -207,7 +209,7 @@ class Camera extends Object3D {
}

setLevel(level: number): void {
var isLevelChanged = this._rawSetLevel(level);
var isLevelChanged = this._rawUpdatePositionByLevel(level);
if (isLevelChanged) {
//不要在this._setLevel()方法中更新this.level,因为这会影响animateToLevel()方法
this.level = level;
Expand All @@ -216,7 +218,7 @@ class Camera extends Object3D {
}

//设置观察到的层级,不要在该方法中修改this.level的值
private _rawSetLevel(level: number): boolean {
private _rawUpdatePositionByLevel(level: number): boolean {
if (!(Utils.isNonNegativeInteger(level))) {
throw "invalid level:" + level;
}
Expand Down Expand Up @@ -295,7 +297,7 @@ class Camera extends Object3D {
}
var camera = this._clone();
//don't call setLevel method because it will update CURRENT_LEVEL
camera._rawSetLevel(level);
camera._rawUpdatePositionByLevel(level);
return camera;
}

Expand Down
4 changes: 2 additions & 2 deletions src/world/layers/PoiLayer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class PoiLayer extends GraphicGroup{
constructor(){
super();

//var p = MathUtils.geographicToCartesianCoord(116.408540, 39.902350, Kernel.EARTH_RADIUS + 0.001);
var p = MathUtils.geographicToCartesianCoord(0, 0, Kernel.EARTH_RADIUS * 1.2);
var p = MathUtils.geographicToCartesianCoord(116.408540, 39.902350, Kernel.EARTH_RADIUS + 0.001);
//var p = MathUtils.geographicToCartesianCoord(0, 0, Kernel.EARTH_RADIUS * 1.2);
var marker = new Marker(p.x, p.y, p.z);
var url = "/WebGlobe/src/world/images/poi.png";
var material = new PoiMaterial(url, 24);
Expand Down
4 changes: 2 additions & 2 deletions src/world/layers/TiledLayer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ abstract class TiledLayer extends GraphicGroup {
//重写
draw(camera: Camera){
//此处将深度测试设置为ALWAYS是为了解决两个不同层级的切片在拖动时一起渲染会导致屏闪的问题
//Kernel.gl.depthFunc(Kernel.gl.ALWAYS);
Kernel.gl.depthFunc(Kernel.gl.ALWAYS);
super.draw(camera);
//将深度测试恢复成LEQUAL
//Kernel.gl.depthFunc(Kernel.gl.LEQUAL);
Kernel.gl.depthFunc(Kernel.gl.LEQUAL);
}

//重写
Expand Down

0 comments on commit 01d41eb

Please sign in to comment.