fl-web-component 2.0.19-beta.2 → 2.0.19-beta.3
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.
- package/dist/fl-web-component.common.js +68 -54
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/package.json +1 -1
- package/packages/components/com-graphics/index.vue +23 -7
- package/packages/utils/StreamLoaderParser.worker.js +20 -20
- package/src/utils/instance-parser.js +64 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.fl-model-containor[data-v-1f8c13ba]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-1f8c13ba] .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-1f8c13ba] .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-1f8c13ba] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-1f8c13ba] .measure-label-font{word-break:break-all}[data-v-1f8c13ba] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-1f8c13ba]{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-1f8c13ba]{opacity:1;visibility:visible}.loading-content[data-v-1f8c13ba]{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-1f8c13ba]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-1f8c13ba 1s linear infinite;animation:spin-1f8c13ba 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-1f8c13ba{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-1f8c13ba{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-1f8c13ba]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-1f8c13ba]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-1f8c13ba]{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-1f8c13ba]{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-b313ab6c]{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-35050a2a]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-35050a2a] .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-35050a2a] .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-35050a2a] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-35050a2a] .measure-label-font{word-break:break-all}[data-v-35050a2a] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-35050a2a]{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-35050a2a]{opacity:1;visibility:visible}.loading-content[data-v-35050a2a]{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-35050a2a]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-35050a2a 1s linear infinite;animation:spin-35050a2a 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-35050a2a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-35050a2a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-35050a2a]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-35050a2a]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-35050a2a]{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-35050a2a]{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-b313ab6c]{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
|
@@ -3883,7 +3883,7 @@ export default {
|
|
|
3883
3883
|
this.skipNextRenderFrame = true;
|
|
3884
3884
|
|
|
3885
3885
|
const intersects = this.getRaycasterObjects(event);
|
|
3886
|
-
console.log(intersects)
|
|
3886
|
+
console.log(intersects);
|
|
3887
3887
|
const shouldBlockCamera = intersects.some(item =>
|
|
3888
3888
|
this.isActiveTransformControlIntersection(item)
|
|
3889
3889
|
);
|
|
@@ -3919,11 +3919,10 @@ export default {
|
|
|
3919
3919
|
this.mouse.y = -(y / rect.height) * 2 + 1;
|
|
3920
3920
|
this.raycaster.setFromCamera(this.mouse, this.camera);
|
|
3921
3921
|
if (this.scene && this.scene.children) {
|
|
3922
|
-
let intersects = this.raycaster.intersectObjects(this.scene.children, true)
|
|
3923
|
-
return intersects.filter(item => item.object.type === 'Mesh')
|
|
3922
|
+
let intersects = this.raycaster.intersectObjects(this.scene.children, true);
|
|
3923
|
+
return intersects.filter(item => item.object.type === 'Mesh');
|
|
3924
3924
|
}
|
|
3925
|
-
return []
|
|
3926
|
-
|
|
3925
|
+
return [];
|
|
3927
3926
|
},
|
|
3928
3927
|
isTransformControlIntersection(intersection) {
|
|
3929
3928
|
let current = intersection && intersection.object ? intersection.object : null;
|
|
@@ -4371,6 +4370,23 @@ export default {
|
|
|
4371
4370
|
this.buildOctreeFromBoxIndex();
|
|
4372
4371
|
}
|
|
4373
4372
|
},
|
|
4373
|
+
safeTraverse(object, callback) {
|
|
4374
|
+
const stack = [object];
|
|
4375
|
+
|
|
4376
|
+
while (stack.length > 0) {
|
|
4377
|
+
const current = stack.pop();
|
|
4378
|
+
if (!current) continue;
|
|
4379
|
+
|
|
4380
|
+
callback(current);
|
|
4381
|
+
|
|
4382
|
+
const children = Array.isArray(current.children) ? current.children : [];
|
|
4383
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
4384
|
+
if (children[i]) {
|
|
4385
|
+
stack.push(children[i]);
|
|
4386
|
+
}
|
|
4387
|
+
}
|
|
4388
|
+
}
|
|
4389
|
+
},
|
|
4374
4390
|
setAllModelVisible(visible) {
|
|
4375
4391
|
const isVisible = Boolean(visible);
|
|
4376
4392
|
const matrixCache = new this.THREE.Matrix4();
|
|
@@ -4383,7 +4399,7 @@ export default {
|
|
|
4383
4399
|
}
|
|
4384
4400
|
|
|
4385
4401
|
if (this.scene) {
|
|
4386
|
-
this.scene
|
|
4402
|
+
this.safeTraverse(this.scene, child => {
|
|
4387
4403
|
if (!child || !child.isInstancedMesh) return;
|
|
4388
4404
|
const userData = child.userData || {};
|
|
4389
4405
|
if (!(userData.instancesMap instanceof Map) || userData.instancesMap.size === 0) return;
|
|
@@ -4419,7 +4435,7 @@ export default {
|
|
|
4419
4435
|
return nodeType === 'custom-root' || rootType === 'custom-root';
|
|
4420
4436
|
});
|
|
4421
4437
|
if (customRoot) {
|
|
4422
|
-
|
|
4438
|
+
this.safeTraverse(customRoot, object => {
|
|
4423
4439
|
object.visible = isVisible;
|
|
4424
4440
|
});
|
|
4425
4441
|
}
|
|
@@ -402,26 +402,26 @@ function parsePrimitive(dataView, uint8Array, offset, isFullProps = true) {
|
|
|
402
402
|
primitive.documentId = '';
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
if (dataView.byteLength < offset + 4) {
|
|
406
|
-
throw new Error('Insufficient data for Material length');
|
|
407
|
-
}
|
|
408
|
-
const materialTextLen = dataView.getUint32(offset, false);
|
|
409
|
-
offset += 4;
|
|
410
|
-
if (materialTextLen === 0xffffffff) {
|
|
411
|
-
primitive.material = null;
|
|
412
|
-
} else if (materialTextLen > 0) {
|
|
413
|
-
if (dataView.byteLength < offset + materialTextLen) {
|
|
414
|
-
throw new Error('Insufficient data for Material content');
|
|
415
|
-
}
|
|
416
|
-
const textBytes = uint8Array.subarray(offset, offset + materialTextLen);
|
|
417
|
-
primitive.material = utf8Decoder.decode(textBytes);
|
|
418
|
-
offset += materialTextLen;
|
|
419
|
-
} else {
|
|
420
|
-
primitive.material = '';
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
if (dataView.byteLength < offset + 4) {
|
|
424
|
-
throw new Error('Insufficient data for GeomText length');
|
|
405
|
+
if (dataView.byteLength < offset + 4) {
|
|
406
|
+
throw new Error('Insufficient data for Material length');
|
|
407
|
+
}
|
|
408
|
+
const materialTextLen = dataView.getUint32(offset, false);
|
|
409
|
+
offset += 4;
|
|
410
|
+
if (materialTextLen === 0xffffffff) {
|
|
411
|
+
primitive.material = null;
|
|
412
|
+
} else if (materialTextLen > 0) {
|
|
413
|
+
if (dataView.byteLength < offset + materialTextLen) {
|
|
414
|
+
throw new Error('Insufficient data for Material content');
|
|
415
|
+
}
|
|
416
|
+
const textBytes = uint8Array.subarray(offset, offset + materialTextLen);
|
|
417
|
+
primitive.material = utf8Decoder.decode(textBytes);
|
|
418
|
+
offset += materialTextLen;
|
|
419
|
+
} else {
|
|
420
|
+
primitive.material = '';
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
if (dataView.byteLength < offset + 4) {
|
|
424
|
+
throw new Error('Insufficient data for GeomText length');
|
|
425
425
|
}
|
|
426
426
|
const geomTextLen = dataView.getUint32(offset, false);
|
|
427
427
|
offset += 4;
|
|
@@ -91,46 +91,46 @@ function requestInstancedMapping(instances, drawObjs) {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
function getInstanceNormalSign(matrix) {
|
|
95
|
-
if (!matrix || typeof matrix.determinant !== 'function') return 1;
|
|
96
|
-
return matrix.determinant() < 0 ? -1 : 1;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function getMatrixVal(matrix) {
|
|
100
|
-
const val = matrix && matrix.val ? matrix.val : matrix;
|
|
101
|
-
return val && val.length >= 16 ? val : null;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function composeInstanceMatrix(instance, mesh, geometry) {
|
|
105
|
-
const resultMatrix = new THREE.Matrix4();
|
|
106
|
-
const meshMatrix = new THREE.Matrix4();
|
|
107
|
-
const primitiveMatrix = new THREE.Matrix4();
|
|
108
|
-
const meshMatrixVal = getMatrixVal(instance && instance.matrix);
|
|
109
|
-
const primitiveMatrixVal = getMatrixVal(mesh && mesh.matrix);
|
|
110
|
-
|
|
111
|
-
if (meshMatrixVal) {
|
|
112
|
-
meshMatrix.fromArray(meshMatrixVal);
|
|
113
|
-
}
|
|
114
|
-
if (primitiveMatrixVal) {
|
|
115
|
-
primitiveMatrix.fromArray(primitiveMatrixVal);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const { points, alignType } = mesh || {};
|
|
119
|
-
if (mesh && isTextType(mesh.type) && points && points.length >= 3) {
|
|
120
|
-
const positionMatrix = new THREE.Matrix4();
|
|
121
|
-
const alignMatrix = createAlignedText(alignType, geometry);
|
|
122
|
-
positionMatrix.identity().makeTranslation(points[0], points[1], points[2]);
|
|
123
|
-
primitiveMatrix.multiply(alignMatrix).multiply(positionMatrix);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
resultMatrix.multiplyMatrices(meshMatrix, primitiveMatrix);
|
|
127
|
-
return resultMatrix;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* 重置处理状态,用于新的批量加载会话
|
|
132
|
-
*/
|
|
133
|
-
function resetProcessingState() {
|
|
94
|
+
function getInstanceNormalSign(matrix) {
|
|
95
|
+
if (!matrix || typeof matrix.determinant !== 'function') return 1;
|
|
96
|
+
return matrix.determinant() < 0 ? -1 : 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function getMatrixVal(matrix) {
|
|
100
|
+
const val = matrix && matrix.val ? matrix.val : matrix;
|
|
101
|
+
return val && val.length >= 16 ? val : null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function composeInstanceMatrix(instance, mesh, geometry) {
|
|
105
|
+
const resultMatrix = new THREE.Matrix4();
|
|
106
|
+
const meshMatrix = new THREE.Matrix4();
|
|
107
|
+
const primitiveMatrix = new THREE.Matrix4();
|
|
108
|
+
const meshMatrixVal = getMatrixVal(instance && instance.matrix);
|
|
109
|
+
const primitiveMatrixVal = getMatrixVal(mesh && mesh.matrix);
|
|
110
|
+
|
|
111
|
+
if (meshMatrixVal) {
|
|
112
|
+
meshMatrix.fromArray(meshMatrixVal);
|
|
113
|
+
}
|
|
114
|
+
if (primitiveMatrixVal) {
|
|
115
|
+
primitiveMatrix.fromArray(primitiveMatrixVal);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const { points, alignType } = mesh || {};
|
|
119
|
+
if (mesh && isTextType(mesh.type) && points && points.length >= 3) {
|
|
120
|
+
const positionMatrix = new THREE.Matrix4();
|
|
121
|
+
const alignMatrix = createAlignedText(alignType, geometry);
|
|
122
|
+
positionMatrix.identity().makeTranslation(points[0], points[1], points[2]);
|
|
123
|
+
primitiveMatrix.multiply(alignMatrix).multiply(positionMatrix);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
resultMatrix.multiplyMatrices(meshMatrix, primitiveMatrix);
|
|
127
|
+
return resultMatrix;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 重置处理状态,用于新的批量加载会话
|
|
132
|
+
*/
|
|
133
|
+
function resetProcessingState() {
|
|
134
134
|
drawObjMapInstance = {};
|
|
135
135
|
// instanceToInstancedMeshMap.clear();
|
|
136
136
|
// processedDrawObjects.clear();
|
|
@@ -465,27 +465,27 @@ function setInstanceMatricesAndColors(model, drawObj, mesh, meshName, customColo
|
|
|
465
465
|
|
|
466
466
|
// const instancedMesh = instanceToInstancedMeshMap.get(item.instanceId);
|
|
467
467
|
|
|
468
|
-
const m4 = composeInstanceMatrix(item, mesh, model.geometry);
|
|
469
|
-
model.setMatrixAt(index, m4);
|
|
470
|
-
|
|
471
|
-
const normalSignAttr = model.geometry && model.geometry.getAttribute('instanceNormalSign');
|
|
472
|
-
if (normalSignAttr && normalSignAttr.array && index < normalSignAttr.array.length) {
|
|
473
|
-
normalSignAttr.array[index] = getInstanceNormalSign(m4);
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
const copyMatrix = new THREE.Matrix4().copy(m4);
|
|
477
|
-
model.userData.copyMatrix = copyMatrix;
|
|
478
|
-
|
|
479
|
-
const temp = model.userData.instancesMap.get(item.instanceId);
|
|
480
|
-
temp.copyMatrix = copyMatrix;
|
|
481
|
-
if (sourceVisible === false) {
|
|
482
|
-
const offsetMatrix = new THREE.Matrix4()
|
|
483
|
-
.copy(copyMatrix)
|
|
484
|
-
.makeTranslation(9999999, 9999999, 9999999);
|
|
485
|
-
model.setMatrixAt(index, offsetMatrix);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
// 设置颜色
|
|
468
|
+
const m4 = composeInstanceMatrix(item, mesh, model.geometry);
|
|
469
|
+
model.setMatrixAt(index, m4);
|
|
470
|
+
|
|
471
|
+
const normalSignAttr = model.geometry && model.geometry.getAttribute('instanceNormalSign');
|
|
472
|
+
if (normalSignAttr && normalSignAttr.array && index < normalSignAttr.array.length) {
|
|
473
|
+
normalSignAttr.array[index] = getInstanceNormalSign(m4);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
const copyMatrix = new THREE.Matrix4().copy(m4);
|
|
477
|
+
model.userData.copyMatrix = copyMatrix;
|
|
478
|
+
|
|
479
|
+
const temp = model.userData.instancesMap.get(item.instanceId);
|
|
480
|
+
temp.copyMatrix = copyMatrix;
|
|
481
|
+
if (sourceVisible === false) {
|
|
482
|
+
const offsetMatrix = new THREE.Matrix4()
|
|
483
|
+
.copy(copyMatrix)
|
|
484
|
+
.makeTranslation(9999999, 9999999, 9999999);
|
|
485
|
+
model.setMatrixAt(index, offsetMatrix);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// 设置颜色
|
|
489
489
|
model.setColorAt(index, meshColor);
|
|
490
490
|
});
|
|
491
491
|
|
|
@@ -560,9 +560,9 @@ function appendInstanceToInstancedMesh(model, drawObj, mesh, instance, customCol
|
|
|
560
560
|
? new THREE.Color(customColor)
|
|
561
561
|
: new THREE.Color(`rgb(${colorArr[0]}, ${colorArr[1]}, ${colorArr[2]})`);
|
|
562
562
|
|
|
563
|
-
if (!mesh) return;
|
|
564
|
-
|
|
565
|
-
const m4 = composeInstanceMatrix(instance, mesh, model.geometry);
|
|
563
|
+
if (!mesh) return;
|
|
564
|
+
|
|
565
|
+
const m4 = composeInstanceMatrix(instance, mesh, model.geometry);
|
|
566
566
|
const renderMatrix =
|
|
567
567
|
sourceVisible === false
|
|
568
568
|
? new THREE.Matrix4().copy(m4).makeTranslation(9999999, 9999999, 9999999)
|