修复正投影视图上选中效果边缘不正确bug。

This commit is contained in:
tengge1 2019-11-10 09:49:22 +08:00
parent ed68d02dca
commit 1f4e11af1c
5 changed files with 20 additions and 22 deletions

View File

@ -46,6 +46,7 @@ Supported Languages: 中文 / [繁體中文](README-tw.md) / [English](README-en
32. 增加显示选项,设置选中边框颜色和粗细。
33. 新增BufferGeometry组件查看BufferGeometry的顶点数量、法线数量、UV坐标数量、索引数量。提供计算顶点法线功能如果模型是黑的可能没有法线可以试一下这个功能。
34. 新增多材质组件,对于有多个材质的`Mesh`,可以使用多材质组件选择一个材质进行编辑。
35. 修复正投影视图上选中效果边缘不正确bug。
## v0.3.6更新

View File

@ -71,7 +71,7 @@ PickEvent.prototype.onDoubleClick = function (event) {
PickEvent.prototype.getIntersects = function (point, objects) {
this.mouse.set(point.x * 2 - 1, -(point.y * 2) + 1);
this.raycaster.setFromCamera(this.mouse, app.editor.camera);
this.raycaster.setFromCamera(this.mouse, app.editor.view === 'perspective' ? app.editor.camera : app.editor.orthCamera);
return this.raycaster.intersectObjects(objects);
};

View File

@ -49,7 +49,7 @@ RaycastEvent.prototype.onMouseUp = function (event) {
this.mouse.x = event.offsetX / domElement.clientWidth * 2 - 1;
this.mouse.y = -event.offsetY / domElement.clientHeight * 2 + 1;
this.raycaster.setFromCamera(this.mouse, app.editor.camera);
this.raycaster.setFromCamera(this.mouse, app.editor.view === 'perspective' ? app.editor.camera : app.editor.orthCamera);
var intersects = this.raycaster.intersectObjects(app.editor.scene.children, true);

View File

@ -4,10 +4,9 @@ import OrthographicCameraControls from '../controls/OrthographicCameraControls';
/**
* 视图事件
* @author tengge / https://github.com/tengge1
* @param {*} app
*/
function ViewEvent(app) {
BaseEvent.call(this, app);
function ViewEvent() {
BaseEvent.call(this);
this.changeView = this.changeView.bind(this);
}

View File

@ -3,8 +3,6 @@ import MaskVertex from './shader/mask_vertex.glsl';
import MaskFragment from './shader/mask_fragment.glsl';
import EdgeVertex from './shader/edge_vertex.glsl';
import EdgeFragment from './shader/edge_fragment.glsl';
import CopyVertex from './shader/copy_vertex.glsl';
import CopyFragment from './shader/copy_fragment.glsl';
/**
* 选择帮助器
@ -50,8 +48,8 @@ SelectHelper.prototype.onObjectSelected = function (obj) {
app.editor.renderer.getDrawingBufferSize(this.size);
var width = this.size.x * 2;
var height = this.size.y * 2;
let width = this.size.x * 2;
let height = this.size.y * 2;
if (this.scene === undefined) {
this.scene = new THREE.Scene();
@ -69,7 +67,7 @@ SelectHelper.prototype.onObjectSelected = function (obj) {
this.scene.add(this.quad);
}
var params = {
let params = {
minFilter: THREE.LinearFilter,
magFilter: THREE.LinearFilter,
format: THREE.RGBAFormat,
@ -156,22 +154,22 @@ SelectHelper.prototype.onAfterRender = function () {
return;
}
var renderScene = app.editor.scene;
var renderCamera = app.editor.camera;
var renderer = app.editor.renderer;
let renderScene = app.editor.scene;
let renderCamera = app.editor.view === 'perspective' ? app.editor.camera : app.editor.orthCamera;
let renderer = app.editor.renderer;
var scene = this.scene;
var camera = this.camera;
var selected = this.object;
let scene = this.scene;
let camera = this.camera;
let selected = this.object;
// 记录原始状态
var oldOverrideMaterial = renderScene.overrideMaterial;
var oldBackground = renderScene.background;
let oldOverrideMaterial = renderScene.overrideMaterial;
let oldBackground = renderScene.background;
var oldAutoClear = renderer.autoClear;
var oldClearColor = renderer.getClearColor();
var oldClearAlpha = renderer.getClearAlpha();
var oldRenderTarget = renderer.getRenderTarget();
let oldAutoClear = renderer.autoClear;
let oldClearColor = renderer.getClearColor();
let oldClearAlpha = renderer.getClearAlpha();
let oldRenderTarget = renderer.getRenderTarget();
// 绘制蒙版
this.hideObjects.length = 0;