feat:汉化

main
陈炎群 4 months ago
parent d4602681c7
commit 07d627b935

@ -24,7 +24,7 @@
<!-- text id="frame"></text-->
<div id="selectors">
<select id="scene-selector">
<option>--scene--</option>
<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>
@ -32,24 +32,21 @@
</g></svg>
</div>
<select id="frame-selector">
<option>--frame--</option>
<option>结构</option>
</select>
<!-- <select id="camera-selector">
<option>--camera--</option>
</select> -->
<div id="camera-selector">
<span>Camera</span>
<span>相机</span>
<div id="camera-list">
</div>
</div>
</div>
<select id="object-selector">
<option>--object--</option>
<option>对象</option>
</select>
<text id="box"></text>
<text id="ref-obj"></text>
@ -204,56 +201,56 @@
<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">Delete this object (in all frames)</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">Sync object type & attr</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">Sync object size</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">Auto ann. it in background</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">interpolate it in background</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">Copy/Select as Ref</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">Change ID to Ref</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">Change ID to Ref in all frames</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">Follow Ref</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">Sync followers</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">Follow Static Objects</div>
<div class="menu-item-text">跟随静态物体</div>
</div>
</div>
@ -304,7 +301,7 @@
<div class="menu-item" id="cm-new">
<div class="menu-item-icon"></div>
<div class="menu-item-text">New</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>
@ -316,14 +313,14 @@
<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">Paste</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">Go to</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>
@ -332,57 +329,57 @@
<div id="goto-submenu">
<div class="menu-item" id="cm-prev-frame">
<div class="menu-item-icon"></div>
<div class="menu-item-text">Previous frame (3)</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">Next frame (4)</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">First frame</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">Last frame</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">Previous object (1)</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">Next object (2)</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">Full 10hz scene</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">Full 2Hz scene</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 scene</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">Play</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>
@ -390,24 +387,24 @@
</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-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-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-text">20 FPS/秒</div></div>
<div class="menu-item" id="cm-play-50fps">
<div class="menu-item-text">50 FPS</div></div>
<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">Pause/Resume (Space)</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">Stop</div>
<div class="menu-item-text">停止</div>
</div>
<div class="menu-item menu-seperator"></div>
@ -415,7 +412,7 @@
<div class="menu-item" id="cm-save">
<div class="menu-item-icon"></div>
<div class="menu-item-text">Save (C-s)</div>
<div class="menu-item-text">保存 (Ctrl-s)</div>
</div>
<!-- <div class="menu-item" id="cm-save-all">
@ -426,36 +423,36 @@
<div class="menu-item" id="cm-reload">
<div class="menu-item-icon"></div>
<div class="menu-item-text">Reload (C-r)</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">Reload All</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">Reset view</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">Frame info</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">Stat</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">Check</div>
<div class="menu-item-text">查看</div>
</div>
</div>
@ -464,61 +461,61 @@
<div class="menu-item" id="cm-delete">
<div class="menu-item-icon">
</div>
<div class="menu-item-text">Delete</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">Delete this object (in all frames)</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">Sync object type & attr</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">Sync object size</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">Edit multiple instances</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">Auto annotate in background</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">Interpolate in background</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">Show Trajectory</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">Copy/Select as Ref</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">Follow Ref</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">Sync followers</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">Follow Static Objects</div>
<div class="menu-item-text">跟随静态物体</div>
</div>
</div>
@ -528,19 +525,19 @@
<div class="menu-item" id="cm-select-all">
<div class="menu-item-icon">
</div>
<div class="menu-item-text"><u>S</u>elect all</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">Select all previous</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">Select all next</div>
<div class="menu-item-text">选择全部下一个</div>
</div>
@ -549,7 +546,7 @@
<div class="menu-item" id="cm-delete-empty-boxes">
<div class="menu-item-icon">
</div>
<div class="menu-item-text">Delete empty boxes</div>
<div class="menu-item-text">删除空框</div>
</div>
@ -559,37 +556,37 @@
<div class="menu-item" id="cm-delete">
<div class="menu-item-icon">
</div>
<div class="menu-item-text"><u>D</u>elete</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">Delete intersected boxes</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">Int<u>e</u>rpolate</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"><u>A</u>uto annotate</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">Auto annotate (no rotation)</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">Fit</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>
@ -597,65 +594,65 @@
</div>
<div id="cm-fit-submenu">
<div class="menu-item" id="cm-fit-size">
<div class="menu-item-text">Size</div></div>
<div class="menu-item-text">尺寸</div></div>
<div class="menu-item" id="cm-fit-position">
<div class="menu-item-text">Position</div></div>
<div class="menu-item-text">位置</div></div>
<div class="menu-item" id="cm-fit-rotation">
<div class="menu-item-text">Rotation</div></div>
<div class="menu-item-text">旋转</div></div>
<div class="menu-item" id="cm-fit-moving-direction">
<div class="menu-item-text">Moving direction</div></div>
<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">Top</div></div>
<div class="menu-item-text">底部</div></div>
<div class="menu-item" id="cm-fit-bottom">
<div class="menu-item-text">Bottom</div></div>
<div class="menu-item-text">底部</div></div>
<div class="menu-item" id="cm-fit-left">
<div class="menu-item-text">Left</div></div>
<div class="menu-item-text">左边</div></div>
<div class="menu-item" id="cm-fit-right">
<div class="menu-item-text">Right</div></div>
<div class="menu-item-text">右边</div></div>
<div class="menu-item" id="cm-fit-front">
<div class="menu-item-text">Front</div></div>
<div class="menu-item-text">正面</div></div>
<div class="menu-item" id="cm-fit-rear">
<div class="menu-item-text">Rear</div></div>
<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">Reverse heading direction</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">Reset roll & pitch</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"><u>F</u>inalize</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">Reload</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"><u>G</u>o to this frame</div>
<div class="menu-item-text">转到此框架</div>
</div>
<div class="menu-item" id="cm-sync-size">
<div class="menu-item-text">Sync size to all</div>
<div class="menu-item-text">将尺寸同步到所有</div>
</div>
<div class="menu-item" id="cm-follow-static-objects">
<div class="menu-item-text">Follow static objects</div>
<div class="menu-item-text">跟随静态物体</div>
</div>
@ -680,13 +677,13 @@
<div class="menu-item" id="cm-show-trajectory">
<div class="menu-item-icon">
</div>
<div class="menu-item-text"><u>T</u>rajectory</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">Check</div>
<div class="menu-item-text">查看</div>
</div>
</div>
@ -713,23 +710,23 @@
<div id="config-menu" class="non-selectable">
<div class="menu-nonclickable-item" id="cfg-theme">
<span>Theme</span>
<span>主题</span>
<div class="cfg-widget-group">
<select type="checkbox" id="cfg-theme-select" class="cfg-widget">
<option value="dark" selected>dark</option>
<option value="light" selected>light</option>
<option value="dark" selected>黑色</option>
<option value="light" selected>白色</option>
</select>
</div>
</div>
<div class="menu-nonclickable-item" id="cfg-point-size">
<span>Point size</span>
<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>Point brightness</span>
<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>
@ -737,7 +734,7 @@
</div>
<div class="menu-nonclickable-item" id="cfg-hide-circle-ruler">
<span>Hide circle ruler</span>
<span>隐藏圆形标尺</span>
<div class="cfg-widget-group">
<input type="checkbox" id="cfg-hide-circle-ruler-checkbox" class="cfg-widget">
</div>
@ -745,50 +742,50 @@
<div class="menu-nonclickable-item" id="cfg-hide-box">
<span>Hide box</span>
<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>Hide Id</span>
<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>Hide Category</span>
<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>Color point</span>
<span>点色</span>
<div class="cfg-widget-group">
<select type="checkbox" id="cfg-color-points-select" class="cfg-widget">
<option value="mono" selected>mono</option>
<option value="intensity" selected>by intensity</option>
<option value="mono" selected>默认</option>
<option value="intensity" selected>增强</option>
</select>
</div>
</div>
<div class="menu-nonclickable-item" id="cfg-color-object">
<span>Color objects</span>
<span>对象样色</span>
<div class="cfg-widget-group">
<select id="cfg-color-object-scheme"  class="cfg-widget">
<option value="category">by category</option>
<option value="id">by ID</option>
<option value="no">don't color</option>
<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>Batch mode max box number</span>
<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>
@ -802,24 +799,24 @@
<div class="menu-nonclickable-item" id="cfg-coordinate-system">
<span>Coordinate system</span>
<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>LiDAR</option>
<option value = "lidar" selected>雷达</option>
</select>
</div>
</div>
<div class="menu-nonclickable-item" id="cfg-auto-rotate-xy">
<span>Auto rotate X/Y (roll/pitch)</span>
<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>Auto update interploated boxes</span>
<span>自动更新插入框</span>
<div class="cfg-widget-group">
<input type="checkbox" id="cfg-auto-update-interpolated-boxes-checkbox" class="cfg-widget">
</div>
@ -829,7 +826,7 @@
<div class="menu-item menu-seperator"></div>
<div class="menu-item" id="cfg-data">
<span>Data settings</span>
<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>
@ -839,31 +836,31 @@
<div id="cfg-data-submenu">
<div class="menu-nonclickable-item" id="cfg-data-preload">
<div class="menu-item-text">Preload</div>
<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">Auxiliary LiDAR</div>
<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">Radar</div>
<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">Hide points</div>
<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-threshold</span>
<span> z-阀值</span>
<input id="cfg-data-filter-points-z" class="cfg-widget">
</div>
</div>
@ -873,7 +870,7 @@
<div class="menu-item" id="cfg-experimental">
<span>Experimental</span>
<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>
@ -882,33 +879,33 @@
<div id="cfg-experimental-submenu">
<div class="menu-nonclickable-item" id="cfg-calib-camera-LiDAR">
<div class="menu-item-text">Camera-LiDAR calibration</div>
<div class="menu-item-text">相机-激光雷达校准</div>
<div class='cfg-widget-group'>
<div id='cfg-start-calib' class='menu-button'>start</div>
<div id='cfg-show-calib' class='menu-button'>result</div>
<div id='cfg-stop-calib' class='menu-button'>stop</div>
<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">Crop scene</div>
<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>Show logs</span>
<span>显示日志</span>
</div>
<div class="menu-item" id="cfg-take-screenshot">
<span>Take screenshot</span>
<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">Help</a>
<a href="https://github.com/naurril/SUSTechPOINTS/blob/dev-auto-annotate/README_guide.md" target="_blank">帮助</a>
</div>
</div>
</div>
@ -1038,7 +1035,7 @@
<div id="log-wrapper" class="popup-window-wrapper" tabindex='-1'>
<div id="view">
<div id="header">
<span id="title">Output</span>
<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>
@ -1065,8 +1062,8 @@
</div>
</div>
<div id="tabs">
<div id = "tab-log" class="tab-button tab-selected">Logs</div>
<div id = "tab-error" class="tab-button">Errors</div>
<div id = "tab-log" class="tab-button tab-selected">日志</div>
<div id = "tab-error" class="tab-button">异常</div>
</div>
<div id="content-logs">
</div>

@ -1,5 +1,4 @@
.theme-dark {
--font-color: #ffffff;
--background-color: #121212;
@ -9,7 +8,6 @@
--highlight-background-color: darkgray;
--highlight-color: yellow;
--highlight-color-editor: #ffff0020;
--highlight-background-transparent-color: #aaaaaa44;
}
@ -22,7 +20,6 @@
--highlight-background-color: gray;
--highlight-color: blue;
--highlight-color-editor: #0000ff20;
--highlight-background-transparent-color: #22222244;
}
@ -143,6 +140,7 @@ canvas {
position: relative;
padding-right: 5px;
padding-left: 5px;
font-size: 12px;
}
#camera-list {
@ -380,6 +378,7 @@ dynamic set obj-type css has higher priority than this one.
box-sizing: border-box;
text-align: left;
display: none; /* defult hidden */
color: var(--font-color);
}
#obj-label {
@ -476,6 +475,7 @@ dynamic set obj-type css has higher priority than this one.
padding-left: 10px;
padding-right: 10px;
position: relative;
color: var(--font-color);
}
#context-menu#object-context-menu#box-editor-context-menu, #box-editor-manager-context-menu{
@ -1049,6 +1049,7 @@ td {
width: 0%;
height: 0%;
display: inherit;
color: var(--font-color);
}
#log-wrapper #view {

@ -439,7 +439,7 @@ function Annotation(sceneMeta, world, frameInfo) {
}
};
(this.find_boxes_inside_rect = function (x, y, w, h, camera) {
this.find_boxes_inside_rect = function (x, y, w, h, camera) {
let selected_boxes_by_rect = [];
if (!this.boxes) return selected_boxes_by_rect;
@ -462,36 +462,38 @@ function Annotation(sceneMeta, world, frameInfo) {
console.log("select boxes", selected_boxes_by_rect.length);
return selected_boxes_by_rect;
}),
(this.proc_annotation = function (boxes) {
// boxes = this.transformBoxesByEgoPose(boxes);
// boxes = this.transformBoxesByOffset(boxes);
// //var boxes = JSON.parse(this.responseText);
//console.log(ret);
this.boxes = this.createBoxes(boxes); //create in future world
this.webglGroup = new THREE.Group();
this.webglGroup.name = "annotations";
this.boxes.forEach((b) => this.webglGroup.add(b));
this.world.webglGroup.add(this.webglGroup);
this.boxes_load_time = new Date().getTime();
console.log(
this.boxes_load_time,
this.frameInfo.scene,
this.frameInfo.frame,
"loaded boxes ",
this.boxes_load_time - this.create_time,
"ms"
);
};
this.sort_boxes();
this.proc_annotation = function (boxes) {
// boxes = this.transformBoxesByEgoPose(boxes);
// boxes = this.transformBoxesByOffset(boxes);
this._afterPreload();
});
// //var boxes = JSON.parse(this.responseText);
//console.log(ret);
this.boxes = this.createBoxes(boxes); //create in future world
this.webglGroup = new THREE.Group();
this.webglGroup.name = "annotations";
this.boxes.forEach((b) => this.webglGroup.add(b));
this.world.webglGroup.add(this.webglGroup);
this.boxes_load_time = new Date().getTime();
console.log(
this.boxes_load_time,
this.frameInfo.scene,
this.frameInfo.frame,
"loaded boxes ",
this.boxes_load_time - this.create_time,
"ms"
);
this.sort_boxes();
this._afterPreload();
};
// 标注信息
this.load_annotation = function (on_load) {
if (this.data.cfg.disableLabels) {
on_load([]);

@ -1397,7 +1397,7 @@ function BoxEditorManager(
if (this.batchSize >= this.editingTarget.sceneMeta.frames.length) {
this.nextObj();
} else {
window.editor.infoBox.show("Info", "This is the last batch of frames.");
window.editor.infoBox.show("Info", "当前已是最后一帧");
}
} else {
this.edit(
@ -1422,8 +1422,8 @@ function BoxEditorManager(
this.prevObj();
} else {
window.editor.infoBox.show(
"Info",
"This is the first batch of frames"
"信息",
"当前已是第一帧"
);
}
} else {

@ -2,6 +2,7 @@ import { World } from "./world.js";
import { Debug } from "./debug.js";
import { logger } from "./log.js";
// 请求数据集合
class Data {
constructor(cfg) {
this.cfg = cfg;

@ -5,7 +5,7 @@ import { FastToolBox, FloatLabelManager } from "./floatlabel.js";
import { Mouse } from "./mouse.js";
import { BoxEditor, BoxEditorManager } from "./box_editor.js";
import { ImageContextManager } from "./image.js";
import { globalObjectCategory } from "./obj_cfg.js";
import { globalObjectCategory, categoryZh } from "./obj_cfg.js";
import { objIdManager } from "./obj_id_list.js";
import { Header } from "./header.js";
@ -977,7 +977,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
if (!meta) {
this.editorUi.querySelector("#frame-selector").innerHTML =
"<option>--frame--</option>";
"<option>结构</option>";
meta = await this.data.readSceneMetaData(sceneName);
}
@ -987,7 +987,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
})
.reduce(function (x, y) {
return x + y;
}, "<option>--frame--</option>");
}, "<option>结构</option>");
this.editorUi.querySelector("#frame-selector").innerHTML =
frame_selector_str;
@ -2310,7 +2310,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
if (frame_index < 0) {
console.log("first frame");
this.infoBox.show("Notice", "This is the first frame");
this.infoBox.show("信息:", "当前已是第一帧");
return;
}
@ -2340,7 +2340,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
if (frame_index >= num_frames) {
console.log("last frame");
this.infoBox.show("Notice", "This is the last frame");
this.infoBox.show("信息:", "当前已是最后一帧");
return;
}
@ -2702,7 +2702,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
var options = "";
for (var o in obj_type_map) {
options +=
'<option value="' + o + '" class="' + o + '">' + o + "</option>";
'<option value="' + o + '" class="' + o + '">' + categoryZh[o] + "</option>";
}
this.editorUi.querySelector(
@ -2721,7 +2721,7 @@ function Editor(editorUi, wrapperUi, editorCfg, data, name = "editor") {
'" uservalue="' +
o +
'"><div class="menu-item-text">' +
o +
categoryZh[o] +
"</div></div>";
}

@ -1,6 +1,6 @@
import { psr_to_xyz } from "./util.js";
import * as THREE from "./lib/three.module.js";
import { globalObjectCategory } from "./obj_cfg.js";
import { categoryZh, globalObjectCategory } from "./obj_cfg.js";
class FastToolBox {
constructor(ui, eventHandler) {
let self = this;
@ -436,7 +436,7 @@ class FloatLabelManager {
label.update_text = function () {
let label_text = '<div class="label-obj-type-text">';
label_text += this.obj_type;
label_text += categoryZh[this.obj_type];
label_text += "</div>";
if (this.obj_attr) {

@ -41,7 +41,7 @@ var Header = function (
// update scene selector ui
this.updateSceneList = function (sceneDescList) {
let scene_selector_str = "<option>--scene--</option>";
let scene_selector_str = "<option>场景</option>";
for (let scene in sceneDescList) {
if (data.sceneDescList[scene])
scene_selector_str +=

@ -185,6 +185,54 @@ class ObjectCategory {
// }
}
const categoryZh = {
Car: "车",
Pedestrian: "行人",
Van: "厢式货车",
Bus: "公交车",
Truck: "卡车",
ScooterRider: "滑板车骑行者",
Scooter: "滑板车",
BicycleRider: "自行车骑行者",
Bicycle: "自行车",
Motorcycle: "摩托车",
MotorcyleRider: "摩托车骑行者",
PoliceCar: "警车",
TourCar: "旅游车",
RoadWorker: "道路施工人员",
Child: "儿童",
BabyCart: "婴儿车",
Cart: "手推车",
Cone: "路锥",
FireHydrant: "消防栓",
SaftyTriangle: "安全三角架",
PlatformCart: "平板车",
ConstructionCart: "工程车",
RoadBarrel: "路障桶",
TrafficBarrier: "交通护栏",
LongVehicle: "长车",
BicycleGroup: "自行车群",
ConcreteTruck: "混凝土搅拌车",
Tram: "有轨电车",
Excavator: "挖掘机",
Animal: "动物",
TrashCan: "垃圾桶",
ForkLift: "叉车",
Trimotorcycle: "三轮摩托车",
FreightTricycle: "货运三轮车",
Crane: "起重机",
RoadRoller: "压路机",
Bulldozer: "推土机",
DontCare: "不关心目标",
Misc: "其他",
Unknown: "未知",
Unknown1: "未知1",
Unknown2: "未知2",
Unknown3: "未知3",
Unknown4: "未知4",
Unknown5: "未知5"
};
let globalObjectCategory = new ObjectCategory();
export { globalObjectCategory };
export { globalObjectCategory, categoryZh };

@ -1,3 +1,5 @@
import { categoryZh } from "./obj_cfg.js";
class ObjectIdManager {
maxId = 1;
objectList = [];
@ -30,13 +32,13 @@ class ObjectIdManager {
">" +
String(c.id) +
"-" +
c.category +
categoryZh[c.category] +
"</option>"
);
})
.reduce(function (x, y) {
return x + y;
}, "<option>--object--</option>");
}, "<option>对象</option>");
document.getElementById("object-selector").innerHTML = objSelOptions;
let objIdsOptions = this.objectList

Loading…
Cancel
Save