12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { UIDiv, UIButton, UIRow } from './libs/ui.js';
- import { computeMikkTSpaceTangents } from 'three/addons/utils/BufferGeometryUtils.js';
- import * as MikkTSpace from 'three/addons/libs/mikktspace.module.js';
- function SidebarGeometryModifiers( editor, object ) {
- const strings = editor.strings;
- const signals = editor.signals;
- const container = new UIDiv().setMarginLeft( '120px' );
- const geometry = object.geometry;
- // Compute Vertex Normals
- const computeVertexNormalsButton = new UIButton( strings.getKey( 'sidebar/geometry/compute_vertex_normals' ) );
- computeVertexNormalsButton.onClick( function () {
- geometry.computeVertexNormals();
- signals.geometryChanged.dispatch( object );
- } );
- const computeVertexNormalsRow = new UIRow();
- computeVertexNormalsRow.add( computeVertexNormalsButton );
- container.add( computeVertexNormalsRow );
- // Compute Vertex Tangents
- if ( geometry.hasAttribute( 'position' ) && geometry.hasAttribute( 'normal' ) && geometry.hasAttribute( 'uv' ) ) {
- const computeVertexTangentsButton = new UIButton( strings.getKey( 'sidebar/geometry/compute_vertex_tangents' ) );
- computeVertexTangentsButton.onClick( async function () {
- await MikkTSpace.ready;
- computeMikkTSpaceTangents( geometry, MikkTSpace );
- signals.geometryChanged.dispatch( object );
- } );
- const computeVertexTangentsRow = new UIRow();
- computeVertexTangentsRow.add( computeVertexTangentsButton );
- container.add( computeVertexTangentsRow );
- }
- // Center Geometry
- const centerButton = new UIButton( strings.getKey( 'sidebar/geometry/center' ) );
- centerButton.onClick( function () {
- geometry.center();
- signals.geometryChanged.dispatch( object );
- } );
- const centerRow = new UIRow();
- centerRow.add( centerButton );
- container.add( centerRow );
- //
- return container;
- }
- export { SidebarGeometryModifiers };
|