Выделение объектов
1+
При создании объекта появляется панель с отображением его параметров.
Реализовал выделение объектов.
TODO: сделать объект выделенным после создания, при выделении отображать панель с параметрами, при изменении значения в панели параметров менять геометрию выделенного объекта.
createParametersMenu( entity ) { this.deleteParametersMenu(); let dom = document.getElementById( 'Parameters'); let elem = document.createElement( 'div' ); elem.id = 'ParametersRows'; dom.appendChild( elem ); let typeOfObject = document.createElement( 'div' ); typeOfObject.id = 'ParametersRows'; elem.appendChild( typeOfObject ); typeOfObject.innerHTML = entity.geometry.type;// + ' id = ' + entity.id; let parametersArray = Object.entries( entity.geometry.parameters ); for (let i = 0; i < parametersArray.length; i++) { let rowDiv = document.createElement( 'div' ); elem.appendChild( rowDiv ); rowDiv.className = 'ParametersRow'; let text = document.createElement( 'p' ); rowDiv.appendChild( text ); text.innerHTML = parametersArray[i][0]; let input = document.createElement( 'input' ); input.id = parametersArray[i][0]; //'param_' + input.type = 'number'; input.step = 0.01; rowDiv.appendChild (input); input.value = Math.round( parametersArray[i][1] * 1000 )/1000; }, false ); } }
this.selectEntity = function ( objectToSelect, selectedObject ){ selectedObject.objectOwnColor = objectToSelect.material.color; objectToSelect.material.color = new THREE.Color( 'whitesmoke' ); selectedObject.object = objectToSelect; selectedObject.object.add( this.createWireframe ( selectedObject ) ); selectedObject.object.add( this.createBoundingBox( selectedObject ) ); let taUI = new TA_UI; taUI.createParametersMenu( objectToSelect ); } this.createWireframe = function ( selectedObject ) { let wireframe = new THREE.WireframeGeometry( selectedObject.object.geometry ); let wireframeLines = new THREE.LineSegments( wireframe ); wireframeLines.material.depthTest = true; // wireframeLines.material.opacity = 0.25; // wireframeLines.material.transparent = true; wireframeLines.material.color = new THREE.Color( 'white' ); wireframeLines.name = 'wireframe'; wireframeLines.scale.set( 1.001, 1.001, 1.001 ); return wireframeLines; }
this.removeSelection = function ( selectedObject ) { let wireframeScene = selectedObject.object.children.filter( item => item.name === "wireframe" || item.name === "BoundingBox" ); wireframeScene.forEach( element => { selectedObject.object.remove( element ); }); selectedObject.object.material.color = selectedObject.objectOwnColor; selectedObject.object = null; selectedObject.objectOwnColor = null; }
1+