Eye camera pointion scale
This commit is contained in:
		
							parent
							
								
									6e1469db53
								
							
						
					
					
						commit
						46f18b1780
					
				@ -131,6 +131,27 @@ class Camera{
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public angleY:number = 0;
 | 
					    public angleY:number = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 视点距离
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public get eyeDist(): number {
 | 
				
			||||||
 | 
					        return vec3.length(this.eye);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 视点缩放
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public eyeScale(scale: number): this {
 | 
				
			||||||
 | 
					        let dis = this.eyeDist;
 | 
				
			||||||
 | 
					        if ((dis + scale) < 0) scale = .1 - dis;
 | 
				
			||||||
 | 
					        vec3.set(this.eye,
 | 
				
			||||||
 | 
					            (this.eye[0] / dis) * scale + this.eye[0],
 | 
				
			||||||
 | 
					            (this.eye[1] / dis) * scale + this.eye[1],
 | 
				
			||||||
 | 
					            (this.eye[2] / dis) * scale + this.eye[2]
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        return this;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 通过角度设置视点
 | 
					     * 通过角度设置视点
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@ -140,7 +161,7 @@ class Camera{
 | 
				
			|||||||
        vec3.sub(this.eye, this.eye, this.target);
 | 
					        vec3.sub(this.eye, this.eye, this.target);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 计算视点距离
 | 
					        // 计算视点距离
 | 
				
			||||||
        let dis = vec3.length(this.eye);
 | 
					        let dis = this.eyeDist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 计算方向角
 | 
					        // 计算方向角
 | 
				
			||||||
        let anDir = vec3.create();
 | 
					        let anDir = vec3.create();
 | 
				
			||||||
 | 
				
			|||||||
@ -37,7 +37,11 @@ class ClassicRenderer extends BasicRenderer<{}, IClassicRendererParams> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        this.canvas.on("mouseup", () => {
 | 
					        this.canvas.on("mouseup", () => {
 | 
				
			||||||
            this.canvas.can.style.cursor = "grab"
 | 
					            this.canvas.can.style.cursor = "grab"
 | 
				
			||||||
        })
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.canvas.on("mousewheel", () => {
 | 
				
			||||||
 | 
					            this.camera.eyeScale(this.canvas.wheelDelta / 100);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // 运行
 | 
					        // 运行
 | 
				
			||||||
        this.run();
 | 
					        this.run();
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,7 @@ type GLCanvasEvent = {
 | 
				
			|||||||
	mouseup: GLCanvas,
 | 
						mouseup: GLCanvas,
 | 
				
			||||||
	mousemove: GLCanvas,
 | 
						mousemove: GLCanvas,
 | 
				
			||||||
	mousedown: GLCanvas,
 | 
						mousedown: GLCanvas,
 | 
				
			||||||
 | 
					    mousewheel: GLCanvas,
 | 
				
			||||||
	resize: GLCanvas,
 | 
						resize: GLCanvas,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -244,6 +245,11 @@ class GLCanvas extends Emitter<GLCanvasEvent> {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public mouseDown:boolean = false;
 | 
					    public mouseDown:boolean = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 鼠标滚动参数
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public wheelDelta: number = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 检测 canvas 变化
 | 
					     * 检测 canvas 变化
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@ -364,6 +370,11 @@ class GLCanvas extends Emitter<GLCanvasEvent> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.canvas.addEventListener("mousewheel", (e) => {
 | 
				
			||||||
 | 
					                this.wheelDelta = (e as any)?.wheelDelta ?? 0;
 | 
				
			||||||
 | 
					                this.emit("mousewheel", this);
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user