|
|
<!DOCTYPE html>
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
<title>SUSTech POINTS</title>
|
|
|
<meta charset="utf-8">
|
|
|
<link rel="icon" type="image/png" href="/3Dpoints/static/icon2.png">
|
|
|
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
|
|
<!-- <script src="/3Dpoints/static/js/lib/jquery-1.12.4.js"></script>
|
|
|
<link rel="stylesheet" href="/3Dpoints/static/js/lib/jquery-ui-1.12.1/jquery-ui.min.css">
|
|
|
<script src="/3Dpoints/static/js/lib/jquery-ui-1.12.1/jquery-ui.min.js"></script> -->
|
|
|
|
|
|
<!-- <link type="text/css" rel="stylesheet" href="/3Dpoints/static/css/main.css"> -->
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body>
|
|
|
|
|
|
<div id="main-editor"></div>
|
|
|
<!-- div id="batch-editor"-->
|
|
|
</div>
|
|
|
<template id="editor-template"><div id="main-ui" class="editor-ui">
|
|
|
<div id="header">
|
|
|
<div id="global-info">
|
|
|
<!-- text id="frame"></text-->
|
|
|
<div id="selectors">
|
|
|
<select id="scene-selector">
|
|
|
<option>场景</option>
|
|
|
</select>
|
|
|
<div id='btn-reload-scene-list' class="ui-button" title="reload scene list">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M 12 20 A 8 8 0 1 1 20 12 M 21 9 L 20 12 L 18 10" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<select id="frame-selector">
|
|
|
<option>结构</option>
|
|
|
</select>
|
|
|
<!-- <select id="camera-selector">
|
|
|
<option>--camera--</option>
|
|
|
</select> -->
|
|
|
<div id="camera-selector">
|
|
|
<span>相机</span>
|
|
|
<div id="camera-list">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<select id="object-selector">
|
|
|
<option>对象</option>
|
|
|
</select>
|
|
|
|
|
|
<text id="box"></text>
|
|
|
<text id="ref-obj"></text>
|
|
|
</div>
|
|
|
|
|
|
<div id="buttons">
|
|
|
<div id="dynamic-buttons-placeholder">
|
|
|
</div>
|
|
|
|
|
|
<div id="static-buttons">
|
|
|
<div id="changed-mark" class="ui-button">
|
|
|
<div id='save-button'>
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M 4 4 L 18 4 L 20 6 L 20 20 L 4 20 Z M 8 4 h 8 v 2 h -8 z M 6 10 h 12 V 18 h -12 z "></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="changed-world-list-wrapper">
|
|
|
<div> All modified frames, click to save them all</div>
|
|
|
<div id='changed-world-list'></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="log-button" class="ui-button">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" id="log-svg" class="svg-button">
|
|
|
<g>
|
|
|
<circle cx = 12 cy=12 r=4 />
|
|
|
</g>
|
|
|
</svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="config-button" class="ui-button">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button">
|
|
|
<g>
|
|
|
<circle cx = 12 cy=7 r=1 />
|
|
|
<circle cx = 12 cy=12 r=1 />
|
|
|
<circle cx = 12 cy=17 r=1 />
|
|
|
</g>
|
|
|
</svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="content">
|
|
|
<div id="container">
|
|
|
<div id='select-box' ></div>
|
|
|
<svg width="100%" height="100%" id = "main-view-svg">
|
|
|
<g id="grid-lines-wrapper"></g>
|
|
|
</svg>
|
|
|
</div>
|
|
|
|
|
|
<!-- div id="image"></div -->
|
|
|
<div id="floating-things">
|
|
|
<div id="floating-labels" class="non-selectable"></div>
|
|
|
<div id="obj-editor">
|
|
|
|
|
|
<div class="obj-editor-row">
|
|
|
<div id="label-copy" class="ui-button" title="copy (C-c)">
|
|
|
<!-- <span class="ui-icon ui-icon-copy"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <rect x="4" y="4" width="12" height="12"/> -->
|
|
|
<rect x="8" y="8" width="12" height="12"/>
|
|
|
<polyline points="8 16 4 16 4 4 16 4 16 8 "/>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="label-paste" class="ui-button" title="auto adjust">
|
|
|
<!-- <span class="ui-icon ui-icon-key"></span></div> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <rect x="4" y="8" width="16" height="12"/>
|
|
|
<circle cx="12" cy="8" r = "4"/> -->
|
|
|
<circle cx=12 cy=12 r=4 />
|
|
|
<rect x=10 y=16 width=4 height=4 />
|
|
|
<polyline points='12 3 12 6' />
|
|
|
<polyline points='3 12 6 12' />
|
|
|
<polyline points='18 12 21 12' />
|
|
|
<polyline points='5 5 8 8' />
|
|
|
<polyline points='18 5 15 8' />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="label-batchedit" class="ui-button" title="edit multiple instances">
|
|
|
<!-- <span class="ui-icon ui-icon-zoomin"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x="4" y="4" width="8" height="8"/>
|
|
|
<rect x="4" y="12" width="8" height="8"/>
|
|
|
<rect x="12" y="4" width="8" height="8"/>
|
|
|
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="label-trajectory" class="ui-button" title="trajectory">
|
|
|
<!-- <span class="ui-icon ui-icon-zoomin"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M 4 4 C 20 4, 4 20, 20 20" />
|
|
|
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="label-highlight" class="ui-button" title="focus">
|
|
|
<!-- <span class="ui-icon ui-icon-zoomin"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<circle cx="10" cy="10" r="7"/>
|
|
|
<polyline points="15 15 20 20"/>
|
|
|
<polyline points="10 6 10 14"/>
|
|
|
<polyline points="6 10 14 10"/>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="label-edit" class="ui-button" title="edit">
|
|
|
<!-- <span class="ui-icon ui-icon-pencil"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<polyline points="12 4 12 20" />
|
|
|
<polyline points="4 9 12 9" />
|
|
|
<polyline points="8 5 12 9 8 13" />
|
|
|
<polyline points="20 15 12 15" />
|
|
|
<!-- <polyline points="16 19 12 15 16 11" /> -->
|
|
|
</svg>
|
|
|
</div>
|
|
|
<div id="label-rotate" class="ui-button" title="reverse direction (g)">
|
|
|
<!-- <span class="ui-icon ui-icon-transferthick-e-w"></span></div> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <rect x=6 y=4 width=12 height=8 />
|
|
|
<polyline points="12 12 12 20" />
|
|
|
<polyline points="8 16 12 20 16 16" /> -->
|
|
|
<rect x=8 y=8 width=8 height=8 />
|
|
|
|
|
|
<polyline points="12 12 12 21" />
|
|
|
<polyline points="10 19 12 21 14 19" />
|
|
|
|
|
|
<polyline points="12 12 12 3" stroke-dasharray="1" />
|
|
|
<polyline points="10 5 12 3 14 5" stroke-dasharray="1" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="label-del" class="ui-button" title="delete (Del)">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V8H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="label-more" class="ui-button">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<g>
|
|
|
<circle cx="7" cy="12" r="0.5"></circle>
|
|
|
<circle cx="12" cy="12" r="0.5"></circle>
|
|
|
<circle cx="17" cy="12" r="0.5"></circle>
|
|
|
</g>
|
|
|
</g></svg>
|
|
|
|
|
|
<div id="object-dropdown-menu" class="non-selectable">
|
|
|
<div class="menu-item" id="cm-delete-obj">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">删除此对象 (在所有帧中)</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-modify-obj-type">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步对象类型和属性</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-modify-obj-size">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步对象大小</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-auto-ann-background">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">在后台自动运行</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-interpolate-background">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">将其插入到背景中</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-select-as-ref">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">复制/选择作为参考</div>
|
|
|
</div>
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-change-id-to-ref">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">将ID更改为Ref</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-change-id-to-ref-in-scene">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">将所有框架中的ID更改为Ref</div>
|
|
|
</div>
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-follow-ref">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">关注参考</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-sync-followers">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步关注者</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-follow-static-objects">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">跟随静态物体</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="obj-editor-row">
|
|
|
<select title="category" id="object-category-selector"></select>
|
|
|
|
|
|
<input title="tracking id" list="obj-ids-of-scene" id="object-track-id-editor" type="text" size="5" placeholder="track id"></input>
|
|
|
<datalist id="obj-ids-of-scene"></datalist>
|
|
|
<div id="label-gen-id" class="ui-button" title="generate ID">
|
|
|
<!-- <span class="ui-icon ui-icon-copy"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <rect x="4" y="4" width="12" height="12"/> -->
|
|
|
<rect x="6" y="6" width="12" height="12"/>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class = "obj-editor-row">
|
|
|
<div id="attr-editor">
|
|
|
<input title="attribute" id="attr-input" type="text" size="10" placeholder="attribute">
|
|
|
<div id="attr-selector">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div id="main-box-editor-wrapper"></div>
|
|
|
<div id="batch-box-editor">
|
|
|
<div id="batch-box-editor-header"></div>
|
|
|
<div id="batch-box-editor-group"></div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="context-menu-wrapper" class="non-selectable">
|
|
|
<div id="context-menu">
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-new">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">新建</div>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="new-submenu">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-paste" title="hold shift key to disable auto-adjust">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">粘贴</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
<div class="menu-item" id="cm-goto">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">前往</div>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="goto-submenu">
|
|
|
<div class="menu-item" id="cm-prev-frame">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">上一帧 (3)</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-next-frame">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">下一帧 (4)</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-first-frame">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">第一帧</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-last-frame">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">最后一帧</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-prev-object">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">上一个对象 (1)</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-next-object">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">下一个对象 (2)</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-go-to-10hz">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">完整的 10hz 场景</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-go-to-full-2hz">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">完整的 2Hz 场景</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-go-to-2hz">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">2Hz 场景</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-play">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">运行</div>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="play-submenu">
|
|
|
<div class="menu-item" id="cm-play-2fps">
|
|
|
<div class="menu-item-text">2 FPS/秒</div></div>
|
|
|
<div class="menu-item" id="cm-play-10fps">
|
|
|
<div class="menu-item-text">10 FPS/秒</div></div>
|
|
|
<div class="menu-item" id="cm-play-20fps">
|
|
|
<div class="menu-item-text">20 FPS/秒</div></div>
|
|
|
<div class="menu-item" id="cm-play-50fps">
|
|
|
<div class="menu-item-text">50 FPS/秒</div></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-pause">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">暂停/恢复 (空格)</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-stop">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">停止</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-save">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">保存 (Ctrl-s)</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- <div class="menu-item" id="cm-save-all">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">Save All</div>
|
|
|
<div id="saveall-submenu"></div>
|
|
|
</div> -->
|
|
|
|
|
|
<div class="menu-item" id="cm-reload">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">重新加载 (Ctrl-r)</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-reload-all">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">全部重新加载</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
<div class="menu-item" id="cm-reset-view">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">重制视图</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-show-frame-info">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">结构信息</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-show-stat">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">统计</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-check-scene">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">查看</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="object-context-menu">
|
|
|
<div class="menu-item" id="cm-delete">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">删除</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-delete-obj">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">删除此对象 (在所有帧中)</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-modify-obj-type">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步对象类型和属性</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-modify-obj-size">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步对象大小</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-edit-multiple-instances">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">编辑多个实例</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-auto-ann-background">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">后台自动注释</div>
|
|
|
</div>
|
|
|
<div class="menu-item" id="cm-interpolate-background">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">在背景中插入</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-show-trajectory">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">显示轨迹</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-select-as-ref">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">复制/选择作为参考</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-follow-ref">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">关注参考</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-sync-followers">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">同步关注者</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-follow-static-objects">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">跟随静态物体</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="box-editor-context-menu">
|
|
|
|
|
|
<div class="menu-item" id="cm-select-all">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text"><u>选取</u>所有</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-select-all-previous">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">选择所有先前的</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-select-all-next">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">选择全部下一个</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-delete-empty-boxes">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">删除空框</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
<div class="menu-item" id="cm-delete">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text"><u>删除</u></div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-delete-intersected-boxes">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">删除相交的框</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-interpolate">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">插值</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-auto-annotate">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">自动注释</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-auto-annotate-wo-rotation">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">自动注释 (没有旋转)</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-fit">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">适应</div>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="cm-fit-submenu">
|
|
|
<div class="menu-item" id="cm-fit-size">
|
|
|
<div class="menu-item-text">尺寸</div></div>
|
|
|
<div class="menu-item" id="cm-fit-position">
|
|
|
<div class="menu-item-text">位置</div></div>
|
|
|
<div class="menu-item" id="cm-fit-rotation">
|
|
|
<div class="menu-item-text">旋转</div></div>
|
|
|
<div class="menu-item" id="cm-fit-moving-direction">
|
|
|
<div class="menu-item-text">移动方向</div></div>
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-fit-top">
|
|
|
<div class="menu-item-text">底部</div></div>
|
|
|
<div class="menu-item" id="cm-fit-bottom">
|
|
|
<div class="menu-item-text">底部</div></div>
|
|
|
<div class="menu-item" id="cm-fit-left">
|
|
|
<div class="menu-item-text">左边</div></div>
|
|
|
<div class="menu-item" id="cm-fit-right">
|
|
|
<div class="menu-item-text">右边</div></div>
|
|
|
<div class="menu-item" id="cm-fit-front">
|
|
|
<div class="menu-item-text">正面</div></div>
|
|
|
<div class="menu-item" id="cm-fit-rear">
|
|
|
<div class="menu-item-text">后面</div></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-reverse-direction">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">反转航向</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-reset-roll-pitch">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">重置滚动和俯仰</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-finalize">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">最终确定</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-reload">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">重新加载</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
<div class="menu-item" id="cm-goto-this-frame">
|
|
|
<div class="menu-item-text">转到此框架</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-sync-size">
|
|
|
<div class="menu-item-text">将尺寸同步到所有</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-follow-static-objects">
|
|
|
<div class="menu-item-text">跟随静态物体</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <div class="menu-item" id="cm-this">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">This frame</div>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="cm-this-submenu">
|
|
|
|
|
|
</div>
|
|
|
</div> -->
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cm-show-trajectory">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">轨迹</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-check">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">查看</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div id="box-editor-manager-context-menu">
|
|
|
<div class="menu-item" id="cm-increase-box-editor">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">More object instance</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cm-decrease-box-editor">
|
|
|
<div class="menu-item-icon">
|
|
|
</div>
|
|
|
<div class="menu-item-text">less object instance</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="config-wrapper">
|
|
|
<div id="config-menu" class="non-selectable">
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-theme">
|
|
|
<span>主题</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<select type="checkbox" id="cfg-theme-select" class="cfg-widget">
|
|
|
<option value="dark" selected>黑色</option>
|
|
|
<option value="light" selected>白色</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="menu-nonclickable-item" id="cfg-point-size">
|
|
|
<span>点尺寸</span>
|
|
|
<div class='cfg-widget-group'>
|
|
|
<div id='cfg-increase-size' class='menu-button'>+</div>
|
|
|
<div id='cfg-decrease-size' class='menu-button'>-</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="menu-nonclickable-item" id="cfg-point-brightness">
|
|
|
<span>点亮度</span>
|
|
|
<div class='cfg-widget-group'>
|
|
|
<div id='cfg-increase-brightness' class='menu-button'>+</div>
|
|
|
<div id='cfg-decrease-brightness' class='menu-button'>-</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-hide-circle-ruler">
|
|
|
<span>隐藏圆形标尺</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-hide-circle-ruler-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-hide-box">
|
|
|
<span>隐藏框</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-hide-box-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-hide-id">
|
|
|
<span>隐藏ID</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-hide-id-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-hide-category">
|
|
|
<span>隐藏类别</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-hide-category-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-color-points">
|
|
|
<span>点色</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<select type="checkbox" id="cfg-color-points-select" class="cfg-widget">
|
|
|
<option value="mono" selected>默认</option>
|
|
|
<option value="intensity" selected>增强</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-color-object">
|
|
|
<span>对象样色</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<select id="cfg-color-object-scheme" class="cfg-widget">
|
|
|
<option value="category">按种类</option>
|
|
|
<option value="id">按ID</option>
|
|
|
<option value="no">无颜色</option>
|
|
|
</select>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-menu-batch-mode-inst-number">
|
|
|
<span>批编辑模式下显示的实例个数</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<select title="instance number" id="cfg-batch-mode-inst-number" class="cfg-widget">
|
|
|
<option value = 10>10</option>
|
|
|
<option value = 20 selected>20</option>
|
|
|
<option value = 30>30</option>
|
|
|
<option value = 40>40</option>
|
|
|
</select>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-coordinate-system">
|
|
|
<span>坐标系</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<select title="coordinate system" id="cfg-coordinate-system-select" class="cfg-widget">
|
|
|
<option value = "utm">GPS/UTM</option>
|
|
|
<option value = "lidar" selected>雷达</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-auto-rotate-xy">
|
|
|
<span>自动旋转 X/Y (滚动/俯仰)</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-auto-rotate-xy-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-auto-update-interpolated-boxes">
|
|
|
<span>自动更新插入框</span>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-auto-update-interpolated-boxes-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
|
|
|
<div class="menu-item" id="cfg-data">
|
|
|
<span>数据设置</span>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="cfg-data-submenu">
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-data-preload">
|
|
|
<div class="menu-item-text">预加载</div>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-data-preload-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-data-aux-lidar">
|
|
|
<div class="menu-item-text">辅助激光雷达</div>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-data-aux-lidar-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-data-radar">
|
|
|
<div class="menu-item-text">雷达</div>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-data-radar-checkbox" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-nonclickable-item" id="cfg-data-filter-points">
|
|
|
<div class="menu-item-text">隐藏点</div>
|
|
|
<div class="cfg-widget-group">
|
|
|
<input type="checkbox" id="cfg-data-filter-points-checkbox" class="cfg-widget">
|
|
|
<span> z-阀值</span>
|
|
|
<input id="cfg-data-filter-points-z" class="cfg-widget">
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="menu-item" id="cfg-experimental">
|
|
|
<span>实验</span>
|
|
|
<div class="menu-item-arrow menu-item-icon">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-menu-icon"><g>
|
|
|
<path d="M12 8 L 18 12 L 12 16Z"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="cfg-experimental-submenu">
|
|
|
<div class="menu-nonclickable-item" id="cfg-calib-camera-LiDAR">
|
|
|
<div class="menu-item-text">相机-激光雷达校准</div>
|
|
|
<div class='cfg-widget-group'>
|
|
|
<div id='cfg-start-calib' class='menu-button'>开始</div>
|
|
|
<div id='cfg-show-calib' class='menu-button'>结构</div>
|
|
|
<div id='cfg-stop-calib' class='menu-button'>停止</div>
|
|
|
<!-- <div id='cfg-reset-calib' class='menu-button'>reset</div> -->
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cfg-crop-scene">
|
|
|
<div class="menu-item-text">收获场景</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cfg-show-log">
|
|
|
<span>显示日志</span>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cfg-take-screenshot">
|
|
|
<span>屏幕截图</span>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item" id="cfg-help">
|
|
|
<a href="https://github.com/naurril/SUSTechPOINTS/blob/dev-auto-annotate/README_guide.md" target="_blank">帮助</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- div id="projective-view-context-menu">
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
<div class="menu-item" id="cm-delete">
|
|
|
<div class="menu-item-icon"></div>
|
|
|
<div class="menu-item-text">Delete</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="menu-item menu-seperator"></div>
|
|
|
</div -->
|
|
|
<div id="object-track-wrapper" class="popup-window-wrapper" tabindex="-1">
|
|
|
<div id="view" class="non-selectable">
|
|
|
<div id="header">
|
|
|
<span id="title">
|
|
|
Trajectory
|
|
|
</span>
|
|
|
|
|
|
<div id="buttons">
|
|
|
<div id="btn-restore" class="ui-button" title="restore">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 6 y = 6 width=12 height=12></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-maximize" class="ui-button" title="maximize">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 4 y = 4 width=16 height=16></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-exit" class="ui-button" title="exit">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M4 4 L 20 20 M 20 4 L 4 20"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<svg id = "object-track-svg" viewbox="0 0 1000 1000" preserveAspectRatio="xMinYMax meet">
|
|
|
<g id="svg-arrows"></g>
|
|
|
<g id="svg-scaler"></g>
|
|
|
</svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="info-wrapper" class="popup-window-wrapper" tabindex='-1'>
|
|
|
<div id="view">
|
|
|
<div id="header">
|
|
|
<span id="title">Info</span>
|
|
|
<div id="buttons">
|
|
|
<div id="btn-restore" class="ui-button" title="restore">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 6 y = 6 width=12 height=12></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-maximize" class="ui-button" title="maximize">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 4 y = 4 width=16 height=16></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-exit" class="ui-button" title="exit">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M4 4 L 20 20 M 20 4 L 4 20"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div id="info-content"></div>
|
|
|
<div id="info-bottom-buttons">
|
|
|
<button id="btn-no">No</button>
|
|
|
<button id="btn-yes">Yes</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="crop-scene-wrapper" class="popup-window-wrapper" tabindex='-1'>
|
|
|
<div id="view">
|
|
|
<div id="header">
|
|
|
<span id="title">Crop scene</span>
|
|
|
<div id="buttons">
|
|
|
<div id="btn-restore" class="ui-button" title="restore">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 6 y = 6 width=12 height=12></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-maximize" class="ui-button" title="maximize">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 4 y = 4 width=16 height=16></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-exit" class="ui-button" title="exit">
|
|
|
<!-- <span class="ui-icon ui-icon-trash"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M4 4 L 20 20 M 20 4 L 4 20"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div id="content">
|
|
|
<div>
|
|
|
<!-- <div><span>scene-id:</span><input id="scene-id" /></div> -->
|
|
|
<div><span>desc:</span><input id="scene-desc" /></div>
|
|
|
<div><span>start time:</span><input id="scene-start-time" /></div>
|
|
|
<div><span>seconds:</span><input id="scene-seconds" /></div>
|
|
|
|
|
|
<div>
|
|
|
<button id="btn-generate">generate</button>
|
|
|
</div>
|
|
|
|
|
|
<div id="log">
|
|
|
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="log-wrapper" class="popup-window-wrapper" tabindex='-1' style="display: none;">
|
|
|
<div id="view">
|
|
|
<div id="header">
|
|
|
<span id="title">终端</span>
|
|
|
<div id="buttons">
|
|
|
<!-- <div id="btn-restore" class="ui-button" title="restore">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 6 y = 6 width=12 height=12></rect>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-maximize" class="ui-button" title="maximize">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x = 4 y = 4 width=16 height=16></rect>
|
|
|
</g></svg>
|
|
|
</div> -->
|
|
|
|
|
|
<div id="btn-clear" class="ui-button" title="clear logs">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<circle cx = 12 cy=12 r= 8 />
|
|
|
<polyline points="7 7 17 17" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="btn-exit" class="ui-button" title="exit">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<path d="M4 4 L 20 20 M 20 4 L 4 20"></path>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div id="tabs">
|
|
|
<div id = "tab-log" class="tab-button tab-selected">日志</div>
|
|
|
<div id = "tab-error" class="tab-button">异常</div>
|
|
|
</div>
|
|
|
<div id="content-logs">
|
|
|
</div>
|
|
|
<div id="content-errors">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div id="move-handle-wrapper">
|
|
|
</div>
|
|
|
|
|
|
|
|
|
</template>
|
|
|
<template id="box-editor-ui-template"><div id="sub-views">
|
|
|
<div class="box-info non-selectable" id="box-info"></div>
|
|
|
<div class="view-manipulator" id="z-view-manipulator" tabindex="-1">
|
|
|
<!-- <div class="subview-obj-size">
|
|
|
<div class="obj-vertical-size">2.33</div>
|
|
|
<div class="obj-horizontal-size"></div>
|
|
|
</div> -->
|
|
|
<svg class="subview-svg" id = "view-svg">
|
|
|
<circle cx="50%" cy="50%" r="5" class="origin-point-indicator" id="origin-point-indicator"></circle>
|
|
|
<rect x="70" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-left-handle"/>
|
|
|
<line x1="80" y1="40" x2="80" y2="200" class = "svg-line" id="line-left" />
|
|
|
|
|
|
<rect x="90" y="30" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-top-handle"/>
|
|
|
<line x1="80" y1="40" x2="140" y2="40" class = "svg-line" id="line-top" />
|
|
|
|
|
|
<rect x="130" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-right-handle"/>
|
|
|
<line x1="140" y1="40" x2="140" y2="200" class = "svg-line" id="line-right" />
|
|
|
|
|
|
<rect x="90" y="190" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-bottom-handle"/>
|
|
|
<line x1="80" y1="200" x2="140" y2="200" class = "svg-line" id="line-bottom" />
|
|
|
|
|
|
<rect x="110" y="120" width="20" height="70" fill="#00000000" class="line-handle ew-handle" id="line-direction-handle"/>
|
|
|
<line x1="110" y1="120" x2="110" y2="40" class = "svg-line" id="line-direction" />
|
|
|
|
|
|
<!-- corners -->
|
|
|
<rect x="60" y="40" width="20" height="20" fill="#00000000" class="line-handle nw-handle" id="top-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle ne-handle" id="top-right-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle sw-handle" id="bottom-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle se-handle" id="bottom-right-handle"/>
|
|
|
|
|
|
<rect x="100" y="110" width="20" height="20" fill="#00000000" class="line-handle grab-handle" id="move-handle"/>
|
|
|
</svg>
|
|
|
<div class="v-buttons-wrapper" id="v-buttons">
|
|
|
<div id="v-fit-position" class="ui-button" title="Fit position">
|
|
|
<!-- <span class="ui-icon ui-icon-arrow-4"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" /> -->
|
|
|
<!-- <polyline points="8 10 20 8 22 18 10 20 8 10" /> -->
|
|
|
<rect x="8" y="8" width="12" height="12" stroke-dasharray="1"/>
|
|
|
<rect x="4" y="4" width="12" height="12"/>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="v-fit-rotation" class="ui-button" title="Fit Rotation">
|
|
|
<!-- <span class="ui-icon ui-icon-arrow-1-n"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x="8" y="10" width="12" height="10"/>
|
|
|
<polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="v-fit-size" class="ui-button" title="Fit size">
|
|
|
<!-- <span class="ui-icon ui-icon-arrow-4"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<!-- <polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" /> -->
|
|
|
<!-- <polyline points="8 10 20 8 22 18 10 20 8 10" /> -->
|
|
|
<rect x="8" y="10" width="10" height="12" stroke-dasharray="1"/>
|
|
|
<rect x="4" y="4" width="8" height="10"/>
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div id="v-fit-all" class="ui-button" title="Fit all">
|
|
|
<!-- <span class="ui-icon ui-icon-arrow-2-n-s"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x="6" y="6" width="14" height="14"/>
|
|
|
<polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<div id="v-fit-moving-direction" class="ui-button" title="Fit moving direction">
|
|
|
<!-- <span class="ui-icon ui-icon-arrow-2-n-s"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<polyline points="6 18 14 10"/>
|
|
|
<polyline points="10 10 14 10 14 14"/>
|
|
|
<circle cx=5 cy=19 r=2 />
|
|
|
<circle cx=19 cy=5 r=2 />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
|
|
|
<!-- <div id="v-reset-rotation" class="ui-button" title="reset rotation">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<circle cx=12 cy=12 r=8 />
|
|
|
<circle cx=12 cy=12 r=1 />
|
|
|
</g></svg>
|
|
|
</div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="view-manipulator" id="y-view-manipulator" tabindex="-1">
|
|
|
<svg class="subview-svg" id="view-svg">
|
|
|
<rect x="70" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-left-handle"/>
|
|
|
<line x1="80" y1="40" x2="80" y2="200" class = "svg-line" id="line-left" />
|
|
|
|
|
|
<rect x="90" y="30" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-top-handle"/>
|
|
|
<line x1="80" y1="40" x2="140" y2="40" class = "svg-line" id="line-top" />
|
|
|
|
|
|
<rect x="130" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-right-handle"/>
|
|
|
<line x1="140" y1="40" x2="140" y2="200" class = "svg-line" id="line-right" />
|
|
|
|
|
|
<rect x="90" y="190" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-bottom-handle"/>
|
|
|
<line x1="80" y1="200" x2="140" y2="200" class = "svg-line" id="line-bottom" />
|
|
|
|
|
|
<rect x="110" y="120" width="20" height="70" fill="#00000000" class="line-handle ew-handle" id="line-direction-handle"/>
|
|
|
<line x1="110" y1="120" x2="110" y2="40" class = "svg-line" id="line-direction" />
|
|
|
|
|
|
<!-- corners -->
|
|
|
<rect x="60" y="40" width="20" height="20" fill="#00000000" class="line-handle nw-handle" id="top-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle ne-handle" id="top-right-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle sw-handle" id="bottom-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle se-handle" id="bottom-right-handle"/>
|
|
|
|
|
|
<rect x="100" y="110" width="20" height="20", fill="#00000000" class="line-handle grab-handle" id="move-handle"/>
|
|
|
|
|
|
</svg>
|
|
|
<div class="v-buttons-wrapper" id="v-buttons">
|
|
|
<div id="v-fit-all" class="ui-button" title="fit all">
|
|
|
<!-- <span class="ui-icon ui-icon-key"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x="6" y="6" width="14" height="14"/>
|
|
|
<polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="v-reset-rotation" class="ui-button" title="reset rotation">
|
|
|
<!-- <span class="ui-icon ui-icon-refresh"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<circle cx=12 cy=12 r=8 />
|
|
|
<circle cx=12 cy=12 r=1 />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="view-manipulator" id="x-view-manipulator" tabindex="-1">
|
|
|
<svg class="subview-svg" id="view-svg">
|
|
|
<rect x="70" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-left-handle"/>
|
|
|
<line x1="80" y1="40" x2="80" y2="200" class = "svg-line" id="line-left" />
|
|
|
|
|
|
<rect x="90" y="30" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-top-handle"/>
|
|
|
<line x1="80" y1="40" x2="140" y2="40" class = "svg-line" id="line-top" />
|
|
|
|
|
|
<rect x="130" y="50" width="20" height="140" fill="#00000000" class="line-handle ew-handle" id="line-right-handle"/>
|
|
|
<line x1="140" y1="40" x2="140" y2="200" class = "svg-line" id="line-right" />
|
|
|
|
|
|
<rect x="90" y="190" width="40" height="20" fill="#00000000" class="line-handle ns-handle" id="line-bottom-handle"/>
|
|
|
<line x1="80" y1="200" x2="140" y2="200" class = "svg-line" id="line-bottom" />
|
|
|
|
|
|
<rect x="110" y="120" width="20" height="70" fill="#00000000" class="line-handle ew-handle" id="line-direction-handle"/>
|
|
|
<line x1="110" y1="120" x2="110" y2="40" class = "svg-line" id="line-direction" />
|
|
|
|
|
|
<!-- corners -->
|
|
|
<rect x="60" y="40" width="20" height="20" fill="#00000000" class="line-handle nw-handle" id="top-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle ne-handle" id="top-right-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle sw-handle" id="bottom-left-handle"/>
|
|
|
<rect x="110" y="120" width="20" height="20" fill="#00000000" class="line-handle se-handle" id="bottom-right-handle"/>
|
|
|
|
|
|
<rect x="100" y="110" width="20" height="20" fill="#00000000" class="line-handle grab-handle" id="move-handle"/>
|
|
|
|
|
|
</svg>
|
|
|
<div class="v-buttons-wrapper" id="v-buttons">
|
|
|
<div id="v-fit-all" class="ui-button" title="fit all">
|
|
|
<!-- <span class="ui-icon ui-icon-key"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<rect x="6" y="6" width="14" height="14"/>
|
|
|
<polyline points="3 5 15 3 17 13 5 15 3 5" stroke-dasharray="1" />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
<div id="v-reset-rotation" class="ui-button" title="reset rotation">
|
|
|
<!-- <span class="ui-icon ui-icon-refresh"></span> -->
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button"><g>
|
|
|
<circle cx=12 cy=12 r=8 />
|
|
|
<circle cx=12 cy=12 r=1 />
|
|
|
</g></svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<canvas id="focuscanvas" class="non-selectable" width="320" height="240">cavas</canvas>
|
|
|
</div></template>
|
|
|
<template id="batch-editor-tools-template">
|
|
|
<div id="batch-editor-tools-wrapper" class="non-selectable">
|
|
|
<div id="batch-editor-tools">
|
|
|
<!-- <select title="category" id="object-category-selector"></select>
|
|
|
<input title="tracking id" list="obj-ids-of-scene" id="object-track-id-editor" type="text" size="5"></input> -->
|
|
|
|
|
|
|
|
|
|
|
|
<div class="menu-button" id="exit">Exit</div>
|
|
|
|
|
|
<div class="menu-button" id="prev">Previous</div>
|
|
|
<div class="menu-button" id="next">Next</div>
|
|
|
|
|
|
<div class="menu-button" id="trajectory">Trajectory</div>
|
|
|
<div class="menu-button" id="auto-annotate">Auto</div>
|
|
|
<div class="menu-button" id="auto-annotate-translate-only">Auto (no rotation) </div>
|
|
|
<div class="menu-button" id="interpolate">Interpolate</div>
|
|
|
<div class="menu-button" id="reload">Reload</div>
|
|
|
<div class="menu-button" id="finalize">Finalize</div>
|
|
|
|
|
|
<!-- <div class="menu-button" id="save">Save</div> -->
|
|
|
|
|
|
<!-- <div class="ui-button" id="config">
|
|
|
<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="svg-button">
|
|
|
<g>
|
|
|
<circle cx = 12 cy=7 r=1 />
|
|
|
<circle cx = 12 cy=12 r=1 />
|
|
|
<circle cx = 12 cy=17 r=1 />
|
|
|
</g>
|
|
|
</svg>
|
|
|
</div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template id="image-wrapper-template">
|
|
|
<div class="image-wrapper">
|
|
|
<svg id = "maincanvas-svg" viewbox="0 0 2048 1536" preserveAspectRatio="none">
|
|
|
<image id="svg-image" x="0" y="0" width="2048" height="1536" preserveAspectRatio="none"
|
|
|
xlink:href=""
|
|
|
/>
|
|
|
<g id="svg-boxes"></g>
|
|
|
<g id="svg-points"></g>
|
|
|
</svg>
|
|
|
<div id="move-handle">
|
|
|
</div>
|
|
|
<header id="header"></header>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<!-- <script src="/3Dpoints/static/js/lib/ml/tf.min.js"></script> -->
|
|
|
<!-- <script type="module" src="/3Dpoints/static/js/main.js"></script> -->
|
|
|
|
|
|
<script>
|
|
|
function loadDynamicResources() {
|
|
|
// 定义不同环境下的基础路径
|
|
|
const basePath = (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1' || window.location.hostname === '192.168.5.177')
|
|
|
? '.'
|
|
|
: '/3Dpoints';
|
|
|
|
|
|
// 动态加载CSS
|
|
|
const links = [
|
|
|
`${basePath}/static/css/main.css`
|
|
|
]
|
|
|
links.forEach(linkHref => {
|
|
|
const link = document.createElement('link');
|
|
|
link.rel = 'stylesheet';
|
|
|
link.type = 'text/css';
|
|
|
link.href = `${basePath}/static/css/main.css`;
|
|
|
document.head.appendChild(link);
|
|
|
});
|
|
|
|
|
|
// 动态加载JavaScript
|
|
|
const scripts = [
|
|
|
{type:'text/javascript', src:`${basePath}/static/js/lib/ml/tf.min.js`},
|
|
|
{type:'module', src:`${basePath}/static/js/main.js`}
|
|
|
];
|
|
|
|
|
|
scripts.forEach(item => {
|
|
|
const script = document.createElement('script');
|
|
|
script.src = item.src;
|
|
|
script.type = item.type;
|
|
|
document.head.appendChild(script);
|
|
|
});
|
|
|
}
|
|
|
console.log(window.location.href)
|
|
|
try {
|
|
|
loadDynamicResources();
|
|
|
} catch (error) {
|
|
|
document.addEventListener('DOMContentLoaded', loadDynamicResources);
|
|
|
}
|
|
|
</script>
|
|
|
</body>
|
|
|
</html> |