|
@@ -2,6 +2,16 @@
|
|
|
import * as THREE from "../../libs/three.js/build/three.module.js";
|
|
|
import {Utils} from "../utils.js";
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+//add-------------------------------------
|
|
|
+const OpaWhenNotSelect = 0.75
|
|
|
+const ScaleRatio = 4
|
|
|
+const OutlineColor = 0x666666
|
|
|
+//----------------------------------------
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
export class TransformationTool {
|
|
|
constructor(viewer) {
|
|
|
this.viewer = viewer;
|
|
@@ -27,9 +37,9 @@ export class TransformationTool {
|
|
|
|
|
|
});
|
|
|
|
|
|
- let red = 0xE73100;
|
|
|
- let green = 0x44A24A;
|
|
|
- let blue = 0x2669E7;
|
|
|
+ let red = Potree.config.axis.x.color
|
|
|
+ let green = Potree.config.axis.y.color
|
|
|
+ let blue = Potree.config.axis.z.color
|
|
|
|
|
|
this.activeHandle = null;
|
|
|
this.scaleHandles = {
|
|
@@ -115,14 +125,14 @@ export class TransformationTool {
|
|
|
|
|
|
let material = new THREE.MeshBasicMaterial({
|
|
|
color: handle.color,
|
|
|
- opacity: 0.4,
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
transparent: true
|
|
|
});
|
|
|
|
|
|
let outlineMaterial = new THREE.MeshBasicMaterial({
|
|
|
- color: 0x000000,
|
|
|
+ color: OutlineColor,
|
|
|
side: THREE.BackSide,
|
|
|
- opacity: 0.4,
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
transparent: true});
|
|
|
|
|
|
let pickMaterial = new THREE.MeshNormalMaterial({
|
|
@@ -131,18 +141,18 @@ export class TransformationTool {
|
|
|
visible: this.showPickVolumes});
|
|
|
|
|
|
let sphere = new THREE.Mesh(sgSphere, material);
|
|
|
- sphere.scale.set(1.3, 1.3, 1.3);
|
|
|
+ sphere.scale.set(2, 2, 2 );
|
|
|
sphere.name = `${handleName}.handle`;
|
|
|
node.add(sphere);
|
|
|
|
|
|
let outline = new THREE.Mesh(sgSphere, outlineMaterial);
|
|
|
- outline.scale.set(1.4, 1.4, 1.4);
|
|
|
+ outline.scale.set(1.1, 1.1, 1.1);
|
|
|
outline.name = `${handleName}.outline`;
|
|
|
sphere.add(outline);
|
|
|
|
|
|
let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);
|
|
|
pickSphere.name = `${handleName}.pick_volume`;
|
|
|
- pickSphere.scale.set(3, 3, 3);
|
|
|
+ pickSphere.scale.set(1.5, 1.5, 1.5);
|
|
|
sphere.add(pickSphere);
|
|
|
pickSphere.handle = handleName;
|
|
|
this.pickVolumes.push(pickSphere);
|
|
@@ -172,7 +182,7 @@ export class TransformationTool {
|
|
|
});
|
|
|
|
|
|
pickSphere.addEventListener("mouseleave", e => {
|
|
|
- //node.setOpacity(0.4);
|
|
|
+ //node.setOpacity(OpaWhenNotSelect);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -245,7 +255,7 @@ export class TransformationTool {
|
|
|
|
|
|
let pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);
|
|
|
pickSphere.name = `${handleName}.pick_volume`;
|
|
|
- pickSphere.scale.set(3, 3, 3);
|
|
|
+ pickSphere.scale.set(2, 2, 2);
|
|
|
box.add(pickSphere);
|
|
|
pickSphere.handle = handleName;
|
|
|
this.pickVolumes.push(pickSphere);
|
|
@@ -293,7 +303,7 @@ export class TransformationTool {
|
|
|
});
|
|
|
|
|
|
pickSphere.addEventListener("mouseleave", e => {
|
|
|
- //box.setOpacity(0.4);
|
|
|
+ //box.setOpacity(OpaWhenNotSelect);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -308,13 +318,13 @@ export class TransformationTool {
|
|
|
|
|
|
let material = new THREE.MeshBasicMaterial({
|
|
|
color: handle.color,
|
|
|
- opacity: 0.4,
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
transparent: true});
|
|
|
|
|
|
let outlineMaterial = new THREE.MeshBasicMaterial({
|
|
|
- color: 0x000000,
|
|
|
+ color: OutlineColor,
|
|
|
side: THREE.BackSide,
|
|
|
- opacity: 0.4,
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
transparent: true});
|
|
|
|
|
|
let pickMaterial = new THREE.MeshNormalMaterial({
|
|
@@ -325,7 +335,7 @@ export class TransformationTool {
|
|
|
|
|
|
let box = new THREE.Mesh(boxGeometry, material);
|
|
|
box.name = `${handleName}.handle`;
|
|
|
- box.scale.set(0.2, 0.2, 40);
|
|
|
+ box.scale.set(1, 1, 36);
|
|
|
box.lookAt(new THREE.Vector3(...handle.alignment));
|
|
|
box.renderOrder = 10;
|
|
|
node.add(box);
|
|
@@ -333,13 +343,13 @@ export class TransformationTool {
|
|
|
|
|
|
let outline = new THREE.Mesh(boxGeometry, outlineMaterial);
|
|
|
outline.name = `${handleName}.outline`;
|
|
|
- outline.scale.set(3, 3, 1.03);
|
|
|
+ outline.scale.set(1.3, 1.3, 1.01);
|
|
|
outline.renderOrder = 0;
|
|
|
box.add(outline);
|
|
|
|
|
|
let pickVolume = new THREE.Mesh(boxGeometry, pickMaterial);
|
|
|
pickVolume.name = `${handleName}.pick_volume`;
|
|
|
- pickVolume.scale.set(12, 12, 1.1);
|
|
|
+ pickVolume.scale.set(4, 4, 1.1);
|
|
|
pickVolume.handle = handleName;
|
|
|
box.add(pickVolume);
|
|
|
this.pickVolumes.push(pickVolume);
|
|
@@ -363,10 +373,10 @@ export class TransformationTool {
|
|
|
}
|
|
|
|
|
|
initializeRotationHandles(){
|
|
|
- let adjust = 0.5;
|
|
|
+ let adjust = 1.5;
|
|
|
let torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2);
|
|
|
- let outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2);
|
|
|
- let pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2);
|
|
|
+ let outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.018, 8, 64, Math.PI / 2);
|
|
|
+ let pickGeometry = new THREE.TorusGeometry(1, adjust * 0.07, 6, 4, Math.PI / 2);
|
|
|
|
|
|
for(let handleName of Object.keys(this.rotationHandles)){
|
|
|
let handle = this.handles[handleName];
|
|
@@ -375,14 +385,16 @@ export class TransformationTool {
|
|
|
|
|
|
let material = new THREE.MeshBasicMaterial({
|
|
|
color: handle.color,
|
|
|
- opacity: 0.4,
|
|
|
- transparent: true});
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
+ transparent: true
|
|
|
+ });
|
|
|
|
|
|
let outlineMaterial = new THREE.MeshBasicMaterial({
|
|
|
- color: 0x000000,
|
|
|
+ color: OutlineColor,
|
|
|
side: THREE.BackSide,
|
|
|
- opacity: 0.4,
|
|
|
- transparent: true});
|
|
|
+ opacity: OpaWhenNotSelect,
|
|
|
+ transparent: true
|
|
|
+ });
|
|
|
|
|
|
let pickMaterial = new THREE.MeshNormalMaterial({
|
|
|
opacity: 0.2,
|
|
@@ -392,7 +404,7 @@ export class TransformationTool {
|
|
|
|
|
|
let box = new THREE.Mesh(torusGeometry, material);
|
|
|
box.name = `${handleName}.handle`;
|
|
|
- box.scale.set(20, 20, 20);
|
|
|
+ box.scale.set(30, 30, 30);
|
|
|
box.lookAt(new THREE.Vector3(...handle.alignment));
|
|
|
node.add(box);
|
|
|
handle.translateNode = box;
|
|
@@ -669,7 +681,7 @@ export class TransformationTool {
|
|
|
if(this.activeHandle === handle){
|
|
|
handle.node.setOpacity(1.0);
|
|
|
}else{
|
|
|
- handle.node.setOpacity(0.4)
|
|
|
+ handle.node.setOpacity(OpaWhenNotSelect)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -679,7 +691,7 @@ export class TransformationTool {
|
|
|
if(this.activeHandle === handle){
|
|
|
handle.node.setOpacity(1.0);
|
|
|
}else{
|
|
|
- handle.node.setOpacity(0.4)
|
|
|
+ handle.node.setOpacity(OpaWhenNotSelect)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -689,10 +701,10 @@ export class TransformationTool {
|
|
|
//if(this.activeHandle === handle){
|
|
|
// handle.node.setOpacity(1.0);
|
|
|
//}else{
|
|
|
- // handle.node.setOpacity(0.4)
|
|
|
+ // handle.node.setOpacity(OpaWhenNotSelect)
|
|
|
//}
|
|
|
|
|
|
- handle.node.setOpacity(0.4);
|
|
|
+ handle.node.setOpacity(OpaWhenNotSelect);
|
|
|
}
|
|
|
|
|
|
for(let handleName of Object.keys(this.scaleHandles)){
|
|
@@ -703,21 +715,21 @@ export class TransformationTool {
|
|
|
|
|
|
let relatedFocusHandle = this.focusHandles[handle.name.replace("scale", "focus")];
|
|
|
let relatedFocusNode = relatedFocusHandle.node;
|
|
|
- relatedFocusNode.setOpacity(0.4);
|
|
|
+ relatedFocusNode.setOpacity(OpaWhenNotSelect);
|
|
|
|
|
|
for(let translationHandleName of Object.keys(this.translationHandles)){
|
|
|
let translationHandle = this.translationHandles[translationHandleName];
|
|
|
- translationHandle.node.setOpacity(0.4);
|
|
|
+ translationHandle.node.setOpacity(OpaWhenNotSelect);
|
|
|
}
|
|
|
|
|
|
//let relatedTranslationHandle = this.translationHandles[
|
|
|
// handle.name.replace("scale", "translation").replace(/[+-]/g, "")];
|
|
|
//let relatedTranslationNode = relatedTranslationHandle.node;
|
|
|
- //relatedTranslationNode.setOpacity(0.4);
|
|
|
+ //relatedTranslationNode.setOpacity(OpaWhenNotSelect);
|
|
|
|
|
|
|
|
|
}else{
|
|
|
- handle.node.setOpacity(0.4)
|
|
|
+ handle.node.setOpacity(OpaWhenNotSelect)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -767,7 +779,7 @@ export class TransformationTool {
|
|
|
|
|
|
let ws = node.parent.getWorldScale(new THREE.Vector3());
|
|
|
|
|
|
- let s = (7 / pr);
|
|
|
+ let s = (ScaleRatio / pr);
|
|
|
let scale = new THREE.Vector3(s, s, s).divide(ws);
|
|
|
|
|
|
let rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation);
|