Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

  • 7.PBR材质与纹理贴图

  • 8.渲染器和前端UI界面

  • 9.生成曲线、几何体

  • 10.相机基础

  • 11.光源和阴影

  • 12.精灵模型Sprite

  • 13.后处理EffectComposer

  • 14.射线拾取模型

  • 15.场景标注标签信息

    • 1. CSS2DRenderer(HTML标签)
    • 2. HTML标签遮挡Canvas画布事件
    • 3. Canvas尺寸变化(HTML标签)
    • 4. 标签位置不同设置方式
    • 5. 标签位置(标注工厂设备)
    • 6. 标签指示线或箭头指向标注点
      • 7. 鼠标选中模型弹出标签(工厂)
      • 8. 单击按钮关闭HTML标签
      • 9. CSS3DRenderer渲染HTML标签
      • 10. CSS3批量标注多个标签
      • 11. 精灵模型Sprite作为标签
      • 12. Sprite标签(Canvas作为贴图)
    • 16.关键帧动画

    • 17.动画库tween.js

    • Three.js教程
    • 15.场景标注标签信息
    郭隆邦
    2023-03-13
    目录

    6. 标签指示线或箭头指向标注点

    # 标签指示线和箭头指向标注点

    CSS2渲染器渲染HTML元素作为模型标签的时候,想把标签的箭头或指示线放在标注点上,下面给大家说下如何实现。

    # CSS2渲染器渲染HTML标签的位置特征

    CSS2渲染器渲染的HTML元素标签,默认情况下,HTML元素标签自身的几何中心与标注点重合。

    你可以查看本节课课件“圆锥标注”的案例验证。

    const div = document.getElementById('tag');
    // id="tag"元素高度40px,默认标签中心与圆锥顶部重合
    // CSS2渲染器会把标签HTML默认设置为绝对定位,意味着你可以直接设置top
    div.style.top = '-20px';//平移20px,使标签底部和圆锥顶部重合
    

    # 工厂设备标签CSS代码

    工厂设备标签的HTML、CSS布局代码,课件中已经提供。当然你可以根据自己前端知识更换其他CSS布局写法,只要视觉效果符合UI设计需求都行。

    标签HTML元素布局方式都是前端CSS知识,课程不在演示,下面主要讲解threejs代码。

    <!-- CSS布局方式写法很多,不一定和课程一致 -->
    <div id="tag">
        <!-- position:relative;约束子元素绝对定位参照点 -->
        <div style="position:relative;width:400px;height:322px;color: #fff;">
            <!-- 图片绝对定位100%填充父元素,作为标签的背景 -->
            <img src="./信息背景.png" alt="" style="width:100%;position: absolute;left: 0px;top: 0px;">
            <!-- 名称、存储量、设备状态、等信息叠加到背景图上即可 -->
            <div style="position:absolute;left:48px;top:36px;font-size:16px;">
                <div style="font-size:20px;font-weight: 400;">
                    <span>设备A</span>
                </div>
                <div style="margin-top: 30px;">
                    <span style="font-weight: 400;margin-left: 80px;font-size: 40px;color: #00ffff;">276559 L</span>
                </div>
                <div style="margin-top: 20px;">
                    <span style="color: #ccc;font-weight: 300;">管理</span><span
                       style="font-weight: 400;margin-left: 30px;">郭老师</span>
                </div>
                <div style="margin-top: 10px;">
                    <span style="color: #ccc;font-weight: 300;">工号</span><span
                       style="font-weight: 400;margin-left: 30px;">webgl3d.cn</span>
                </div>
            </div>
            <div style="position:absolute;left:285px;top:35px;">
                <span style="color: #ffff00;">异常</span>
            </div>
        </div>
    </div>
    

    # 工厂标签的HTML元素适当平移

    工厂标签对应的HTML元素,你可适当偏移,使直线的起点和标注点位置重合,具体如何偏移,根据UI设计的效果,指示线起点相对标签中心位置来定。

    const div = document.getElementById('tag');
    // id="tag"元素高度322px,默认标签中心与标注点
    div.style.top = '-161px'; //平移-161px,指示线端点和标注点重合
    // div.style.top = '-140px'; //可以在-161px基础上微调
    // div.style.left = 'px';
    

    # HTML标签渲染前隐藏

    在CSS2渲染器渲染HTML标签,重新定位标签之前,threejs执行代码和加载gltf模型也是需要时间的,这时候标签对应的HTML、CSS代码会显示在web页上面。

    可以先把标签隐藏display: none;,等gltf模型加载完成,HTML元素转化CSS2模型对象以后,再取消HTML隐藏状态,CSS2渲染器默认会把标签设置为display: block;,这样就不用自己代码恢复HTML标签元素的隐藏状态了。

    <!-- CSS2渲染器渲染器之前,隐藏标签 -->
    <div id="tag" style="display: none;"><>
    
    5. 标签位置(标注工厂设备)
    7. 鼠标选中模型弹出标签(工厂)

    ← 5. 标签位置(标注工厂设备) 7. 鼠标选中模型弹出标签(工厂)→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式