fl-web-component 2.0.10 → 2.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.fl-model-containor[data-v-482a990d]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-482a990d] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-482a990d] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-482a990d] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-482a990d] .measure-label-font{word-break:break-all}[data-v-482a990d] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-482a990d]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-482a990d]{opacity:1;visibility:visible}.loading-content[data-v-482a990d]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-482a990d]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-482a990d 1s linear infinite;animation:spin-482a990d 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-482a990d{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-482a990d{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-482a990d]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-482a990d]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-482a990d]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-482a990d]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-21bcf2d9]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
|
|
1
|
+
@charset "UTF-8";.fl-model-containor[data-v-18f6bdf0]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-18f6bdf0] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-18f6bdf0] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-18f6bdf0] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-18f6bdf0] .measure-label-font{word-break:break-all}[data-v-18f6bdf0] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-18f6bdf0]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-18f6bdf0]{opacity:1;visibility:visible}.loading-content[data-v-18f6bdf0]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-18f6bdf0]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-18f6bdf0 1s linear infinite;animation:spin-18f6bdf0 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-18f6bdf0{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-18f6bdf0{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-18f6bdf0]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-18f6bdf0]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-18f6bdf0]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-18f6bdf0]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-21bcf2d9]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
|
package/package.json
CHANGED
|
@@ -1536,6 +1536,9 @@ export default {
|
|
|
1536
1536
|
const modelIds = new Set();
|
|
1537
1537
|
for (let i = 0; i < arr.length; i++) {
|
|
1538
1538
|
const it = arr[i];
|
|
1539
|
+
if (it.obb.length == 0) {
|
|
1540
|
+
continue;
|
|
1541
|
+
}
|
|
1539
1542
|
|
|
1540
1543
|
// 使用新的 min/max 数据结构
|
|
1541
1544
|
const min = new this.THREE.Vector3(it.min[0], it.min[1], it.min[2]);
|
|
@@ -5353,13 +5356,13 @@ export default {
|
|
|
5353
5356
|
},
|
|
5354
5357
|
getFirstPersonMoveSpeed(customMoveSpeed) {
|
|
5355
5358
|
const defaultMoveSpeed = 800;
|
|
5356
|
-
const minMoveSpeed = 300;
|
|
5357
|
-
const maxMoveSpeed = 2500;
|
|
5358
5359
|
const optionMoveSpeed =
|
|
5359
5360
|
Number.isFinite(customMoveSpeed) && customMoveSpeed > 0
|
|
5360
5361
|
? customMoveSpeed
|
|
5361
5362
|
: defaultMoveSpeed;
|
|
5362
|
-
|
|
5363
|
+
const minMoveSpeed = Math.max(450, optionMoveSpeed * 0.1);
|
|
5364
|
+
const maxMoveSpeed = Math.max(16000, optionMoveSpeed * 2);
|
|
5365
|
+
let nextMoveSpeed = optionMoveSpeed;
|
|
5363
5366
|
|
|
5364
5367
|
if (
|
|
5365
5368
|
this.sceneBoundingBox &&
|
|
@@ -5369,21 +5372,55 @@ export default {
|
|
|
5369
5372
|
const size = this.sceneBoundingBox.getSize(new this.THREE.Vector3());
|
|
5370
5373
|
const horizontalSpan = Math.max(size.x, size.z);
|
|
5371
5374
|
if (Number.isFinite(horizontalSpan) && horizontalSpan > 0) {
|
|
5372
|
-
|
|
5373
|
-
|
|
5375
|
+
const moveScale = Math.sqrt(horizontalSpan / 2500);
|
|
5376
|
+
// 使用平方根缩放,避免小场景过快,同时让大场景提升更明显
|
|
5377
|
+
nextMoveSpeed = optionMoveSpeed * Math.min(Math.max(moveScale, 0.1), 2);
|
|
5374
5378
|
}
|
|
5375
5379
|
}
|
|
5376
5380
|
|
|
5377
|
-
return Math.min(
|
|
5378
|
-
|
|
5379
|
-
|
|
5380
|
-
|
|
5381
|
+
return Math.min(Math.max(nextMoveSpeed, minMoveSpeed), maxMoveSpeed);
|
|
5382
|
+
},
|
|
5383
|
+
getFirstPersonJumpConfig(customJumpSpeed) {
|
|
5384
|
+
const defaultJumpSpeed = 350;
|
|
5385
|
+
const optionJumpSpeed =
|
|
5386
|
+
Number.isFinite(customJumpSpeed) && customJumpSpeed > 0
|
|
5387
|
+
? customJumpSpeed
|
|
5388
|
+
: defaultJumpSpeed;
|
|
5389
|
+
const minJumpSpeed = Math.max(220, optionJumpSpeed * 0.45);
|
|
5390
|
+
const maxJumpSpeed = Math.max(1800, optionJumpSpeed * 3.6);
|
|
5391
|
+
const defaultGravity = 980;
|
|
5392
|
+
let nextJumpSpeed = optionJumpSpeed;
|
|
5393
|
+
|
|
5394
|
+
if (
|
|
5395
|
+
this.sceneBoundingBox &&
|
|
5396
|
+
this.sceneBoundingBox.isBox3 &&
|
|
5397
|
+
!this.sceneBoundingBox.isEmpty()
|
|
5398
|
+
) {
|
|
5399
|
+
const size = this.sceneBoundingBox.getSize(new this.THREE.Vector3());
|
|
5400
|
+
const verticalSpan = size.y;
|
|
5401
|
+
const horizontalSpan = Math.max(size.x, size.z);
|
|
5402
|
+
const dominantSpan = Math.max(verticalSpan, horizontalSpan * 0.5);
|
|
5403
|
+
if (Number.isFinite(dominantSpan) && dominantSpan > 0) {
|
|
5404
|
+
const jumpScale = Math.sqrt(dominantSpan / 1000);
|
|
5405
|
+
// 跳跃也按场景尺寸平滑缩放,避免小场景过高、大场景过低
|
|
5406
|
+
nextJumpSpeed = optionJumpSpeed * Math.min(Math.max(jumpScale, 0.45), 3.6);
|
|
5407
|
+
}
|
|
5408
|
+
}
|
|
5409
|
+
|
|
5410
|
+
nextJumpSpeed = Math.min(Math.max(nextJumpSpeed, minJumpSpeed), maxJumpSpeed);
|
|
5411
|
+
|
|
5412
|
+
return {
|
|
5413
|
+
jumpSpeed: nextJumpSpeed,
|
|
5414
|
+
gravity: Math.max(nextJumpSpeed * 2.2, defaultGravity),
|
|
5415
|
+
};
|
|
5381
5416
|
},
|
|
5382
5417
|
// 开启第一视角
|
|
5383
5418
|
startFirstPer(options) {
|
|
5384
5419
|
let { moveSpeed = 200, jumpSpeed = 200 } = options || {};
|
|
5385
5420
|
this.removeSpeed = this.getFirstPersonMoveSpeed(moveSpeed);
|
|
5386
|
-
|
|
5421
|
+
const jumpConfig = this.getFirstPersonJumpConfig(jumpSpeed);
|
|
5422
|
+
this.upSpeed = jumpConfig.jumpSpeed;
|
|
5423
|
+
this.firstPersonGravity = jumpConfig.gravity;
|
|
5387
5424
|
|
|
5388
5425
|
this.clock = new this.THREE.Clock();
|
|
5389
5426
|
this.downRaycaster = new this.THREE.Raycaster(
|
|
@@ -5420,7 +5457,9 @@ export default {
|
|
|
5420
5457
|
// 锁定
|
|
5421
5458
|
this.pointControls.addEventListener('lock', () => {
|
|
5422
5459
|
this.detachTransformControls();
|
|
5423
|
-
this.cameraControls
|
|
5460
|
+
if (this.cameraControls) {
|
|
5461
|
+
this.cameraControls.enabled = false;
|
|
5462
|
+
}
|
|
5424
5463
|
window.addEventListener('keydown', this.onKeyDown, false);
|
|
5425
5464
|
window.addEventListener('keyup', this.onKeyUp, false);
|
|
5426
5465
|
this.unbindScenePointerEvents();
|
|
@@ -5431,10 +5470,13 @@ export default {
|
|
|
5431
5470
|
// 解锁
|
|
5432
5471
|
this.pointControls.addEventListener('unlock', () => {
|
|
5433
5472
|
this.firstPerSign = false;
|
|
5434
|
-
this.cameraControls
|
|
5435
|
-
|
|
5473
|
+
if (this.cameraControls) {
|
|
5474
|
+
this.cameraControls.enabled = true;
|
|
5475
|
+
}
|
|
5436
5476
|
// 返回初始视角
|
|
5437
|
-
this.
|
|
5477
|
+
if (this.cameraControls && this.camera && this.sceneBoundingBox) {
|
|
5478
|
+
this.home();
|
|
5479
|
+
}
|
|
5438
5480
|
try {
|
|
5439
5481
|
if (this._onFirstPersonChange && this.pointControls) {
|
|
5440
5482
|
this.pointControls.removeEventListener('change', this._onFirstPersonChange);
|
|
@@ -5446,8 +5488,12 @@ export default {
|
|
|
5446
5488
|
setTimeout(() => {
|
|
5447
5489
|
window.removeEventListener('keydown', this.onKeyDown);
|
|
5448
5490
|
window.removeEventListener('keyup', this.onKeyUp);
|
|
5449
|
-
this.
|
|
5450
|
-
|
|
5491
|
+
if (this.renderer && this.renderer.domElement) {
|
|
5492
|
+
this.bindScenePointerEvents();
|
|
5493
|
+
}
|
|
5494
|
+
if (this.scene) {
|
|
5495
|
+
this.ensureTransformSelectionValid();
|
|
5496
|
+
}
|
|
5451
5497
|
// this.timeRender()
|
|
5452
5498
|
}, 0);
|
|
5453
5499
|
if (typeof this._cameraChangeObserver === 'function') {
|
|
@@ -5464,17 +5510,18 @@ export default {
|
|
|
5464
5510
|
let control = this.pointControls.object;
|
|
5465
5511
|
// 获取刷新时间
|
|
5466
5512
|
let delta = this.clock.getDelta();
|
|
5513
|
+
const forwardMoveScale = 0.35;
|
|
5467
5514
|
// velocity每次的速度,为了保证有过渡
|
|
5468
5515
|
this.velocity.x -= this.velocity.x * 10.0 * delta;
|
|
5469
5516
|
this.velocity.z -= this.velocity.z * 10.0 * delta;
|
|
5470
|
-
this.velocity.y -= 9.8 * 100.0 * delta; // 默认下降的速度
|
|
5517
|
+
this.velocity.y -= (this.firstPersonGravity || 9.8 * 100.0) * delta; // 默认下降的速度
|
|
5471
5518
|
// 获取当前按键的方向并获取朝哪个方向移动
|
|
5472
5519
|
this.direction.z = Number(this.moveForward) - Number(this.moveBackward);
|
|
5473
5520
|
this.direction.x = Number(this.moveRight) - Number(this.moveLeft);
|
|
5474
5521
|
// 将法向量的值归一化
|
|
5475
5522
|
this.direction.normalize();
|
|
5476
5523
|
if (this.moveForward || this.moveBackward)
|
|
5477
|
-
this.velocity.z -= this.direction.z * this.removeSpeed * delta;
|
|
5524
|
+
this.velocity.z -= this.direction.z * this.removeSpeed * forwardMoveScale * delta;
|
|
5478
5525
|
if (this.moveLeft || this.moveRight)
|
|
5479
5526
|
this.velocity.x -= this.direction.x * this.removeSpeed * delta;
|
|
5480
5527
|
// }
|
|
@@ -5675,14 +5722,14 @@ export default {
|
|
|
5675
5722
|
},
|
|
5676
5723
|
// 增加一个清除所有测量结果的方法 使用统一名字的
|
|
5677
5724
|
clearMeasureByName() {
|
|
5678
|
-
let list = this.getObjectByName('measureObj')
|
|
5725
|
+
let list = this.getObjectByName('measureObj');
|
|
5679
5726
|
list.forEach(item => {
|
|
5680
5727
|
if (item.geometry) {
|
|
5681
5728
|
item.geometry.dispose();
|
|
5682
5729
|
item.material.dispose();
|
|
5683
5730
|
}
|
|
5684
5731
|
if (this.scene) this.scene.remove(item);
|
|
5685
|
-
})
|
|
5732
|
+
});
|
|
5686
5733
|
if (this.threeMeasure) {
|
|
5687
5734
|
this.threeMeasure.clear();
|
|
5688
5735
|
}
|